diff --git a/.gitignore b/.gitignore
index 22e7288d11d0a0d93d48edaba65e022daba574a7..7919031bf8ec3f7558b51cb0b14083aafc7fbd99 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,6 @@ server/data-import/package.json
 server/data-import/data/bechdel.json
 server/data-import/data/imdb.json
 server/data-import/data/actorinfo.json
+server/data-import/
 notes.txt
+node_modules/
diff --git a/client/FirstViewstylesheet.css b/client/FirstViewstylesheet.css
index 2adf6e8e89ded3001d3182fae6a8f4e090816201..f8647d06598005447e92859eb5bbd419d18e3406 100644
--- a/client/FirstViewstylesheet.css
+++ b/client/FirstViewstylesheet.css
@@ -4,6 +4,10 @@ body {
     color: white;
 }
 
+h3 {
+ font-size: 7mm;
+}
+
 .header-container {
     display: flex;
     justify-content: space-between;
@@ -11,7 +15,7 @@ body {
 }
 
 .title-container {
-    font-size: 41px;
+    font-size: 1cm;
     color: white;
     margin-left: 40px;
 }
@@ -48,39 +52,43 @@ body {
 
 .first-text-container,
 .third-text-container {
-    margin-right: 30px;
-    margin-left: 30px;
-    margin-top: 100px;
-    margin-bottom: 100px;
+    margin-right: 1cm;
+    margin-left: 1cm;
+    margin-top: 2cm;
+    margin-bottom: 2cm;
     text-align: center;
+    padding: 0.5cm;
+    border-radius: 5mm;
+    background-color: rgba(0, 55, 0, 0.739);
 }
 
 .first-image-container,
 .second-image-container {
-    margin-right: 30px;
-    margin-left: 30px;
-    margin-top: 50px;
-    margin-bottom: 50px;
+    margin-right: 0.5cm;
+    margin-left: 0.5cm;
+    margin-top: 0.5cm;
+    margin-bottom: 0.5cm;
 }
 
 .image-wrapper {
     display: flex;
+    justify-content: center;  /* Detta är det ända som kan centrera inehåll i flex containers*/
 }
 
 .firstThreeImages-container img,
 .secondThreeImages-container img {
-    width: 390px;
-    height: 390px;
-    margin-right: 30px;
-    margin-left: 30px;
+    width: 11cm;
+    height: 7cm;
+    margin-right: 0.5cm;
+    margin-left: 0.5cm;
     border-radius: 10px;
 }
 
 .ImageFilmIndustryButton,
 .ImageBechdelButton {
     display: block;
-    width: 500px;
-    height: 500px;
+    width: 10cm;
+    height: 10cm;
     background-size: cover;
     background-position: center;
     border: none;
@@ -92,18 +100,19 @@ body {
 .first-buttons-container,
 .second-buttons-container {
     display: flex;
-    justify-content: space-between; 
-    align-items: center;
-    margin-left: 150px;
-    margin-right: 150px;
+    justify-content: center;
+    margin-left: 2cm;
+    margin-right: 2cm;
 }
 
 .image-wrapper {
     display: flex;
+    justify-content: center;
 }
 
 .image-wrapper button {
-    margin-right: 100px;
+    margin-right: 5cm;
+    margin-left: 5cm;
 }
 
 .ImageFilmIndustryButton::before {
@@ -187,16 +196,16 @@ body {
 }
 
 .ImageFilmIndustryButton {
-    background-image: url('/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/filmIndustry.avif');
+    background-image: url('/client/firstViewImages/filmIndustry.avif');
 }
 
 .ImageBechdelButton {
-    background-image: url('/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/bechdel.jpg');
+    background-image: url('/client/firstViewImages/bechdel.jpg');
 }
 
 .genreButton {
-    width: 250px;
-    height: 250px;
+    width: 3cm;
+    height: 3cm;
     background-size: cover;
     background-position: center;
     border: none;
@@ -257,24 +266,168 @@ button[label="Romance"]::before {
     content: "Romance";
 }
 
+button[label="War"]::before {
+    content: "War";
+}
+
+button[label="Adventure"]::before {
+    content: "Adventure";
+}
+
+button[label="Film-Noir"]::before {
+    content: "Film-Noir";
+}
+
+button[label="Animation"]::before {
+    content: "Animation";
+}
+
+button[label="Biography"]::before {
+    content: "Biography";
+}
+
+button[label="Crime"]::before {
+    content: "Crime";
+}
+
+button[label="Family"]::before {
+    content: "Family";
+}
+
+button[label="Fantasy"]::before {
+    content: "Fantasy";
+}
+
+button[label="Documentary"]::before {
+    content: "Documentary";
+}
+
+button[label="History"]::before {
+    content: "History";
+}
+
+button[label="Music"]::before {
+    content: "Music";
+}
+
+button[label="Musical"]::before {
+    content: "Musical";
+}
+
+button[label="Mystery"]::before {
+    content: "Mystery";
+}
+
+button[label="Sci-Fi"]::before {
+    content: "Sci-Fi";
+}
+
+button[label="Short"]::before {
+    content: "Short";
+}
+
+button[label="Sport"]::before {
+    content: "Sport";
+}
+
+button[label="Thriller"]::before {
+    content: "Thriller";
+}
+
+button[label="Western"]::before {
+    content: "Western";
+}
+
 button[label="Horror"] {
-    background-image: url('/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/buttons/horrorButton.avif');
+    background-image: url('/client/firstViewImages/buttons/horrorButton.avif');
 }
 
 button[label="Drama"] {
-    background-image: url('/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/buttons/dramaButton.avif');
+    background-image: url('/client/firstViewImages/buttons/dramaButton.avif');
 }
 
 button[label="Romance"] {
-    background-image: url('/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/buttons/romanceButton.avif');
+    background-image: url('/client/firstViewImages/buttons/romanceButton.avif');
 }
 
 button[label="Action"] {
-    background-image: url('/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/buttons/actionButton.avif');
+    background-image: url('/client/firstViewImages/buttons/actionButton.avif');
 }
 
 button[label="Comedy"] {
-    background-image: url('/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/buttons/comedyButton.avif');
+    background-image: url('/client/firstViewImages/buttons/comedyButton.avif');
+}
+
+button[label="Film-Noir"] {
+    background-image: url('/client/firstViewImages/buttons/filmNoirButton.avif');
+}
+
+button[label="History"] {
+    background-image: url('/client/firstViewImages/buttons/historyButton.avif');
+}
+
+button[label="Musical"] {
+    background-image: url('/client/firstViewImages/buttons/musicalButton.avif');
+}
+
+button[label="Music"] {
+    background-image: url('/client/firstViewImages/buttons/musicButton.avif');
+}
+
+button[label="Mystery"] {
+    background-image: url('/client/firstViewImages/buttons/mysteryButton.avif');
+}
+
+button[label="Sci-Fi"] {
+    background-image: url('/client/firstViewImages/buttons/sciFiButton.avif');
+}
+
+button[label="Short"] {
+    background-image: url('/client/firstViewImages/buttons/shortButton.avif');
+}
+
+button[label="Sport"] {
+    background-image: url('/client/firstViewImages/buttons/sportButton.avif');
+}
+
+button[label="Thriller"] {
+    background-image: url('/client/firstViewImages/buttons/thrillerButton.avif');
+}
+
+button[label="War"] {
+    background-image: url('/client/firstViewImages/buttons/warButton.avif');
+}
+
+button[label="Western"] {
+    background-image: url('/client/firstViewImages/buttons/westernButton.avif');
+}
+
+button[label="Fantasy"] {
+    background-image: url('/client/firstViewImages/buttons/fantasyButton.avif');
+}
+
+button[label="Crime"] {
+    background-image: url('/client/firstViewImages/buttons/crimeButton.avif');
+}
+
+button[label="Documentary"] {
+    background-image: url('/client/firstViewImages/buttons/documentaryButton.avif');
+}
+
+button[label="Adventure"] {
+    background-image: url('/client/firstViewImages/buttons/adventureButton.avif');
+}
+
+button[label="Animation"] {
+    background-image: url('/client/firstViewImages/buttons/animationButton.avif');
+}
+
+button[label="Biography"] {
+    background-image: url('/client/firstViewImages/buttons/biographyButton.avif');
+}
+
+button[label="Family"] {
+    background-image: url('/client/firstViewImages/buttons/familyButton.avif');
 }
 
 .genreButton:hover::after {
@@ -291,23 +444,30 @@ button[label="Comedy"] {
     display: flex;
     flex-direction: column;
     align-items: center;
-    margin-top: 50px;
+    /* margin-top: 50px; */
 }
 
-.comedy-row {
+.first-buttons-row,
+.second-buttons-row,
+.third-buttons-row,
+.fourth-buttons-row {
     display: flex;
     justify-content: center;
-    
+    justify-content:space-between;
+    align-items: center;
+    gap: 5mm;
+    margin-bottom: 5mm;
+    /* margin-bottom: 50px;
+    margin-top: 50px; */
 }
 
-.horror-drama-row,
-.romance-action-row {
+.fifth-buttons-row {
     display: flex;
-    justify-content:space-between;
+    justify-content: center;
     align-items: center;
-    gap: 500px;
-    margin-bottom: 50px;
-    margin-top: 50px;
+    gap: 20px;
+    /* margin-bottom: 50px;
+    margin-top: 50px; */
 }
 
 .two-text-container {
@@ -330,6 +490,35 @@ button[label="Comedy"] {
     text-align: center;
 }
 
+#genre-section {
+    display: flex;
+    justify-content: center;
+}
+
+#genres {
+    display: none;
+}
+
+#movie-genre-header {
+    font-size: 1cm;
+    margin-top: 0;
+}
+
+#genre-table {
+    display: block;
+    font-size: 7mm;
+    max-height: 14cm;
+    min-width: 10cm;
+    overflow-y: auto;
+}
+
+#genre-table tr:hover {
+    color: lightgreen;
+    cursor: pointer;
+    filter: brightness(0.8);
+    box-shadow: 0 0 10px 5px rgba(0, 128, 0, 0.5);
+}
+
 .line {
     border: none;
 }
diff --git a/client/client.js b/client/client.js
new file mode 100644
index 0000000000000000000000000000000000000000..1bd502016704cef40fe617be3245c3db7b78034b
--- /dev/null
+++ b/client/client.js
@@ -0,0 +1,83 @@
+// I denna kommer mestadels all koppling av node och mongodb ske.
+// viktigt att vi även fixar så att texten på förstasidan laddas in här, via
+// javascript och inte via htmln.
+
+//const serverUrl = "http://127.0.0.1:3000";
+const serverUrl = "http://localhost:3000";
+const maxMoviesShown = 1000;
+
+//Kallar på de funktioner som ska köras när sidan laddas in
+document.addEventListener("DOMContentLoaded", function () {});
+
+let genre = ""; // current genre selected
+function lookupGenre(button) {
+  genre = button.attributes["label"].value;
+  console.log("Genre=", genre);
+
+  let header = document.getElementById("movie-genre-header");
+  header.innerText = "Movies with genre: " + genre;
+
+  // fetchMovies(genre).then(displayGenreResult);
+  fetchMovies2(genre);
+}
+
+// Function to fetch all films belonging to a selected genre
+async function fetchMovies(genre) {
+  try {
+    const response = await fetch(serverUrl + "/genre/" + genre);
+    const movieNames = await response.json();
+    console.log("Received genre JSON-data:", movieNames);
+    return movieNames;
+  } catch (error) {
+    console.error("Error fetching movies data:", error);
+    return {};
+  }
+}
+
+function fetchMovies2(genre) {
+  try {
+    fetch(serverUrl + "/genre/" + genre)
+      .then((response) => response.json())
+      .then(displayGenreResult);
+  } catch (error) {
+    console.error("Error fetching movies data:", error);
+    return {};
+  }
+}
+
+function displayGenreResult(genreData) {
+  let genres = document.getElementById("genres");
+  genres.style.display = "block";
+
+  let table = document.getElementById("genre-table");
+  table.innerHTML = "";
+  let movies = genreData.result;
+  let totNumberMovies = movies.length;
+  let i = 0;
+  //while (i < totNumberMovies) {
+  while (i < maxMoviesShown && i < totNumberMovies) {
+    let movie = movies[i++];
+    let tr = document.createElement("tr");
+    let td = document.createElement("td");
+    tr.append(td);
+    td.innerHTML = movie.name;
+    table.append(tr);
+    tr.addEventListener("click", () => lookupMovie(movie));
+  }
+}
+
+function lookupMovie(movie) {
+  console.log("Lookup movie", movie);
+  let id = movie.normalized_id;
+  document.location.href = "movieView.html?movieId=" + movie.normalized_id;
+  document.location.href = `movieView.html?movieId=${movie.normalized_id}&genre=${genre}`;
+}
+
+function navigateTo(buttontype) {
+  window.location.href = `secondView.html?buttonType=${buttontype}`;
+  /*if (section === 'bechdel') {
+      window.location.href = 'secondView.html#bechdel';
+  } else if (section === 'filmIndustry') {
+      window.location.href = 'secondView.html#filmIndustry';
+  }*/
+}
diff --git a/client/firstViewImages/bechdel.jpg b/client/firstViewImages/bechdel.jpg
index 53eb646f5cd4cd6357242be94b4c97d4031ccc2f..a107b6aeef10ef59e1a50b693e1123dbdce074a6 100644
Binary files a/client/firstViewImages/bechdel.jpg and b/client/firstViewImages/bechdel.jpg differ
diff --git a/client/firstViewImages/buttons/adventureButton.avif b/client/firstViewImages/buttons/adventureButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..e3b229e6cd288a9fa99386e0137188b0ccc69c12
Binary files /dev/null and b/client/firstViewImages/buttons/adventureButton.avif differ
diff --git a/client/firstViewImages/buttons/animationButton.avif b/client/firstViewImages/buttons/animationButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..da261da1f1f39473921e1f3e55da273e5c12e53e
Binary files /dev/null and b/client/firstViewImages/buttons/animationButton.avif differ
diff --git a/client/firstViewImages/buttons/biographyButton.avif b/client/firstViewImages/buttons/biographyButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..e11e7a484e9a8513920ff9a8ff0c061ac4ee368c
Binary files /dev/null and b/client/firstViewImages/buttons/biographyButton.avif differ
diff --git a/client/firstViewImages/buttons/crimeButton.avif b/client/firstViewImages/buttons/crimeButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..4156715e71a4b1de8467e1f91efec02a35728833
Binary files /dev/null and b/client/firstViewImages/buttons/crimeButton.avif differ
diff --git a/client/firstViewImages/buttons/documentaryButton.avif b/client/firstViewImages/buttons/documentaryButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..bdd71c3dd8be4d61fc0f84c8be2aee9c354a7186
Binary files /dev/null and b/client/firstViewImages/buttons/documentaryButton.avif differ
diff --git a/client/firstViewImages/buttons/familyButton.avif b/client/firstViewImages/buttons/familyButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..de604fc131e8cea4a5135df93857fd78a448263c
Binary files /dev/null and b/client/firstViewImages/buttons/familyButton.avif differ
diff --git a/client/firstViewImages/buttons/fantasyButton.avif b/client/firstViewImages/buttons/fantasyButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..8965b6382beeb6e73374a8575cad8f43d1ae0f4d
Binary files /dev/null and b/client/firstViewImages/buttons/fantasyButton.avif differ
diff --git a/client/firstViewImages/buttons/filmNoirButton.avif b/client/firstViewImages/buttons/filmNoirButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..03e6501ef972774631f6905585773133fbe4d547
Binary files /dev/null and b/client/firstViewImages/buttons/filmNoirButton.avif differ
diff --git a/client/firstViewImages/buttons/historyButton.avif b/client/firstViewImages/buttons/historyButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..5817121be968ce62fd3fa5afa6e38a27b25df7aa
Binary files /dev/null and b/client/firstViewImages/buttons/historyButton.avif differ
diff --git a/client/firstViewImages/buttons/musicButton.avif b/client/firstViewImages/buttons/musicButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..6742b7e0247218cb43a87b4e83b0f52122d09cad
Binary files /dev/null and b/client/firstViewImages/buttons/musicButton.avif differ
diff --git a/client/firstViewImages/buttons/musicalButton.avif b/client/firstViewImages/buttons/musicalButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..d2ba70015a3f25f609e410e178d63dd1d319d455
Binary files /dev/null and b/client/firstViewImages/buttons/musicalButton.avif differ
diff --git a/client/firstViewImages/buttons/mysteryButton.avif b/client/firstViewImages/buttons/mysteryButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..70c4897491a83bd39e1db060bdb6f96505c5f3cc
Binary files /dev/null and b/client/firstViewImages/buttons/mysteryButton.avif differ
diff --git a/client/firstViewImages/buttons/sciFiButton.avif b/client/firstViewImages/buttons/sciFiButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..40042a1eaa7c145a0e985feb3089a5e7fdac4d4e
Binary files /dev/null and b/client/firstViewImages/buttons/sciFiButton.avif differ
diff --git a/client/firstViewImages/buttons/shortButton.avif b/client/firstViewImages/buttons/shortButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..428b6b1b703b460b01be840864470e4a0aaa2b86
Binary files /dev/null and b/client/firstViewImages/buttons/shortButton.avif differ
diff --git a/client/firstViewImages/buttons/sportButton.avif b/client/firstViewImages/buttons/sportButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..adf092ccdb99ca35d0708c7e034fdf272a5e67a5
Binary files /dev/null and b/client/firstViewImages/buttons/sportButton.avif differ
diff --git a/client/firstViewImages/buttons/thrillerButton.avif b/client/firstViewImages/buttons/thrillerButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..f74c3a2b26c377a027256219e92d691bb0b9b512
Binary files /dev/null and b/client/firstViewImages/buttons/thrillerButton.avif differ
diff --git a/client/firstViewImages/buttons/warButton.avif b/client/firstViewImages/buttons/warButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..815c1da68049ddc703d9a2186e6d98471c0b789a
Binary files /dev/null and b/client/firstViewImages/buttons/warButton.avif differ
diff --git a/client/firstViewImages/buttons/westernButton.avif b/client/firstViewImages/buttons/westernButton.avif
new file mode 100644
index 0000000000000000000000000000000000000000..69c44216f9fb5954647cfe7989d8c69c123693a2
Binary files /dev/null and b/client/firstViewImages/buttons/westernButton.avif differ
diff --git a/client/firstViewImages/firstImageContainer1.jpg b/client/firstViewImages/firstImageContainer1.jpg
index ce1f1d9878ba0a44b5df79c9fe1e75c60912cf8a..85b95372812cdd841bd419a109021b95c880e298 100644
Binary files a/client/firstViewImages/firstImageContainer1.jpg and b/client/firstViewImages/firstImageContainer1.jpg differ
diff --git a/client/firstViewImages/firstImageContainer2.jpg b/client/firstViewImages/firstImageContainer2.jpg
index 26f579e5ffbc4c0befd7ab0e241ce95c4045ec44..d496a7b14695d3305bb39d85d219f0873fedbbc7 100644
Binary files a/client/firstViewImages/firstImageContainer2.jpg and b/client/firstViewImages/firstImageContainer2.jpg differ
diff --git a/client/firstViewImages/firstImageContainer3.jpg b/client/firstViewImages/firstImageContainer3.jpg
index a178b4103b1ac0b3cebef89cb682f1919565e8c9..e434bf977714893158ac9a15619f9e28971f9a53 100644
Binary files a/client/firstViewImages/firstImageContainer3.jpg and b/client/firstViewImages/firstImageContainer3.jpg differ
diff --git a/client/firstview.html b/client/firstview.html
index 4a462915dbc5ced387c28347866b73f2a7d8f729..5a3133179c632503ba91fa4c8a7eebdb7033da23 100644
--- a/client/firstview.html
+++ b/client/firstview.html
@@ -1,156 +1,279 @@
 <!DOCTYPE html>
 <html lang="en">
-<head>
-    <meta charset="UTF-8">
+  <head>
+    <meta charset="UTF-8" />
     <title>TNM115 Project HOMEPAGE</title>
-    <meta name="authors" content="Adna Maric, Rebecca Arkhed, Klara Paananen Axelsson, Elias Englund">
-    <meta name="description" content="A webpage analyzing the Bechdel test">
-    <meta name="keywords" content="Bechdel test, Analysis, IMDB">
-    <link rel="stylesheet" href="FirstViewstylesheet.css">
-</head>
-<body>
+    <meta
+      name="authors"
+      content="Adna Maric, Rebecca Arkhed, Klara Paananen Axelsson, Elias Englund"
+    />
+    <meta name="description" content="A webpage analyzing the Bechdel test" />
+    <meta name="keywords" content="Bechdel test, Analysis, IMDB" />
+    <link rel="stylesheet" href="firstViewStyleSheet.css" />
+    <script src="client.js"></script>
+  </head>
+  <body>
+    <!-- HEADER -->
+    <article class="header-container">
+      <div class="title-container">
+        <h1>Womens roles in movies</h1>
+      </div>
 
-<!-- HEADER -->
-<article class="header-container">
-    <div class="title-container">
-        <h1>Womens roles in movies</h1> 
-    </div>
-
-    <!-- Buttons in header -->
-    <div class="header-button-container">
+      <!-- Buttons in header -->
+      <div class="header-button-container">
         <button class="trendsButton">Trend</button>
         <button class="genresButton">Genres</button>
-        <a class="bechdelButton" href="secondview.html">The Bechdel Test</a>
-        <!--<button class="bechdelButton">The Bechdel Test</button>-->
-        <button class="filmIndustryButton"> The film industry</button>
-    </div>
-</article>
+        <button class="bechdelButton" onclick="navigateTo('bechdel')">The Bechdel Test</button>
+        <button class="filmIndustryButton" onclick="navigateTo('filmIndustry')">The Film Industry</button>
+       <!----<button class="bechdelButton">The Bechdel Test</button>
+        <button class="filmIndustryButton">The film industry</button> -->
+      </div>
+    </article>
 
-<!-- First image container -->
-<article class="first-image-container">
-    <div class="image-wrapper">
+    <!-- First image container -->
+    <article class="first-image-container">
+      <div class="image-wrapper">
         <div class="firstThreeImages-container">
-            <img src="/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/firstImageContainer1.jpg" alt="Picture of...">
-            <img src="/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/firstImageContainer2.jpg" alt="Picture of...">
-            <img src="/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/firstImageContainer3.jpg" alt="Picture of...">
+          <img
+            src="/client/firstViewImages/firstImageContainer1.jpg"
+            alt="Picture of..."
+          />
+          <img
+            src="/client/firstViewImages/firstImageContainer2.jpg"
+            alt="Picture of..."
+          />
+          <img
+            src="/client/firstViewImages/firstImageContainer3.jpg"
+            alt="Picture of..."
+          />
         </div>
-    </div>
-</article>
+      </div>
+    </article>
 
-<!-- First text container -->
-<article class = "first-text-container">
-    <div class = "firstText-container">
-        <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
-            labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
-            laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
-            voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
-            cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
-            labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
-            laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
-            voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
-            cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
-            labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
-            laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
-            voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
-            cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        </p> <!-- Lägg in text -->
-    </div>
-</article>
+    <!-- First text container -->
+    <article class="first-text-container">
+      <div class="firstText-container">
+        <h3>
+          Welcome, this is your go-to destination for exploring the
+          representation of women in cinema through the lens of the Bechdel
+          Test. Our site is dedicated to shedding light on gender diversity and
+          equality in movies, offering insightful analysis and comparisons to
+          empower viewers with valuable information.
+        </h3>
+        <!-- Lägg in text -->
+      </div>
+    </article>
 
-<!-- First buttons container -->
-<article class="first-buttons-container">
-    <div class="image-wrapper">
-        <button class="ImageFilmIndustryButton"></button>
-        <button class="ImageBechdelButton"></button>
-    </div>
-</article>
+    <!-- First buttons container -->
+    <article class="first-buttons-container">
+      <div class="image-wrapper">
+        <button class="ImageFilmIndustryButton" onclick="navigateTo('filmIndustry')"></button>
+        <button class="ImageBechdelButton" onclick="navigateTo('bechdel')"></button>
+      </div>
+    </article>
 
-<!-- Second text container, Two text containers -->
-<div class="two-text-container">
-    <div class="text-container" id="first-text-container">
-        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
-            labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
-            laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
-            voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
-            cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
-    </div>
-    <div class="text-container" id="second-text-container">
-        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
-            labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
-            laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
-            voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
-            cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+    <!-- Second text container, Two text containers -->
+    <div class="two-text-container">
+      <div class="text-container" id="first-text-container">
+        <h3>
+          Our site offers in-depth analyses and comparisons of movies based on
+          their adherence to the Bechdel Test. Through thoughtful critiques and
+          data-driven insights, we explore the significance of women's roles in
+          shaping cinematic narratives. Visitors can browse through curated
+          lists, rankings, and articles to gain a nuanced understanding of
+          gender dynamics in cinema.
+        </h3>
+      </div>
+      <div class="text-container" id="second-text-container">
+        <h3>
+          This website empowers audiences to make informed decisions about the
+          media they consume. By highlighting movies that successfully pass the
+          Bechdel Test and showcase diverse female characters, we encourage
+          viewers to support inclusive storytelling. Our platform serves as a
+          guide for discovering empowering films that celebrate women's voices
+          and experiences.
+        </h3>
+      </div>
     </div>
-</div>
 
-<!-- Second image container -->
-<article class="second-image-container">
-    <div class = "secondThreeImages-container">
-        <div class="image-wrapper">
-            <img src="/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/secondImageContainer1.avif" alt ="Picture of..."> <!-- Lägg in bild -->
-            <img src="/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/secondImageContainer2.avif" alt ="Picture of..."> <!-- Lägg in bild -->
-            <img src="/Users/adnamaric/Desktop/grupp-4-project/client/firstViewImages/secondImageContainer3.avif" alt ="Picture of..."> <!-- Lägg in bild -->
+<!--Third text container -->
+    <article class="third-text-container">
+      <div class="thirdText-container">
+        <h3>
+          Whether you're a casual moviegoer or a dedicated cinephile, this site
+          offers a wealth of resources for exploring the representation of women
+          in cinema. Start your journey today to discover empowering films,
+          insightful analyses, and meaningful discussions. Join us in promoting
+          diversity, inclusivity, and gender equality in the world of movies.
+          Happy exploring!
+        </h3>
+        <!-- Lägg in text -->
+      </div>
+    </article>
+
+    <section id="genre-section">
+      <!-- Second buttons container -->
+      <!-- Second buttons container -->
+      <article class="second-buttons-container">
+        <!-- First row: Genre buttons -->
+        <div class="first-buttons-row">
+          <button
+            class="genreButton"
+            label="Horror"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Drama"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Adventure"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Animation"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Biography"
+            onclick="lookupGenre(this)"
+          ></button>
+        </div>
+        <!-- Second row: Genre buttons -->
+        <div class="second-buttons-row">
+          <button
+            class="genreButton"
+            label="Comedy"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Crime"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Documentary"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Family"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Fantasy"
+            onclick="lookupGenre(this)"
+          ></button>
         </div>
+        <!-- Third row: Genre buttons -->
+        <div class="third-buttons-row">
+          <button
+            class="genreButton"
+            label="Romance"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Action"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Film-Noir"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="History"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Music"
+            onclick="lookupGenre(this)"
+          ></button>
         </div>
-</article>
 
-<!-- Third text container -->
-<article class = "third-text-container">
-    <div class = "thirdText-container">
-        <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
-            labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
-            laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
-            voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
-            cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
-            labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
-            laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
-            voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
-            cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
-            labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
-            laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
-            voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
-            cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        </p> <!-- Lägg in text -->
-    </div>
-</article>
+        <!-- Fourth row: Genre buttons -->
+        <div class="fourth-buttons-row">
+          <button
+            class="genreButton"
+            label="Musical"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Mystery"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Sci-Fi"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Short"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Sport"
+            onclick="lookupGenre(this)"
+          ></button>
+        </div>
 
-<!-- Second buttons container -->
-<!-- Second buttons container -->
-<article class="second-buttons-container">
-    <!-- First row: Horror and Drama buttons -->
-    <div class="horror-drama-row">
-        <button class="genreButton" label="Horror"></button>
-        <button class="genreButton" label="Drama"></button>
-    </div>
-    <!-- Second row: Comedy button -->
-    <div class="comedy-row">
-        <button class="genreButton" label="Comedy"></button>
-    </div>
-    <!-- Third row: Romance and Action buttons -->
-    <div class="romance-action-row">
-        <button class="genreButton" label="Romance"></button>
-        <button class="genreButton" label="Action"></button>
-    </div>
-</article>
+        <!-- Fifth row: Genre buttons -->
+        <div class="fifth-buttons-row">
+          <button
+            class="genreButton"
+            label="Thriller"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="War"
+            onclick="lookupGenre(this)"
+          ></button>
+          <button
+            class="genreButton"
+            label="Western"
+            onclick="lookupGenre(this)"
+          ></button>
+        </div>
+      </article>
+
+      <article id="genres">
+        <h3 id="movie-genre-header">Movies</h3>
+        <table id="genre-table"></table>
+      </article>
+    </section>
 
-<!-- Line -->
-<hr class="footer-line">
+    <!-- Line -->
+    <hr class="footer-line" />
 
-<!-- Contact us box -->
-<article class="contact-us-container">
-    <!-- Contact us info -->
-    <div class="contactUs">
+    <!-- Contact us box -->
+    <article class="contact-us-container">
+      <!-- Contact us info -->
+      <div class="contactUs">
         <p>Contact us:</p>
         <div class="contact-form">
-            <textarea id="contactMessage" name="contactMessage" rows="4" cols="50" placeholder="Write your message here..."></textarea>
-            <button id="sendButton">Send</button>
+          <textarea
+            id="contactMessage"
+            name="contactMessage"
+            rows="4"
+            cols="50"
+            placeholder="Write your message here..."
+          ></textarea>
+          <button id="sendButton">Send</button>
         </div>
-    </div>
-</article>
-
-</body>
-</html>
\ No newline at end of file
+      </div>
+    </article>
+  </body>
+</html>
diff --git a/client/movieView.html b/client/movieView.html
new file mode 100644
index 0000000000000000000000000000000000000000..c2bd1a15eff91e6f5250505f595d65233ada6e02
--- /dev/null
+++ b/client/movieView.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <title>TNM115 Project HOMEPAGE - Movie</title>
+    <meta
+      name="authors"
+      content="Adna Maric, Rebecca Arkhed, Klara Paananen Axelsson, Elias Englund"
+    />
+    <meta name="description" content="A webpage analyzing the Bechdel test" />
+    <meta name="keywords" content="Bechdel test, Analysis, IMDB" />
+    <link rel="stylesheet" href="movieViewStyleSheet.css" />
+    <script src="movieViewClient.js"></script>
+  </head>
+  <body>
+    <!-- HEADER -->
+    <article>
+      <div class="title-container">
+        <h1 id="movie-header">Movie Information</h1>
+      </div>
+      <div id="movie-info-div">
+        <table id="movie-info-table"></table>
+      </div>
+      <div id="bechdel-info-div">
+        <h1>Bechdel</h1>
+        <table id="bechdel-info-table"></table>
+      </div>
+    </article>
+  </body>
+</html>
diff --git a/client/movieViewClient.js b/client/movieViewClient.js
new file mode 100644
index 0000000000000000000000000000000000000000..9e09bb0339848eea14410de80b3ef1ade67dea47
--- /dev/null
+++ b/client/movieViewClient.js
@@ -0,0 +1,84 @@
+//Kallar på de funktioner som ska köras när sidan laddas in
+
+const serverUrl = "http://localhost:3000"
+
+document.addEventListener("DOMContentLoaded", function () {
+  fetchMovieData(); // Hämtar data om filmer och visar en kort sammanfattning av dem
+});
+
+async function fetchMovieData() {
+  let href = document.location.href;
+  console.log("FetchMovieData. Use URL movieId parameter:", href);
+
+  const urlParams = new URLSearchParams(document.location.search);
+  const movieId = urlParams.get("movieId");
+  const genre = urlParams.get("genre");
+
+  console.log("Got movie id:", movieId);
+
+  let movieHeader = document.getElementById("movie-header");
+  movieHeader.innerText = `Movie Information (genre ${genre})`;
+
+  const response = await fetch(serverUrl+"/movie-info/" + movieId,{
+    method: "GET",
+    headers: {
+        "Content-Type": "application/json",
+    }
+  });
+
+  response.json().then((jsonData) => {
+    console.log("Received Movie-info JSON data", jsonData);
+    if (jsonData.result.length > 0) showMovieInfo(jsonData.result[0]);
+  });
+
+  const resp = await fetch(serverUrl + "/bechdel-info/" + movieId,{
+    method: "GET",
+    headers: {
+        "Content-Type": "application/json",
+    }
+  });
+
+  resp.json().then((jsonData) => {
+    console.log("Received Bechdel JSON data", jsonData);
+    if (jsonData.result.length > 0) showBechdelInfo(jsonData.result[0]);
+  });
+
+}
+
+function showMovieInfo(data) {
+  let table = document.getElementById("movie-info-table");
+
+  for (var key in data) {
+    if (key.endsWith("_id")) continue;
+    let tr = document.createElement("tr");
+    table.append(tr);
+    let td = document.createElement("td");
+    tr.append(td);
+    let label = key[0].toUpperCase() + key.slice(1);
+    td.innerText = label;
+    td = document.createElement("td");
+    tr.append(td);
+    let value = data[key];
+    if (value) td.innerText = value;
+    else td.innerHTML = "<i>none</i>";
+  }
+}
+
+function showBechdelInfo(data) {
+  let table = document.getElementById("bechdel-info-table");
+
+  for (var key in data) {
+    if (key.endsWith("_id")) continue;
+    let tr = document.createElement("tr");
+    table.append(tr);
+    let td = document.createElement("td");
+    tr.append(td);
+    let label = key[0].toUpperCase() + key.slice(1);
+    td.innerText = label;
+    td = document.createElement("td");
+    tr.append(td);
+    let value = data[key];
+    if (value) td.innerText = value;
+    else td.innerHTML = "<i>none</i>";
+  }
+}
diff --git a/client/movieViewStyleSheet.css b/client/movieViewStyleSheet.css
new file mode 100644
index 0000000000000000000000000000000000000000..9469e6f73864030c99225f56bd2493b9a41c995e
--- /dev/null
+++ b/client/movieViewStyleSheet.css
@@ -0,0 +1,33 @@
+body {
+  background-color: #1a1a1a;
+  font-family: sans-serif;
+  color: white;
+}
+
+h1 {
+  font-size: 1cm;
+}
+
+td {
+  min-width: 10cm;
+  font-size: 8mm;
+}
+
+#movie-header {
+  font-size: 1cm;
+  color: white;
+  margin-left: 40px;
+}
+
+#movie-info-div,
+#bechdel-info-div {
+  margin: 1cm;
+}
+
+#movie-info-div {
+  background: darkgreen;
+}
+
+#bechdel-info-div {
+  background: darkolivegreen;
+}
diff --git a/client/secondViewClient.js b/client/secondViewClient.js
index a1a53f45f0c4ec171e32569cd752d760bcd44062..7f2c16e51c2b52fd3b071b3dc4869ad7785904c8 100644
--- a/client/secondViewClient.js
+++ b/client/secondViewClient.js
@@ -3,35 +3,93 @@ const serverUrl = "http://localhost:3000"
 
 document.addEventListener("DOMContentLoaded", function(){
     console.log("HTML DOM tree loaded, and ready for manipulation.");
+    //document.body.innerHTML = "";
 
-    document.getElementById("bechdelButton").addEventListener("click", beachdel);
 
+    //document.getElementById("bechdelButton").addEventListener("click", bechdel);
+    const urlParams = new URLSearchParams(window.location.search);
+    const buttonType = urlParams.get('buttonType');
 
-    // Använd händelselyssnare istället för onclick-attribut
 
-    // Hämta artisterna när sidan laddas
-
-    // === YOUR FUNCTION CALL TO INITIATE THE GENERATION OF YOUR WEB PAGE SHOULD GO HERE ===
+    if (buttonType === 'bechdel') {
+        // The 'bechdel' button was clicked in the first view
+        // Perform the desired action
+        console.log("The 'bechdel' button was clicked in the first view.");
+        bechdel();
+        // Add your logic here
+    } else if (buttonType === 'filmIndustry') {
+        // The 'filmIndustry' button was clicked in the first view
+        // Perform the desired action
+        console.log("The 'filmIndustry' button was clicked in the first view.");
+        filmIndustry();
+        // Add your logic here
+    } else {
+        // No specific button was clicked, or an unknown button type
+        console.log("No specific button was clicked, or an unknown button type.");
+        // Add your default behavior here
+    }
  
 });
 
-async function beachdel(){
+function bechdel(){
+
+    const container = document.getElementById("bechdel");
+    while (container.firstChild) {
+        container.removeChild(container.firstChild);
+    }
+    //container.classList.add("bechdel-container");
+
+
+    // Create elements to display the information
+    const title = document.createElement("h2");
+    title.textContent = "Information about the Bechdel Test";
+
+    const description = document.createElement("p");
+    const description2 = document.createElement("p");
+    const description3 = document.createElement("p");
+    description.innerHTML = `
+    The Bechdel test is a measure of the representation of women in a Film. <br>
+    It asks whether a work features at least two women who talk to each other about something other than a man. <br> 
+    The Test can be used to highlight the problem that women often portayed in a sterotypical way in Films, or are not reprenstated at all. <br>
+    The Bechdel test, by focusing on the interactions between female characters that don't revolve around men, draws attention to the broader issue of gender inequality and representation in media. <br>
+    Its simplicity underscores the pervasive nature of the problem: despite women making up approximately half of the global population, their presence and agency in films are often minimized or overlooked.
+    `;
+
+    description2.innerHTML = `
+    The test is named after American cartoonist Alison Bechdel, who introduced the idea in her comic strip "Dykes to Watch Out For" in 1985. The test has since become a widely used and discussed tool for analyzing gender bias and representation in media.<br>
+     It doesn't measure the overall quality or feminist value of a work, but rather serves as a basic indicator of whether women are represented in a meaningful way in a particular piece of fiction. <br> <br>
+     To determine how much intraction there is between same-sexx-characters. By examining a film, can you see how much time a male character interact with each other and how much time female  characters interact with each other. <br>
+         the rating scale goes from 0 to 3. There 0 stands for fewer than two female characters, 1 stands for that femake characters do not talk, 2 stands for female characters talk about men and 3 stands for that the film passes the bechdel test. 
+    `;
+
+
+    // Append elements to the container
+    container.appendChild(title);
+    container.appendChild(description);
+    container.appendChild(description2);
         // declaration (and subsequent initialization with options) of a response object, including transmission of the HTTP request message
-    const response = await fetch(serverUrl + "/beachdel", {
-        method: "GET",
-        headers: {
-            "Content-Type": "application/json",
-        }
-    });
-
-    // handle response
-    response.json().then((jsonBody) => {
-
-        // at this stage, the variable jsonBody holds the final HTTP response's body (in JSON) 
-        console.log("The client received a response from the server with JSON data.");
-        console.log(jsonBody);
-        console.log(jsonBody.resultDocuments);
-        
-    });
+   
 }
- 
\ No newline at end of file
+
+function filmIndustry(){
+    const container = document.getElementById("filmIndustry");
+    while (container.firstChild) {
+        container.removeChild(container.firstChild);
+    }
+    //container.classList.add("bechdel-container");
+
+
+    // Create elements to display the information
+    const title = document.createElement("h2");
+    title.textContent = "The Film Industry through the decades/centeries";
+
+
+    const description = document.createElement("p");
+
+    container.appendChild(title);
+    container.appendChild(description);
+}
+function navigateTo(buttontype) {
+    window.location.href =(`secondView.html?buttonType=${buttontype}`);
+  }
+
diff --git a/client/secondViewStylesheet.css b/client/secondViewStylesheet.css
index 355e7f949404ee2a18c2930616d75ff756b82e21..983616ce92d18538918fd36de56beee1fff876ee 100644
--- a/client/secondViewStylesheet.css
+++ b/client/secondViewStylesheet.css
@@ -47,27 +47,88 @@ body {
 }
 
 h2 {
+    color: white;
     font-size: 40px;
-    margin-left: 30px;
 }
 
-.first-container img {
+.first-container img,
+.third-container img {
     width: 400px;
     height: 400px;
     margin-right: 30px;
-    margin-left: 30px;
+    margin-left: 20px;
     border-radius: 10px;
     align-items: center;
+    margin-top: 40px;
 }
 
-.first-container {
+.first-container,
+.third-container {
     display: flex;
     justify-content: space-between;
-    margin-left: 30px;
+    margin-left: 40px;
+    margin-right: 20px;
+    margin-top: 50px;
+    margin-bottom: 50px;
+}
+
+.first-container .text-container,
+.third-container .text-container {
+    flex: 1;
+}
+
+.second-container {
+    display: flex;
+    margin-left: 40px;
     margin-right: 30px;
-    margin-top: 20px;
+    margin-top: 50px;
 }
 
-.first-container .text-container {
+.second-container .image-container {
     flex: 1;
+}
+
+.second-container .text-container {
+    flex: 2;
+    margin-left: 60px;
+    margin-right: 20px;
+}
+
+.second-container img {
+    width: 400px;
+    height: 400px;
+    margin-left: 20px;
+    margin-top: 30px;
+    border-radius: 10px;
+    align-items: center;
+}
+
+.line {
+    border: none;
+}
+
+.contact-us-container {
+    background-color: rgba(0, 0, 0, 0.7);
+    color: white;
+    padding: 20px;
+    border-radius: 10px;
+    margin-top: 50px;
+    margin-bottom: 50px;
+}
+
+.contact-form {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+}
+
+textarea {
+    background-color: rgba(0, 0, 0, 0.5);
+    color: white;
+    border: none;
+    border-radius: 5px;
+    padding: 10px;
+    margin-bottom: 10px;
+    width: 100%;
+    box-sizing: border-box;
 }
\ No newline at end of file
diff --git a/client/secondview.html b/client/secondview.html
index 8798dc467f30b10ee15a95294ca944853454eb2e..c240a1bfac89a2aadb6ae20e0804a9d5dac42fdf 100644
--- a/client/secondview.html
+++ b/client/secondview.html
@@ -11,35 +11,60 @@
 </head>
 <body>
 <!-- HEADER -->
-<article class="header-container">
-    <div class="title-container">
-        <h1>Womens roles in movies</h1> 
-    </div>
-
-    <!-- Buttons in header -->
-    <div class="header-button-container">
-        <button class="trendsButton">Trend</button>
-        <button class="genresButton">Genres</button>
-        <button class="bechdelButton">The Bechdel Test</button>
-        <button class="filmIndustryButton"> The film industry</button>
-    </div>
-</article>
+<!-- HEADER -->
+    <article class="header-container">
+        <div class="title-container">
+            <h1>Womens roles in movies</h1>
+        </div>
+        <!-- Buttons in header -->
+        <div class="header-button-container">
+            <button
+            class="trendsButton"
+            onclick='navigateTo("secondView.html#trend-container", true)'
+            >
+            Trend
+            </button>
+            <button
+            class="bechdelButton"
+            onclick='navigateTo("bechdel")'
+            >
+            The Bechdel Test
+            </button>
+            <button
+            class="filmIndustryButton"
+            onclick='navigateTo("filmIndustry")'
+            >
+            The film industry
+            </button>
+        </div>
+    </article>
+
 
 <!--- First container: img + text -->
-<!--- First container: img + text -->
-<article class="first-container">
-    <div class="text-container">
-        <h2> Title </h2> <!--- Change to suitable title--> <!-- CONNECTA MED JS -->
-        <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
-            ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
-            laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
-            voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
-            non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p> <!-- Lägg in text -->
-    </div>
-    <div class="image-container">
-        <img src="/Users/adnamaric/Desktop/grupp-4-project/client/secondViewImages/firstContainerImage.avif" alt="Picture of hole">
-    </div>
-</article>
-</div>
+    <article class="third-container" >
+        <div id="bechdel"></div>
+
+        </div>
+
+        <div id="filmIndustry">
+
+        </div>
+
+    </article>
+
+    <!-- Line -->
+    <hr class="footer-line">
+
+    <!-- Contact us box -->
+    <article class="contact-us-container">
+        <!-- Contact us info -->
+        <div class="contactUs">
+            <p>Contact us:</p>
+            <div class="contact-form">
+                <textarea id="contactMessage" name="contactMessage" rows="4" cols="50" placeholder="Write your message here..."></textarea>
+                <button id="sendButton">Send</button>
+            </div>
+        </div>
+    </article>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/client/thirdview.html b/client/thirdview.html
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/grupp-4 b/grupp-4
deleted file mode 160000
index f3619f4d3f47a68ddc589ec9e7d68df200ea117d..0000000000000000000000000000000000000000
--- a/grupp-4
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit f3619f4d3f47a68ddc589ec9e7d68df200ea117d
diff --git a/server/data-import/node_modules/.package-lock.json b/package-lock.json
similarity index 94%
rename from server/data-import/node_modules/.package-lock.json
rename to package-lock.json
index dc16c947d601c236ab4523555d2105664018431c..822b1a24df6059ae5aeb25fa889fc5be80f484e2 100644
--- a/server/data-import/node_modules/.package-lock.json
+++ b/package-lock.json
@@ -4,10 +4,17 @@
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
+    "": {
+      "name": "tnm115-project-material",
+      "version": "1.0.0",
+      "dependencies": {
+        "mongodb": "6.3.0"
+      }
+    },
     "node_modules/@mongodb-js/saslprep": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz",
-      "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==",
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.5.tgz",
+      "integrity": "sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA==",
       "dependencies": {
         "sparse-bitfield": "^3.0.3"
       }
diff --git a/package.json b/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..136edb96d359567d2e68dd0eee1f9591f94928d2
--- /dev/null
+++ b/package.json
@@ -0,0 +1,9 @@
+{
+  "name": "tnm115-project-material",
+  "version": "1.0.0",
+  "description": "Course project datasets, i.e., IMDb and Bechdel Test, for JSON Data Import to MongoDB data storage system",
+  "author": "Nico Reski, Katerina Vrotsou",
+  "dependencies": {
+    "mongodb": "6.3.0"
+  }
+}
diff --git a/server/data-import/.DS_Store b/server/.DS_Store
similarity index 100%
rename from server/data-import/.DS_Store
rename to server/.DS_Store
diff --git a/server/app.js b/server/app.js
index 77c947862d52355a18987097ddc522b174b0d314..54744868e382a04a548602a6ce3ada17061658a1 100644
--- a/server/app.js
+++ b/server/app.js
@@ -1,86 +1,239 @@
-const http = require("node:http");      // Node.js standard library for handling client/server server features; docs: https://nodejs.org/docs/latest-v20.x/api/http.html#http
-
-
+// Importera moduler för att arbeta med HTTP och filsystemet
+const http = require("http");
+const fs = require("fs");
 const MongoClient = require("mongodb").MongoClient;     // MongoDB Node.js Driver; docs: https://www.npmjs.com/package/mongodb
 
-// HTTP server configuration
+
+// Definiera serverns inställningar
 const hostname = "localhost";
 const port = 3000;
 const serverUrl = "http://" + hostname + ":" + port + "";
 
-// MongoDB Driver Module loading, server configuration, and database client initialization
 const dbHostname = "localhost"; 
 const dbPort = 27017;
 const dbServerUrl = "mongodb://" + dbHostname + ":" + dbPort + "";
 const dbClient = new MongoClient(dbServerUrl);
 
+// Detta nedanför behöver anpassas till detta projekt då det hittills tillhår en labb
+
+// Skapa en HTTP-server som lyssnar på specifika begäranden
 const server = http.createServer((req, res) => {
+  //console.log("Current directory:", __dirname);
+  //console.log("A new incoming HTTP request has been received with method type: " + req.method);
 
+  // Analysera begärd URL
+  const requestUrl = new URL(serverUrl + req.url);
+  const pathComponents = requestUrl.pathname.split("/");
+  const urlSplit = req.url.split("?"); // kolla ifall URL:en innehåller frågetecken. Ta bort det vid jämförelsen nedan
+  const url = urlSplit[0];
 
-    const requestUrl = new URL(serverUrl + req.url);
-    const pathComponents = requestUrl.pathname.split("/");
-
-    // handle routing
-    if(req.method == "GET"){
-        switch(pathComponents[1])
-        {
-            case "beachdel": 
-                routing_beachdel(res);
-                break;
-            case "filmindustry":
-                routing_filmindustry(res);
-                break;
-            default:
-                sendResponse(res, 200, "text/plain", "Welcome on the beachdel Node.js server.");
-                break;
-        }
-    }else if (req.method == "OPTIONS"){
-        // default preflight response: 204 (No Content); docs: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#successful_responses
-        sendResponse(res, 204, null, null);
-    }
-    else {
-        sendResponse(res, 200, "text/plain", "Welcome on the  Node.js server.");
+  // Hantera GET-begäranden baserat på URL-stigen
+  if (req.method == "GET") {
+    // Dessa if satser hjälper att generalisera routFile
+    if (url === "/") {
+      let file = "client/firstView.html";
+      routeFile(file, "text/html", res);
+    } else if (url.endsWith(".html")) {
+      let file = "client/" + url;
+      routeFile(file, "text/html", res);
+    } else if (url.endsWith(".css")) {
+      let file = "client/" + url;
+      routeFile(file, "text/css", res);
+    } else if (url.endsWith(".js")) {
+      let file = "client/" + url;
+      console.log("Serve javascript:", file);
+      routeFile(file, "text/javascript", res);
+    } else if (url.endsWith(".jpg")) {
+      let file = "." + url;
+      console.log("Serve jpg request:", file);
+      routeFile(file, "image/jpeg", res);
+    } else if (url.endsWith(".avif")) {
+      let file = "." + url;
+      routeFile(file, "image/avif", res);
+    } else
+      switch (pathComponents[1]) {
+        case "genre":
+          let genre = pathComponents[2];
+          console.log("Lookup genre:", genre);
+          routeGenre(res, genre);
+          break;
+
+        case "movie-info":
+            
+            console.log("Lookup movie with Id:", pathComponents[2]);
+            routeMovieInfo(res, pathComponents[2]);
+            break;
+
+        case "bechdel-info":
+            console.log("Lookup bechdel info for movie with Id:",pathComponents[2]);
+            routeBechdelInfo(res, pathComponents[2]);
+            break;
+        
+        default:
+          // Skicka en standardhälsning om URL-stigen inte matchar något specifikt
+          sendResponse(res, 200,"text/plain","Welcome on my Lab5 Node.js server GET request.");
+          break;
+      }
+  }
+  //********************************************************************************************** */
+  // Hantera POST-begäranden baserat på URL-stigen
+  // Post begäranden är till för att lägga in data i mongodb vilket vi kanke
+  //ej behöver till detta projektet
+  else if (req.method == "POST") {
+    switch (pathComponents[1]) {
+
+      default:
+        // Skicka en standardhälsning om URL-stigen inte matchar något specifikt
+        sendResponse(res,200,"text/plain","Welcome on my Lab5 Node.js server POST request");
+        break;
     }
+  } else if (req.method == "OPTIONS") {
+    // Svara på OPTIONS-begäranden för CORS
+    sendResponse(res, 204, null, null);
+  }
 });
-// start up of the initialized (and configured) server
+
+//********************************************************************************************************' */
+
+// Starta servern och lyssna på den angivna porten och värdadressen
 server.listen(port, hostname, () => {
-    console.log("The server running and listening at\n" + serverUrl);
+  console.log("The server running and listening at\n" + serverUrl);
 });
 
-function sendResponse(res, statusCode, contentType, data){
-    
-    // configure HTTP response status code, and (if required) Content-Type header
-    res.statusCode = statusCode;
-    if (contentType != null) res.setHeader("Content-Type", contentType);
-
-    // configure HTTP response message header to allow Cross-Origin Resource Sharing (CORS); docs: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
-    res.setHeader("Access-Control-Allow-Origin", "*");
-    res.setHeader("Access-Control-Allow-Headers", "*");
-    
-    // send (transmit) the HTTP response message
-    if (data != null) res.end(data);     // data in HTTP message body
-    else res.end();                      // empty HTTP message body
+
+// names of the Database and Collection (in that Database) on the MongoDB Server,
+const dbName = "tnm115-project";
+const dbImdbName = "imdb";
+const dbBechdelName = "bechdel";
+
+// Returnerar lista med film-namn beroende på genré
+async function routeGenre(res, genre) {
+  await dbClient.connect(); // establish an active connection to the specified MongoDB server
+  const db = dbClient.db(dbName); // select a specified database on the server
+  const dbCollection = db.collection(dbImdbName); // select a specified (document) collection in the databas
+
+  const filterQuery = { genre: { $in: [genre] } };
+  const sortQuery = { name: 1 }; //sorterar alfabetiskt
+  const projectionQuery = { name: 1, normalized_id: 1 }; //väljer att bara hämta namn, defult så kommer id:n också med
+  const findResult = await dbCollection
+    .find(filterQuery)
+    .project(projectionQuery) /*.sort(sortQuery)*/
+    .toArray();
+
+  const jsonData = { result: findResult }; // wrapper resultatet och skickar som ny array
+  const jsonDataAsString = JSON.stringify(jsonData);
+  sendResponse(res, 200, "application/json", jsonDataAsString);
+
+  await dbClient.close();
 }
-async function routing_beachdel(res){
-    await dbClient.connect();                                   // (1) establish an active connection to the specified MongoDB server
-    const db = dbClient.db("tnm115-project");                       // (2) select a specified database on the server
-    const dbCollection = db.collection("bechdel");  // (3) select a specified (document) collection in the database
-
-    const beachdel = await dbCollection.find({}).sort({year:1}).toArray();    // findQuery {} for selecting all documents in the collection
-    console.log("Found Documents Count:", beachdel.length);
-    //{ projection: { _id: 1, name: 1 } }
-    // observe: the variable "findAllResult" contains an "array" with all the queried documents;
-    //          in order to send these to the client, it makes sense to "wrap" the array into
-    //          a new JSON object, serialize (stringify) it, and send them to the client
-    const jsonResult = { resultDocuments: beachdel };
-    const jsonResultAsString = JSON.stringify(jsonResult);
-    
-    sendResponse(res, 200, "application/json", jsonResultAsString);
-    
-    // close connection to the database
-    await dbClient.close();
 
+async function routeMovieInfo(res, movieId) {
+  await dbClient.connect(); // establish an active connection to the specified MongoDB server
+  const db = dbClient.db(dbName); // select a specified database on the server
+  const dbCollection = db.collection(dbImdbName); // select a specified (document) collection in the databas
+
+  const filterQuery = { normalized_id: parseInt(movieId) };
+  //const sortQuery = { name: 1 }; //sorterar alfabetiskt
+  //const projectionQuery = { name: 1, normalized_id: 1 }; //väljer att bara hämta namn, defult så kommer id:n också med
+  const findResult = await dbCollection
+    .find(filterQuery)
+    /*.project(projectionQuery) .sort(sortQuery)*/
+    .toArray();
+
+  const jsonData = { result: findResult }; // wrapper resultatet och skickar som ny array
+  const jsonDataAsString = JSON.stringify(jsonData);
+  sendResponse(res, 200, "application/json", jsonDataAsString);
+
+  await dbClient.close();
 }
-async function routing_filmindustry(res){
 
-}
\ No newline at end of file
+async function routeBechdelInfo(res, movieId) {
+  await dbClient.connect(); // establish an active connection to the specified MongoDB server
+  const db = dbClient.db(dbName); // select a specified database on the server
+  const dbCollection = db.collection(dbBechdelName); // select a specified (document) collection in the databas
+  const find = await dbCollection.find({normalized_imdb_id: parseInt(movieId)}).toArray();    // findQuery {} for selecting all documents in the collection
+  console.log("Found Documents Count:", find);
+  const filterQuery = {normalized_imdb_id: parseInt(movieId) };
+  
+  //const sortQuery = { name: 1 }; //sorterar alfabetiskt
+  //const projectionQuery = { name: 1, normalized_id: 1 }; //väljer att bara hämta namn, defult så kommer id:n också med
+  const findResult = await dbCollection.find(filterQuery).toArray();
+
+    /*.project(projectionQuery) .sort(sortQuery)*/
+
+
+  const jsonData = { result: findResult }; // wrapper resultatet och skickar som ny array
+  
+  const jsonDataAsString = JSON.stringify(jsonData);
+
+  sendResponse(res, 200, "application/json", jsonDataAsString);
+
+  await dbClient.close();
+}
+
+
+// Funktion för att skicka ett svar till klienten
+function sendResponse(res, statusCode, contentType, data) {
+  res.statusCode = statusCode;
+  if (contentType != null) res.setHeader("Content-Type", contentType);
+
+  res.setHeader("Access-Control-Allow-Origin", "*");
+  res.setHeader("Access-Control-Allow-Headers", "*");
+
+  if (data != null) res.end(data);
+  else res.end();
+}
+
+// Funktion för att hantera routing till startsidan
+function routeStartPage(res) {
+  // Läs in HTML-filen och skicka till klienten
+  let contentType = "text/html";
+  let filePath = "client/firstView.html";
+
+  fs.readFile(filePath, (err, content) => {
+    if (err) {
+      res.writeHead(500);
+      res.end("Server Error");
+    } else {
+      res.writeHead(200, { "Content-Type": contentType });
+      res.end(content, "utf-8");
+    }
+  });
+}
+
+// errorFile är inte nödvändig. Används för att skicka tillbaka placeholder-bild
+function routeFile(file, mimeType, res, errorFile) {
+  // Läs CSS-filen och skicka till klienten
+  let contentType = mimeType;
+
+  // console.log("route file:", file);
+  fs.readFile(file, (err, content) => {
+    if (err) {
+      if (errorFile) {
+        routeFile(errorFile, mimeType, res);
+      } else {
+        res.writeHead(500);
+        res.end("Server Error");
+      }
+    } else {
+      res.writeHead(200, { "Content-Type": contentType });
+      res.end(content, "utf-8");
+    }
+  });
+}
+
+
+// Funktion för att hantera routing av JavaScript-filen för klientens sida
+// function routing_script(res) {
+//     // Läs in JavaScript-filen och skicka till klienten
+//     const script = "../client/action.js";
+//     fs.readFile(script, (err, data) => {
+//         if (err) {
+//             console.log("An error ocurred when attempting to read the file at: " + script);
+//             sendResponse(res, 404, null, null);
+//         }
+//         else {
+//             sendResponse(res, 200, "text/javascript", data);
+//         }
+//     });
+// }
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/LICENSE b/server/data-import/node_modules/@mongodb-js/saslprep/LICENSE
deleted file mode 100644
index 481c7a50f96cf594ff078ba43267185b9c5cccc7..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2014 Dmitry Tsvettsikh
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/.esm-wrapper.mjs b/server/data-import/node_modules/@mongodb-js/saslprep/dist/.esm-wrapper.mjs
deleted file mode 100644
index 0b46bfa63054f8a0238b84a2d12438ab783a9cbf..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/.esm-wrapper.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-import mod from "./node.js";
-
-export default mod;
-export const saslprep = mod.saslprep;
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/browser.d.ts b/server/data-import/node_modules/@mongodb-js/saslprep/dist/browser.d.ts
deleted file mode 100644
index 70a71a5a0b89f03c100b9322566b43753f2e9917..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/browser.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-declare const saslprep: (args_0: string, args_1?: {
-    allowUnassigned?: boolean | undefined;
-} | undefined) => string;
-export = saslprep;
-//# sourceMappingURL=browser.d.ts.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/browser.d.ts.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/browser.d.ts.map
deleted file mode 100644
index 669fc6433d4e9fed0f71e3569b52070e263dc642..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/browser.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,QAAQ;;wBAAmC,CAAC;AAIlD,SAAS,QAAQ,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/browser.js b/server/data-import/node_modules/@mongodb-js/saslprep/dist/browser.js
deleted file mode 100644
index 1bedd860eb3e04e6ba47d4ad717e41bca8f3bd0f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/browser.js
+++ /dev/null
@@ -1,12 +0,0 @@
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
-    return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-const index_1 = __importDefault(require("./index"));
-const memory_code_points_1 = require("./memory-code-points");
-const code_points_data_browser_1 = __importDefault(require("./code-points-data-browser"));
-const codePoints = (0, memory_code_points_1.createMemoryCodePoints)(code_points_data_browser_1.default);
-const saslprep = index_1.default.bind(null, codePoints);
-Object.assign(saslprep, { saslprep, default: saslprep });
-module.exports = saslprep;
-//# sourceMappingURL=browser.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/browser.js.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/browser.js.map
deleted file mode 100644
index 40edf44bec74c5b6284b962b74ac04433f9c2d95..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/browser.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":";;;;AAAA,oDAAgC;AAChC,6DAA8D;AAC9D,0FAA8C;AAE9C,MAAM,UAAU,GAAG,IAAA,2CAAsB,EAAC,kCAAI,CAAC,CAAC;AAEhD,MAAM,QAAQ,GAAG,eAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAEzD,iBAAS,QAAQ,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts b/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts
deleted file mode 100644
index f85af5b8ba055409b80b8c4da633524a50a06591..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/// <reference types="node" />
-declare const data: Buffer;
-export default data;
-//# sourceMappingURL=code-points-data-browser.d.ts.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts.map
deleted file mode 100644
index 617b217b8bc285a0523b5e8956b2b548ee55e650..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"code-points-data-browser.d.ts","sourceRoot":"","sources":["../src/code-points-data-browser.ts"],"names":[],"mappings":";AAAA,QAAA,MAAM,IAAI,QAGT,CAAC;AACF,eAAe,IAAI,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js b/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js
deleted file mode 100644
index 5ea96355112d46e192cde2a473b85735ac2ba5b8..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js
+++ /dev/null
@@ -1,5 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const data = Buffer.from('AAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAP////AAAAAAAAAAAAAAADAAAAAAAAAAH//wAAAAAAAAAAAAD//wAA893wFAAAIAAAAAABAAAAAAH/AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAEAAAAAAz8AAP////+AAAAAAYCAAAAAAJ+AACAAACAH/wAAAB8H///3/+6AAAAfAAAD/wAAAAAAAAAAAAAAAAAAAAAAAwABAAIAAAAHAAAAH////////wAAAAAAAD///////////////////////////////////////////////////////4gAAAAAAAAwAAMHAAAAf/+IBmAAAEBcNAZj/vIMAAAf2B5gAABASTQeY/+F/AAH/4gKIAAAQEgwAiN//3wA//+IBmAAAEBMMA5j/PI8AH//yBxDlOccAjwcQ/7//gAf/4gEQAAAQAg8BEP5/zwA///IBEAAAEAIPARD+f08AP//yARAAABAADwMQ/7/PAD//8gAAcAAACALAd4FAP//x/+AAAAAAAAAHgAAAA//////llvwgIrIACMFAwAz/////wAAAAAAAAAAAIAAAAAfgAAADwCAAAAABAAG////////AAAAACCQHD8AAAA///////////8AAAAAA/8AAAAAAG8AAAAAAAAAAAAAAD4AAAAAAAAAAB8AAAAAAAAAAAAAPwEAAAAAAAAAAUMBQwAAAAABQwAAAAFDAUMBAQAAAQAAAAFDAQAAAAABAAAfgAAAB/////8AAAAAAAAAAAAAB/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/wAAAAcAAAAAAAAAAAAAf/8ABAf/AAAB/wAAD/8ABE//AAAAAAAAAAAAAAAHAD///wABAD8AAAAAAAAAAAAAAP8AAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAA/AAADAwAAAAADAwCqAAAAAwAAAAAAAAQABAAMCAAAxAEAAAAAAAAAAAAAHv4PwDAAAAH//wAAP////wAAAB///wAAAAAAAAAYAA/gAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///////wAAAAAB////AB///wAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAAAAAAAAAAAAADAD///////////////////4QwAAAAgAAAAAodAYAAAAAAAAcAAACAAf//AAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAACAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///8ADwAAAAAAAAAAgAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAA+AAAAAAHgAAAAAAAAAAAAAABAAAAAAD/////////AAAAAAAHAAAAAA//gAAAAAAOAAAAAAAAAAAADwAAAAAAAQAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAB////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAB////////////////////////8B/+D4AAABBSQAAAAAAAAAAAAAAAAAP////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAwAAAAAAAAP8AAAAAAAcAAP//D/8AAAGAEAABDwQAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcDAwMcBAf+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAQ//AAAAH/////////////////////////////8AAAAAAwAAAAAD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAEAAAAAAAAAAAE2YQAKEgAAAAAAAAAAhgEBAAAACEFwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAA//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////y/////AAAAAAAAAAAAAAAA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAD/////AAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAD/AAAAAAAB8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAP///+D4AAAAABF////g/+AAAAAHf////////////////AQGAAA+//y////4AAAAAAAAAAAAAP/////8AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/7/++tv/////////////////wAAAAB////////////////////////////////////////////////////////////wAAP//////////P////////wAAAAAA//gAAAAAAAAAAAAAAAAAAPv/////////////////////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAAAAAAAAAf///4H///+AAAAAAACAEIP///v////7/////////////////////////////////////////////////v//wAAAA///////////////8/5/AAMAA+AIAAAAAAAAAAAAAAAAAAAAAACAC6///3//////+//////wA/////////////////////+A///////////7//////MD//wAAAAB//////n9//////0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf////////HgHiA/8//gAA3+Z///7+jw4GYAQ3D/8/gB+Gf//+/tsOAAAB6A/84ABf13///v7fHgFiAAIP/AAA3+Z///7+zxoGYAQ3D/4AAF+O8axjj/cNjuAEAAf/gAHf7v///v/fAeAAAAMP/AAA3+7///7/3wvmwBgLD/wAAN/u///+//8ODuAEAw/8AADf//j///9/0/gHA/wAAOAB///////+wAP4B//AAAAAAaaQPf3U3sAT6AP/MAAAAAP///z////qD/3/////gAAEE8AAAAAAAA/35AAAAAAAA/////99oQID///8AAAAAAAAAAAD//////AD//////5D//////////////8H//////////+D/////////////wP7//////////rz+vP/////+vP////68/rz+/v///v////68/v/////+///gf///+AAAAAD/////////////+AB////////////////////////////////////////////////////////////////////////////////////////////////////////+AH///+D/////////////gAD/+8AA///GAP//wAD/+4AA/////////gP9gA/o/8AAAAAA/8D//////////////wD//////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////////////////////w///////////////A///8/P/////8/P9V/////P////////v6O/jz8P/4O/gAAgAAAAAAAAAAAAAAAEABAAAAAAAAAAAAAAAAAAAAACE/9HwKvd/HB8AAAP/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////gAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAB/wHz4f/////////////4Hf//////////////vB//////4f//////////////+//////8AAAAAAAAA///////4//////AAAAD////x////////gAD/8P///////v///////////////////h////////////////z////+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAA//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/////////+AAAAAAAAAAAAAAAAAAAAAAAAD+AB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////gf///4AP//////////////j8/PzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////vAA////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////P/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////////////////////////////8AP/////+P/////////4/4AAYD////8P///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////////7///////////7Jnv/17f//////////ef7+////976P7////////////////////////////////////////////////////////D////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w=', 'base64');
-exports.default = data;
-//# sourceMappingURL=code-points-data-browser.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js.map
deleted file mode 100644
index feba4779b358d09a3d66ded2c317c41f5dbe7f06..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"code-points-data-browser.js","sourceRoot":"","sources":["../src/code-points-data-browser.ts"],"names":[],"mappings":";;AAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CACtB,8sliBAA8sliB,EAC9sliB,QAAQ,CACT,CAAC;AACF,kBAAe,IAAI,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts b/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts
deleted file mode 100644
index cc908ec59621a9997a6220fd0d538f36cfc00d7e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/// <reference types="node" />
-declare const _default: Buffer;
-export default _default;
-//# sourceMappingURL=code-points-data.d.ts.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts.map
deleted file mode 100644
index 772442e0bdbe9dbf3903430ba494470c1c5c34bb..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"code-points-data.d.ts","sourceRoot":"","sources":["../src/code-points-data.ts"],"names":[],"mappings":";;AAEA,wBAKE"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data.js b/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data.js
deleted file mode 100644
index 36e458cf812949ad9cc37211032d46549c7aac8c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data.js
+++ /dev/null
@@ -1,5 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const zlib_1 = require("zlib");
-exports.default = (0, zlib_1.gunzipSync)(Buffer.from('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', 'base64'));
-//# sourceMappingURL=code-points-data.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data.js.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data.js.map
deleted file mode 100644
index 89b5e528e86fca8518d2b224889589bdb1467e63..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-data.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"code-points-data.js","sourceRoot":"","sources":["../src/code-points-data.ts"],"names":[],"mappings":";;AAAA,+BAAkC;AAElC,kBAAe,IAAA,iBAAU,EACvB,MAAM,CAAC,IAAI,CACT,0nFAA0nF,EAC1nF,QAAQ,CACT,CACF,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts b/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts
deleted file mode 100644
index 36b6c56503146575c6973d08c52820153b5d142b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export declare const unassigned_code_points: Set<number>;
-export declare const commonly_mapped_to_nothing: Set<number>;
-export declare const non_ASCII_space_characters: Set<number>;
-export declare const prohibited_characters: Set<number>;
-export declare const bidirectional_r_al: Set<number>;
-export declare const bidirectional_l: Set<number>;
-//# sourceMappingURL=code-points-src.d.ts.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts.map
deleted file mode 100644
index ef0e6947b45fc78581ac7f87141def305e5b060f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"code-points-src.d.ts","sourceRoot":"","sources":["../src/code-points-src.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,sBAAsB,aA6YjC,CAAC;AAMH,eAAO,MAAM,0BAA0B,aAIrC,CAAC;AAMH,eAAO,MAAM,0BAA0B,aASrC,CAAC;AAMH,eAAO,MAAM,qBAAqB,aA6GhC,CAAC;AAMH,eAAO,MAAM,kBAAkB,aAmC7B,CAAC;AAMH,eAAO,MAAM,eAAe,aAyW1B,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-src.js b/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-src.js
deleted file mode 100644
index 2caa6297874c732f8701ca013af46633c508510e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-src.js
+++ /dev/null
@@ -1,881 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.bidirectional_l = exports.bidirectional_r_al = exports.prohibited_characters = exports.non_ASCII_space_characters = exports.commonly_mapped_to_nothing = exports.unassigned_code_points = void 0;
-const util_1 = require("./util");
-exports.unassigned_code_points = new Set([
-    0x0221,
-    ...(0, util_1.range)(0x0234, 0x024f),
-    ...(0, util_1.range)(0x02ae, 0x02af),
-    ...(0, util_1.range)(0x02ef, 0x02ff),
-    ...(0, util_1.range)(0x0350, 0x035f),
-    ...(0, util_1.range)(0x0370, 0x0373),
-    ...(0, util_1.range)(0x0376, 0x0379),
-    ...(0, util_1.range)(0x037b, 0x037d),
-    ...(0, util_1.range)(0x037f, 0x0383),
-    0x038b,
-    0x038d,
-    0x03a2,
-    0x03cf,
-    ...(0, util_1.range)(0x03f7, 0x03ff),
-    0x0487,
-    0x04cf,
-    ...(0, util_1.range)(0x04f6, 0x04f7),
-    ...(0, util_1.range)(0x04fa, 0x04ff),
-    ...(0, util_1.range)(0x0510, 0x0530),
-    ...(0, util_1.range)(0x0557, 0x0558),
-    0x0560,
-    0x0588,
-    ...(0, util_1.range)(0x058b, 0x0590),
-    0x05a2,
-    0x05ba,
-    ...(0, util_1.range)(0x05c5, 0x05cf),
-    ...(0, util_1.range)(0x05eb, 0x05ef),
-    ...(0, util_1.range)(0x05f5, 0x060b),
-    ...(0, util_1.range)(0x060d, 0x061a),
-    ...(0, util_1.range)(0x061c, 0x061e),
-    0x0620,
-    ...(0, util_1.range)(0x063b, 0x063f),
-    ...(0, util_1.range)(0x0656, 0x065f),
-    ...(0, util_1.range)(0x06ee, 0x06ef),
-    0x06ff,
-    0x070e,
-    ...(0, util_1.range)(0x072d, 0x072f),
-    ...(0, util_1.range)(0x074b, 0x077f),
-    ...(0, util_1.range)(0x07b2, 0x0900),
-    0x0904,
-    ...(0, util_1.range)(0x093a, 0x093b),
-    ...(0, util_1.range)(0x094e, 0x094f),
-    ...(0, util_1.range)(0x0955, 0x0957),
-    ...(0, util_1.range)(0x0971, 0x0980),
-    0x0984,
-    ...(0, util_1.range)(0x098d, 0x098e),
-    ...(0, util_1.range)(0x0991, 0x0992),
-    0x09a9,
-    0x09b1,
-    ...(0, util_1.range)(0x09b3, 0x09b5),
-    ...(0, util_1.range)(0x09ba, 0x09bb),
-    0x09bd,
-    ...(0, util_1.range)(0x09c5, 0x09c6),
-    ...(0, util_1.range)(0x09c9, 0x09ca),
-    ...(0, util_1.range)(0x09ce, 0x09d6),
-    ...(0, util_1.range)(0x09d8, 0x09db),
-    0x09de,
-    ...(0, util_1.range)(0x09e4, 0x09e5),
-    ...(0, util_1.range)(0x09fb, 0x0a01),
-    ...(0, util_1.range)(0x0a03, 0x0a04),
-    ...(0, util_1.range)(0x0a0b, 0x0a0e),
-    ...(0, util_1.range)(0x0a11, 0x0a12),
-    0x0a29,
-    0x0a31,
-    0x0a34,
-    0x0a37,
-    ...(0, util_1.range)(0x0a3a, 0x0a3b),
-    0x0a3d,
-    ...(0, util_1.range)(0x0a43, 0x0a46),
-    ...(0, util_1.range)(0x0a49, 0x0a4a),
-    ...(0, util_1.range)(0x0a4e, 0x0a58),
-    0x0a5d,
-    ...(0, util_1.range)(0x0a5f, 0x0a65),
-    ...(0, util_1.range)(0x0a75, 0x0a80),
-    0x0a84,
-    0x0a8c,
-    0x0a8e,
-    0x0a92,
-    0x0aa9,
-    0x0ab1,
-    0x0ab4,
-    ...(0, util_1.range)(0x0aba, 0x0abb),
-    0x0ac6,
-    0x0aca,
-    ...(0, util_1.range)(0x0ace, 0x0acf),
-    ...(0, util_1.range)(0x0ad1, 0x0adf),
-    ...(0, util_1.range)(0x0ae1, 0x0ae5),
-    ...(0, util_1.range)(0x0af0, 0x0b00),
-    0x0b04,
-    ...(0, util_1.range)(0x0b0d, 0x0b0e),
-    ...(0, util_1.range)(0x0b11, 0x0b12),
-    0x0b29,
-    0x0b31,
-    ...(0, util_1.range)(0x0b34, 0x0b35),
-    ...(0, util_1.range)(0x0b3a, 0x0b3b),
-    ...(0, util_1.range)(0x0b44, 0x0b46),
-    ...(0, util_1.range)(0x0b49, 0x0b4a),
-    ...(0, util_1.range)(0x0b4e, 0x0b55),
-    ...(0, util_1.range)(0x0b58, 0x0b5b),
-    0x0b5e,
-    ...(0, util_1.range)(0x0b62, 0x0b65),
-    ...(0, util_1.range)(0x0b71, 0x0b81),
-    0x0b84,
-    ...(0, util_1.range)(0x0b8b, 0x0b8d),
-    0x0b91,
-    ...(0, util_1.range)(0x0b96, 0x0b98),
-    0x0b9b,
-    0x0b9d,
-    ...(0, util_1.range)(0x0ba0, 0x0ba2),
-    ...(0, util_1.range)(0x0ba5, 0x0ba7),
-    ...(0, util_1.range)(0x0bab, 0x0bad),
-    0x0bb6,
-    ...(0, util_1.range)(0x0bba, 0x0bbd),
-    ...(0, util_1.range)(0x0bc3, 0x0bc5),
-    0x0bc9,
-    ...(0, util_1.range)(0x0bce, 0x0bd6),
-    ...(0, util_1.range)(0x0bd8, 0x0be6),
-    ...(0, util_1.range)(0x0bf3, 0x0c00),
-    0x0c04,
-    0x0c0d,
-    0x0c11,
-    0x0c29,
-    0x0c34,
-    ...(0, util_1.range)(0x0c3a, 0x0c3d),
-    0x0c45,
-    0x0c49,
-    ...(0, util_1.range)(0x0c4e, 0x0c54),
-    ...(0, util_1.range)(0x0c57, 0x0c5f),
-    ...(0, util_1.range)(0x0c62, 0x0c65),
-    ...(0, util_1.range)(0x0c70, 0x0c81),
-    0x0c84,
-    0x0c8d,
-    0x0c91,
-    0x0ca9,
-    0x0cb4,
-    ...(0, util_1.range)(0x0cba, 0x0cbd),
-    0x0cc5,
-    0x0cc9,
-    ...(0, util_1.range)(0x0cce, 0x0cd4),
-    ...(0, util_1.range)(0x0cd7, 0x0cdd),
-    0x0cdf,
-    ...(0, util_1.range)(0x0ce2, 0x0ce5),
-    ...(0, util_1.range)(0x0cf0, 0x0d01),
-    0x0d04,
-    0x0d0d,
-    0x0d11,
-    0x0d29,
-    ...(0, util_1.range)(0x0d3a, 0x0d3d),
-    ...(0, util_1.range)(0x0d44, 0x0d45),
-    0x0d49,
-    ...(0, util_1.range)(0x0d4e, 0x0d56),
-    ...(0, util_1.range)(0x0d58, 0x0d5f),
-    ...(0, util_1.range)(0x0d62, 0x0d65),
-    ...(0, util_1.range)(0x0d70, 0x0d81),
-    0x0d84,
-    ...(0, util_1.range)(0x0d97, 0x0d99),
-    0x0db2,
-    0x0dbc,
-    ...(0, util_1.range)(0x0dbe, 0x0dbf),
-    ...(0, util_1.range)(0x0dc7, 0x0dc9),
-    ...(0, util_1.range)(0x0dcb, 0x0dce),
-    0x0dd5,
-    0x0dd7,
-    ...(0, util_1.range)(0x0de0, 0x0df1),
-    ...(0, util_1.range)(0x0df5, 0x0e00),
-    ...(0, util_1.range)(0x0e3b, 0x0e3e),
-    ...(0, util_1.range)(0x0e5c, 0x0e80),
-    0x0e83,
-    ...(0, util_1.range)(0x0e85, 0x0e86),
-    0x0e89,
-    ...(0, util_1.range)(0x0e8b, 0x0e8c),
-    ...(0, util_1.range)(0x0e8e, 0x0e93),
-    0x0e98,
-    0x0ea0,
-    0x0ea4,
-    0x0ea6,
-    ...(0, util_1.range)(0x0ea8, 0x0ea9),
-    0x0eac,
-    0x0eba,
-    ...(0, util_1.range)(0x0ebe, 0x0ebf),
-    0x0ec5,
-    0x0ec7,
-    ...(0, util_1.range)(0x0ece, 0x0ecf),
-    ...(0, util_1.range)(0x0eda, 0x0edb),
-    ...(0, util_1.range)(0x0ede, 0x0eff),
-    0x0f48,
-    ...(0, util_1.range)(0x0f6b, 0x0f70),
-    ...(0, util_1.range)(0x0f8c, 0x0f8f),
-    0x0f98,
-    0x0fbd,
-    ...(0, util_1.range)(0x0fcd, 0x0fce),
-    ...(0, util_1.range)(0x0fd0, 0x0fff),
-    0x1022,
-    0x1028,
-    0x102b,
-    ...(0, util_1.range)(0x1033, 0x1035),
-    ...(0, util_1.range)(0x103a, 0x103f),
-    ...(0, util_1.range)(0x105a, 0x109f),
-    ...(0, util_1.range)(0x10c6, 0x10cf),
-    ...(0, util_1.range)(0x10f9, 0x10fa),
-    ...(0, util_1.range)(0x10fc, 0x10ff),
-    ...(0, util_1.range)(0x115a, 0x115e),
-    ...(0, util_1.range)(0x11a3, 0x11a7),
-    ...(0, util_1.range)(0x11fa, 0x11ff),
-    0x1207,
-    0x1247,
-    0x1249,
-    ...(0, util_1.range)(0x124e, 0x124f),
-    0x1257,
-    0x1259,
-    ...(0, util_1.range)(0x125e, 0x125f),
-    0x1287,
-    0x1289,
-    ...(0, util_1.range)(0x128e, 0x128f),
-    0x12af,
-    0x12b1,
-    ...(0, util_1.range)(0x12b6, 0x12b7),
-    0x12bf,
-    0x12c1,
-    ...(0, util_1.range)(0x12c6, 0x12c7),
-    0x12cf,
-    0x12d7,
-    0x12ef,
-    0x130f,
-    0x1311,
-    ...(0, util_1.range)(0x1316, 0x1317),
-    0x131f,
-    0x1347,
-    ...(0, util_1.range)(0x135b, 0x1360),
-    ...(0, util_1.range)(0x137d, 0x139f),
-    ...(0, util_1.range)(0x13f5, 0x1400),
-    ...(0, util_1.range)(0x1677, 0x167f),
-    ...(0, util_1.range)(0x169d, 0x169f),
-    ...(0, util_1.range)(0x16f1, 0x16ff),
-    0x170d,
-    ...(0, util_1.range)(0x1715, 0x171f),
-    ...(0, util_1.range)(0x1737, 0x173f),
-    ...(0, util_1.range)(0x1754, 0x175f),
-    0x176d,
-    0x1771,
-    ...(0, util_1.range)(0x1774, 0x177f),
-    ...(0, util_1.range)(0x17dd, 0x17df),
-    ...(0, util_1.range)(0x17ea, 0x17ff),
-    0x180f,
-    ...(0, util_1.range)(0x181a, 0x181f),
-    ...(0, util_1.range)(0x1878, 0x187f),
-    ...(0, util_1.range)(0x18aa, 0x1dff),
-    ...(0, util_1.range)(0x1e9c, 0x1e9f),
-    ...(0, util_1.range)(0x1efa, 0x1eff),
-    ...(0, util_1.range)(0x1f16, 0x1f17),
-    ...(0, util_1.range)(0x1f1e, 0x1f1f),
-    ...(0, util_1.range)(0x1f46, 0x1f47),
-    ...(0, util_1.range)(0x1f4e, 0x1f4f),
-    0x1f58,
-    0x1f5a,
-    0x1f5c,
-    0x1f5e,
-    ...(0, util_1.range)(0x1f7e, 0x1f7f),
-    0x1fb5,
-    0x1fc5,
-    ...(0, util_1.range)(0x1fd4, 0x1fd5),
-    0x1fdc,
-    ...(0, util_1.range)(0x1ff0, 0x1ff1),
-    0x1ff5,
-    0x1fff,
-    ...(0, util_1.range)(0x2053, 0x2056),
-    ...(0, util_1.range)(0x2058, 0x205e),
-    ...(0, util_1.range)(0x2064, 0x2069),
-    ...(0, util_1.range)(0x2072, 0x2073),
-    ...(0, util_1.range)(0x208f, 0x209f),
-    ...(0, util_1.range)(0x20b2, 0x20cf),
-    ...(0, util_1.range)(0x20eb, 0x20ff),
-    ...(0, util_1.range)(0x213b, 0x213c),
-    ...(0, util_1.range)(0x214c, 0x2152),
-    ...(0, util_1.range)(0x2184, 0x218f),
-    ...(0, util_1.range)(0x23cf, 0x23ff),
-    ...(0, util_1.range)(0x2427, 0x243f),
-    ...(0, util_1.range)(0x244b, 0x245f),
-    0x24ff,
-    ...(0, util_1.range)(0x2614, 0x2615),
-    0x2618,
-    ...(0, util_1.range)(0x267e, 0x267f),
-    ...(0, util_1.range)(0x268a, 0x2700),
-    0x2705,
-    ...(0, util_1.range)(0x270a, 0x270b),
-    0x2728,
-    0x274c,
-    0x274e,
-    ...(0, util_1.range)(0x2753, 0x2755),
-    0x2757,
-    ...(0, util_1.range)(0x275f, 0x2760),
-    ...(0, util_1.range)(0x2795, 0x2797),
-    0x27b0,
-    ...(0, util_1.range)(0x27bf, 0x27cf),
-    ...(0, util_1.range)(0x27ec, 0x27ef),
-    ...(0, util_1.range)(0x2b00, 0x2e7f),
-    0x2e9a,
-    ...(0, util_1.range)(0x2ef4, 0x2eff),
-    ...(0, util_1.range)(0x2fd6, 0x2fef),
-    ...(0, util_1.range)(0x2ffc, 0x2fff),
-    0x3040,
-    ...(0, util_1.range)(0x3097, 0x3098),
-    ...(0, util_1.range)(0x3100, 0x3104),
-    ...(0, util_1.range)(0x312d, 0x3130),
-    0x318f,
-    ...(0, util_1.range)(0x31b8, 0x31ef),
-    ...(0, util_1.range)(0x321d, 0x321f),
-    ...(0, util_1.range)(0x3244, 0x3250),
-    ...(0, util_1.range)(0x327c, 0x327e),
-    ...(0, util_1.range)(0x32cc, 0x32cf),
-    0x32ff,
-    ...(0, util_1.range)(0x3377, 0x337a),
-    ...(0, util_1.range)(0x33de, 0x33df),
-    0x33ff,
-    ...(0, util_1.range)(0x4db6, 0x4dff),
-    ...(0, util_1.range)(0x9fa6, 0x9fff),
-    ...(0, util_1.range)(0xa48d, 0xa48f),
-    ...(0, util_1.range)(0xa4c7, 0xabff),
-    ...(0, util_1.range)(0xd7a4, 0xd7ff),
-    ...(0, util_1.range)(0xfa2e, 0xfa2f),
-    ...(0, util_1.range)(0xfa6b, 0xfaff),
-    ...(0, util_1.range)(0xfb07, 0xfb12),
-    ...(0, util_1.range)(0xfb18, 0xfb1c),
-    0xfb37,
-    0xfb3d,
-    0xfb3f,
-    0xfb42,
-    0xfb45,
-    ...(0, util_1.range)(0xfbb2, 0xfbd2),
-    ...(0, util_1.range)(0xfd40, 0xfd4f),
-    ...(0, util_1.range)(0xfd90, 0xfd91),
-    ...(0, util_1.range)(0xfdc8, 0xfdcf),
-    ...(0, util_1.range)(0xfdfd, 0xfdff),
-    ...(0, util_1.range)(0xfe10, 0xfe1f),
-    ...(0, util_1.range)(0xfe24, 0xfe2f),
-    ...(0, util_1.range)(0xfe47, 0xfe48),
-    0xfe53,
-    0xfe67,
-    ...(0, util_1.range)(0xfe6c, 0xfe6f),
-    0xfe75,
-    ...(0, util_1.range)(0xfefd, 0xfefe),
-    0xff00,
-    ...(0, util_1.range)(0xffbf, 0xffc1),
-    ...(0, util_1.range)(0xffc8, 0xffc9),
-    ...(0, util_1.range)(0xffd0, 0xffd1),
-    ...(0, util_1.range)(0xffd8, 0xffd9),
-    ...(0, util_1.range)(0xffdd, 0xffdf),
-    0xffe7,
-    ...(0, util_1.range)(0xffef, 0xfff8),
-    ...(0, util_1.range)(0x10000, 0x102ff),
-    0x1031f,
-    ...(0, util_1.range)(0x10324, 0x1032f),
-    ...(0, util_1.range)(0x1034b, 0x103ff),
-    ...(0, util_1.range)(0x10426, 0x10427),
-    ...(0, util_1.range)(0x1044e, 0x1cfff),
-    ...(0, util_1.range)(0x1d0f6, 0x1d0ff),
-    ...(0, util_1.range)(0x1d127, 0x1d129),
-    ...(0, util_1.range)(0x1d1de, 0x1d3ff),
-    0x1d455,
-    0x1d49d,
-    ...(0, util_1.range)(0x1d4a0, 0x1d4a1),
-    ...(0, util_1.range)(0x1d4a3, 0x1d4a4),
-    ...(0, util_1.range)(0x1d4a7, 0x1d4a8),
-    0x1d4ad,
-    0x1d4ba,
-    0x1d4bc,
-    0x1d4c1,
-    0x1d4c4,
-    0x1d506,
-    ...(0, util_1.range)(0x1d50b, 0x1d50c),
-    0x1d515,
-    0x1d51d,
-    0x1d53a,
-    0x1d53f,
-    0x1d545,
-    ...(0, util_1.range)(0x1d547, 0x1d549),
-    0x1d551,
-    ...(0, util_1.range)(0x1d6a4, 0x1d6a7),
-    ...(0, util_1.range)(0x1d7ca, 0x1d7cd),
-    ...(0, util_1.range)(0x1d800, 0x1fffd),
-    ...(0, util_1.range)(0x2a6d7, 0x2f7ff),
-    ...(0, util_1.range)(0x2fa1e, 0x2fffd),
-    ...(0, util_1.range)(0x30000, 0x3fffd),
-    ...(0, util_1.range)(0x40000, 0x4fffd),
-    ...(0, util_1.range)(0x50000, 0x5fffd),
-    ...(0, util_1.range)(0x60000, 0x6fffd),
-    ...(0, util_1.range)(0x70000, 0x7fffd),
-    ...(0, util_1.range)(0x80000, 0x8fffd),
-    ...(0, util_1.range)(0x90000, 0x9fffd),
-    ...(0, util_1.range)(0xa0000, 0xafffd),
-    ...(0, util_1.range)(0xb0000, 0xbfffd),
-    ...(0, util_1.range)(0xc0000, 0xcfffd),
-    ...(0, util_1.range)(0xd0000, 0xdfffd),
-    0xe0000,
-    ...(0, util_1.range)(0xe0002, 0xe001f),
-    ...(0, util_1.range)(0xe0080, 0xefffd),
-]);
-exports.commonly_mapped_to_nothing = new Set([
-    0x00ad, 0x034f, 0x1806, 0x180b, 0x180c, 0x180d, 0x200b, 0x200c, 0x200d,
-    0x2060, 0xfe00, 0xfe01, 0xfe02, 0xfe03, 0xfe04, 0xfe05, 0xfe06, 0xfe07,
-    0xfe08, 0xfe09, 0xfe0a, 0xfe0b, 0xfe0c, 0xfe0d, 0xfe0e, 0xfe0f, 0xfeff,
-]);
-exports.non_ASCII_space_characters = new Set([
-    0x00a0, 0x1680,
-    0x2000, 0x2001, 0x2002,
-    0x2003, 0x2004,
-    0x2005, 0x2006,
-    0x2007, 0x2008,
-    0x2009, 0x200a,
-    0x200b, 0x202f,
-    0x205f, 0x3000,
-]);
-exports.prohibited_characters = new Set([
-    ...exports.non_ASCII_space_characters,
-    ...(0, util_1.range)(0, 0x001f),
-    0x007f,
-    ...(0, util_1.range)(0x0080, 0x009f),
-    0x06dd,
-    0x070f,
-    0x180e,
-    0x200c,
-    0x200d,
-    0x2028,
-    0x2029,
-    0x2060,
-    0x2061,
-    0x2062,
-    0x2063,
-    ...(0, util_1.range)(0x206a, 0x206f),
-    0xfeff,
-    ...(0, util_1.range)(0xfff9, 0xfffc),
-    ...(0, util_1.range)(0x1d173, 0x1d17a),
-    ...(0, util_1.range)(0xe000, 0xf8ff),
-    ...(0, util_1.range)(0xf0000, 0xffffd),
-    ...(0, util_1.range)(0x100000, 0x10fffd),
-    ...(0, util_1.range)(0xfdd0, 0xfdef),
-    ...(0, util_1.range)(0xfffe, 0xffff),
-    ...(0, util_1.range)(0x1fffe, 0x1ffff),
-    ...(0, util_1.range)(0x2fffe, 0x2ffff),
-    ...(0, util_1.range)(0x3fffe, 0x3ffff),
-    ...(0, util_1.range)(0x4fffe, 0x4ffff),
-    ...(0, util_1.range)(0x5fffe, 0x5ffff),
-    ...(0, util_1.range)(0x6fffe, 0x6ffff),
-    ...(0, util_1.range)(0x7fffe, 0x7ffff),
-    ...(0, util_1.range)(0x8fffe, 0x8ffff),
-    ...(0, util_1.range)(0x9fffe, 0x9ffff),
-    ...(0, util_1.range)(0xafffe, 0xaffff),
-    ...(0, util_1.range)(0xbfffe, 0xbffff),
-    ...(0, util_1.range)(0xcfffe, 0xcffff),
-    ...(0, util_1.range)(0xdfffe, 0xdffff),
-    ...(0, util_1.range)(0xefffe, 0xeffff),
-    ...(0, util_1.range)(0x10fffe, 0x10ffff),
-    ...(0, util_1.range)(0xd800, 0xdfff),
-    0xfff9,
-    0xfffa,
-    0xfffb,
-    0xfffc,
-    0xfffd,
-    ...(0, util_1.range)(0x2ff0, 0x2ffb),
-    0x0340,
-    0x0341,
-    0x200e,
-    0x200f,
-    0x202a,
-    0x202b,
-    0x202c,
-    0x202d,
-    0x202e,
-    0x206a,
-    0x206b,
-    0x206c,
-    0x206d,
-    0x206e,
-    0x206f,
-    0xe0001,
-    ...(0, util_1.range)(0xe0020, 0xe007f),
-]);
-exports.bidirectional_r_al = new Set([
-    0x05be,
-    0x05c0,
-    0x05c3,
-    ...(0, util_1.range)(0x05d0, 0x05ea),
-    ...(0, util_1.range)(0x05f0, 0x05f4),
-    0x061b,
-    0x061f,
-    ...(0, util_1.range)(0x0621, 0x063a),
-    ...(0, util_1.range)(0x0640, 0x064a),
-    ...(0, util_1.range)(0x066d, 0x066f),
-    ...(0, util_1.range)(0x0671, 0x06d5),
-    0x06dd,
-    ...(0, util_1.range)(0x06e5, 0x06e6),
-    ...(0, util_1.range)(0x06fa, 0x06fe),
-    ...(0, util_1.range)(0x0700, 0x070d),
-    0x0710,
-    ...(0, util_1.range)(0x0712, 0x072c),
-    ...(0, util_1.range)(0x0780, 0x07a5),
-    0x07b1,
-    0x200f,
-    0xfb1d,
-    ...(0, util_1.range)(0xfb1f, 0xfb28),
-    ...(0, util_1.range)(0xfb2a, 0xfb36),
-    ...(0, util_1.range)(0xfb38, 0xfb3c),
-    0xfb3e,
-    ...(0, util_1.range)(0xfb40, 0xfb41),
-    ...(0, util_1.range)(0xfb43, 0xfb44),
-    ...(0, util_1.range)(0xfb46, 0xfbb1),
-    ...(0, util_1.range)(0xfbd3, 0xfd3d),
-    ...(0, util_1.range)(0xfd50, 0xfd8f),
-    ...(0, util_1.range)(0xfd92, 0xfdc7),
-    ...(0, util_1.range)(0xfdf0, 0xfdfc),
-    ...(0, util_1.range)(0xfe70, 0xfe74),
-    ...(0, util_1.range)(0xfe76, 0xfefc),
-]);
-exports.bidirectional_l = new Set([
-    ...(0, util_1.range)(0x0041, 0x005a),
-    ...(0, util_1.range)(0x0061, 0x007a),
-    0x00aa,
-    0x00b5,
-    0x00ba,
-    ...(0, util_1.range)(0x00c0, 0x00d6),
-    ...(0, util_1.range)(0x00d8, 0x00f6),
-    ...(0, util_1.range)(0x00f8, 0x0220),
-    ...(0, util_1.range)(0x0222, 0x0233),
-    ...(0, util_1.range)(0x0250, 0x02ad),
-    ...(0, util_1.range)(0x02b0, 0x02b8),
-    ...(0, util_1.range)(0x02bb, 0x02c1),
-    ...(0, util_1.range)(0x02d0, 0x02d1),
-    ...(0, util_1.range)(0x02e0, 0x02e4),
-    0x02ee,
-    0x037a,
-    0x0386,
-    ...(0, util_1.range)(0x0388, 0x038a),
-    0x038c,
-    ...(0, util_1.range)(0x038e, 0x03a1),
-    ...(0, util_1.range)(0x03a3, 0x03ce),
-    ...(0, util_1.range)(0x03d0, 0x03f5),
-    ...(0, util_1.range)(0x0400, 0x0482),
-    ...(0, util_1.range)(0x048a, 0x04ce),
-    ...(0, util_1.range)(0x04d0, 0x04f5),
-    ...(0, util_1.range)(0x04f8, 0x04f9),
-    ...(0, util_1.range)(0x0500, 0x050f),
-    ...(0, util_1.range)(0x0531, 0x0556),
-    ...(0, util_1.range)(0x0559, 0x055f),
-    ...(0, util_1.range)(0x0561, 0x0587),
-    0x0589,
-    0x0903,
-    ...(0, util_1.range)(0x0905, 0x0939),
-    ...(0, util_1.range)(0x093d, 0x0940),
-    ...(0, util_1.range)(0x0949, 0x094c),
-    0x0950,
-    ...(0, util_1.range)(0x0958, 0x0961),
-    ...(0, util_1.range)(0x0964, 0x0970),
-    ...(0, util_1.range)(0x0982, 0x0983),
-    ...(0, util_1.range)(0x0985, 0x098c),
-    ...(0, util_1.range)(0x098f, 0x0990),
-    ...(0, util_1.range)(0x0993, 0x09a8),
-    ...(0, util_1.range)(0x09aa, 0x09b0),
-    0x09b2,
-    ...(0, util_1.range)(0x09b6, 0x09b9),
-    ...(0, util_1.range)(0x09be, 0x09c0),
-    ...(0, util_1.range)(0x09c7, 0x09c8),
-    ...(0, util_1.range)(0x09cb, 0x09cc),
-    0x09d7,
-    ...(0, util_1.range)(0x09dc, 0x09dd),
-    ...(0, util_1.range)(0x09df, 0x09e1),
-    ...(0, util_1.range)(0x09e6, 0x09f1),
-    ...(0, util_1.range)(0x09f4, 0x09fa),
-    ...(0, util_1.range)(0x0a05, 0x0a0a),
-    ...(0, util_1.range)(0x0a0f, 0x0a10),
-    ...(0, util_1.range)(0x0a13, 0x0a28),
-    ...(0, util_1.range)(0x0a2a, 0x0a30),
-    ...(0, util_1.range)(0x0a32, 0x0a33),
-    ...(0, util_1.range)(0x0a35, 0x0a36),
-    ...(0, util_1.range)(0x0a38, 0x0a39),
-    ...(0, util_1.range)(0x0a3e, 0x0a40),
-    ...(0, util_1.range)(0x0a59, 0x0a5c),
-    0x0a5e,
-    ...(0, util_1.range)(0x0a66, 0x0a6f),
-    ...(0, util_1.range)(0x0a72, 0x0a74),
-    0x0a83,
-    ...(0, util_1.range)(0x0a85, 0x0a8b),
-    0x0a8d,
-    ...(0, util_1.range)(0x0a8f, 0x0a91),
-    ...(0, util_1.range)(0x0a93, 0x0aa8),
-    ...(0, util_1.range)(0x0aaa, 0x0ab0),
-    ...(0, util_1.range)(0x0ab2, 0x0ab3),
-    ...(0, util_1.range)(0x0ab5, 0x0ab9),
-    ...(0, util_1.range)(0x0abd, 0x0ac0),
-    0x0ac9,
-    ...(0, util_1.range)(0x0acb, 0x0acc),
-    0x0ad0,
-    0x0ae0,
-    ...(0, util_1.range)(0x0ae6, 0x0aef),
-    ...(0, util_1.range)(0x0b02, 0x0b03),
-    ...(0, util_1.range)(0x0b05, 0x0b0c),
-    ...(0, util_1.range)(0x0b0f, 0x0b10),
-    ...(0, util_1.range)(0x0b13, 0x0b28),
-    ...(0, util_1.range)(0x0b2a, 0x0b30),
-    ...(0, util_1.range)(0x0b32, 0x0b33),
-    ...(0, util_1.range)(0x0b36, 0x0b39),
-    ...(0, util_1.range)(0x0b3d, 0x0b3e),
-    0x0b40,
-    ...(0, util_1.range)(0x0b47, 0x0b48),
-    ...(0, util_1.range)(0x0b4b, 0x0b4c),
-    0x0b57,
-    ...(0, util_1.range)(0x0b5c, 0x0b5d),
-    ...(0, util_1.range)(0x0b5f, 0x0b61),
-    ...(0, util_1.range)(0x0b66, 0x0b70),
-    0x0b83,
-    ...(0, util_1.range)(0x0b85, 0x0b8a),
-    ...(0, util_1.range)(0x0b8e, 0x0b90),
-    ...(0, util_1.range)(0x0b92, 0x0b95),
-    ...(0, util_1.range)(0x0b99, 0x0b9a),
-    0x0b9c,
-    ...(0, util_1.range)(0x0b9e, 0x0b9f),
-    ...(0, util_1.range)(0x0ba3, 0x0ba4),
-    ...(0, util_1.range)(0x0ba8, 0x0baa),
-    ...(0, util_1.range)(0x0bae, 0x0bb5),
-    ...(0, util_1.range)(0x0bb7, 0x0bb9),
-    ...(0, util_1.range)(0x0bbe, 0x0bbf),
-    ...(0, util_1.range)(0x0bc1, 0x0bc2),
-    ...(0, util_1.range)(0x0bc6, 0x0bc8),
-    ...(0, util_1.range)(0x0bca, 0x0bcc),
-    0x0bd7,
-    ...(0, util_1.range)(0x0be7, 0x0bf2),
-    ...(0, util_1.range)(0x0c01, 0x0c03),
-    ...(0, util_1.range)(0x0c05, 0x0c0c),
-    ...(0, util_1.range)(0x0c0e, 0x0c10),
-    ...(0, util_1.range)(0x0c12, 0x0c28),
-    ...(0, util_1.range)(0x0c2a, 0x0c33),
-    ...(0, util_1.range)(0x0c35, 0x0c39),
-    ...(0, util_1.range)(0x0c41, 0x0c44),
-    ...(0, util_1.range)(0x0c60, 0x0c61),
-    ...(0, util_1.range)(0x0c66, 0x0c6f),
-    ...(0, util_1.range)(0x0c82, 0x0c83),
-    ...(0, util_1.range)(0x0c85, 0x0c8c),
-    ...(0, util_1.range)(0x0c8e, 0x0c90),
-    ...(0, util_1.range)(0x0c92, 0x0ca8),
-    ...(0, util_1.range)(0x0caa, 0x0cb3),
-    ...(0, util_1.range)(0x0cb5, 0x0cb9),
-    0x0cbe,
-    ...(0, util_1.range)(0x0cc0, 0x0cc4),
-    ...(0, util_1.range)(0x0cc7, 0x0cc8),
-    ...(0, util_1.range)(0x0cca, 0x0ccb),
-    ...(0, util_1.range)(0x0cd5, 0x0cd6),
-    0x0cde,
-    ...(0, util_1.range)(0x0ce0, 0x0ce1),
-    ...(0, util_1.range)(0x0ce6, 0x0cef),
-    ...(0, util_1.range)(0x0d02, 0x0d03),
-    ...(0, util_1.range)(0x0d05, 0x0d0c),
-    ...(0, util_1.range)(0x0d0e, 0x0d10),
-    ...(0, util_1.range)(0x0d12, 0x0d28),
-    ...(0, util_1.range)(0x0d2a, 0x0d39),
-    ...(0, util_1.range)(0x0d3e, 0x0d40),
-    ...(0, util_1.range)(0x0d46, 0x0d48),
-    ...(0, util_1.range)(0x0d4a, 0x0d4c),
-    0x0d57,
-    ...(0, util_1.range)(0x0d60, 0x0d61),
-    ...(0, util_1.range)(0x0d66, 0x0d6f),
-    ...(0, util_1.range)(0x0d82, 0x0d83),
-    ...(0, util_1.range)(0x0d85, 0x0d96),
-    ...(0, util_1.range)(0x0d9a, 0x0db1),
-    ...(0, util_1.range)(0x0db3, 0x0dbb),
-    0x0dbd,
-    ...(0, util_1.range)(0x0dc0, 0x0dc6),
-    ...(0, util_1.range)(0x0dcf, 0x0dd1),
-    ...(0, util_1.range)(0x0dd8, 0x0ddf),
-    ...(0, util_1.range)(0x0df2, 0x0df4),
-    ...(0, util_1.range)(0x0e01, 0x0e30),
-    ...(0, util_1.range)(0x0e32, 0x0e33),
-    ...(0, util_1.range)(0x0e40, 0x0e46),
-    ...(0, util_1.range)(0x0e4f, 0x0e5b),
-    ...(0, util_1.range)(0x0e81, 0x0e82),
-    0x0e84,
-    ...(0, util_1.range)(0x0e87, 0x0e88),
-    0x0e8a,
-    0x0e8d,
-    ...(0, util_1.range)(0x0e94, 0x0e97),
-    ...(0, util_1.range)(0x0e99, 0x0e9f),
-    ...(0, util_1.range)(0x0ea1, 0x0ea3),
-    0x0ea5,
-    0x0ea7,
-    ...(0, util_1.range)(0x0eaa, 0x0eab),
-    ...(0, util_1.range)(0x0ead, 0x0eb0),
-    ...(0, util_1.range)(0x0eb2, 0x0eb3),
-    0x0ebd,
-    ...(0, util_1.range)(0x0ec0, 0x0ec4),
-    0x0ec6,
-    ...(0, util_1.range)(0x0ed0, 0x0ed9),
-    ...(0, util_1.range)(0x0edc, 0x0edd),
-    ...(0, util_1.range)(0x0f00, 0x0f17),
-    ...(0, util_1.range)(0x0f1a, 0x0f34),
-    0x0f36,
-    0x0f38,
-    ...(0, util_1.range)(0x0f3e, 0x0f47),
-    ...(0, util_1.range)(0x0f49, 0x0f6a),
-    0x0f7f,
-    0x0f85,
-    ...(0, util_1.range)(0x0f88, 0x0f8b),
-    ...(0, util_1.range)(0x0fbe, 0x0fc5),
-    ...(0, util_1.range)(0x0fc7, 0x0fcc),
-    0x0fcf,
-    ...(0, util_1.range)(0x1000, 0x1021),
-    ...(0, util_1.range)(0x1023, 0x1027),
-    ...(0, util_1.range)(0x1029, 0x102a),
-    0x102c,
-    0x1031,
-    0x1038,
-    ...(0, util_1.range)(0x1040, 0x1057),
-    ...(0, util_1.range)(0x10a0, 0x10c5),
-    ...(0, util_1.range)(0x10d0, 0x10f8),
-    0x10fb,
-    ...(0, util_1.range)(0x1100, 0x1159),
-    ...(0, util_1.range)(0x115f, 0x11a2),
-    ...(0, util_1.range)(0x11a8, 0x11f9),
-    ...(0, util_1.range)(0x1200, 0x1206),
-    ...(0, util_1.range)(0x1208, 0x1246),
-    0x1248,
-    ...(0, util_1.range)(0x124a, 0x124d),
-    ...(0, util_1.range)(0x1250, 0x1256),
-    0x1258,
-    ...(0, util_1.range)(0x125a, 0x125d),
-    ...(0, util_1.range)(0x1260, 0x1286),
-    0x1288,
-    ...(0, util_1.range)(0x128a, 0x128d),
-    ...(0, util_1.range)(0x1290, 0x12ae),
-    0x12b0,
-    ...(0, util_1.range)(0x12b2, 0x12b5),
-    ...(0, util_1.range)(0x12b8, 0x12be),
-    0x12c0,
-    ...(0, util_1.range)(0x12c2, 0x12c5),
-    ...(0, util_1.range)(0x12c8, 0x12ce),
-    ...(0, util_1.range)(0x12d0, 0x12d6),
-    ...(0, util_1.range)(0x12d8, 0x12ee),
-    ...(0, util_1.range)(0x12f0, 0x130e),
-    0x1310,
-    ...(0, util_1.range)(0x1312, 0x1315),
-    ...(0, util_1.range)(0x1318, 0x131e),
-    ...(0, util_1.range)(0x1320, 0x1346),
-    ...(0, util_1.range)(0x1348, 0x135a),
-    ...(0, util_1.range)(0x1361, 0x137c),
-    ...(0, util_1.range)(0x13a0, 0x13f4),
-    ...(0, util_1.range)(0x1401, 0x1676),
-    ...(0, util_1.range)(0x1681, 0x169a),
-    ...(0, util_1.range)(0x16a0, 0x16f0),
-    ...(0, util_1.range)(0x1700, 0x170c),
-    ...(0, util_1.range)(0x170e, 0x1711),
-    ...(0, util_1.range)(0x1720, 0x1731),
-    ...(0, util_1.range)(0x1735, 0x1736),
-    ...(0, util_1.range)(0x1740, 0x1751),
-    ...(0, util_1.range)(0x1760, 0x176c),
-    ...(0, util_1.range)(0x176e, 0x1770),
-    ...(0, util_1.range)(0x1780, 0x17b6),
-    ...(0, util_1.range)(0x17be, 0x17c5),
-    ...(0, util_1.range)(0x17c7, 0x17c8),
-    ...(0, util_1.range)(0x17d4, 0x17da),
-    0x17dc,
-    ...(0, util_1.range)(0x17e0, 0x17e9),
-    ...(0, util_1.range)(0x1810, 0x1819),
-    ...(0, util_1.range)(0x1820, 0x1877),
-    ...(0, util_1.range)(0x1880, 0x18a8),
-    ...(0, util_1.range)(0x1e00, 0x1e9b),
-    ...(0, util_1.range)(0x1ea0, 0x1ef9),
-    ...(0, util_1.range)(0x1f00, 0x1f15),
-    ...(0, util_1.range)(0x1f18, 0x1f1d),
-    ...(0, util_1.range)(0x1f20, 0x1f45),
-    ...(0, util_1.range)(0x1f48, 0x1f4d),
-    ...(0, util_1.range)(0x1f50, 0x1f57),
-    0x1f59,
-    0x1f5b,
-    0x1f5d,
-    ...(0, util_1.range)(0x1f5f, 0x1f7d),
-    ...(0, util_1.range)(0x1f80, 0x1fb4),
-    ...(0, util_1.range)(0x1fb6, 0x1fbc),
-    0x1fbe,
-    ...(0, util_1.range)(0x1fc2, 0x1fc4),
-    ...(0, util_1.range)(0x1fc6, 0x1fcc),
-    ...(0, util_1.range)(0x1fd0, 0x1fd3),
-    ...(0, util_1.range)(0x1fd6, 0x1fdb),
-    ...(0, util_1.range)(0x1fe0, 0x1fec),
-    ...(0, util_1.range)(0x1ff2, 0x1ff4),
-    ...(0, util_1.range)(0x1ff6, 0x1ffc),
-    0x200e,
-    0x2071,
-    0x207f,
-    0x2102,
-    0x2107,
-    ...(0, util_1.range)(0x210a, 0x2113),
-    0x2115,
-    ...(0, util_1.range)(0x2119, 0x211d),
-    0x2124,
-    0x2126,
-    0x2128,
-    ...(0, util_1.range)(0x212a, 0x212d),
-    ...(0, util_1.range)(0x212f, 0x2131),
-    ...(0, util_1.range)(0x2133, 0x2139),
-    ...(0, util_1.range)(0x213d, 0x213f),
-    ...(0, util_1.range)(0x2145, 0x2149),
-    ...(0, util_1.range)(0x2160, 0x2183),
-    ...(0, util_1.range)(0x2336, 0x237a),
-    0x2395,
-    ...(0, util_1.range)(0x249c, 0x24e9),
-    ...(0, util_1.range)(0x3005, 0x3007),
-    ...(0, util_1.range)(0x3021, 0x3029),
-    ...(0, util_1.range)(0x3031, 0x3035),
-    ...(0, util_1.range)(0x3038, 0x303c),
-    ...(0, util_1.range)(0x3041, 0x3096),
-    ...(0, util_1.range)(0x309d, 0x309f),
-    ...(0, util_1.range)(0x30a1, 0x30fa),
-    ...(0, util_1.range)(0x30fc, 0x30ff),
-    ...(0, util_1.range)(0x3105, 0x312c),
-    ...(0, util_1.range)(0x3131, 0x318e),
-    ...(0, util_1.range)(0x3190, 0x31b7),
-    ...(0, util_1.range)(0x31f0, 0x321c),
-    ...(0, util_1.range)(0x3220, 0x3243),
-    ...(0, util_1.range)(0x3260, 0x327b),
-    ...(0, util_1.range)(0x327f, 0x32b0),
-    ...(0, util_1.range)(0x32c0, 0x32cb),
-    ...(0, util_1.range)(0x32d0, 0x32fe),
-    ...(0, util_1.range)(0x3300, 0x3376),
-    ...(0, util_1.range)(0x337b, 0x33dd),
-    ...(0, util_1.range)(0x33e0, 0x33fe),
-    ...(0, util_1.range)(0x3400, 0x4db5),
-    ...(0, util_1.range)(0x4e00, 0x9fa5),
-    ...(0, util_1.range)(0xa000, 0xa48c),
-    ...(0, util_1.range)(0xac00, 0xd7a3),
-    ...(0, util_1.range)(0xd800, 0xfa2d),
-    ...(0, util_1.range)(0xfa30, 0xfa6a),
-    ...(0, util_1.range)(0xfb00, 0xfb06),
-    ...(0, util_1.range)(0xfb13, 0xfb17),
-    ...(0, util_1.range)(0xff21, 0xff3a),
-    ...(0, util_1.range)(0xff41, 0xff5a),
-    ...(0, util_1.range)(0xff66, 0xffbe),
-    ...(0, util_1.range)(0xffc2, 0xffc7),
-    ...(0, util_1.range)(0xffca, 0xffcf),
-    ...(0, util_1.range)(0xffd2, 0xffd7),
-    ...(0, util_1.range)(0xffda, 0xffdc),
-    ...(0, util_1.range)(0x10300, 0x1031e),
-    ...(0, util_1.range)(0x10320, 0x10323),
-    ...(0, util_1.range)(0x10330, 0x1034a),
-    ...(0, util_1.range)(0x10400, 0x10425),
-    ...(0, util_1.range)(0x10428, 0x1044d),
-    ...(0, util_1.range)(0x1d000, 0x1d0f5),
-    ...(0, util_1.range)(0x1d100, 0x1d126),
-    ...(0, util_1.range)(0x1d12a, 0x1d166),
-    ...(0, util_1.range)(0x1d16a, 0x1d172),
-    ...(0, util_1.range)(0x1d183, 0x1d184),
-    ...(0, util_1.range)(0x1d18c, 0x1d1a9),
-    ...(0, util_1.range)(0x1d1ae, 0x1d1dd),
-    ...(0, util_1.range)(0x1d400, 0x1d454),
-    ...(0, util_1.range)(0x1d456, 0x1d49c),
-    ...(0, util_1.range)(0x1d49e, 0x1d49f),
-    0x1d4a2,
-    ...(0, util_1.range)(0x1d4a5, 0x1d4a6),
-    ...(0, util_1.range)(0x1d4a9, 0x1d4ac),
-    ...(0, util_1.range)(0x1d4ae, 0x1d4b9),
-    0x1d4bb,
-    ...(0, util_1.range)(0x1d4bd, 0x1d4c0),
-    ...(0, util_1.range)(0x1d4c2, 0x1d4c3),
-    ...(0, util_1.range)(0x1d4c5, 0x1d505),
-    ...(0, util_1.range)(0x1d507, 0x1d50a),
-    ...(0, util_1.range)(0x1d50d, 0x1d514),
-    ...(0, util_1.range)(0x1d516, 0x1d51c),
-    ...(0, util_1.range)(0x1d51e, 0x1d539),
-    ...(0, util_1.range)(0x1d53b, 0x1d53e),
-    ...(0, util_1.range)(0x1d540, 0x1d544),
-    0x1d546,
-    ...(0, util_1.range)(0x1d54a, 0x1d550),
-    ...(0, util_1.range)(0x1d552, 0x1d6a3),
-    ...(0, util_1.range)(0x1d6a8, 0x1d7c9),
-    ...(0, util_1.range)(0x20000, 0x2a6d6),
-    ...(0, util_1.range)(0x2f800, 0x2fa1d),
-    ...(0, util_1.range)(0xf0000, 0xffffd),
-    ...(0, util_1.range)(0x100000, 0x10fffd),
-]);
-//# sourceMappingURL=code-points-src.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-src.js.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-src.js.map
deleted file mode 100644
index dfb14ea823fb8f379bd4a808a64c66588759b1b6..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/code-points-src.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"code-points-src.js","sourceRoot":"","sources":["../src/code-points-src.ts"],"names":[],"mappings":";;;AAAA,iCAA+B;AAMlB,QAAA,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAA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C;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM;IACN,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAA,YAAK,EAAC,MAAM,EAAE,MAAM,CAAC;IACxB,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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts b/server/data-import/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts
deleted file mode 100644
index 5a83ab249ef8c2793a4b86d56be0947b4971a4ac..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {};
-//# sourceMappingURL=generate-code-points.d.ts.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts.map
deleted file mode 100644
index b102903ec4c28dc19f63ef6ba0fa37b284190b5b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"generate-code-points.d.ts","sourceRoot":"","sources":["../src/generate-code-points.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js b/server/data-import/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js
deleted file mode 100644
index c0b56ca5d95bcca5c9ba3ac0ca64271e2e64e713..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js
+++ /dev/null
@@ -1,69 +0,0 @@
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    var desc = Object.getOwnPropertyDescriptor(m, k);
-    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
-      desc = { enumerable: true, get: function() { return m[k]; } };
-    }
-    Object.defineProperty(o, k2, desc);
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
-    Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
-    o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-    __setModuleDefault(result, mod);
-    return result;
-};
-var __importDefault = (this && this.__importDefault) || function (mod) {
-    return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const zlib_1 = require("zlib");
-const sparse_bitfield_1 = __importDefault(require("sparse-bitfield"));
-const codePoints = __importStar(require("./code-points-src"));
-const fs_1 = require("fs");
-if (!process.env.GENERATE_CODE_POINTS) {
-    process.exitCode = 0;
-    process.exit();
-}
-const unassigned_code_points = (0, sparse_bitfield_1.default)();
-const commonly_mapped_to_nothing = (0, sparse_bitfield_1.default)();
-const non_ascii_space_characters = (0, sparse_bitfield_1.default)();
-const prohibited_characters = (0, sparse_bitfield_1.default)();
-const bidirectional_r_al = (0, sparse_bitfield_1.default)();
-const bidirectional_l = (0, sparse_bitfield_1.default)();
-function traverse(bits, src) {
-    for (const code of src.keys()) {
-        bits.set(code, true);
-    }
-    const buffer = bits.toBuffer();
-    return Buffer.concat([createSize(buffer), buffer]);
-}
-function createSize(buffer) {
-    const buf = Buffer.alloc(4);
-    buf.writeUInt32BE(buffer.length);
-    return buf;
-}
-const memory = [];
-memory.push(traverse(unassigned_code_points, codePoints.unassigned_code_points), traverse(commonly_mapped_to_nothing, codePoints.commonly_mapped_to_nothing), traverse(non_ascii_space_characters, codePoints.non_ASCII_space_characters), traverse(prohibited_characters, codePoints.prohibited_characters), traverse(bidirectional_r_al, codePoints.bidirectional_r_al), traverse(bidirectional_l, codePoints.bidirectional_l));
-const fsStream = (0, fs_1.createWriteStream)(process.argv[2]);
-fsStream.write(`import { gunzipSync } from 'zlib';
-
-export default gunzipSync(
-  Buffer.from(
-    '${(0, zlib_1.gzipSync)(Buffer.concat(memory), { level: 9 }).toString('base64')}',
-    'base64'
-  )
-);
-`);
-const fsStreamUncompressedData = (0, fs_1.createWriteStream)(process.argv[3]);
-fsStreamUncompressedData.write(`const data = Buffer.from('${Buffer.concat(memory).toString('base64')}', 'base64');\nexport default data;\n`);
-//# sourceMappingURL=generate-code-points.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js.map
deleted file mode 100644
index dde7a259b01d06c29c1cb4d2769eca4a224f7853..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"generate-code-points.js","sourceRoot":"","sources":["../src/generate-code-points.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAgC;AAChC,sEAAuC;AACvC,8DAAgD;AAChD,2BAAuC;AAEvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE;IAErC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,EAAE,CAAC;CAChB;AAED,MAAM,sBAAsB,GAAG,IAAA,yBAAQ,GAAE,CAAC;AAC1C,MAAM,0BAA0B,GAAG,IAAA,yBAAQ,GAAE,CAAC;AAC9C,MAAM,0BAA0B,GAAG,IAAA,yBAAQ,GAAE,CAAC;AAC9C,MAAM,qBAAqB,GAAG,IAAA,yBAAQ,GAAE,CAAC;AACzC,MAAM,kBAAkB,GAAG,IAAA,yBAAQ,GAAE,CAAC;AACtC,MAAM,eAAe,GAAG,IAAA,yBAAQ,GAAE,CAAC;AAMnC,SAAS,QAAQ,CAAC,IAA+B,EAAE,GAAgB;IACjE,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACtB;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,UAAU,CAAC,MAAc;IAChC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEjC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,MAAM,GAAa,EAAE,CAAC;AAE5B,MAAM,CAAC,IAAI,CACT,QAAQ,CAAC,sBAAsB,EAAE,UAAU,CAAC,sBAAsB,CAAC,EACnE,QAAQ,CAAC,0BAA0B,EAAE,UAAU,CAAC,0BAA0B,CAAC,EAC3E,QAAQ,CAAC,0BAA0B,EAAE,UAAU,CAAC,0BAA0B,CAAC,EAC3E,QAAQ,CAAC,qBAAqB,EAAE,UAAU,CAAC,qBAAqB,CAAC,EACjE,QAAQ,CAAC,kBAAkB,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAC3D,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,eAAe,CAAC,CACtD,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAA,sBAAiB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,QAAQ,CAAC,KAAK,CACZ;;;;OAIK,IAAA,eAAQ,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;;;;CAItE,CACA,CAAC;AAEF,MAAM,wBAAwB,GAAG,IAAA,sBAAiB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpE,wBAAwB,CAAC,KAAK,CAC5B,6BAA6B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CACzD,QAAQ,CACT,uCAAuC,CACzC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/index.d.ts b/server/data-import/node_modules/@mongodb-js/saslprep/dist/index.d.ts
deleted file mode 100644
index 24d575c541a812e0d545fa8d4fe14b3534d999f7..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/index.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import type { createMemoryCodePoints } from './memory-code-points';
-declare function saslprep({ unassigned_code_points, commonly_mapped_to_nothing, non_ASCII_space_characters, prohibited_characters, bidirectional_r_al, bidirectional_l, }: ReturnType<typeof createMemoryCodePoints>, input: string, opts?: {
-    allowUnassigned?: boolean;
-}): string;
-declare namespace saslprep {
-    export var saslprep: typeof import(".");
-    var _a: typeof import(".");
-    export { _a as default };
-}
-export = saslprep;
-//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/index.d.ts.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/index.d.ts.map
deleted file mode 100644
index e53e394615df938c3de1e991764ba315aeec9442..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/index.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAsCnE,iBAAS,QAAQ,CACf,EACE,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,GAChB,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,EAC5C,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GACvC,MAAM,CAqGR;kBAhHQ,QAAQ;;;;;AAoHjB,SAAS,QAAQ,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/index.js b/server/data-import/node_modules/@mongodb-js/saslprep/dist/index.js
deleted file mode 100644
index 07d87bc580c0cb1e53409ed6f098b92cc1115936..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/index.js
+++ /dev/null
@@ -1,65 +0,0 @@
-"use strict";
-const getCodePoint = (character) => character.codePointAt(0);
-const first = (x) => x[0];
-const last = (x) => x[x.length - 1];
-function toCodePoints(input) {
-    const codepoints = [];
-    const size = input.length;
-    for (let i = 0; i < size; i += 1) {
-        const before = input.charCodeAt(i);
-        if (before >= 0xd800 && before <= 0xdbff && size > i + 1) {
-            const next = input.charCodeAt(i + 1);
-            if (next >= 0xdc00 && next <= 0xdfff) {
-                codepoints.push((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000);
-                i += 1;
-                continue;
-            }
-        }
-        codepoints.push(before);
-    }
-    return codepoints;
-}
-function saslprep({ unassigned_code_points, commonly_mapped_to_nothing, non_ASCII_space_characters, prohibited_characters, bidirectional_r_al, bidirectional_l, }, input, opts = {}) {
-    const mapping2space = non_ASCII_space_characters;
-    const mapping2nothing = commonly_mapped_to_nothing;
-    if (typeof input !== 'string') {
-        throw new TypeError('Expected string.');
-    }
-    if (input.length === 0) {
-        return '';
-    }
-    const mapped_input = toCodePoints(input)
-        .map((character) => (mapping2space.get(character) ? 0x20 : character))
-        .filter((character) => !mapping2nothing.get(character));
-    const normalized_input = String.fromCodePoint
-        .apply(null, mapped_input)
-        .normalize('NFKC');
-    const normalized_map = toCodePoints(normalized_input);
-    const hasProhibited = normalized_map.some((character) => prohibited_characters.get(character));
-    if (hasProhibited) {
-        throw new Error('Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3');
-    }
-    if (opts.allowUnassigned !== true) {
-        const hasUnassigned = normalized_map.some((character) => unassigned_code_points.get(character));
-        if (hasUnassigned) {
-            throw new Error('Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5');
-        }
-    }
-    const hasBidiRAL = normalized_map.some((character) => bidirectional_r_al.get(character));
-    const hasBidiL = normalized_map.some((character) => bidirectional_l.get(character));
-    if (hasBidiRAL && hasBidiL) {
-        throw new Error('String must not contain RandALCat and LCat at the same time,' +
-            ' see https://tools.ietf.org/html/rfc3454#section-6');
-    }
-    const isFirstBidiRAL = bidirectional_r_al.get(getCodePoint(first(normalized_input)));
-    const isLastBidiRAL = bidirectional_r_al.get(getCodePoint(last(normalized_input)));
-    if (hasBidiRAL && !(isFirstBidiRAL && isLastBidiRAL)) {
-        throw new Error('Bidirectional RandALCat character must be the first and the last' +
-            ' character of the string, see https://tools.ietf.org/html/rfc3454#section-6');
-    }
-    return normalized_input;
-}
-saslprep.saslprep = saslprep;
-saslprep.default = saslprep;
-module.exports = saslprep;
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/index.js.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/index.js.map
deleted file mode 100644
index 5b2b276dcfb285f20147679a2f22b1b130dbc9bf..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts b/server/data-import/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts
deleted file mode 100644
index 8c675a00856b78ab6cb25e124be77aa473e396f6..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-/// <reference types="node" />
-import bitfield from 'sparse-bitfield';
-export declare function createMemoryCodePoints(data: Buffer): {
-    unassigned_code_points: bitfield.BitFieldInstance;
-    commonly_mapped_to_nothing: bitfield.BitFieldInstance;
-    non_ASCII_space_characters: bitfield.BitFieldInstance;
-    prohibited_characters: bitfield.BitFieldInstance;
-    bidirectional_r_al: bitfield.BitFieldInstance;
-    bidirectional_l: bitfield.BitFieldInstance;
-};
-//# sourceMappingURL=memory-code-points.d.ts.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts.map
deleted file mode 100644
index 83b7b57dae5cf73615f014ce4f97152a5bfebf4d..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"memory-code-points.d.ts","sourceRoot":"","sources":["../src/memory-code-points.ts"],"names":[],"mappings":";AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM;;;;;;;EA+BlD"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js b/server/data-import/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js
deleted file mode 100644
index 05133de9fb595a3691d91ac034cd3bc9a1d9e87f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
-    return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.createMemoryCodePoints = void 0;
-const sparse_bitfield_1 = __importDefault(require("sparse-bitfield"));
-function createMemoryCodePoints(data) {
-    let offset = 0;
-    function read() {
-        const size = data.readUInt32BE(offset);
-        offset += 4;
-        const codepoints = data.slice(offset, offset + size);
-        offset += size;
-        return (0, sparse_bitfield_1.default)({ buffer: codepoints });
-    }
-    const unassigned_code_points = read();
-    const commonly_mapped_to_nothing = read();
-    const non_ASCII_space_characters = read();
-    const prohibited_characters = read();
-    const bidirectional_r_al = read();
-    const bidirectional_l = read();
-    return {
-        unassigned_code_points,
-        commonly_mapped_to_nothing,
-        non_ASCII_space_characters,
-        prohibited_characters,
-        bidirectional_r_al,
-        bidirectional_l,
-    };
-}
-exports.createMemoryCodePoints = createMemoryCodePoints;
-//# sourceMappingURL=memory-code-points.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js.map
deleted file mode 100644
index 0bb5a144afb4ecaf7ab96278b8e81a4ccc431120..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"memory-code-points.js","sourceRoot":"","sources":["../src/memory-code-points.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAuC;AAEvC,SAAgB,sBAAsB,CAAC,IAAY;IACjD,IAAI,MAAM,GAAG,CAAC,CAAC;IAKf,SAAS,IAAI;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,CAAC;QAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;QACrD,MAAM,IAAI,IAAI,CAAC;QAEf,OAAO,IAAA,yBAAQ,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,sBAAsB,GAAG,IAAI,EAAE,CAAC;IACtC,MAAM,0BAA0B,GAAG,IAAI,EAAE,CAAC;IAC1C,MAAM,0BAA0B,GAAG,IAAI,EAAE,CAAC;IAC1C,MAAM,qBAAqB,GAAG,IAAI,EAAE,CAAC;IACrC,MAAM,kBAAkB,GAAG,IAAI,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAI,EAAE,CAAC;IAE/B,OAAO;QACL,sBAAsB;QACtB,0BAA0B;QAC1B,0BAA0B;QAC1B,qBAAqB;QACrB,kBAAkB;QAClB,eAAe;KAChB,CAAC;AACJ,CAAC;AA/BD,wDA+BC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/node.d.ts b/server/data-import/node_modules/@mongodb-js/saslprep/dist/node.d.ts
deleted file mode 100644
index ce01b5462596876de23a72fbcddbb87744bd0834..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/node.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-declare const saslprep: (args_0: string, args_1?: {
-    allowUnassigned?: boolean | undefined;
-} | undefined) => string;
-export = saslprep;
-//# sourceMappingURL=node.d.ts.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/node.d.ts.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/node.d.ts.map
deleted file mode 100644
index a581bb34e48e9578a9ff19709530227a997b7cab..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/node.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,QAAQ;;wBAAmC,CAAC;AAIlD,SAAS,QAAQ,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/node.js b/server/data-import/node_modules/@mongodb-js/saslprep/dist/node.js
deleted file mode 100644
index fa91c86bebbe39b0633beeddd0abd4e4a5bbef69..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/node.js
+++ /dev/null
@@ -1,12 +0,0 @@
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
-    return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-const index_1 = __importDefault(require("./index"));
-const memory_code_points_1 = require("./memory-code-points");
-const code_points_data_1 = __importDefault(require("./code-points-data"));
-const codePoints = (0, memory_code_points_1.createMemoryCodePoints)(code_points_data_1.default);
-const saslprep = index_1.default.bind(null, codePoints);
-Object.assign(saslprep, { saslprep, default: saslprep });
-module.exports = saslprep;
-//# sourceMappingURL=node.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/node.js.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/node.js.map
deleted file mode 100644
index 0689475c17f68656db009146278112bebcd59490..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/node.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":";;;;AAAA,oDAAgC;AAChC,6DAA8D;AAC9D,0EAAsC;AAEtC,MAAM,UAAU,GAAG,IAAA,2CAAsB,EAAC,0BAAI,CAAC,CAAC;AAEhD,MAAM,QAAQ,GAAG,eAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAEzD,iBAAS,QAAQ,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/util.d.ts b/server/data-import/node_modules/@mongodb-js/saslprep/dist/util.d.ts
deleted file mode 100644
index 3a0466ecde18019e727a5eb06666fe4e831defcc..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/util.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export declare function range(from: number, to: number): number[];
-//# sourceMappingURL=util.d.ts.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/util.d.ts.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/util.d.ts.map
deleted file mode 100644
index 50c716780ea0c911980b36f69403449fd93d166b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/util.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAGA,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAQxD"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/util.js b/server/data-import/node_modules/@mongodb-js/saslprep/dist/util.js
deleted file mode 100644
index f679cab00527f8fc0c37431a0ff4c87c688ef307..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/util.js
+++ /dev/null
@@ -1,12 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.range = void 0;
-function range(from, to) {
-    const list = new Array(to - from + 1);
-    for (let i = 0; i < list.length; i += 1) {
-        list[i] = from + i;
-    }
-    return list;
-}
-exports.range = range;
-//# sourceMappingURL=util.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/dist/util.js.map b/server/data-import/node_modules/@mongodb-js/saslprep/dist/util.js.map
deleted file mode 100644
index 1bab68133fe696305b5ffadb317bdd3e012709da..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/dist/util.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAGA,SAAgB,KAAK,CAAC,IAAY,EAAE,EAAU;IAE5C,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACvC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;KACpB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AARD,sBAQC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/package.json b/server/data-import/node_modules/@mongodb-js/saslprep/package.json
deleted file mode 100644
index 5be579554f87581fc8a4e5d22cba4792d8d9c896..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/package.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
-  "name": "@mongodb-js/saslprep",
-  "description": "SASLprep: Stringprep Profile for User Names and Passwords, rfc4013",
-  "keywords": [
-    "sasl",
-    "saslprep",
-    "stringprep",
-    "rfc4013",
-    "4013"
-  ],
-  "author": "Dmitry Tsvettsikh <me@reklatsmasters.com>",
-  "publishConfig": {
-    "access": "public"
-  },
-  "main": "dist/node.js",
-  "bugs": {
-    "url": "https://jira.mongodb.org/projects/COMPASS/issues",
-    "email": "compass@mongodb.com"
-  },
-  "homepage": "https://github.com/mongodb-js/devtools-shared/tree/main/packages/saslprep",
-  "version": "1.1.4",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mongodb-js/devtools-shared.git"
-  },
-  "files": [
-    "dist"
-  ],
-  "license": "MIT",
-  "exports": {
-    "browser": {
-      "types": "./dist/browser.d.ts",
-      "default": "./dist/browser.js"
-    },
-    "import": {
-      "types": "./dist/node.d.ts",
-      "default": "./dist/.esm-wrapper.mjs"
-    },
-    "require": {
-      "types": "./dist/node.d.ts",
-      "default": "./dist/node.js"
-    }
-  },
-  "types": "./dist/node.d.ts",
-  "scripts": {
-    "gen-code-points": "ts-node src/generate-code-points.ts src/code-points-data.ts src/code-points-data-browser.ts",
-    "bootstrap": "npm run compile",
-    "prepublishOnly": "npm run compile",
-    "compile": "npm run gen-code-points && tsc -p tsconfig.json && gen-esm-wrapper . ./dist/.esm-wrapper.mjs",
-    "typecheck": "tsc --noEmit",
-    "eslint": "eslint",
-    "prettier": "prettier",
-    "lint": "npm run eslint . && npm run prettier -- --check .",
-    "depcheck": "depcheck",
-    "check": "npm run typecheck && npm run lint && npm run depcheck",
-    "check-ci": "npm run check",
-    "test": "mocha",
-    "test-cov": "nyc -x \"**/*.spec.*\" --reporter=lcov --reporter=text --reporter=html npm run test",
-    "test-watch": "npm run test -- --watch",
-    "test-ci": "npm run test-cov",
-    "reformat": "npm run prettier -- --write ."
-  },
-  "dependencies": {
-    "sparse-bitfield": "^3.0.3"
-  },
-  "devDependencies": {
-    "@mongodb-js/eslint-config-devtools": "0.9.10",
-    "@mongodb-js/mocha-config-devtools": "^1.0.3",
-    "@mongodb-js/prettier-config-devtools": "^1.0.1",
-    "@mongodb-js/tsconfig-devtools": "^1.0.1",
-    "@types/chai": "^4.2.21",
-    "@types/mocha": "^9.0.0",
-    "@types/node": "^17.0.35",
-    "@types/sinon-chai": "^3.2.5",
-    "@types/sparse-bitfield": "^3.0.1",
-    "chai": "^4.3.6",
-    "depcheck": "^1.4.1",
-    "eslint": "^7.25.0",
-    "gen-esm-wrapper": "^1.1.0",
-    "mocha": "^8.4.0",
-    "nyc": "^15.1.0",
-    "prettier": "^2.3.2",
-    "sinon": "^9.2.3",
-    "typescript": "^5.0.4"
-  },
-  "gitHead": "26be0804d454bf804ac817038b6d9a573cc6ce5d"
-}
diff --git a/server/data-import/node_modules/@mongodb-js/saslprep/readme.md b/server/data-import/node_modules/@mongodb-js/saslprep/readme.md
deleted file mode 100644
index 28539edaa32ae2c361edd9b9f18b0430847d2f21..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@mongodb-js/saslprep/readme.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# saslprep
-
-_Note: This is a fork of the original [`saslprep`](https://www.npmjs.com/package/saslprep) npm package
-and provides equivalent functionality._
-
-Stringprep Profile for User Names and Passwords, [rfc4013](https://tools.ietf.org/html/rfc4013)
-
-### Usage
-
-```js
-const saslprep = require('@mongodb-js/saslprep');
-
-saslprep('password\u00AD'); // password
-saslprep('password\u0007'); // Error: prohibited character
-```
-
-### API
-
-##### `saslprep(input: String, opts: Options): String`
-
-Normalize user name or password.
-
-##### `Options.allowUnassigned: bool`
-
-A special behavior for unassigned code points, see https://tools.ietf.org/html/rfc4013#section-2.5. Disabled by default.
-
-## License
-
-MIT, 2017-2019 (c) Dmitriy Tsvettsikh
diff --git a/server/data-import/node_modules/@types/webidl-conversions/LICENSE b/server/data-import/node_modules/@types/webidl-conversions/LICENSE
deleted file mode 100644
index 9e841e7a26e4eb057b24511e7b92d42b257a80e5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/webidl-conversions/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-    MIT License
-
-    Copyright (c) Microsoft Corporation.
-
-    Permission is hereby granted, free of charge, to any person obtaining a copy
-    of this software and associated documentation files (the "Software"), to deal
-    in the Software without restriction, including without limitation the rights
-    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-    copies of the Software, and to permit persons to whom the Software is
-    furnished to do so, subject to the following conditions:
-
-    The above copyright notice and this permission notice shall be included in all
-    copies or substantial portions of the Software.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-    SOFTWARE
diff --git a/server/data-import/node_modules/@types/webidl-conversions/README.md b/server/data-import/node_modules/@types/webidl-conversions/README.md
deleted file mode 100644
index a0f3f9def93b2a0c16b850d1a31b2d11196e820a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/webidl-conversions/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Installation
-> `npm install --save @types/webidl-conversions`
-
-# Summary
-This package contains type definitions for webidl-conversions (https://github.com/jsdom/webidl-conversions#readme).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/webidl-conversions.
-
-### Additional Details
- * Last updated: Tue, 07 Nov 2023 15:11:36 GMT
- * Dependencies: none
-
-# Credits
-These definitions were written by [ExE Boss](https://github.com/ExE-Boss), and [BendingBender](https://github.com/BendingBender).
diff --git a/server/data-import/node_modules/@types/webidl-conversions/index.d.ts b/server/data-import/node_modules/@types/webidl-conversions/index.d.ts
deleted file mode 100644
index bcf395ab201288f1bd5c194757820d2b43311b7f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/webidl-conversions/index.d.ts
+++ /dev/null
@@ -1,91 +0,0 @@
-declare namespace WebIDLConversions {
-    interface Globals {
-        [key: string]: unknown;
-
-        Number: (value?: unknown) => number;
-        String: (value?: unknown) => string;
-        TypeError: new(message?: string) => TypeError;
-    }
-
-    interface Options {
-        context?: string | undefined;
-        globals?: Globals | undefined;
-    }
-
-    interface IntegerOptions extends Options {
-        enforceRange?: boolean | undefined;
-        clamp?: boolean | undefined;
-    }
-
-    interface StringOptions extends Options {
-        treatNullAsEmptyString?: boolean | undefined;
-    }
-
-    interface BufferSourceOptions extends Options {
-        allowShared?: boolean | undefined;
-    }
-
-    type IntegerConversion = (V: unknown, opts?: IntegerOptions) => number;
-    type StringConversion = (V: unknown, opts?: StringOptions) => string;
-    type NumberConversion = (V: unknown, opts?: Options) => number;
-}
-
-declare const WebIDLConversions: {
-    any<V>(V: V, opts?: WebIDLConversions.Options): V;
-    undefined(V?: unknown, opts?: WebIDLConversions.Options): void;
-    boolean(V: unknown, opts?: WebIDLConversions.Options): boolean;
-
-    byte(V: unknown, opts?: WebIDLConversions.IntegerOptions): number;
-    octet(V: unknown, opts?: WebIDLConversions.IntegerOptions): number;
-
-    short(V: unknown, opts?: WebIDLConversions.IntegerOptions): number;
-    ["unsigned short"](V: unknown, opts?: WebIDLConversions.IntegerOptions): number;
-
-    long(V: unknown, opts?: WebIDLConversions.IntegerOptions): number;
-    ["unsigned long"](V: unknown, opts?: WebIDLConversions.IntegerOptions): number;
-
-    ["long long"](V: unknown, opts?: WebIDLConversions.IntegerOptions): number;
-    ["unsigned long long"](V: unknown, opts?: WebIDLConversions.IntegerOptions): number;
-
-    double(V: unknown, opts?: WebIDLConversions.Options): number;
-    ["unrestricted double"](V: unknown, opts?: WebIDLConversions.Options): number;
-
-    float(V: unknown, opts?: WebIDLConversions.Options): number;
-    ["unrestricted float"](V: unknown, opts?: WebIDLConversions.Options): number;
-
-    DOMString(V: unknown, opts?: WebIDLConversions.StringOptions): string;
-    ByteString(V: unknown, opts?: WebIDLConversions.StringOptions): string;
-    USVString(V: unknown, opts?: WebIDLConversions.StringOptions): string;
-
-    object<V>(V: V, opts?: WebIDLConversions.Options): V extends object ? V : V & object;
-    ArrayBuffer(
-        V: unknown,
-        opts?: WebIDLConversions.BufferSourceOptions & { allowShared?: false | undefined },
-    ): ArrayBuffer;
-    ArrayBuffer(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): ArrayBufferLike;
-    DataView(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): DataView;
-
-    Int8Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Int8Array;
-    Int16Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Int16Array;
-    Int32Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Int32Array;
-
-    Uint8Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Uint8Array;
-    Uint16Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Uint16Array;
-    Uint32Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Uint32Array;
-    Uint8ClampedArray(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Uint8ClampedArray;
-
-    Float32Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Float32Array;
-    Float64Array(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): Float64Array;
-
-    ArrayBufferView(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): ArrayBufferView;
-    BufferSource(
-        V: unknown,
-        opts?: WebIDLConversions.BufferSourceOptions & { allowShared?: false | undefined },
-    ): ArrayBuffer | ArrayBufferView;
-    BufferSource(V: unknown, opts?: WebIDLConversions.BufferSourceOptions): ArrayBufferLike | ArrayBufferView;
-
-    DOMTimeStamp(V: unknown, opts?: WebIDLConversions.Options): number;
-};
-
-// This can't use ES6 style exports, as those can't have spaces in export names.
-export = WebIDLConversions;
diff --git a/server/data-import/node_modules/@types/webidl-conversions/package.json b/server/data-import/node_modules/@types/webidl-conversions/package.json
deleted file mode 100644
index 21fdb9586483712346233bbe2f4776ad1baf6f8a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/webidl-conversions/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-    "name": "@types/webidl-conversions",
-    "version": "7.0.3",
-    "description": "TypeScript definitions for webidl-conversions",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/webidl-conversions",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "ExE Boss",
-            "githubUsername": "ExE-Boss",
-            "url": "https://github.com/ExE-Boss"
-        },
-        {
-            "name": "BendingBender",
-            "githubUsername": "BendingBender",
-            "url": "https://github.com/BendingBender"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/webidl-conversions"
-    },
-    "scripts": {},
-    "dependencies": {},
-    "typesPublisherContentHash": "ff1514e10869784e8b7cca9c4099a4213d3f14b48c198b1bf116300df94bf608",
-    "typeScriptVersion": "4.5"
-}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@types/whatwg-url/LICENSE b/server/data-import/node_modules/@types/whatwg-url/LICENSE
deleted file mode 100644
index 9e841e7a26e4eb057b24511e7b92d42b257a80e5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/whatwg-url/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-    MIT License
-
-    Copyright (c) Microsoft Corporation.
-
-    Permission is hereby granted, free of charge, to any person obtaining a copy
-    of this software and associated documentation files (the "Software"), to deal
-    in the Software without restriction, including without limitation the rights
-    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-    copies of the Software, and to permit persons to whom the Software is
-    furnished to do so, subject to the following conditions:
-
-    The above copyright notice and this permission notice shall be included in all
-    copies or substantial portions of the Software.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-    SOFTWARE
diff --git a/server/data-import/node_modules/@types/whatwg-url/README.md b/server/data-import/node_modules/@types/whatwg-url/README.md
deleted file mode 100644
index 940de69d0a0e852615ec3349273b17950bc3de84..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/whatwg-url/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Installation
-> `npm install --save @types/whatwg-url`
-
-# Summary
-This package contains type definitions for whatwg-url (https://github.com/jsdom/whatwg-url#readme).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/whatwg-url.
-
-### Additional Details
- * Last updated: Tue, 09 Jan 2024 19:06:33 GMT
- * Dependencies: [@types/webidl-conversions](https://npmjs.com/package/@types/webidl-conversions)
-
-# Credits
-These definitions were written by [Alexander Marks](https://github.com/aomarks), [ExE Boss](https://github.com/ExE-Boss), and [BendingBender](https://github.com/BendingBender).
diff --git a/server/data-import/node_modules/@types/whatwg-url/index.d.ts b/server/data-import/node_modules/@types/whatwg-url/index.d.ts
deleted file mode 100644
index 2922d87f9b72613d6f7433ef40c300064bb10465..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/whatwg-url/index.d.ts
+++ /dev/null
@@ -1,169 +0,0 @@
-/// <reference lib="es2020"/>
-/** https://url.spec.whatwg.org/#url-representation */
-export interface URLRecord {
-    scheme: string;
-    username: string;
-    password: string;
-    host: string | number | IPv6Address | null;
-    port: number | null;
-    path: string | string[];
-    query: string | null;
-    fragment: string | null;
-}
-
-/** https://url.spec.whatwg.org/#concept-ipv6 */
-export type IPv6Address = [number, number, number, number, number, number, number, number];
-
-/** https://url.spec.whatwg.org/#url-class */
-export class URL {
-    constructor(url: string, base?: string | URL);
-
-    get href(): string;
-    set href(V: string);
-
-    get origin(): string;
-
-    get protocol(): string;
-    set protocol(V: string);
-
-    get username(): string;
-    set username(V: string);
-
-    get password(): string;
-    set password(V: string);
-
-    get host(): string;
-    set host(V: string);
-
-    get hostname(): string;
-    set hostname(V: string);
-
-    get port(): string;
-    set port(V: string);
-
-    get pathname(): string;
-    set pathname(V: string);
-
-    get search(): string;
-    set search(V: string);
-
-    get searchParams(): URLSearchParams;
-
-    get hash(): string;
-    set hash(V: string);
-
-    toJSON(): string;
-
-    readonly [Symbol.toStringTag]: "URL";
-}
-
-/** https://url.spec.whatwg.org/#interface-urlsearchparams */
-export class URLSearchParams {
-    constructor(
-        init?:
-            | ReadonlyArray<readonly [name: string, value: string]>
-            | Iterable<readonly [name: string, value: string]>
-            | { readonly [name: string]: string }
-            | string,
-    );
-
-    append(name: string, value: string): void;
-    delete(name: string): void;
-    get(name: string): string | null;
-    getAll(name: string): string[];
-    has(name: string): boolean;
-    set(name: string, value: string): void;
-    sort(): void;
-
-    keys(): IterableIterator<string>;
-    values(): IterableIterator<string>;
-    entries(): IterableIterator<[name: string, value: string]>;
-    forEach<THIS_ARG = void>(
-        callback: (this: THIS_ARG, value: string, name: string, searchParams: this) => void,
-        thisArg?: THIS_ARG,
-    ): void;
-
-    readonly [Symbol.toStringTag]: "URLSearchParams";
-    [Symbol.iterator](): IterableIterator<[name: string, value: string]>;
-}
-
-/** https://url.spec.whatwg.org/#concept-url-parser */
-export function parseURL(input: string, options?: { readonly baseURL?: URLRecord | undefined }): URLRecord | null;
-
-/** https://url.spec.whatwg.org/#concept-basic-url-parser */
-export function basicURLParse(
-    input: string,
-    options?: {
-        baseURL?: URLRecord | undefined;
-        url?: URLRecord | undefined;
-        stateOverride?: StateOverride | undefined;
-    },
-): URLRecord | null;
-
-/** https://url.spec.whatwg.org/#scheme-start-state */
-export type StateOverride =
-    | "scheme start"
-    | "scheme"
-    | "no scheme"
-    | "special relative or authority"
-    | "path or authority"
-    | "relative"
-    | "relative slash"
-    | "special authority slashes"
-    | "special authority ignore slashes"
-    | "authority"
-    | "host"
-    | "hostname"
-    | "port"
-    | "file"
-    | "file slash"
-    | "file host"
-    | "path start"
-    | "path"
-    | "opaque path"
-    | "query"
-    | "fragment";
-
-/** https://url.spec.whatwg.org/#concept-url-serializer */
-export function serializeURL(urlRecord: URLRecord, excludeFragment?: boolean): string;
-
-/** https://url.spec.whatwg.org/#concept-host-serializer */
-export function serializeHost(host: string | number | IPv6Address): string;
-
-/** https://url.spec.whatwg.org/#url-path-serializer */
-export function serializePath(urlRecord: URLRecord): string;
-
-/** https://url.spec.whatwg.org/#serialize-an-integer */
-export function serializeInteger(number: number): string;
-
-/** https://html.spec.whatwg.org#ascii-serialisation-of-an-origin */
-export function serializeURLOrigin(urlRecord: URLRecord): string;
-
-/** https://url.spec.whatwg.org/#set-the-username */
-export function setTheUsername(urlRecord: URLRecord, username: string): void;
-
-/** https://url.spec.whatwg.org/#set-the-password */
-export function setThePassword(urlRecord: URLRecord, password: string): void;
-
-/** https://url.spec.whatwg.org/#url-opaque-path */
-export function hasAnOpaquePath(urlRecord: URLRecord): boolean;
-
-/** https://url.spec.whatwg.org/#cannot-have-a-username-password-port */
-export function cannotHaveAUsernamePasswordPort(urlRecord: URLRecord): boolean;
-
-/** https://url.spec.whatwg.org/#percent-decode */
-export function percentDecodeBytes(buffer: TypedArray): Uint8Array;
-
-/** https://url.spec.whatwg.org/#percent-decode-string */
-export function percentDecodeString(string: string): Uint8Array;
-
-export type TypedArray =
-    | Uint8Array
-    | Uint8ClampedArray
-    | Uint16Array
-    | Uint32Array
-    | Int8Array
-    | Int16Array
-    | Int32Array
-    | Float32Array
-    | Float64Array;
diff --git a/server/data-import/node_modules/@types/whatwg-url/lib/URL-impl.d.ts b/server/data-import/node_modules/@types/whatwg-url/lib/URL-impl.d.ts
deleted file mode 100644
index c0bb598433a3ddc0f79080f5ec3509e412cf4022..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/whatwg-url/lib/URL-impl.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { Globals } from "webidl-conversions";
-import { implementation as URLSearchParamsImpl } from "./URLSearchParams-impl";
-
-declare class URLImpl {
-    constructor(globalObject: Globals, constructorArgs: readonly [url: string, base?: string]);
-
-    href: string;
-    readonly origin: string;
-    protocol: string;
-    username: string;
-    password: string;
-    host: string;
-    hostname: string;
-    port: string;
-    pathname: string;
-    search: string;
-    readonly searchParams: URLSearchParamsImpl;
-    hash: string;
-
-    toJSON(): string;
-}
-export { URLImpl as implementation };
diff --git a/server/data-import/node_modules/@types/whatwg-url/lib/URL.d.ts b/server/data-import/node_modules/@types/whatwg-url/lib/URL.d.ts
deleted file mode 100644
index 85474a7025017c4548e84c60de7588e8ab9a46c9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/whatwg-url/lib/URL.d.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import { URL } from "../index";
-import { implementation as URLImpl } from "./URL-impl";
-
-/**
- * Checks whether `obj` is a `URL` object with an implementation
- * provided by this package.
- */
-export function is(obj: unknown): obj is URL;
-
-/**
- * Checks whether `obj` is a `URLImpl` WebIDL2JS implementation object
- * provided by this package.
- */
-export function isImpl(obj: unknown): obj is URLImpl;
-
-/**
- * Converts the `URL` wrapper into a `URLImpl` object.
- *
- * @throws {TypeError} If `obj` is not a `URL` wrapper instance provided by this package.
- */
-export function convert(globalObject: object, obj: unknown, { context }?: { context: string }): URLImpl;
-
-/**
- * Creates a new `URL` instance.
- *
- * @throws {Error} If the `globalObject` doesn't have a WebIDL2JS constructor
- *         registry or a `URL` constructor provided by this package
- *         in the WebIDL2JS constructor registry.
- */
-export function create(globalObject: object, constructorArgs: readonly [url: string, base?: string]): URL;
-
-/**
- * Calls `create()` and returns the internal `URLImpl`.
- *
- * @throws {Error} If the `globalObject` doesn't have a WebIDL2JS constructor
- *         registry or a `URL` constructor provided by this package
- *         in the WebIDL2JS constructor registry.
- */
-export function createImpl(globalObject: object, constructorArgs: readonly [url: string, base?: string]): URLImpl;
-
-/**
- * Initializes the `URL` instance, called by `create()`.
- *
- * Useful when manually sub-classing a non-constructable wrapper object.
- */
-export function setup<T extends URL>(
-    obj: T,
-    globalObject: object,
-    constructorArgs: readonly [url: string, base?: string],
-): T;
-
-/**
- * Creates a new `URL` object without runing the constructor steps.
- *
- * Useful when implementing specifications that initialize objects
- * in different ways than their constructors do.
- */
-declare function _new(globalObject: object, newTarget?: new(url: string, base?: string) => URL): URLImpl;
-export { _new as new };
-
-/**
- * Installs the `URL` constructor onto the `globalObject`.
- *
- * @throws {Error} If the target `globalObject` doesn't have an `Error` constructor.
- */
-export function install(globalObject: object, globalNames: readonly string[]): void;
diff --git a/server/data-import/node_modules/@types/whatwg-url/lib/URLSearchParams-impl.d.ts b/server/data-import/node_modules/@types/whatwg-url/lib/URLSearchParams-impl.d.ts
deleted file mode 100644
index cf507011765da537c56abdc6d1e997d7fa3b2bf8..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/whatwg-url/lib/URLSearchParams-impl.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-declare class URLSearchParamsImpl {
-    constructor(
-        globalObject: object,
-        constructorArgs: readonly [
-            init?: ReadonlyArray<readonly [name: string, value: string]> | { readonly [name: string]: string } | string,
-        ],
-        privateData: { readonly doNotStripQMark?: boolean | undefined },
-    );
-
-    append(name: string, value: string): void;
-    delete(name: string): void;
-    get(name: string): string | null;
-    getAll(name: string): string[];
-    has(name: string): boolean;
-    set(name: string, value: string): void;
-    sort(): void;
-
-    [Symbol.iterator](): IterableIterator<[name: string, value: string]>;
-}
-export { URLSearchParamsImpl as implementation };
diff --git a/server/data-import/node_modules/@types/whatwg-url/lib/URLSearchParams.d.ts b/server/data-import/node_modules/@types/whatwg-url/lib/URLSearchParams.d.ts
deleted file mode 100644
index 8b35d1d1e1d44b927a3660977df5d3a46ed227bb..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/whatwg-url/lib/URLSearchParams.d.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import { URLSearchParams } from "../index";
-import { implementation as URLSearchParamsImpl } from "./URLSearchParams-impl";
-
-/**
- * Checks whether `obj` is a `URLSearchParams` object with an implementation
- * provided by this package.
- */
-export function is(obj: unknown): obj is URLSearchParams;
-
-/**
- * Checks whether `obj` is a `URLSearchParamsImpl` WebIDL2JS implementation object
- * provided by this package.
- */
-export function isImpl(obj: unknown): obj is URLSearchParamsImpl;
-
-/**
- * Converts the `URLSearchParams` wrapper into a `URLSearchParamsImpl` object.
- *
- * @throws {TypeError} If `obj` is not a `URLSearchParams` wrapper instance provided by this package.
- */
-export function convert(globalObject: object, obj: unknown, { context }?: { context: string }): URLSearchParamsImpl;
-
-export function createDefaultIterator<TIteratorKind extends "key" | "value" | "key+value">(
-    globalObject: object,
-    target: URLSearchParamsImpl,
-    kind: TIteratorKind,
-): IterableIterator<TIteratorKind extends "key" | "value" ? string : [name: string, value: string]>;
-
-/**
- * Creates a new `URLSearchParams` instance.
- *
- * @throws {Error} If the `globalObject` doesn't have a WebIDL2JS constructor
- *         registry or a `URLSearchParams` constructor provided by this package
- *         in the WebIDL2JS constructor registry.
- */
-export function create(
-    globalObject: object,
-    constructorArgs?: readonly [
-        init: ReadonlyArray<[name: string, value: string]> | { readonly [name: string]: string } | string,
-    ],
-    privateData?: { doNotStripQMark?: boolean | undefined },
-): URLSearchParams;
-
-/**
- * Calls `create()` and returns the internal `URLSearchParamsImpl`.
- *
- * @throws {Error} If the `globalObject` doesn't have a WebIDL2JS constructor
- *         registry or a `URLSearchParams` constructor provided by this package
- *         in the WebIDL2JS constructor registry.
- */
-export function createImpl(
-    globalObject: object,
-    constructorArgs?: readonly [
-        init: ReadonlyArray<[name: string, value: string]> | { readonly [name: string]: string } | string,
-    ],
-    privateData?: { doNotStripQMark?: boolean | undefined },
-): URLSearchParamsImpl;
-
-/**
- * Initializes the `URLSearchParams` instance, called by `create()`.
- *
- * Useful when manually sub-classing a non-constructable wrapper object.
- */
-export function setup<T extends URLSearchParams>(
-    obj: T,
-    globalObject: object,
-    constructorArgs?: readonly [
-        init: ReadonlyArray<[name: string, value: string]> | { readonly [name: string]: string } | string,
-    ],
-    privateData?: { doNotStripQMark?: boolean | undefined },
-): T;
-
-/**
- * Creates a new `URLSearchParams` object without runing the constructor steps.
- *
- * Useful when implementing specifications that initialize objects
- * in different ways than their constructors do.
- */
-declare function _new(
-    globalObject: object,
-    newTarget?: new(
-        init: ReadonlyArray<[name: string, value: string]> | { readonly [name: string]: string } | string,
-    ) => URLSearchParams,
-): URLSearchParamsImpl;
-export { _new as new };
-
-/**
- * Installs the `URLSearchParams` constructor onto the `globalObject`.
- *
- * @throws {Error} If the target `globalObject` doesn't have an `Error` constructor.
- */
-export function install(globalObject: object, globalNames: readonly string[]): void;
diff --git a/server/data-import/node_modules/@types/whatwg-url/package.json b/server/data-import/node_modules/@types/whatwg-url/package.json
deleted file mode 100644
index eb886accf94866ac0d79e34cc99e53bf99496f93..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/whatwg-url/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-    "name": "@types/whatwg-url",
-    "version": "11.0.4",
-    "description": "TypeScript definitions for whatwg-url",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/whatwg-url",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "Alexander Marks",
-            "githubUsername": "aomarks",
-            "url": "https://github.com/aomarks"
-        },
-        {
-            "name": "ExE Boss",
-            "githubUsername": "ExE-Boss",
-            "url": "https://github.com/ExE-Boss"
-        },
-        {
-            "name": "BendingBender",
-            "githubUsername": "BendingBender",
-            "url": "https://github.com/BendingBender"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/whatwg-url"
-    },
-    "scripts": {},
-    "dependencies": {
-        "@types/webidl-conversions": "*"
-    },
-    "typesPublisherContentHash": "3efa2ac3da0eef7a1b38bc379a0936a1d6a3f437ff481a88b01f2aa6ba5dae2e",
-    "typeScriptVersion": "4.6"
-}
\ No newline at end of file
diff --git a/server/data-import/node_modules/@types/whatwg-url/webidl2js-wrapper.d.ts b/server/data-import/node_modules/@types/whatwg-url/webidl2js-wrapper.d.ts
deleted file mode 100644
index 96029b766d880a4b6414a82a8ce64f7ea92609ba..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/@types/whatwg-url/webidl2js-wrapper.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import * as URL from "./lib/URL";
-import * as URLSearchParams from "./lib/URLSearchParams";
-
-export { URL, URLSearchParams };
diff --git a/server/data-import/node_modules/bson/LICENSE.md b/server/data-import/node_modules/bson/LICENSE.md
deleted file mode 100644
index 261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/LICENSE.md
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/server/data-import/node_modules/bson/README.md b/server/data-import/node_modules/bson/README.md
deleted file mode 100644
index 7c9c8c71d297d4125492ece34fc94953a6353c42..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/README.md
+++ /dev/null
@@ -1,253 +0,0 @@
-# BSON parser
-
-BSON is short for "Binary JSON," and is the binary-encoded serialization of JSON-like documents.
-You can learn more about it in [the specification](http://bsonspec.org).
-
-### Table of Contents
-
-- [Usage](#usage)
-- [Bugs/Feature Requests](#bugs--feature-requests)
-- [Installation](#installation)
-- [Documentation](#documentation)
-- [FAQ](#faq)
-
-## Bugs / Feature Requests
-
-Think you've found a bug? Want to see a new feature in `bson`? Please open a case in our issue management tool, JIRA:
-
-1. Create an account and login: [jira.mongodb.org](https://jira.mongodb.org)
-2. Navigate to the NODE project: [jira.mongodb.org/browse/NODE](https://jira.mongodb.org/browse/NODE)
-3. Click **Create Issue** - Please provide as much information as possible about the issue and how to reproduce it.
-
-Bug reports in JIRA for the NODE driver project are **public**.
-
-## Usage
-
-To build a new version perform the following operations:
-
-```
-npm install
-npm run build
-```
-
-### Node.js or Bundling Usage
-
-When using a bundler or Node.js you can import bson using the package name:
-
-```js
-import { BSON, EJSON, ObjectId } from 'bson';
-// or:
-// const { BSON, EJSON, ObjectId } = require('bson');
-
-const bytes = BSON.serialize({ _id: new ObjectId() });
-console.log(bytes);
-const doc = BSON.deserialize(bytes);
-console.log(EJSON.stringify(doc));
-// {"_id":{"$oid":"..."}}
-```
-
-### Browser Usage
-
-If you are working directly in the browser without a bundler please use the `.mjs` bundle like so:
-
-```html
-<script type="module">
-  import { BSON, EJSON, ObjectId } from './lib/bson.mjs';
-
-  const bytes = BSON.serialize({ _id: new ObjectId() });
-  console.log(bytes);
-  const doc = BSON.deserialize(bytes);
-  console.log(EJSON.stringify(doc));
-  // {"_id":{"$oid":"..."}}
-</script>
-```
-
-## Installation
-
-```sh
-npm install bson
-```
-
-### MongoDB Node.js Driver Version Compatibility
-
-Only the following version combinations with the [MongoDB Node.js Driver](https://github.com/mongodb/node-mongodb-native) are considered stable.
-
-|               | `bson@1.x` | `bson@4.x` | `bson@5.x` | `bson@6.x` |
-| ------------- | ---------- | ---------- | ---------- | ---------- |
-| `mongodb@6.x` | N/A        | N/A        | N/A        | ✓          |
-| `mongodb@5.x` | N/A        | N/A        | ✓          | N/A        |
-| `mongodb@4.x` | N/A        | ✓          | N/A        | N/A        |
-| `mongodb@3.x` | ✓          | N/A        | N/A        | N/A        |
-
-## Documentation
-
-### BSON
-
-[API documentation](https://mongodb.github.io/node-mongodb-native/Next/modules/BSON.html)
-
-<a name="EJSON"></a>
-
-### EJSON
-
-- [EJSON](#EJSON)
-
-  - [.parse(text, [options])](#EJSON.parse)
-
-  - [.stringify(value, [replacer], [space], [options])](#EJSON.stringify)
-
-  - [.serialize(bson, [options])](#EJSON.serialize)
-
-  - [.deserialize(ejson, [options])](#EJSON.deserialize)
-
-<a name="EJSON.parse"></a>
-
-#### _EJSON_.parse(text, [options])
-
-| Param             | Type                 | Default           | Description                                                                        |
-| ----------------- | -------------------- | ----------------- | ---------------------------------------------------------------------------------- |
-| text              | <code>string</code>  |                   |                                                                                    |
-| [options]         | <code>object</code>  |                   | Optional settings                                                                  |
-| [options.relaxed] | <code>boolean</code> | <code>true</code> | Attempt to return native JS types where possible, rather than BSON types (if true) |
-
-Parse an Extended JSON string, constructing the JavaScript value or object described by that
-string.
-
-**Example**
-
-```js
-const { EJSON } = require('bson');
-const text = '{ "int32": { "$numberInt": "10" } }';
-
-// prints { int32: { [String: '10'] _bsontype: 'Int32', value: '10' } }
-console.log(EJSON.parse(text, { relaxed: false }));
-
-// prints { int32: 10 }
-console.log(EJSON.parse(text));
-```
-
-<a name="EJSON.stringify"></a>
-
-#### _EJSON_.stringify(value, [replacer], [space], [options])
-
-| Param             | Type                                        | Default           | Description                                                                                                                                                                                                                                                                                                                                        |
-| ----------------- | ------------------------------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| value             | <code>object</code>                         |                   | The value to convert to extended JSON                                                                                                                                                                                                                                                                                                              |
-| [replacer]        | <code>function</code> \| <code>array</code> |                   | A function that alters the behavior of the stringification process, or an array of String and Number objects that serve as a whitelist for selecting/filtering the properties of the value object to be included in the JSON string. If this value is null or not provided, all properties of the object are included in the resulting JSON string |
-| [space]           | <code>string</code> \| <code>number</code>  |                   | A String or Number object that's used to insert white space into the output JSON string for readability purposes.                                                                                                                                                                                                                                  |
-| [options]         | <code>object</code>                         |                   | Optional settings                                                                                                                                                                                                                                                                                                                                  |
-| [options.relaxed] | <code>boolean</code>                        | <code>true</code> | Enabled Extended JSON's `relaxed` mode                                                                                                                                                                                                                                                                                                             |
-| [options.legacy]  | <code>boolean</code>                        | <code>true</code> | Output in Extended JSON v1                                                                                                                                                                                                                                                                                                                         |
-
-Converts a BSON document to an Extended JSON string, optionally replacing values if a replacer
-function is specified or optionally including only the specified properties if a replacer array
-is specified.
-
-**Example**
-
-```js
-const { EJSON } = require('bson');
-const Int32 = require('mongodb').Int32;
-const doc = { int32: new Int32(10) };
-
-// prints '{"int32":{"$numberInt":"10"}}'
-console.log(EJSON.stringify(doc, { relaxed: false }));
-
-// prints '{"int32":10}'
-console.log(EJSON.stringify(doc));
-```
-
-<a name="EJSON.serialize"></a>
-
-#### _EJSON_.serialize(bson, [options])
-
-| Param     | Type                | Description                                          |
-| --------- | ------------------- | ---------------------------------------------------- |
-| bson      | <code>object</code> | The object to serialize                              |
-| [options] | <code>object</code> | Optional settings passed to the `stringify` function |
-
-Serializes an object to an Extended JSON string, and reparse it as a JavaScript object.
-
-<a name="EJSON.deserialize"></a>
-
-#### _EJSON_.deserialize(ejson, [options])
-
-| Param     | Type                | Description                                  |
-| --------- | ------------------- | -------------------------------------------- |
-| ejson     | <code>object</code> | The Extended JSON object to deserialize      |
-| [options] | <code>object</code> | Optional settings passed to the parse method |
-
-Deserializes an Extended JSON object into a plain JavaScript object with native/BSON types
-
-## Error Handling
-
-It is our recommendation to use `BSONError.isBSONError()` checks on errors and to avoid relying on parsing `error.message` and `error.name` strings in your code. We guarantee `BSONError.isBSONError()` checks will pass according to semver guidelines, but errors may be sub-classed or their messages may change at any time, even patch releases, as we see fit to increase the helpfulness of the errors.
-
-Any new errors we add to the driver will directly extend an existing error class and no existing error will be moved to a different parent class outside of a major release.
-This means `BSONError.isBSONError()` will always be able to accurately capture the errors that our BSON library throws.
-
-Hypothetical example: A collection in our Db has an issue with UTF-8 data:
-
-```ts
-let documentCount = 0;
-const cursor = collection.find({}, { utf8Validation: true });
-try {
-  for await (const doc of cursor) documentCount += 1;
-} catch (error) {
-  if (BSONError.isBSONError(error)) {
-    console.log(`Found the troublemaker UTF-8!: ${documentCount} ${error.message}`);
-    return documentCount;
-  }
-  throw error;
-}
-```
-
-## React Native
-
-BSON vendors the required polyfills for `TextEncoder`, `TextDecoder`, `atob`, `btoa` imported from React Native and therefore doesn't expect users to polyfill these. One additional polyfill, `crypto.getRandomValues` is recommended and can be installed with the following command:
-
-```sh
-npm install --save react-native-get-random-values
-```
-
-The following snippet should be placed at the top of the entrypoint (by default this is the root `index.js` file) for React Native projects using the BSON library. These lines must be placed for any code that imports `BSON`.
-
-```typescript
-// Required Polyfills For ReactNative
-import 'react-native-get-random-values';
-```
-
-Finally, import the `BSON` library like so:
-
-```typescript
-import { BSON, EJSON } from 'bson';
-```
-
-This will cause React Native to import the `node_modules/bson/lib/bson.rn.cjs` bundle (see the `"react-native"` setting we have in the `"exports"` section of our [package.json](./package.json).)
-
-### Technical Note about React Native module import
-
-The `"exports"` definition in our `package.json` will result in BSON's CommonJS bundle being imported in a React Native project instead of the ES module bundle. Importing the CommonJS bundle is necessary because BSON's ES module bundle of BSON uses top-level await, which is not supported syntax in [React Native's runtime hermes](https://hermesengine.dev/).
-
-## FAQ
-
-#### Why does `undefined` get converted to `null`?
-
-The `undefined` BSON type has been [deprecated for many years](http://bsonspec.org/spec.html), so this library has dropped support for it. Use the `ignoreUndefined` option (for example, from the [driver](http://mongodb.github.io/node-mongodb-native/2.2/api/MongoClient.html#connect) ) to instead remove `undefined` keys.
-
-#### How do I add custom serialization logic?
-
-This library looks for `toBSON()` functions on every path, and calls the `toBSON()` function to get the value to serialize.
-
-```javascript
-const BSON = require('bson');
-
-class CustomSerialize {
-  toBSON() {
-    return 42;
-  }
-}
-
-const obj = { answer: new CustomSerialize() };
-// "{ answer: 42 }"
-console.log(BSON.deserialize(BSON.serialize(obj)));
-```
diff --git a/server/data-import/node_modules/bson/bson.d.ts b/server/data-import/node_modules/bson/bson.d.ts
deleted file mode 100644
index faacd2480e739a61412ba61099a6ea7ff5603f00..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/bson.d.ts
+++ /dev/null
@@ -1,1340 +0,0 @@
-/**
- * A class representation of the BSON Binary type.
- * @public
- * @category BSONType
- */
-export declare class Binary extends BSONValue {
-    get _bsontype(): 'Binary';
-    /* Excluded from this release type: BSON_BINARY_SUBTYPE_DEFAULT */
-    /** Initial buffer default size */
-    static readonly BUFFER_SIZE = 256;
-    /** Default BSON type */
-    static readonly SUBTYPE_DEFAULT = 0;
-    /** Function BSON type */
-    static readonly SUBTYPE_FUNCTION = 1;
-    /** Byte Array BSON type */
-    static readonly SUBTYPE_BYTE_ARRAY = 2;
-    /** Deprecated UUID BSON type @deprecated Please use SUBTYPE_UUID */
-    static readonly SUBTYPE_UUID_OLD = 3;
-    /** UUID BSON type */
-    static readonly SUBTYPE_UUID = 4;
-    /** MD5 BSON type */
-    static readonly SUBTYPE_MD5 = 5;
-    /** Encrypted BSON type */
-    static readonly SUBTYPE_ENCRYPTED = 6;
-    /** Column BSON type */
-    static readonly SUBTYPE_COLUMN = 7;
-    /** User BSON type */
-    static readonly SUBTYPE_USER_DEFINED = 128;
-    buffer: Uint8Array;
-    sub_type: number;
-    position: number;
-    /**
-     * Create a new Binary instance.
-     * @param buffer - a buffer object containing the binary data.
-     * @param subType - the option binary type.
-     */
-    constructor(buffer?: BinarySequence, subType?: number);
-    /**
-     * Updates this binary with byte_value.
-     *
-     * @param byteValue - a single byte we wish to write.
-     */
-    put(byteValue: string | number | Uint8Array | number[]): void;
-    /**
-     * Writes a buffer to the binary.
-     *
-     * @param sequence - a string or buffer to be written to the Binary BSON object.
-     * @param offset - specify the binary of where to write the content.
-     */
-    write(sequence: BinarySequence, offset: number): void;
-    /**
-     * Reads **length** bytes starting at **position**.
-     *
-     * @param position - read from the given position in the Binary.
-     * @param length - the number of bytes to read.
-     */
-    read(position: number, length: number): BinarySequence;
-    /** returns a view of the binary value as a Uint8Array */
-    value(): Uint8Array;
-    /** the length of the binary sequence */
-    length(): number;
-    toJSON(): string;
-    toString(encoding?: 'hex' | 'base64' | 'utf8' | 'utf-8'): string;
-    /* Excluded from this release type: toExtendedJSON */
-    toUUID(): UUID;
-    /** Creates an Binary instance from a hex digit string */
-    static createFromHexString(hex: string, subType?: number): Binary;
-    /** Creates an Binary instance from a base64 string */
-    static createFromBase64(base64: string, subType?: number): Binary;
-    /* Excluded from this release type: fromExtendedJSON */
-    inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-}
-
-/** @public */
-export declare interface BinaryExtended {
-    $binary: {
-        subType: string;
-        base64: string;
-    };
-}
-
-/** @public */
-export declare interface BinaryExtendedLegacy {
-    $type: string;
-    $binary: string;
-}
-
-/** @public */
-export declare type BinarySequence = Uint8Array | number[];
-
-declare namespace BSON {
-    export {
-        setInternalBufferSize,
-        serialize,
-        serializeWithBufferAndIndex,
-        deserialize,
-        calculateObjectSize,
-        deserializeStream,
-        UUIDExtended,
-        BinaryExtended,
-        BinaryExtendedLegacy,
-        BinarySequence,
-        CodeExtended,
-        DBRefLike,
-        Decimal128Extended,
-        DoubleExtended,
-        EJSONOptions,
-        Int32Extended,
-        LongExtended,
-        MaxKeyExtended,
-        MinKeyExtended,
-        ObjectIdExtended,
-        ObjectIdLike,
-        BSONRegExpExtended,
-        BSONRegExpExtendedLegacy,
-        BSONSymbolExtended,
-        LongWithoutOverrides,
-        TimestampExtended,
-        TimestampOverrides,
-        LongWithoutOverridesClass,
-        SerializeOptions,
-        DeserializeOptions,
-        Code,
-        BSONSymbol,
-        DBRef,
-        Binary,
-        ObjectId,
-        UUID,
-        Long,
-        Timestamp,
-        Double,
-        Int32,
-        MinKey,
-        MaxKey,
-        BSONRegExp,
-        Decimal128,
-        BSONValue,
-        BSONError,
-        BSONVersionError,
-        BSONRuntimeError,
-        BSONType,
-        EJSON,
-        Document,
-        CalculateObjectSizeOptions
-    }
-}
-export { BSON }
-
-/**
- * @public
- * @category Error
- *
- * `BSONError` objects are thrown when BSON encounters an error.
- *
- * This is the parent class for all the other errors thrown by this library.
- */
-export declare class BSONError extends Error {
-    /* Excluded from this release type: bsonError */
-    get name(): string;
-    constructor(message: string, options?: {
-        cause?: unknown;
-    });
-    /**
-     * @public
-     *
-     * All errors thrown from the BSON library inherit from `BSONError`.
-     * This method can assist with determining if an error originates from the BSON library
-     * even if it does not pass an `instanceof` check against this class' constructor.
-     *
-     * @param value - any javascript value that needs type checking
-     */
-    static isBSONError(value: unknown): value is BSONError;
-}
-
-/**
- * A class representation of the BSON RegExp type.
- * @public
- * @category BSONType
- */
-export declare class BSONRegExp extends BSONValue {
-    get _bsontype(): 'BSONRegExp';
-    pattern: string;
-    options: string;
-    /**
-     * @param pattern - The regular expression pattern to match
-     * @param options - The regular expression options
-     */
-    constructor(pattern: string, options?: string);
-    static parseOptions(options?: string): string;
-    /* Excluded from this release type: toExtendedJSON */
-    /* Excluded from this release type: fromExtendedJSON */
-    inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-}
-
-/** @public */
-export declare interface BSONRegExpExtended {
-    $regularExpression: {
-        pattern: string;
-        options: string;
-    };
-}
-
-/** @public */
-export declare interface BSONRegExpExtendedLegacy {
-    $regex: string | BSONRegExp;
-    $options: string;
-}
-
-/**
- * @public
- * @category Error
- *
- * An error generated when BSON functions encounter an unexpected input
- * or reaches an unexpected/invalid internal state
- *
- */
-export declare class BSONRuntimeError extends BSONError {
-    get name(): 'BSONRuntimeError';
-    constructor(message: string);
-}
-
-/**
- * A class representation of the BSON Symbol type.
- * @public
- * @category BSONType
- */
-export declare class BSONSymbol extends BSONValue {
-    get _bsontype(): 'BSONSymbol';
-    value: string;
-    /**
-     * @param value - the string representing the symbol.
-     */
-    constructor(value: string);
-    /** Access the wrapped string value. */
-    valueOf(): string;
-    toString(): string;
-    toJSON(): string;
-    /* Excluded from this release type: toExtendedJSON */
-    /* Excluded from this release type: fromExtendedJSON */
-    inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-}
-
-/** @public */
-export declare interface BSONSymbolExtended {
-    $symbol: string;
-}
-
-/** @public */
-export declare const BSONType: Readonly<{
-    readonly double: 1;
-    readonly string: 2;
-    readonly object: 3;
-    readonly array: 4;
-    readonly binData: 5;
-    readonly undefined: 6;
-    readonly objectId: 7;
-    readonly bool: 8;
-    readonly date: 9;
-    readonly null: 10;
-    readonly regex: 11;
-    readonly dbPointer: 12;
-    readonly javascript: 13;
-    readonly symbol: 14;
-    readonly javascriptWithScope: 15;
-    readonly int: 16;
-    readonly timestamp: 17;
-    readonly long: 18;
-    readonly decimal: 19;
-    readonly minKey: -1;
-    readonly maxKey: 127;
-}>;
-
-/** @public */
-export declare type BSONType = (typeof BSONType)[keyof typeof BSONType];
-
-/** @public */
-export declare abstract class BSONValue {
-    /** @public */
-    abstract get _bsontype(): string;
-    /**
-     * @public
-     * Prints a human-readable string of BSON value information
-     * If invoked manually without node.js.inspect function, this will default to a modified JSON.stringify
-     */
-    abstract inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-    /* Excluded from this release type: toExtendedJSON */
-}
-
-/**
- * @public
- * @category Error
- */
-export declare class BSONVersionError extends BSONError {
-    get name(): 'BSONVersionError';
-    constructor();
-}
-
-/**
- * Calculate the bson size for a passed in Javascript object.
- *
- * @param object - the Javascript object to calculate the BSON byte size for
- * @returns size of BSON object in bytes
- * @public
- */
-export declare function calculateObjectSize(object: Document, options?: CalculateObjectSizeOptions): number;
-
-/** @public */
-export declare type CalculateObjectSizeOptions = Pick<SerializeOptions, 'serializeFunctions' | 'ignoreUndefined'>;
-
-/**
- * A class representation of the BSON Code type.
- * @public
- * @category BSONType
- */
-export declare class Code extends BSONValue {
-    get _bsontype(): 'Code';
-    code: string;
-    scope: Document | null;
-    /**
-     * @param code - a string or function.
-     * @param scope - an optional scope for the function.
-     */
-    constructor(code: string | Function, scope?: Document | null);
-    toJSON(): {
-        code: string;
-        scope?: Document;
-    };
-    /* Excluded from this release type: toExtendedJSON */
-    /* Excluded from this release type: fromExtendedJSON */
-    inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-}
-
-/** @public */
-export declare interface CodeExtended {
-    $code: string;
-    $scope?: Document;
-}
-
-/**
- * A class representation of the BSON DBRef type.
- * @public
- * @category BSONType
- */
-export declare class DBRef extends BSONValue {
-    get _bsontype(): 'DBRef';
-    collection: string;
-    oid: ObjectId;
-    db?: string;
-    fields: Document;
-    /**
-     * @param collection - the collection name.
-     * @param oid - the reference ObjectId.
-     * @param db - optional db name, if omitted the reference is local to the current db.
-     */
-    constructor(collection: string, oid: ObjectId, db?: string, fields?: Document);
-    /* Excluded from this release type: namespace */
-    /* Excluded from this release type: namespace */
-    toJSON(): DBRefLike & Document;
-    /* Excluded from this release type: toExtendedJSON */
-    /* Excluded from this release type: fromExtendedJSON */
-    inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-}
-
-/** @public */
-export declare interface DBRefLike {
-    $ref: string;
-    $id: ObjectId;
-    $db?: string;
-}
-
-/**
- * A class representation of the BSON Decimal128 type.
- * @public
- * @category BSONType
- */
-export declare class Decimal128 extends BSONValue {
-    get _bsontype(): 'Decimal128';
-    readonly bytes: Uint8Array;
-    /**
-     * @param bytes - a buffer containing the raw Decimal128 bytes in little endian order,
-     *                or a string representation as returned by .toString()
-     */
-    constructor(bytes: Uint8Array | string);
-    /**
-     * Create a Decimal128 instance from a string representation
-     *
-     * @param representation - a numeric string representation.
-     */
-    static fromString(representation: string): Decimal128;
-    /**
-     * Create a Decimal128 instance from a string representation, allowing for rounding to 34
-     * significant digits
-     *
-     * @example Example of a number that will be rounded
-     * ```ts
-     * > let d = Decimal128.fromString('37.499999999999999196428571428571375')
-     * Uncaught:
-     * BSONError: "37.499999999999999196428571428571375" is not a valid Decimal128 string - inexact rounding
-     * at invalidErr (/home/wajames/js-bson/lib/bson.cjs:1402:11)
-     * at Decimal128.fromStringInternal (/home/wajames/js-bson/lib/bson.cjs:1633:25)
-     * at Decimal128.fromString (/home/wajames/js-bson/lib/bson.cjs:1424:27)
-     *
-     * > d = Decimal128.fromStringWithRounding('37.499999999999999196428571428571375')
-     * new Decimal128("37.49999999999999919642857142857138")
-     * ```
-     * @param representation - a numeric string representation.
-     */
-    static fromStringWithRounding(representation: string): Decimal128;
-    private static _fromString;
-    /** Create a string representation of the raw Decimal128 value */
-    toString(): string;
-    toJSON(): Decimal128Extended;
-    /* Excluded from this release type: toExtendedJSON */
-    /* Excluded from this release type: fromExtendedJSON */
-    inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-}
-
-/** @public */
-export declare interface Decimal128Extended {
-    $numberDecimal: string;
-}
-
-/**
- * Deserialize data as BSON.
- *
- * @param buffer - the buffer containing the serialized set of BSON documents.
- * @returns returns the deserialized Javascript Object.
- * @public
- */
-export declare function deserialize(buffer: Uint8Array, options?: DeserializeOptions): Document;
-
-/** @public */
-export declare interface DeserializeOptions {
-    /**
-     * when deserializing a Long return as a BigInt.
-     * @defaultValue `false`
-     */
-    useBigInt64?: boolean;
-    /**
-     * when deserializing a Long will fit it into a Number if it's smaller than 53 bits.
-     * @defaultValue `true`
-     */
-    promoteLongs?: boolean;
-    /**
-     * when deserializing a Binary will return it as a node.js Buffer instance.
-     * @defaultValue `false`
-     */
-    promoteBuffers?: boolean;
-    /**
-     * when deserializing will promote BSON values to their Node.js closest equivalent types.
-     * @defaultValue `true`
-     */
-    promoteValues?: boolean;
-    /**
-     * allow to specify if there what fields we wish to return as unserialized raw buffer.
-     * @defaultValue `null`
-     */
-    fieldsAsRaw?: Document;
-    /**
-     * return BSON regular expressions as BSONRegExp instances.
-     * @defaultValue `false`
-     */
-    bsonRegExp?: boolean;
-    /**
-     * allows the buffer to be larger than the parsed BSON object.
-     * @defaultValue `false`
-     */
-    allowObjectSmallerThanBufferSize?: boolean;
-    /**
-     * Offset into buffer to begin reading document from
-     * @defaultValue `0`
-     */
-    index?: number;
-    raw?: boolean;
-    /** Allows for opt-out utf-8 validation for all keys or
-     * specified keys. Must be all true or all false.
-     *
-     * @example
-     * ```js
-     * // disables validation on all keys
-     *  validation: { utf8: false }
-     *
-     * // enables validation only on specified keys a, b, and c
-     *  validation: { utf8: { a: true, b: true, c: true } }
-     *
-     *  // disables validation only on specified keys a, b
-     *  validation: { utf8: { a: false, b: false } }
-     * ```
-     */
-    validation?: {
-        utf8: boolean | Record<string, true> | Record<string, false>;
-    };
-}
-
-/**
- * Deserialize stream data as BSON documents.
- *
- * @param data - the buffer containing the serialized set of BSON documents.
- * @param startIndex - the start index in the data Buffer where the deserialization is to start.
- * @param numberOfDocuments - number of documents to deserialize.
- * @param documents - an array where to store the deserialized documents.
- * @param docStartIndex - the index in the documents array from where to start inserting documents.
- * @param options - additional options used for the deserialization.
- * @returns next index in the buffer after deserialization **x** numbers of documents.
- * @public
- */
-export declare function deserializeStream(data: Uint8Array | ArrayBuffer, startIndex: number, numberOfDocuments: number, documents: Document[], docStartIndex: number, options: DeserializeOptions): number;
-
-/** @public */
-export declare interface Document {
-    [key: string]: any;
-}
-
-/**
- * A class representation of the BSON Double type.
- * @public
- * @category BSONType
- */
-export declare class Double extends BSONValue {
-    get _bsontype(): 'Double';
-    value: number;
-    /**
-     * Create a Double type
-     *
-     * @param value - the number we want to represent as a double.
-     */
-    constructor(value: number);
-    /**
-     * Access the number value.
-     *
-     * @returns returns the wrapped double number.
-     */
-    valueOf(): number;
-    toJSON(): number;
-    toString(radix?: number): string;
-    /* Excluded from this release type: toExtendedJSON */
-    /* Excluded from this release type: fromExtendedJSON */
-    inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-}
-
-/** @public */
-export declare interface DoubleExtended {
-    $numberDouble: string;
-}
-
-/** @public */
-export declare const EJSON: {
-    parse: typeof parse;
-    stringify: typeof stringify;
-    serialize: typeof EJSONserialize;
-    deserialize: typeof EJSONdeserialize;
-};
-
-/**
- * Deserializes an Extended JSON object into a plain JavaScript object with native/BSON types
- *
- * @param ejson - The Extended JSON object to deserialize
- * @param options - Optional settings passed to the parse method
- */
-declare function EJSONdeserialize(ejson: Document, options?: EJSONOptions): any;
-
-/** @public */
-export declare type EJSONOptions = {
-    /**
-     * Output using the Extended JSON v1 spec
-     * @defaultValue `false`
-     */
-    legacy?: boolean;
-    /**
-     * Enable Extended JSON's `relaxed` mode, which attempts to return native JS types where possible, rather than BSON types
-     * @defaultValue `false` */
-    relaxed?: boolean;
-    /**
-     * Enable native bigint support
-     * @defaultValue `false`
-     */
-    useBigInt64?: boolean;
-};
-
-/**
- * Serializes an object to an Extended JSON string, and reparse it as a JavaScript object.
- *
- * @param value - The object to serialize
- * @param options - Optional settings passed to the `stringify` function
- */
-declare function EJSONserialize(value: any, options?: EJSONOptions): Document;
-
-declare type InspectFn = (x: unknown, options?: unknown) => string;
-
-/**
- * A class representation of a BSON Int32 type.
- * @public
- * @category BSONType
- */
-export declare class Int32 extends BSONValue {
-    get _bsontype(): 'Int32';
-    value: number;
-    /**
-     * Create an Int32 type
-     *
-     * @param value - the number we want to represent as an int32.
-     */
-    constructor(value: number | string);
-    /**
-     * Access the number value.
-     *
-     * @returns returns the wrapped int32 number.
-     */
-    valueOf(): number;
-    toString(radix?: number): string;
-    toJSON(): number;
-    /* Excluded from this release type: toExtendedJSON */
-    /* Excluded from this release type: fromExtendedJSON */
-    inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-}
-
-/** @public */
-export declare interface Int32Extended {
-    $numberInt: string;
-}
-
-/**
- * A class representing a 64-bit integer
- * @public
- * @category BSONType
- * @remarks
- * The internal representation of a long is the two given signed, 32-bit values.
- * We use 32-bit pieces because these are the size of integers on which
- * Javascript performs bit-operations.  For operations like addition and
- * multiplication, we split each number into 16 bit pieces, which can easily be
- * multiplied within Javascript's floating-point representation without overflow
- * or change in sign.
- * In the algorithms below, we frequently reduce the negative case to the
- * positive case by negating the input(s) and then post-processing the result.
- * Note that we must ALWAYS check specially whether those values are MIN_VALUE
- * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as
- * a positive number, it overflows back into a negative).  Not handling this
- * case would often result in infinite recursion.
- * Common constant values ZERO, ONE, NEG_ONE, etc. are found as static properties on this class.
- */
-export declare class Long extends BSONValue {
-    get _bsontype(): 'Long';
-    /** An indicator used to reliably determine if an object is a Long or not. */
-    get __isLong__(): boolean;
-    /**
-     * The high 32 bits as a signed value.
-     */
-    high: number;
-    /**
-     * The low 32 bits as a signed value.
-     */
-    low: number;
-    /**
-     * Whether unsigned or not.
-     */
-    unsigned: boolean;
-    /**
-     * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.
-     *  See the from* functions below for more convenient ways of constructing Longs.
-     *
-     * Acceptable signatures are:
-     * - Long(low, high, unsigned?)
-     * - Long(bigint, unsigned?)
-     * - Long(string, unsigned?)
-     *
-     * @param low - The low (signed) 32 bits of the long
-     * @param high - The high (signed) 32 bits of the long
-     * @param unsigned - Whether unsigned or not, defaults to signed
-     */
-    constructor(low?: number | bigint | string, high?: number | boolean, unsigned?: boolean);
-    static TWO_PWR_24: Long;
-    /** Maximum unsigned value. */
-    static MAX_UNSIGNED_VALUE: Long;
-    /** Signed zero */
-    static ZERO: Long;
-    /** Unsigned zero. */
-    static UZERO: Long;
-    /** Signed one. */
-    static ONE: Long;
-    /** Unsigned one. */
-    static UONE: Long;
-    /** Signed negative one. */
-    static NEG_ONE: Long;
-    /** Maximum signed value. */
-    static MAX_VALUE: Long;
-    /** Minimum signed value. */
-    static MIN_VALUE: Long;
-    /**
-     * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits.
-     * Each is assumed to use 32 bits.
-     * @param lowBits - The low 32 bits
-     * @param highBits - The high 32 bits
-     * @param unsigned - Whether unsigned or not, defaults to signed
-     * @returns The corresponding Long value
-     */
-    static fromBits(lowBits: number, highBits: number, unsigned?: boolean): Long;
-    /**
-     * Returns a Long representing the given 32 bit integer value.
-     * @param value - The 32 bit integer in question
-     * @param unsigned - Whether unsigned or not, defaults to signed
-     * @returns The corresponding Long value
-     */
-    static fromInt(value: number, unsigned?: boolean): Long;
-    /**
-     * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.
-     * @param value - The number in question
-     * @param unsigned - Whether unsigned or not, defaults to signed
-     * @returns The corresponding Long value
-     */
-    static fromNumber(value: number, unsigned?: boolean): Long;
-    /**
-     * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.
-     * @param value - The number in question
-     * @param unsigned - Whether unsigned or not, defaults to signed
-     * @returns The corresponding Long value
-     */
-    static fromBigInt(value: bigint, unsigned?: boolean): Long;
-    /**
-     * Returns a Long representation of the given string, written using the specified radix.
-     * @param str - The textual representation of the Long
-     * @param unsigned - Whether unsigned or not, defaults to signed
-     * @param radix - The radix in which the text is written (2-36), defaults to 10
-     * @returns The corresponding Long value
-     */
-    static fromString(str: string, unsigned?: boolean, radix?: number): Long;
-    /**
-     * Creates a Long from its byte representation.
-     * @param bytes - Byte representation
-     * @param unsigned - Whether unsigned or not, defaults to signed
-     * @param le - Whether little or big endian, defaults to big endian
-     * @returns The corresponding Long value
-     */
-    static fromBytes(bytes: number[], unsigned?: boolean, le?: boolean): Long;
-    /**
-     * Creates a Long from its little endian byte representation.
-     * @param bytes - Little endian byte representation
-     * @param unsigned - Whether unsigned or not, defaults to signed
-     * @returns The corresponding Long value
-     */
-    static fromBytesLE(bytes: number[], unsigned?: boolean): Long;
-    /**
-     * Creates a Long from its big endian byte representation.
-     * @param bytes - Big endian byte representation
-     * @param unsigned - Whether unsigned or not, defaults to signed
-     * @returns The corresponding Long value
-     */
-    static fromBytesBE(bytes: number[], unsigned?: boolean): Long;
-    /**
-     * Tests if the specified object is a Long.
-     */
-    static isLong(value: unknown): value is Long;
-    /**
-     * Converts the specified value to a Long.
-     * @param unsigned - Whether unsigned or not, defaults to signed
-     */
-    static fromValue(val: number | string | {
-        low: number;
-        high: number;
-        unsigned?: boolean;
-    }, unsigned?: boolean): Long;
-    /** Returns the sum of this and the specified Long. */
-    add(addend: string | number | Long | Timestamp): Long;
-    /**
-     * Returns the sum of this and the specified Long.
-     * @returns Sum
-     */
-    and(other: string | number | Long | Timestamp): Long;
-    /**
-     * Compares this Long's value with the specified's.
-     * @returns 0 if they are the same, 1 if the this is greater and -1 if the given one is greater
-     */
-    compare(other: string | number | Long | Timestamp): 0 | 1 | -1;
-    /** This is an alias of {@link Long.compare} */
-    comp(other: string | number | Long | Timestamp): 0 | 1 | -1;
-    /**
-     * Returns this Long divided by the specified. The result is signed if this Long is signed or unsigned if this Long is unsigned.
-     * @returns Quotient
-     */
-    divide(divisor: string | number | Long | Timestamp): Long;
-    /**This is an alias of {@link Long.divide} */
-    div(divisor: string | number | Long | Timestamp): Long;
-    /**
-     * Tests if this Long's value equals the specified's.
-     * @param other - Other value
-     */
-    equals(other: string | number | Long | Timestamp): boolean;
-    /** This is an alias of {@link Long.equals} */
-    eq(other: string | number | Long | Timestamp): boolean;
-    /** Gets the high 32 bits as a signed integer. */
-    getHighBits(): number;
-    /** Gets the high 32 bits as an unsigned integer. */
-    getHighBitsUnsigned(): number;
-    /** Gets the low 32 bits as a signed integer. */
-    getLowBits(): number;
-    /** Gets the low 32 bits as an unsigned integer. */
-    getLowBitsUnsigned(): number;
-    /** Gets the number of bits needed to represent the absolute value of this Long. */
-    getNumBitsAbs(): number;
-    /** Tests if this Long's value is greater than the specified's. */
-    greaterThan(other: string | number | Long | Timestamp): boolean;
-    /** This is an alias of {@link Long.greaterThan} */
-    gt(other: string | number | Long | Timestamp): boolean;
-    /** Tests if this Long's value is greater than or equal the specified's. */
-    greaterThanOrEqual(other: string | number | Long | Timestamp): boolean;
-    /** This is an alias of {@link Long.greaterThanOrEqual} */
-    gte(other: string | number | Long | Timestamp): boolean;
-    /** This is an alias of {@link Long.greaterThanOrEqual} */
-    ge(other: string | number | Long | Timestamp): boolean;
-    /** Tests if this Long's value is even. */
-    isEven(): boolean;
-    /** Tests if this Long's value is negative. */
-    isNegative(): boolean;
-    /** Tests if this Long's value is odd. */
-    isOdd(): boolean;
-    /** Tests if this Long's value is positive. */
-    isPositive(): boolean;
-    /** Tests if this Long's value equals zero. */
-    isZero(): boolean;
-    /** Tests if this Long's value is less than the specified's. */
-    lessThan(other: string | number | Long | Timestamp): boolean;
-    /** This is an alias of {@link Long#lessThan}. */
-    lt(other: string | number | Long | Timestamp): boolean;
-    /** Tests if this Long's value is less than or equal the specified's. */
-    lessThanOrEqual(other: string | number | Long | Timestamp): boolean;
-    /** This is an alias of {@link Long.lessThanOrEqual} */
-    lte(other: string | number | Long | Timestamp): boolean;
-    /** Returns this Long modulo the specified. */
-    modulo(divisor: string | number | Long | Timestamp): Long;
-    /** This is an alias of {@link Long.modulo} */
-    mod(divisor: string | number | Long | Timestamp): Long;
-    /** This is an alias of {@link Long.modulo} */
-    rem(divisor: string | number | Long | Timestamp): Long;
-    /**
-     * Returns the product of this and the specified Long.
-     * @param multiplier - Multiplier
-     * @returns Product
-     */
-    multiply(multiplier: string | number | Long | Timestamp): Long;
-    /** This is an alias of {@link Long.multiply} */
-    mul(multiplier: string | number | Long | Timestamp): Long;
-    /** Returns the Negation of this Long's value. */
-    negate(): Long;
-    /** This is an alias of {@link Long.negate} */
-    neg(): Long;
-    /** Returns the bitwise NOT of this Long. */
-    not(): Long;
-    /** Tests if this Long's value differs from the specified's. */
-    notEquals(other: string | number | Long | Timestamp): boolean;
-    /** This is an alias of {@link Long.notEquals} */
-    neq(other: string | number | Long | Timestamp): boolean;
-    /** This is an alias of {@link Long.notEquals} */
-    ne(other: string | number | Long | Timestamp): boolean;
-    /**
-     * Returns the bitwise OR of this Long and the specified.
-     */
-    or(other: number | string | Long): Long;
-    /**
-     * Returns this Long with bits shifted to the left by the given amount.
-     * @param numBits - Number of bits
-     * @returns Shifted Long
-     */
-    shiftLeft(numBits: number | Long): Long;
-    /** This is an alias of {@link Long.shiftLeft} */
-    shl(numBits: number | Long): Long;
-    /**
-     * Returns this Long with bits arithmetically shifted to the right by the given amount.
-     * @param numBits - Number of bits
-     * @returns Shifted Long
-     */
-    shiftRight(numBits: number | Long): Long;
-    /** This is an alias of {@link Long.shiftRight} */
-    shr(numBits: number | Long): Long;
-    /**
-     * Returns this Long with bits logically shifted to the right by the given amount.
-     * @param numBits - Number of bits
-     * @returns Shifted Long
-     */
-    shiftRightUnsigned(numBits: Long | number): Long;
-    /** This is an alias of {@link Long.shiftRightUnsigned} */
-    shr_u(numBits: number | Long): Long;
-    /** This is an alias of {@link Long.shiftRightUnsigned} */
-    shru(numBits: number | Long): Long;
-    /**
-     * Returns the difference of this and the specified Long.
-     * @param subtrahend - Subtrahend
-     * @returns Difference
-     */
-    subtract(subtrahend: string | number | Long | Timestamp): Long;
-    /** This is an alias of {@link Long.subtract} */
-    sub(subtrahend: string | number | Long | Timestamp): Long;
-    /** Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. */
-    toInt(): number;
-    /** Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). */
-    toNumber(): number;
-    /** Converts the Long to a BigInt (arbitrary precision). */
-    toBigInt(): bigint;
-    /**
-     * Converts this Long to its byte representation.
-     * @param le - Whether little or big endian, defaults to big endian
-     * @returns Byte representation
-     */
-    toBytes(le?: boolean): number[];
-    /**
-     * Converts this Long to its little endian byte representation.
-     * @returns Little endian byte representation
-     */
-    toBytesLE(): number[];
-    /**
-     * Converts this Long to its big endian byte representation.
-     * @returns Big endian byte representation
-     */
-    toBytesBE(): number[];
-    /**
-     * Converts this Long to signed.
-     */
-    toSigned(): Long;
-    /**
-     * Converts the Long to a string written in the specified radix.
-     * @param radix - Radix (2-36), defaults to 10
-     * @throws RangeError If `radix` is out of range
-     */
-    toString(radix?: number): string;
-    /** Converts this Long to unsigned. */
-    toUnsigned(): Long;
-    /** Returns the bitwise XOR of this Long and the given one. */
-    xor(other: Long | number | string): Long;
-    /** This is an alias of {@link Long.isZero} */
-    eqz(): boolean;
-    /** This is an alias of {@link Long.lessThanOrEqual} */
-    le(other: string | number | Long | Timestamp): boolean;
-    toExtendedJSON(options?: EJSONOptions): number | LongExtended;
-    static fromExtendedJSON(doc: {
-        $numberLong: string;
-    }, options?: EJSONOptions): number | Long | bigint;
-    inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-}
-
-/** @public */
-export declare interface LongExtended {
-    $numberLong: string;
-}
-
-/** @public */
-export declare type LongWithoutOverrides = new (low: unknown, high?: number | boolean, unsigned?: boolean) => {
-    [P in Exclude<keyof Long, TimestampOverrides>]: Long[P];
-};
-
-/** @public */
-export declare const LongWithoutOverridesClass: LongWithoutOverrides;
-
-/**
- * A class representation of the BSON MaxKey type.
- * @public
- * @category BSONType
- */
-export declare class MaxKey extends BSONValue {
-    get _bsontype(): 'MaxKey';
-    /* Excluded from this release type: toExtendedJSON */
-    /* Excluded from this release type: fromExtendedJSON */
-    inspect(): string;
-}
-
-/** @public */
-export declare interface MaxKeyExtended {
-    $maxKey: 1;
-}
-
-/**
- * A class representation of the BSON MinKey type.
- * @public
- * @category BSONType
- */
-export declare class MinKey extends BSONValue {
-    get _bsontype(): 'MinKey';
-    /* Excluded from this release type: toExtendedJSON */
-    /* Excluded from this release type: fromExtendedJSON */
-    inspect(): string;
-}
-
-/** @public */
-export declare interface MinKeyExtended {
-    $minKey: 1;
-}
-
-/**
- * A class representation of the BSON ObjectId type.
- * @public
- * @category BSONType
- */
-export declare class ObjectId extends BSONValue {
-    get _bsontype(): 'ObjectId';
-    /* Excluded from this release type: index */
-    static cacheHexString: boolean;
-    /* Excluded from this release type: buffer */
-    /* Excluded from this release type: __id */
-    /**
-     * Create ObjectId from a number.
-     *
-     * @param inputId - A number.
-     * @deprecated Instead, use `static createFromTime()` to set a numeric value for the new ObjectId.
-     */
-    constructor(inputId: number);
-    /**
-     * Create ObjectId from a 24 character hex string.
-     *
-     * @param inputId - A 24 character hex string.
-     */
-    constructor(inputId: string);
-    /**
-     * Create ObjectId from the BSON ObjectId type.
-     *
-     * @param inputId - The BSON ObjectId type.
-     */
-    constructor(inputId: ObjectId);
-    /**
-     * Create ObjectId from the object type that has the toHexString method.
-     *
-     * @param inputId - The ObjectIdLike type.
-     */
-    constructor(inputId: ObjectIdLike);
-    /**
-     * Create ObjectId from a 12 byte binary Buffer.
-     *
-     * @param inputId - A 12 byte binary Buffer.
-     */
-    constructor(inputId: Uint8Array);
-    /** To generate a new ObjectId, use ObjectId() with no argument. */
-    constructor();
-    /**
-     * Implementation overload.
-     *
-     * @param inputId - All input types that are used in the constructor implementation.
-     */
-    constructor(inputId?: string | number | ObjectId | ObjectIdLike | Uint8Array);
-    /**
-     * The ObjectId bytes
-     * @readonly
-     */
-    get id(): Uint8Array;
-    set id(value: Uint8Array);
-    /** Returns the ObjectId id as a 24 lowercase character hex string representation */
-    toHexString(): string;
-    /* Excluded from this release type: getInc */
-    /**
-     * Generate a 12 byte id buffer used in ObjectId's
-     *
-     * @param time - pass in a second based timestamp.
-     */
-    static generate(time?: number): Uint8Array;
-    /**
-     * Converts the id into a 24 character hex string for printing, unless encoding is provided.
-     * @param encoding - hex or base64
-     */
-    toString(encoding?: 'hex' | 'base64'): string;
-    /** Converts to its JSON the 24 character hex string representation. */
-    toJSON(): string;
-    /* Excluded from this release type: is */
-    /**
-     * Compares the equality of this ObjectId with `otherID`.
-     *
-     * @param otherId - ObjectId instance to compare against.
-     */
-    equals(otherId: string | ObjectId | ObjectIdLike | undefined | null): boolean;
-    /** Returns the generation date (accurate up to the second) that this ID was generated. */
-    getTimestamp(): Date;
-    /* Excluded from this release type: createPk */
-    /* Excluded from this release type: serializeInto */
-    /**
-     * Creates an ObjectId from a second based number, with the rest of the ObjectId zeroed out. Used for comparisons or sorting the ObjectId.
-     *
-     * @param time - an integer number representing a number of seconds.
-     */
-    static createFromTime(time: number): ObjectId;
-    /**
-     * Creates an ObjectId from a hex string representation of an ObjectId.
-     *
-     * @param hexString - create a ObjectId from a passed in 24 character hexstring.
-     */
-    static createFromHexString(hexString: string): ObjectId;
-    /** Creates an ObjectId instance from a base64 string */
-    static createFromBase64(base64: string): ObjectId;
-    /**
-     * Checks if a value can be used to create a valid bson ObjectId
-     * @param id - any JS value
-     */
-    static isValid(id: string | number | ObjectId | ObjectIdLike | Uint8Array): boolean;
-    /* Excluded from this release type: toExtendedJSON */
-    /* Excluded from this release type: fromExtendedJSON */
-    /**
-     * Converts to a string representation of this Id.
-     *
-     * @returns return the 24 character hex string representation.
-     */
-    inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-}
-
-/** @public */
-export declare interface ObjectIdExtended {
-    $oid: string;
-}
-
-/** @public */
-export declare interface ObjectIdLike {
-    id: string | Uint8Array;
-    __id?: string;
-    toHexString(): string;
-}
-
-/**
- * Parse an Extended JSON string, constructing the JavaScript value or object described by that
- * string.
- *
- * @example
- * ```js
- * const { EJSON } = require('bson');
- * const text = '{ "int32": { "$numberInt": "10" } }';
- *
- * // prints { int32: { [String: '10'] _bsontype: 'Int32', value: '10' } }
- * console.log(EJSON.parse(text, { relaxed: false }));
- *
- * // prints { int32: 10 }
- * console.log(EJSON.parse(text));
- * ```
- */
-declare function parse(text: string, options?: EJSONOptions): any;
-
-/**
- * Serialize a Javascript object.
- *
- * @param object - the Javascript object to serialize.
- * @returns Buffer object containing the serialized object.
- * @public
- */
-export declare function serialize(object: Document, options?: SerializeOptions): Uint8Array;
-
-/** @public */
-export declare interface SerializeOptions {
-    /**
-     * the serializer will check if keys are valid.
-     * @defaultValue `false`
-     */
-    checkKeys?: boolean;
-    /**
-     * serialize the javascript functions
-     * @defaultValue `false`
-     */
-    serializeFunctions?: boolean;
-    /**
-     * serialize will not emit undefined fields
-     * note that the driver sets this to `false`
-     * @defaultValue `true`
-     */
-    ignoreUndefined?: boolean;
-    /* Excluded from this release type: minInternalBufferSize */
-    /**
-     * the index in the buffer where we wish to start serializing into
-     * @defaultValue `0`
-     */
-    index?: number;
-}
-
-/**
- * Serialize a Javascript object using a predefined Buffer and index into the buffer,
- * useful when pre-allocating the space for serialization.
- *
- * @param object - the Javascript object to serialize.
- * @param finalBuffer - the Buffer you pre-allocated to store the serialized BSON object.
- * @returns the index pointing to the last written byte in the buffer.
- * @public
- */
-export declare function serializeWithBufferAndIndex(object: Document, finalBuffer: Uint8Array, options?: SerializeOptions): number;
-
-/**
- * Sets the size of the internal serialization buffer.
- *
- * @param size - The desired size for the internal serialization buffer in bytes
- * @public
- */
-export declare function setInternalBufferSize(size: number): void;
-
-/**
- * Converts a BSON document to an Extended JSON string, optionally replacing values if a replacer
- * function is specified or optionally including only the specified properties if a replacer array
- * is specified.
- *
- * @param value - The value to convert to extended JSON
- * @param replacer - A function that alters the behavior of the stringification process, or an array of String and Number objects that serve as a whitelist for selecting/filtering the properties of the value object to be included in the JSON string. If this value is null or not provided, all properties of the object are included in the resulting JSON string
- * @param space - A String or Number object that's used to insert white space into the output JSON string for readability purposes.
- * @param options - Optional settings
- *
- * @example
- * ```js
- * const { EJSON } = require('bson');
- * const Int32 = require('mongodb').Int32;
- * const doc = { int32: new Int32(10) };
- *
- * // prints '{"int32":{"$numberInt":"10"}}'
- * console.log(EJSON.stringify(doc, { relaxed: false }));
- *
- * // prints '{"int32":10}'
- * console.log(EJSON.stringify(doc));
- * ```
- */
-declare function stringify(value: any, replacer?: (number | string)[] | ((this: any, key: string, value: any) => any) | EJSONOptions, space?: string | number, options?: EJSONOptions): string;
-
-/**
- * @public
- * @category BSONType
- */
-export declare class Timestamp extends LongWithoutOverridesClass {
-    get _bsontype(): 'Timestamp';
-    static readonly MAX_VALUE: Long;
-    /**
-     * @param int - A 64-bit bigint representing the Timestamp.
-     */
-    constructor(int: bigint);
-    /**
-     * @param long - A 64-bit Long representing the Timestamp.
-     */
-    constructor(long: Long);
-    /**
-     * @param value - A pair of two values indicating timestamp and increment.
-     */
-    constructor(value: {
-        t: number;
-        i: number;
-    });
-    toJSON(): {
-        $timestamp: string;
-    };
-    /** Returns a Timestamp represented by the given (32-bit) integer value. */
-    static fromInt(value: number): Timestamp;
-    /** Returns a Timestamp representing the given number value, provided that it is a finite number. Otherwise, zero is returned. */
-    static fromNumber(value: number): Timestamp;
-    /**
-     * Returns a Timestamp for the given high and low bits. Each is assumed to use 32 bits.
-     *
-     * @param lowBits - the low 32-bits.
-     * @param highBits - the high 32-bits.
-     */
-    static fromBits(lowBits: number, highBits: number): Timestamp;
-    /**
-     * Returns a Timestamp from the given string, optionally using the given radix.
-     *
-     * @param str - the textual representation of the Timestamp.
-     * @param optRadix - the radix in which the text is written.
-     */
-    static fromString(str: string, optRadix: number): Timestamp;
-    /* Excluded from this release type: toExtendedJSON */
-    /* Excluded from this release type: fromExtendedJSON */
-    inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-}
-
-/** @public */
-export declare interface TimestampExtended {
-    $timestamp: {
-        t: number;
-        i: number;
-    };
-}
-
-/** @public */
-export declare type TimestampOverrides = '_bsontype' | 'toExtendedJSON' | 'fromExtendedJSON' | 'inspect';
-
-/**
- * A class representation of the BSON UUID type.
- * @public
- */
-export declare class UUID extends Binary {
-    /**
-     * Create a UUID type
-     *
-     * When the argument to the constructor is omitted a random v4 UUID will be generated.
-     *
-     * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer.
-     */
-    constructor(input?: string | Uint8Array | UUID);
-    /**
-     * The UUID bytes
-     * @readonly
-     */
-    get id(): Uint8Array;
-    set id(value: Uint8Array);
-    /**
-     * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated)
-     * @param includeDashes - should the string exclude dash-separators.
-     */
-    toHexString(includeDashes?: boolean): string;
-    /**
-     * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified.
-     */
-    toString(encoding?: 'hex' | 'base64'): string;
-    /**
-     * Converts the id into its JSON string representation.
-     * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
-     */
-    toJSON(): string;
-    /**
-     * Compares the equality of this UUID with `otherID`.
-     *
-     * @param otherId - UUID instance to compare against.
-     */
-    equals(otherId: string | Uint8Array | UUID): boolean;
-    /**
-     * Creates a Binary instance from the current UUID.
-     */
-    toBinary(): Binary;
-    /**
-     * Generates a populated buffer containing a v4 uuid
-     */
-    static generate(): Uint8Array;
-    /**
-     * Checks if a value is a valid bson UUID
-     * @param input - UUID, string or Buffer to validate.
-     */
-    static isValid(input: string | Uint8Array | UUID | Binary): boolean;
-    /**
-     * Creates an UUID from a hex string representation of an UUID.
-     * @param hexString - 32 or 36 character hex string (dashes excluded/included).
-     */
-    static createFromHexString(hexString: string): UUID;
-    /** Creates an UUID from a base64 string representation of an UUID. */
-    static createFromBase64(base64: string): UUID;
-    /* Excluded from this release type: bytesFromString */
-    /* Excluded from this release type: isValidUUIDString */
-    /**
-     * Converts to a string representation of this Id.
-     *
-     * @returns return the 36 character hex string representation.
-     *
-     */
-    inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-}
-
-/** @public */
-export declare type UUIDExtended = {
-    $uuid: string;
-};
-
-export { }
diff --git a/server/data-import/node_modules/bson/etc/prepare.js b/server/data-import/node_modules/bson/etc/prepare.js
deleted file mode 100644
index 91e6f3a976f076f9e97003662bb82ad70de1ccb9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/etc/prepare.js
+++ /dev/null
@@ -1,19 +0,0 @@
-#! /usr/bin/env node
-var cp = require('child_process');
-var fs = require('fs');
-
-var nodeMajorVersion = +process.version.match(/^v(\d+)\.\d+/)[1];
-
-if (fs.existsSync('src') && nodeMajorVersion >= 10) {
-  cp.spawnSync('npm', ['run', 'build'], { stdio: 'inherit', shell: true });
-} else {
-  if (!fs.existsSync('lib')) {
-    console.warn('BSON: No compiled javascript present, the library is not installed correctly.');
-    if (nodeMajorVersion < 10) {
-      console.warn(
-        'This library can only be compiled in nodejs version 10 or later, currently running: ' +
-          nodeMajorVersion
-      );
-    }
-  }
-}
diff --git a/server/data-import/node_modules/bson/lib/bson.bundle.js b/server/data-import/node_modules/bson/lib/bson.bundle.js
deleted file mode 100644
index d0e407f49b8eb5dd7077563d51fa792907a6a0bc..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/lib/bson.bundle.js
+++ /dev/null
@@ -1,4205 +0,0 @@
-var BSON = (function (exports) {
-'use strict';
-
-function isAnyArrayBuffer(value) {
-    return ['[object ArrayBuffer]', '[object SharedArrayBuffer]'].includes(Object.prototype.toString.call(value));
-}
-function isUint8Array(value) {
-    return Object.prototype.toString.call(value) === '[object Uint8Array]';
-}
-function isRegExp(d) {
-    return Object.prototype.toString.call(d) === '[object RegExp]';
-}
-function isMap(d) {
-    return Object.prototype.toString.call(d) === '[object Map]';
-}
-function isDate(d) {
-    return Object.prototype.toString.call(d) === '[object Date]';
-}
-function defaultInspect(x, _options) {
-    return JSON.stringify(x, (k, v) => {
-        if (typeof v === 'bigint') {
-            return { $numberLong: `${v}` };
-        }
-        else if (isMap(v)) {
-            return Object.fromEntries(v);
-        }
-        return v;
-    });
-}
-function getStylizeFunction(options) {
-    const stylizeExists = options != null &&
-        typeof options === 'object' &&
-        'stylize' in options &&
-        typeof options.stylize === 'function';
-    if (stylizeExists) {
-        return options.stylize;
-    }
-}
-
-const BSON_MAJOR_VERSION = 6;
-const BSON_INT32_MAX = 0x7fffffff;
-const BSON_INT32_MIN = -0x80000000;
-const BSON_INT64_MAX = Math.pow(2, 63) - 1;
-const BSON_INT64_MIN = -Math.pow(2, 63);
-const JS_INT_MAX = Math.pow(2, 53);
-const JS_INT_MIN = -Math.pow(2, 53);
-const BSON_DATA_NUMBER = 1;
-const BSON_DATA_STRING = 2;
-const BSON_DATA_OBJECT = 3;
-const BSON_DATA_ARRAY = 4;
-const BSON_DATA_BINARY = 5;
-const BSON_DATA_UNDEFINED = 6;
-const BSON_DATA_OID = 7;
-const BSON_DATA_BOOLEAN = 8;
-const BSON_DATA_DATE = 9;
-const BSON_DATA_NULL = 10;
-const BSON_DATA_REGEXP = 11;
-const BSON_DATA_DBPOINTER = 12;
-const BSON_DATA_CODE = 13;
-const BSON_DATA_SYMBOL = 14;
-const BSON_DATA_CODE_W_SCOPE = 15;
-const BSON_DATA_INT = 16;
-const BSON_DATA_TIMESTAMP = 17;
-const BSON_DATA_LONG = 18;
-const BSON_DATA_DECIMAL128 = 19;
-const BSON_DATA_MIN_KEY = 0xff;
-const BSON_DATA_MAX_KEY = 0x7f;
-const BSON_BINARY_SUBTYPE_DEFAULT = 0;
-const BSON_BINARY_SUBTYPE_UUID_NEW = 4;
-const BSONType = Object.freeze({
-    double: 1,
-    string: 2,
-    object: 3,
-    array: 4,
-    binData: 5,
-    undefined: 6,
-    objectId: 7,
-    bool: 8,
-    date: 9,
-    null: 10,
-    regex: 11,
-    dbPointer: 12,
-    javascript: 13,
-    symbol: 14,
-    javascriptWithScope: 15,
-    int: 16,
-    timestamp: 17,
-    long: 18,
-    decimal: 19,
-    minKey: -1,
-    maxKey: 127
-});
-
-class BSONError extends Error {
-    get bsonError() {
-        return true;
-    }
-    get name() {
-        return 'BSONError';
-    }
-    constructor(message, options) {
-        super(message, options);
-    }
-    static isBSONError(value) {
-        return (value != null &&
-            typeof value === 'object' &&
-            'bsonError' in value &&
-            value.bsonError === true &&
-            'name' in value &&
-            'message' in value &&
-            'stack' in value);
-    }
-}
-class BSONVersionError extends BSONError {
-    get name() {
-        return 'BSONVersionError';
-    }
-    constructor() {
-        super(`Unsupported BSON version, bson types must be from bson ${BSON_MAJOR_VERSION}.x.x`);
-    }
-}
-class BSONRuntimeError extends BSONError {
-    get name() {
-        return 'BSONRuntimeError';
-    }
-    constructor(message) {
-        super(message);
-    }
-}
-
-const FIRST_BIT = 0x80;
-const FIRST_TWO_BITS = 0xc0;
-const FIRST_THREE_BITS = 0xe0;
-const FIRST_FOUR_BITS = 0xf0;
-const FIRST_FIVE_BITS = 0xf8;
-const TWO_BIT_CHAR = 0xc0;
-const THREE_BIT_CHAR = 0xe0;
-const FOUR_BIT_CHAR = 0xf0;
-const CONTINUING_CHAR = 0x80;
-function validateUtf8(bytes, start, end) {
-    let continuation = 0;
-    for (let i = start; i < end; i += 1) {
-        const byte = bytes[i];
-        if (continuation) {
-            if ((byte & FIRST_TWO_BITS) !== CONTINUING_CHAR) {
-                return false;
-            }
-            continuation -= 1;
-        }
-        else if (byte & FIRST_BIT) {
-            if ((byte & FIRST_THREE_BITS) === TWO_BIT_CHAR) {
-                continuation = 1;
-            }
-            else if ((byte & FIRST_FOUR_BITS) === THREE_BIT_CHAR) {
-                continuation = 2;
-            }
-            else if ((byte & FIRST_FIVE_BITS) === FOUR_BIT_CHAR) {
-                continuation = 3;
-            }
-            else {
-                return false;
-            }
-        }
-    }
-    return !continuation;
-}
-
-function tryReadBasicLatin(uint8array, start, end) {
-    if (uint8array.length === 0) {
-        return '';
-    }
-    const stringByteLength = end - start;
-    if (stringByteLength === 0) {
-        return '';
-    }
-    if (stringByteLength > 20) {
-        return null;
-    }
-    if (stringByteLength === 1 && uint8array[start] < 128) {
-        return String.fromCharCode(uint8array[start]);
-    }
-    if (stringByteLength === 2 && uint8array[start] < 128 && uint8array[start + 1] < 128) {
-        return String.fromCharCode(uint8array[start]) + String.fromCharCode(uint8array[start + 1]);
-    }
-    if (stringByteLength === 3 &&
-        uint8array[start] < 128 &&
-        uint8array[start + 1] < 128 &&
-        uint8array[start + 2] < 128) {
-        return (String.fromCharCode(uint8array[start]) +
-            String.fromCharCode(uint8array[start + 1]) +
-            String.fromCharCode(uint8array[start + 2]));
-    }
-    const latinBytes = [];
-    for (let i = start; i < end; i++) {
-        const byte = uint8array[i];
-        if (byte > 127) {
-            return null;
-        }
-        latinBytes.push(byte);
-    }
-    return String.fromCharCode(...latinBytes);
-}
-function tryWriteBasicLatin(destination, source, offset) {
-    if (source.length === 0)
-        return 0;
-    if (source.length > 25)
-        return null;
-    if (destination.length - offset < source.length)
-        return null;
-    for (let charOffset = 0, destinationOffset = offset; charOffset < source.length; charOffset++, destinationOffset++) {
-        const char = source.charCodeAt(charOffset);
-        if (char > 127)
-            return null;
-        destination[destinationOffset] = char;
-    }
-    return source.length;
-}
-
-function nodejsMathRandomBytes(byteLength) {
-    return nodeJsByteUtils.fromNumberArray(Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256)));
-}
-const nodejsRandomBytes = (() => {
-    try {
-        return require('crypto').randomBytes;
-    }
-    catch {
-        return nodejsMathRandomBytes;
-    }
-})();
-const nodeJsByteUtils = {
-    toLocalBufferType(potentialBuffer) {
-        if (Buffer.isBuffer(potentialBuffer)) {
-            return potentialBuffer;
-        }
-        if (ArrayBuffer.isView(potentialBuffer)) {
-            return Buffer.from(potentialBuffer.buffer, potentialBuffer.byteOffset, potentialBuffer.byteLength);
-        }
-        const stringTag = potentialBuffer?.[Symbol.toStringTag] ?? Object.prototype.toString.call(potentialBuffer);
-        if (stringTag === 'ArrayBuffer' ||
-            stringTag === 'SharedArrayBuffer' ||
-            stringTag === '[object ArrayBuffer]' ||
-            stringTag === '[object SharedArrayBuffer]') {
-            return Buffer.from(potentialBuffer);
-        }
-        throw new BSONError(`Cannot create Buffer from ${String(potentialBuffer)}`);
-    },
-    allocate(size) {
-        return Buffer.alloc(size);
-    },
-    allocateUnsafe(size) {
-        return Buffer.allocUnsafe(size);
-    },
-    equals(a, b) {
-        return nodeJsByteUtils.toLocalBufferType(a).equals(b);
-    },
-    fromNumberArray(array) {
-        return Buffer.from(array);
-    },
-    fromBase64(base64) {
-        return Buffer.from(base64, 'base64');
-    },
-    toBase64(buffer) {
-        return nodeJsByteUtils.toLocalBufferType(buffer).toString('base64');
-    },
-    fromISO88591(codePoints) {
-        return Buffer.from(codePoints, 'binary');
-    },
-    toISO88591(buffer) {
-        return nodeJsByteUtils.toLocalBufferType(buffer).toString('binary');
-    },
-    fromHex(hex) {
-        return Buffer.from(hex, 'hex');
-    },
-    toHex(buffer) {
-        return nodeJsByteUtils.toLocalBufferType(buffer).toString('hex');
-    },
-    toUTF8(buffer, start, end, fatal) {
-        const basicLatin = end - start <= 20 ? tryReadBasicLatin(buffer, start, end) : null;
-        if (basicLatin != null) {
-            return basicLatin;
-        }
-        const string = nodeJsByteUtils.toLocalBufferType(buffer).toString('utf8', start, end);
-        if (fatal) {
-            for (let i = 0; i < string.length; i++) {
-                if (string.charCodeAt(i) === 0xfffd) {
-                    if (!validateUtf8(buffer, start, end)) {
-                        throw new BSONError('Invalid UTF-8 string in BSON document');
-                    }
-                    break;
-                }
-            }
-        }
-        return string;
-    },
-    utf8ByteLength(input) {
-        return Buffer.byteLength(input, 'utf8');
-    },
-    encodeUTF8Into(buffer, source, byteOffset) {
-        const latinBytesWritten = tryWriteBasicLatin(buffer, source, byteOffset);
-        if (latinBytesWritten != null) {
-            return latinBytesWritten;
-        }
-        return nodeJsByteUtils.toLocalBufferType(buffer).write(source, byteOffset, undefined, 'utf8');
-    },
-    randomBytes: nodejsRandomBytes
-};
-
-function isReactNative() {
-    const { navigator } = globalThis;
-    return typeof navigator === 'object' && navigator.product === 'ReactNative';
-}
-function webMathRandomBytes(byteLength) {
-    if (byteLength < 0) {
-        throw new RangeError(`The argument 'byteLength' is invalid. Received ${byteLength}`);
-    }
-    return webByteUtils.fromNumberArray(Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256)));
-}
-const webRandomBytes = (() => {
-    const { crypto } = globalThis;
-    if (crypto != null && typeof crypto.getRandomValues === 'function') {
-        return (byteLength) => {
-            return crypto.getRandomValues(webByteUtils.allocate(byteLength));
-        };
-    }
-    else {
-        if (isReactNative()) {
-            const { console } = globalThis;
-            console?.warn?.('BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.');
-        }
-        return webMathRandomBytes;
-    }
-})();
-const HEX_DIGIT = /(\d|[a-f])/i;
-const webByteUtils = {
-    toLocalBufferType(potentialUint8array) {
-        const stringTag = potentialUint8array?.[Symbol.toStringTag] ??
-            Object.prototype.toString.call(potentialUint8array);
-        if (stringTag === 'Uint8Array') {
-            return potentialUint8array;
-        }
-        if (ArrayBuffer.isView(potentialUint8array)) {
-            return new Uint8Array(potentialUint8array.buffer.slice(potentialUint8array.byteOffset, potentialUint8array.byteOffset + potentialUint8array.byteLength));
-        }
-        if (stringTag === 'ArrayBuffer' ||
-            stringTag === 'SharedArrayBuffer' ||
-            stringTag === '[object ArrayBuffer]' ||
-            stringTag === '[object SharedArrayBuffer]') {
-            return new Uint8Array(potentialUint8array);
-        }
-        throw new BSONError(`Cannot make a Uint8Array from ${String(potentialUint8array)}`);
-    },
-    allocate(size) {
-        if (typeof size !== 'number') {
-            throw new TypeError(`The "size" argument must be of type number. Received ${String(size)}`);
-        }
-        return new Uint8Array(size);
-    },
-    allocateUnsafe(size) {
-        return webByteUtils.allocate(size);
-    },
-    equals(a, b) {
-        if (a.byteLength !== b.byteLength) {
-            return false;
-        }
-        for (let i = 0; i < a.byteLength; i++) {
-            if (a[i] !== b[i]) {
-                return false;
-            }
-        }
-        return true;
-    },
-    fromNumberArray(array) {
-        return Uint8Array.from(array);
-    },
-    fromBase64(base64) {
-        return Uint8Array.from(atob(base64), c => c.charCodeAt(0));
-    },
-    toBase64(uint8array) {
-        return btoa(webByteUtils.toISO88591(uint8array));
-    },
-    fromISO88591(codePoints) {
-        return Uint8Array.from(codePoints, c => c.charCodeAt(0) & 0xff);
-    },
-    toISO88591(uint8array) {
-        return Array.from(Uint16Array.from(uint8array), b => String.fromCharCode(b)).join('');
-    },
-    fromHex(hex) {
-        const evenLengthHex = hex.length % 2 === 0 ? hex : hex.slice(0, hex.length - 1);
-        const buffer = [];
-        for (let i = 0; i < evenLengthHex.length; i += 2) {
-            const firstDigit = evenLengthHex[i];
-            const secondDigit = evenLengthHex[i + 1];
-            if (!HEX_DIGIT.test(firstDigit)) {
-                break;
-            }
-            if (!HEX_DIGIT.test(secondDigit)) {
-                break;
-            }
-            const hexDigit = Number.parseInt(`${firstDigit}${secondDigit}`, 16);
-            buffer.push(hexDigit);
-        }
-        return Uint8Array.from(buffer);
-    },
-    toHex(uint8array) {
-        return Array.from(uint8array, byte => byte.toString(16).padStart(2, '0')).join('');
-    },
-    toUTF8(uint8array, start, end, fatal) {
-        const basicLatin = end - start <= 20 ? tryReadBasicLatin(uint8array, start, end) : null;
-        if (basicLatin != null) {
-            return basicLatin;
-        }
-        if (fatal) {
-            try {
-                return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
-            }
-            catch (cause) {
-                throw new BSONError('Invalid UTF-8 string in BSON document', { cause });
-            }
-        }
-        return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
-    },
-    utf8ByteLength(input) {
-        return new TextEncoder().encode(input).byteLength;
-    },
-    encodeUTF8Into(uint8array, source, byteOffset) {
-        const bytes = new TextEncoder().encode(source);
-        uint8array.set(bytes, byteOffset);
-        return bytes.byteLength;
-    },
-    randomBytes: webRandomBytes
-};
-
-const hasGlobalBuffer = typeof Buffer === 'function' && Buffer.prototype?._isBuffer !== true;
-const ByteUtils = hasGlobalBuffer ? nodeJsByteUtils : webByteUtils;
-
-class BSONValue {
-    get [Symbol.for('@@mdb.bson.version')]() {
-        return BSON_MAJOR_VERSION;
-    }
-    [Symbol.for('nodejs.util.inspect.custom')](depth, options, inspect) {
-        return this.inspect(depth, options, inspect);
-    }
-}
-
-class Binary extends BSONValue {
-    get _bsontype() {
-        return 'Binary';
-    }
-    constructor(buffer, subType) {
-        super();
-        if (!(buffer == null) &&
-            typeof buffer === 'string' &&
-            !ArrayBuffer.isView(buffer) &&
-            !isAnyArrayBuffer(buffer) &&
-            !Array.isArray(buffer)) {
-            throw new BSONError('Binary can only be constructed from Uint8Array or number[]');
-        }
-        this.sub_type = subType ?? Binary.BSON_BINARY_SUBTYPE_DEFAULT;
-        if (buffer == null) {
-            this.buffer = ByteUtils.allocate(Binary.BUFFER_SIZE);
-            this.position = 0;
-        }
-        else {
-            this.buffer = Array.isArray(buffer)
-                ? ByteUtils.fromNumberArray(buffer)
-                : ByteUtils.toLocalBufferType(buffer);
-            this.position = this.buffer.byteLength;
-        }
-    }
-    put(byteValue) {
-        if (typeof byteValue === 'string' && byteValue.length !== 1) {
-            throw new BSONError('only accepts single character String');
-        }
-        else if (typeof byteValue !== 'number' && byteValue.length !== 1)
-            throw new BSONError('only accepts single character Uint8Array or Array');
-        let decodedByte;
-        if (typeof byteValue === 'string') {
-            decodedByte = byteValue.charCodeAt(0);
-        }
-        else if (typeof byteValue === 'number') {
-            decodedByte = byteValue;
-        }
-        else {
-            decodedByte = byteValue[0];
-        }
-        if (decodedByte < 0 || decodedByte > 255) {
-            throw new BSONError('only accepts number in a valid unsigned byte range 0-255');
-        }
-        if (this.buffer.byteLength > this.position) {
-            this.buffer[this.position++] = decodedByte;
-        }
-        else {
-            const newSpace = ByteUtils.allocate(Binary.BUFFER_SIZE + this.buffer.length);
-            newSpace.set(this.buffer, 0);
-            this.buffer = newSpace;
-            this.buffer[this.position++] = decodedByte;
-        }
-    }
-    write(sequence, offset) {
-        offset = typeof offset === 'number' ? offset : this.position;
-        if (this.buffer.byteLength < offset + sequence.length) {
-            const newSpace = ByteUtils.allocate(this.buffer.byteLength + sequence.length);
-            newSpace.set(this.buffer, 0);
-            this.buffer = newSpace;
-        }
-        if (ArrayBuffer.isView(sequence)) {
-            this.buffer.set(ByteUtils.toLocalBufferType(sequence), offset);
-            this.position =
-                offset + sequence.byteLength > this.position ? offset + sequence.length : this.position;
-        }
-        else if (typeof sequence === 'string') {
-            throw new BSONError('input cannot be string');
-        }
-    }
-    read(position, length) {
-        length = length && length > 0 ? length : this.position;
-        return this.buffer.slice(position, position + length);
-    }
-    value() {
-        return this.buffer.length === this.position
-            ? this.buffer
-            : this.buffer.subarray(0, this.position);
-    }
-    length() {
-        return this.position;
-    }
-    toJSON() {
-        return ByteUtils.toBase64(this.buffer);
-    }
-    toString(encoding) {
-        if (encoding === 'hex')
-            return ByteUtils.toHex(this.buffer);
-        if (encoding === 'base64')
-            return ByteUtils.toBase64(this.buffer);
-        if (encoding === 'utf8' || encoding === 'utf-8')
-            return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
-        return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
-    }
-    toExtendedJSON(options) {
-        options = options || {};
-        const base64String = ByteUtils.toBase64(this.buffer);
-        const subType = Number(this.sub_type).toString(16);
-        if (options.legacy) {
-            return {
-                $binary: base64String,
-                $type: subType.length === 1 ? '0' + subType : subType
-            };
-        }
-        return {
-            $binary: {
-                base64: base64String,
-                subType: subType.length === 1 ? '0' + subType : subType
-            }
-        };
-    }
-    toUUID() {
-        if (this.sub_type === Binary.SUBTYPE_UUID) {
-            return new UUID(this.buffer.slice(0, this.position));
-        }
-        throw new BSONError(`Binary sub_type "${this.sub_type}" is not supported for converting to UUID. Only "${Binary.SUBTYPE_UUID}" is currently supported.`);
-    }
-    static createFromHexString(hex, subType) {
-        return new Binary(ByteUtils.fromHex(hex), subType);
-    }
-    static createFromBase64(base64, subType) {
-        return new Binary(ByteUtils.fromBase64(base64), subType);
-    }
-    static fromExtendedJSON(doc, options) {
-        options = options || {};
-        let data;
-        let type;
-        if ('$binary' in doc) {
-            if (options.legacy && typeof doc.$binary === 'string' && '$type' in doc) {
-                type = doc.$type ? parseInt(doc.$type, 16) : 0;
-                data = ByteUtils.fromBase64(doc.$binary);
-            }
-            else {
-                if (typeof doc.$binary !== 'string') {
-                    type = doc.$binary.subType ? parseInt(doc.$binary.subType, 16) : 0;
-                    data = ByteUtils.fromBase64(doc.$binary.base64);
-                }
-            }
-        }
-        else if ('$uuid' in doc) {
-            type = 4;
-            data = UUID.bytesFromString(doc.$uuid);
-        }
-        if (!data) {
-            throw new BSONError(`Unexpected Binary Extended JSON format ${JSON.stringify(doc)}`);
-        }
-        return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const base64 = ByteUtils.toBase64(this.buffer.subarray(0, this.position));
-        const base64Arg = inspect(base64, options);
-        const subTypeArg = inspect(this.sub_type, options);
-        return `Binary.createFromBase64(${base64Arg}, ${subTypeArg})`;
-    }
-}
-Binary.BSON_BINARY_SUBTYPE_DEFAULT = 0;
-Binary.BUFFER_SIZE = 256;
-Binary.SUBTYPE_DEFAULT = 0;
-Binary.SUBTYPE_FUNCTION = 1;
-Binary.SUBTYPE_BYTE_ARRAY = 2;
-Binary.SUBTYPE_UUID_OLD = 3;
-Binary.SUBTYPE_UUID = 4;
-Binary.SUBTYPE_MD5 = 5;
-Binary.SUBTYPE_ENCRYPTED = 6;
-Binary.SUBTYPE_COLUMN = 7;
-Binary.SUBTYPE_USER_DEFINED = 128;
-const UUID_BYTE_LENGTH = 16;
-const UUID_WITHOUT_DASHES = /^[0-9A-F]{32}$/i;
-const UUID_WITH_DASHES = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
-class UUID extends Binary {
-    constructor(input) {
-        let bytes;
-        if (input == null) {
-            bytes = UUID.generate();
-        }
-        else if (input instanceof UUID) {
-            bytes = ByteUtils.toLocalBufferType(new Uint8Array(input.buffer));
-        }
-        else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) {
-            bytes = ByteUtils.toLocalBufferType(input);
-        }
-        else if (typeof input === 'string') {
-            bytes = UUID.bytesFromString(input);
-        }
-        else {
-            throw new BSONError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).');
-        }
-        super(bytes, BSON_BINARY_SUBTYPE_UUID_NEW);
-    }
-    get id() {
-        return this.buffer;
-    }
-    set id(value) {
-        this.buffer = value;
-    }
-    toHexString(includeDashes = true) {
-        if (includeDashes) {
-            return [
-                ByteUtils.toHex(this.buffer.subarray(0, 4)),
-                ByteUtils.toHex(this.buffer.subarray(4, 6)),
-                ByteUtils.toHex(this.buffer.subarray(6, 8)),
-                ByteUtils.toHex(this.buffer.subarray(8, 10)),
-                ByteUtils.toHex(this.buffer.subarray(10, 16))
-            ].join('-');
-        }
-        return ByteUtils.toHex(this.buffer);
-    }
-    toString(encoding) {
-        if (encoding === 'hex')
-            return ByteUtils.toHex(this.id);
-        if (encoding === 'base64')
-            return ByteUtils.toBase64(this.id);
-        return this.toHexString();
-    }
-    toJSON() {
-        return this.toHexString();
-    }
-    equals(otherId) {
-        if (!otherId) {
-            return false;
-        }
-        if (otherId instanceof UUID) {
-            return ByteUtils.equals(otherId.id, this.id);
-        }
-        try {
-            return ByteUtils.equals(new UUID(otherId).id, this.id);
-        }
-        catch {
-            return false;
-        }
-    }
-    toBinary() {
-        return new Binary(this.id, Binary.SUBTYPE_UUID);
-    }
-    static generate() {
-        const bytes = ByteUtils.randomBytes(UUID_BYTE_LENGTH);
-        bytes[6] = (bytes[6] & 0x0f) | 0x40;
-        bytes[8] = (bytes[8] & 0x3f) | 0x80;
-        return bytes;
-    }
-    static isValid(input) {
-        if (!input) {
-            return false;
-        }
-        if (typeof input === 'string') {
-            return UUID.isValidUUIDString(input);
-        }
-        if (isUint8Array(input)) {
-            return input.byteLength === UUID_BYTE_LENGTH;
-        }
-        return (input._bsontype === 'Binary' &&
-            input.sub_type === this.SUBTYPE_UUID &&
-            input.buffer.byteLength === 16);
-    }
-    static createFromHexString(hexString) {
-        const buffer = UUID.bytesFromString(hexString);
-        return new UUID(buffer);
-    }
-    static createFromBase64(base64) {
-        return new UUID(ByteUtils.fromBase64(base64));
-    }
-    static bytesFromString(representation) {
-        if (!UUID.isValidUUIDString(representation)) {
-            throw new BSONError('UUID string representation must be 32 hex digits or canonical hyphenated representation');
-        }
-        return ByteUtils.fromHex(representation.replace(/-/g, ''));
-    }
-    static isValidUUIDString(representation) {
-        return UUID_WITHOUT_DASHES.test(representation) || UUID_WITH_DASHES.test(representation);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new UUID(${inspect(this.toHexString(), options)})`;
-    }
-}
-
-class Code extends BSONValue {
-    get _bsontype() {
-        return 'Code';
-    }
-    constructor(code, scope) {
-        super();
-        this.code = code.toString();
-        this.scope = scope ?? null;
-    }
-    toJSON() {
-        if (this.scope != null) {
-            return { code: this.code, scope: this.scope };
-        }
-        return { code: this.code };
-    }
-    toExtendedJSON() {
-        if (this.scope) {
-            return { $code: this.code, $scope: this.scope };
-        }
-        return { $code: this.code };
-    }
-    static fromExtendedJSON(doc) {
-        return new Code(doc.$code, doc.$scope);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        let parametersString = inspect(this.code, options);
-        const multiLineFn = parametersString.includes('\n');
-        if (this.scope != null) {
-            parametersString += `,${multiLineFn ? '\n' : ' '}${inspect(this.scope, options)}`;
-        }
-        const endingNewline = multiLineFn && this.scope === null;
-        return `new Code(${multiLineFn ? '\n' : ''}${parametersString}${endingNewline ? '\n' : ''})`;
-    }
-}
-
-function isDBRefLike(value) {
-    return (value != null &&
-        typeof value === 'object' &&
-        '$id' in value &&
-        value.$id != null &&
-        '$ref' in value &&
-        typeof value.$ref === 'string' &&
-        (!('$db' in value) || ('$db' in value && typeof value.$db === 'string')));
-}
-class DBRef extends BSONValue {
-    get _bsontype() {
-        return 'DBRef';
-    }
-    constructor(collection, oid, db, fields) {
-        super();
-        const parts = collection.split('.');
-        if (parts.length === 2) {
-            db = parts.shift();
-            collection = parts.shift();
-        }
-        this.collection = collection;
-        this.oid = oid;
-        this.db = db;
-        this.fields = fields || {};
-    }
-    get namespace() {
-        return this.collection;
-    }
-    set namespace(value) {
-        this.collection = value;
-    }
-    toJSON() {
-        const o = Object.assign({
-            $ref: this.collection,
-            $id: this.oid
-        }, this.fields);
-        if (this.db != null)
-            o.$db = this.db;
-        return o;
-    }
-    toExtendedJSON(options) {
-        options = options || {};
-        let o = {
-            $ref: this.collection,
-            $id: this.oid
-        };
-        if (options.legacy) {
-            return o;
-        }
-        if (this.db)
-            o.$db = this.db;
-        o = Object.assign(o, this.fields);
-        return o;
-    }
-    static fromExtendedJSON(doc) {
-        const copy = Object.assign({}, doc);
-        delete copy.$ref;
-        delete copy.$id;
-        delete copy.$db;
-        return new DBRef(doc.$ref, doc.$id, doc.$db, copy);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const args = [
-            inspect(this.namespace, options),
-            inspect(this.oid, options),
-            ...(this.db ? [inspect(this.db, options)] : []),
-            ...(Object.keys(this.fields).length > 0 ? [inspect(this.fields, options)] : [])
-        ];
-        args[1] = inspect === defaultInspect ? `new ObjectId(${args[1]})` : args[1];
-        return `new DBRef(${args.join(', ')})`;
-    }
-}
-
-let wasm = undefined;
-try {
-    wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])), {}).exports;
-}
-catch {
-}
-const TWO_PWR_16_DBL = 1 << 16;
-const TWO_PWR_24_DBL = 1 << 24;
-const TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;
-const TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;
-const TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;
-const INT_CACHE = {};
-const UINT_CACHE = {};
-const MAX_INT64_STRING_LENGTH = 20;
-const DECIMAL_REG_EX = /^(\+?0|(\+|-)?[1-9][0-9]*)$/;
-class Long extends BSONValue {
-    get _bsontype() {
-        return 'Long';
-    }
-    get __isLong__() {
-        return true;
-    }
-    constructor(low = 0, high, unsigned) {
-        super();
-        if (typeof low === 'bigint') {
-            Object.assign(this, Long.fromBigInt(low, !!high));
-        }
-        else if (typeof low === 'string') {
-            Object.assign(this, Long.fromString(low, !!high));
-        }
-        else {
-            this.low = low | 0;
-            this.high = high | 0;
-            this.unsigned = !!unsigned;
-        }
-    }
-    static fromBits(lowBits, highBits, unsigned) {
-        return new Long(lowBits, highBits, unsigned);
-    }
-    static fromInt(value, unsigned) {
-        let obj, cachedObj, cache;
-        if (unsigned) {
-            value >>>= 0;
-            if ((cache = 0 <= value && value < 256)) {
-                cachedObj = UINT_CACHE[value];
-                if (cachedObj)
-                    return cachedObj;
-            }
-            obj = Long.fromBits(value, (value | 0) < 0 ? -1 : 0, true);
-            if (cache)
-                UINT_CACHE[value] = obj;
-            return obj;
-        }
-        else {
-            value |= 0;
-            if ((cache = -128 <= value && value < 128)) {
-                cachedObj = INT_CACHE[value];
-                if (cachedObj)
-                    return cachedObj;
-            }
-            obj = Long.fromBits(value, value < 0 ? -1 : 0, false);
-            if (cache)
-                INT_CACHE[value] = obj;
-            return obj;
-        }
-    }
-    static fromNumber(value, unsigned) {
-        if (isNaN(value))
-            return unsigned ? Long.UZERO : Long.ZERO;
-        if (unsigned) {
-            if (value < 0)
-                return Long.UZERO;
-            if (value >= TWO_PWR_64_DBL)
-                return Long.MAX_UNSIGNED_VALUE;
-        }
-        else {
-            if (value <= -TWO_PWR_63_DBL)
-                return Long.MIN_VALUE;
-            if (value + 1 >= TWO_PWR_63_DBL)
-                return Long.MAX_VALUE;
-        }
-        if (value < 0)
-            return Long.fromNumber(-value, unsigned).neg();
-        return Long.fromBits(value % TWO_PWR_32_DBL | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);
-    }
-    static fromBigInt(value, unsigned) {
-        return Long.fromString(value.toString(), unsigned);
-    }
-    static fromString(str, unsigned, radix) {
-        if (str.length === 0)
-            throw new BSONError('empty string');
-        if (str === 'NaN' || str === 'Infinity' || str === '+Infinity' || str === '-Infinity')
-            return Long.ZERO;
-        if (typeof unsigned === 'number') {
-            (radix = unsigned), (unsigned = false);
-        }
-        else {
-            unsigned = !!unsigned;
-        }
-        radix = radix || 10;
-        if (radix < 2 || 36 < radix)
-            throw new BSONError('radix');
-        let p;
-        if ((p = str.indexOf('-')) > 0)
-            throw new BSONError('interior hyphen');
-        else if (p === 0) {
-            return Long.fromString(str.substring(1), unsigned, radix).neg();
-        }
-        const radixToPower = Long.fromNumber(Math.pow(radix, 8));
-        let result = Long.ZERO;
-        for (let i = 0; i < str.length; i += 8) {
-            const size = Math.min(8, str.length - i), value = parseInt(str.substring(i, i + size), radix);
-            if (size < 8) {
-                const power = Long.fromNumber(Math.pow(radix, size));
-                result = result.mul(power).add(Long.fromNumber(value));
-            }
-            else {
-                result = result.mul(radixToPower);
-                result = result.add(Long.fromNumber(value));
-            }
-        }
-        result.unsigned = unsigned;
-        return result;
-    }
-    static fromBytes(bytes, unsigned, le) {
-        return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);
-    }
-    static fromBytesLE(bytes, unsigned) {
-        return new Long(bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24), bytes[4] | (bytes[5] << 8) | (bytes[6] << 16) | (bytes[7] << 24), unsigned);
-    }
-    static fromBytesBE(bytes, unsigned) {
-        return new Long((bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7], (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3], unsigned);
-    }
-    static isLong(value) {
-        return (value != null &&
-            typeof value === 'object' &&
-            '__isLong__' in value &&
-            value.__isLong__ === true);
-    }
-    static fromValue(val, unsigned) {
-        if (typeof val === 'number')
-            return Long.fromNumber(val, unsigned);
-        if (typeof val === 'string')
-            return Long.fromString(val, unsigned);
-        return Long.fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);
-    }
-    add(addend) {
-        if (!Long.isLong(addend))
-            addend = Long.fromValue(addend);
-        const a48 = this.high >>> 16;
-        const a32 = this.high & 0xffff;
-        const a16 = this.low >>> 16;
-        const a00 = this.low & 0xffff;
-        const b48 = addend.high >>> 16;
-        const b32 = addend.high & 0xffff;
-        const b16 = addend.low >>> 16;
-        const b00 = addend.low & 0xffff;
-        let c48 = 0, c32 = 0, c16 = 0, c00 = 0;
-        c00 += a00 + b00;
-        c16 += c00 >>> 16;
-        c00 &= 0xffff;
-        c16 += a16 + b16;
-        c32 += c16 >>> 16;
-        c16 &= 0xffff;
-        c32 += a32 + b32;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c48 += a48 + b48;
-        c48 &= 0xffff;
-        return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
-    }
-    and(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        return Long.fromBits(this.low & other.low, this.high & other.high, this.unsigned);
-    }
-    compare(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        if (this.eq(other))
-            return 0;
-        const thisNeg = this.isNegative(), otherNeg = other.isNegative();
-        if (thisNeg && !otherNeg)
-            return -1;
-        if (!thisNeg && otherNeg)
-            return 1;
-        if (!this.unsigned)
-            return this.sub(other).isNegative() ? -1 : 1;
-        return other.high >>> 0 > this.high >>> 0 ||
-            (other.high === this.high && other.low >>> 0 > this.low >>> 0)
-            ? -1
-            : 1;
-    }
-    comp(other) {
-        return this.compare(other);
-    }
-    divide(divisor) {
-        if (!Long.isLong(divisor))
-            divisor = Long.fromValue(divisor);
-        if (divisor.isZero())
-            throw new BSONError('division by zero');
-        if (wasm) {
-            if (!this.unsigned &&
-                this.high === -0x80000000 &&
-                divisor.low === -1 &&
-                divisor.high === -1) {
-                return this;
-            }
-            const low = (this.unsigned ? wasm.div_u : wasm.div_s)(this.low, this.high, divisor.low, divisor.high);
-            return Long.fromBits(low, wasm.get_high(), this.unsigned);
-        }
-        if (this.isZero())
-            return this.unsigned ? Long.UZERO : Long.ZERO;
-        let approx, rem, res;
-        if (!this.unsigned) {
-            if (this.eq(Long.MIN_VALUE)) {
-                if (divisor.eq(Long.ONE) || divisor.eq(Long.NEG_ONE))
-                    return Long.MIN_VALUE;
-                else if (divisor.eq(Long.MIN_VALUE))
-                    return Long.ONE;
-                else {
-                    const halfThis = this.shr(1);
-                    approx = halfThis.div(divisor).shl(1);
-                    if (approx.eq(Long.ZERO)) {
-                        return divisor.isNegative() ? Long.ONE : Long.NEG_ONE;
-                    }
-                    else {
-                        rem = this.sub(divisor.mul(approx));
-                        res = approx.add(rem.div(divisor));
-                        return res;
-                    }
-                }
-            }
-            else if (divisor.eq(Long.MIN_VALUE))
-                return this.unsigned ? Long.UZERO : Long.ZERO;
-            if (this.isNegative()) {
-                if (divisor.isNegative())
-                    return this.neg().div(divisor.neg());
-                return this.neg().div(divisor).neg();
-            }
-            else if (divisor.isNegative())
-                return this.div(divisor.neg()).neg();
-            res = Long.ZERO;
-        }
-        else {
-            if (!divisor.unsigned)
-                divisor = divisor.toUnsigned();
-            if (divisor.gt(this))
-                return Long.UZERO;
-            if (divisor.gt(this.shru(1)))
-                return Long.UONE;
-            res = Long.UZERO;
-        }
-        rem = this;
-        while (rem.gte(divisor)) {
-            approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));
-            const log2 = Math.ceil(Math.log(approx) / Math.LN2);
-            const delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48);
-            let approxRes = Long.fromNumber(approx);
-            let approxRem = approxRes.mul(divisor);
-            while (approxRem.isNegative() || approxRem.gt(rem)) {
-                approx -= delta;
-                approxRes = Long.fromNumber(approx, this.unsigned);
-                approxRem = approxRes.mul(divisor);
-            }
-            if (approxRes.isZero())
-                approxRes = Long.ONE;
-            res = res.add(approxRes);
-            rem = rem.sub(approxRem);
-        }
-        return res;
-    }
-    div(divisor) {
-        return this.divide(divisor);
-    }
-    equals(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1)
-            return false;
-        return this.high === other.high && this.low === other.low;
-    }
-    eq(other) {
-        return this.equals(other);
-    }
-    getHighBits() {
-        return this.high;
-    }
-    getHighBitsUnsigned() {
-        return this.high >>> 0;
-    }
-    getLowBits() {
-        return this.low;
-    }
-    getLowBitsUnsigned() {
-        return this.low >>> 0;
-    }
-    getNumBitsAbs() {
-        if (this.isNegative()) {
-            return this.eq(Long.MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();
-        }
-        const val = this.high !== 0 ? this.high : this.low;
-        let bit;
-        for (bit = 31; bit > 0; bit--)
-            if ((val & (1 << bit)) !== 0)
-                break;
-        return this.high !== 0 ? bit + 33 : bit + 1;
-    }
-    greaterThan(other) {
-        return this.comp(other) > 0;
-    }
-    gt(other) {
-        return this.greaterThan(other);
-    }
-    greaterThanOrEqual(other) {
-        return this.comp(other) >= 0;
-    }
-    gte(other) {
-        return this.greaterThanOrEqual(other);
-    }
-    ge(other) {
-        return this.greaterThanOrEqual(other);
-    }
-    isEven() {
-        return (this.low & 1) === 0;
-    }
-    isNegative() {
-        return !this.unsigned && this.high < 0;
-    }
-    isOdd() {
-        return (this.low & 1) === 1;
-    }
-    isPositive() {
-        return this.unsigned || this.high >= 0;
-    }
-    isZero() {
-        return this.high === 0 && this.low === 0;
-    }
-    lessThan(other) {
-        return this.comp(other) < 0;
-    }
-    lt(other) {
-        return this.lessThan(other);
-    }
-    lessThanOrEqual(other) {
-        return this.comp(other) <= 0;
-    }
-    lte(other) {
-        return this.lessThanOrEqual(other);
-    }
-    modulo(divisor) {
-        if (!Long.isLong(divisor))
-            divisor = Long.fromValue(divisor);
-        if (wasm) {
-            const low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(this.low, this.high, divisor.low, divisor.high);
-            return Long.fromBits(low, wasm.get_high(), this.unsigned);
-        }
-        return this.sub(this.div(divisor).mul(divisor));
-    }
-    mod(divisor) {
-        return this.modulo(divisor);
-    }
-    rem(divisor) {
-        return this.modulo(divisor);
-    }
-    multiply(multiplier) {
-        if (this.isZero())
-            return Long.ZERO;
-        if (!Long.isLong(multiplier))
-            multiplier = Long.fromValue(multiplier);
-        if (wasm) {
-            const low = wasm.mul(this.low, this.high, multiplier.low, multiplier.high);
-            return Long.fromBits(low, wasm.get_high(), this.unsigned);
-        }
-        if (multiplier.isZero())
-            return Long.ZERO;
-        if (this.eq(Long.MIN_VALUE))
-            return multiplier.isOdd() ? Long.MIN_VALUE : Long.ZERO;
-        if (multiplier.eq(Long.MIN_VALUE))
-            return this.isOdd() ? Long.MIN_VALUE : Long.ZERO;
-        if (this.isNegative()) {
-            if (multiplier.isNegative())
-                return this.neg().mul(multiplier.neg());
-            else
-                return this.neg().mul(multiplier).neg();
-        }
-        else if (multiplier.isNegative())
-            return this.mul(multiplier.neg()).neg();
-        if (this.lt(Long.TWO_PWR_24) && multiplier.lt(Long.TWO_PWR_24))
-            return Long.fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);
-        const a48 = this.high >>> 16;
-        const a32 = this.high & 0xffff;
-        const a16 = this.low >>> 16;
-        const a00 = this.low & 0xffff;
-        const b48 = multiplier.high >>> 16;
-        const b32 = multiplier.high & 0xffff;
-        const b16 = multiplier.low >>> 16;
-        const b00 = multiplier.low & 0xffff;
-        let c48 = 0, c32 = 0, c16 = 0, c00 = 0;
-        c00 += a00 * b00;
-        c16 += c00 >>> 16;
-        c00 &= 0xffff;
-        c16 += a16 * b00;
-        c32 += c16 >>> 16;
-        c16 &= 0xffff;
-        c16 += a00 * b16;
-        c32 += c16 >>> 16;
-        c16 &= 0xffff;
-        c32 += a32 * b00;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c32 += a16 * b16;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c32 += a00 * b32;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
-        c48 &= 0xffff;
-        return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
-    }
-    mul(multiplier) {
-        return this.multiply(multiplier);
-    }
-    negate() {
-        if (!this.unsigned && this.eq(Long.MIN_VALUE))
-            return Long.MIN_VALUE;
-        return this.not().add(Long.ONE);
-    }
-    neg() {
-        return this.negate();
-    }
-    not() {
-        return Long.fromBits(~this.low, ~this.high, this.unsigned);
-    }
-    notEquals(other) {
-        return !this.equals(other);
-    }
-    neq(other) {
-        return this.notEquals(other);
-    }
-    ne(other) {
-        return this.notEquals(other);
-    }
-    or(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        return Long.fromBits(this.low | other.low, this.high | other.high, this.unsigned);
-    }
-    shiftLeft(numBits) {
-        if (Long.isLong(numBits))
-            numBits = numBits.toInt();
-        if ((numBits &= 63) === 0)
-            return this;
-        else if (numBits < 32)
-            return Long.fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);
-        else
-            return Long.fromBits(0, this.low << (numBits - 32), this.unsigned);
-    }
-    shl(numBits) {
-        return this.shiftLeft(numBits);
-    }
-    shiftRight(numBits) {
-        if (Long.isLong(numBits))
-            numBits = numBits.toInt();
-        if ((numBits &= 63) === 0)
-            return this;
-        else if (numBits < 32)
-            return Long.fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);
-        else
-            return Long.fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);
-    }
-    shr(numBits) {
-        return this.shiftRight(numBits);
-    }
-    shiftRightUnsigned(numBits) {
-        if (Long.isLong(numBits))
-            numBits = numBits.toInt();
-        numBits &= 63;
-        if (numBits === 0)
-            return this;
-        else {
-            const high = this.high;
-            if (numBits < 32) {
-                const low = this.low;
-                return Long.fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);
-            }
-            else if (numBits === 32)
-                return Long.fromBits(high, 0, this.unsigned);
-            else
-                return Long.fromBits(high >>> (numBits - 32), 0, this.unsigned);
-        }
-    }
-    shr_u(numBits) {
-        return this.shiftRightUnsigned(numBits);
-    }
-    shru(numBits) {
-        return this.shiftRightUnsigned(numBits);
-    }
-    subtract(subtrahend) {
-        if (!Long.isLong(subtrahend))
-            subtrahend = Long.fromValue(subtrahend);
-        return this.add(subtrahend.neg());
-    }
-    sub(subtrahend) {
-        return this.subtract(subtrahend);
-    }
-    toInt() {
-        return this.unsigned ? this.low >>> 0 : this.low;
-    }
-    toNumber() {
-        if (this.unsigned)
-            return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);
-        return this.high * TWO_PWR_32_DBL + (this.low >>> 0);
-    }
-    toBigInt() {
-        return BigInt(this.toString());
-    }
-    toBytes(le) {
-        return le ? this.toBytesLE() : this.toBytesBE();
-    }
-    toBytesLE() {
-        const hi = this.high, lo = this.low;
-        return [
-            lo & 0xff,
-            (lo >>> 8) & 0xff,
-            (lo >>> 16) & 0xff,
-            lo >>> 24,
-            hi & 0xff,
-            (hi >>> 8) & 0xff,
-            (hi >>> 16) & 0xff,
-            hi >>> 24
-        ];
-    }
-    toBytesBE() {
-        const hi = this.high, lo = this.low;
-        return [
-            hi >>> 24,
-            (hi >>> 16) & 0xff,
-            (hi >>> 8) & 0xff,
-            hi & 0xff,
-            lo >>> 24,
-            (lo >>> 16) & 0xff,
-            (lo >>> 8) & 0xff,
-            lo & 0xff
-        ];
-    }
-    toSigned() {
-        if (!this.unsigned)
-            return this;
-        return Long.fromBits(this.low, this.high, false);
-    }
-    toString(radix) {
-        radix = radix || 10;
-        if (radix < 2 || 36 < radix)
-            throw new BSONError('radix');
-        if (this.isZero())
-            return '0';
-        if (this.isNegative()) {
-            if (this.eq(Long.MIN_VALUE)) {
-                const radixLong = Long.fromNumber(radix), div = this.div(radixLong), rem1 = div.mul(radixLong).sub(this);
-                return div.toString(radix) + rem1.toInt().toString(radix);
-            }
-            else
-                return '-' + this.neg().toString(radix);
-        }
-        const radixToPower = Long.fromNumber(Math.pow(radix, 6), this.unsigned);
-        let rem = this;
-        let result = '';
-        while (true) {
-            const remDiv = rem.div(radixToPower);
-            const intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0;
-            let digits = intval.toString(radix);
-            rem = remDiv;
-            if (rem.isZero()) {
-                return digits + result;
-            }
-            else {
-                while (digits.length < 6)
-                    digits = '0' + digits;
-                result = '' + digits + result;
-            }
-        }
-    }
-    toUnsigned() {
-        if (this.unsigned)
-            return this;
-        return Long.fromBits(this.low, this.high, true);
-    }
-    xor(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        return Long.fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);
-    }
-    eqz() {
-        return this.isZero();
-    }
-    le(other) {
-        return this.lessThanOrEqual(other);
-    }
-    toExtendedJSON(options) {
-        if (options && options.relaxed)
-            return this.toNumber();
-        return { $numberLong: this.toString() };
-    }
-    static fromExtendedJSON(doc, options) {
-        const { useBigInt64 = false, relaxed = true } = { ...options };
-        if (doc.$numberLong.length > MAX_INT64_STRING_LENGTH) {
-            throw new BSONError('$numberLong string is too long');
-        }
-        if (!DECIMAL_REG_EX.test(doc.$numberLong)) {
-            throw new BSONError(`$numberLong string "${doc.$numberLong}" is in an invalid format`);
-        }
-        if (useBigInt64) {
-            const bigIntResult = BigInt(doc.$numberLong);
-            return BigInt.asIntN(64, bigIntResult);
-        }
-        const longResult = Long.fromString(doc.$numberLong);
-        if (relaxed) {
-            return longResult.toNumber();
-        }
-        return longResult;
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const longVal = inspect(this.toString(), options);
-        const unsignedVal = this.unsigned ? `, ${inspect(this.unsigned, options)}` : '';
-        return `new Long(${longVal}${unsignedVal})`;
-    }
-}
-Long.TWO_PWR_24 = Long.fromInt(TWO_PWR_24_DBL);
-Long.MAX_UNSIGNED_VALUE = Long.fromBits(0xffffffff | 0, 0xffffffff | 0, true);
-Long.ZERO = Long.fromInt(0);
-Long.UZERO = Long.fromInt(0, true);
-Long.ONE = Long.fromInt(1);
-Long.UONE = Long.fromInt(1, true);
-Long.NEG_ONE = Long.fromInt(-1);
-Long.MAX_VALUE = Long.fromBits(0xffffffff | 0, 0x7fffffff | 0, false);
-Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0, false);
-
-const PARSE_STRING_REGEXP = /^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/;
-const PARSE_INF_REGEXP = /^(\+|-)?(Infinity|inf)$/i;
-const PARSE_NAN_REGEXP = /^(\+|-)?NaN$/i;
-const EXPONENT_MAX = 6111;
-const EXPONENT_MIN = -6176;
-const EXPONENT_BIAS = 6176;
-const MAX_DIGITS = 34;
-const NAN_BUFFER = ByteUtils.fromNumberArray([
-    0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-].reverse());
-const INF_NEGATIVE_BUFFER = ByteUtils.fromNumberArray([
-    0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-].reverse());
-const INF_POSITIVE_BUFFER = ByteUtils.fromNumberArray([
-    0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-].reverse());
-const EXPONENT_REGEX = /^([-+])?(\d+)?$/;
-const COMBINATION_MASK = 0x1f;
-const EXPONENT_MASK = 0x3fff;
-const COMBINATION_INFINITY = 30;
-const COMBINATION_NAN = 31;
-function isDigit(value) {
-    return !isNaN(parseInt(value, 10));
-}
-function divideu128(value) {
-    const DIVISOR = Long.fromNumber(1000 * 1000 * 1000);
-    let _rem = Long.fromNumber(0);
-    if (!value.parts[0] && !value.parts[1] && !value.parts[2] && !value.parts[3]) {
-        return { quotient: value, rem: _rem };
-    }
-    for (let i = 0; i <= 3; i++) {
-        _rem = _rem.shiftLeft(32);
-        _rem = _rem.add(new Long(value.parts[i], 0));
-        value.parts[i] = _rem.div(DIVISOR).low;
-        _rem = _rem.modulo(DIVISOR);
-    }
-    return { quotient: value, rem: _rem };
-}
-function multiply64x2(left, right) {
-    if (!left && !right) {
-        return { high: Long.fromNumber(0), low: Long.fromNumber(0) };
-    }
-    const leftHigh = left.shiftRightUnsigned(32);
-    const leftLow = new Long(left.getLowBits(), 0);
-    const rightHigh = right.shiftRightUnsigned(32);
-    const rightLow = new Long(right.getLowBits(), 0);
-    let productHigh = leftHigh.multiply(rightHigh);
-    let productMid = leftHigh.multiply(rightLow);
-    const productMid2 = leftLow.multiply(rightHigh);
-    let productLow = leftLow.multiply(rightLow);
-    productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
-    productMid = new Long(productMid.getLowBits(), 0)
-        .add(productMid2)
-        .add(productLow.shiftRightUnsigned(32));
-    productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
-    productLow = productMid.shiftLeft(32).add(new Long(productLow.getLowBits(), 0));
-    return { high: productHigh, low: productLow };
-}
-function lessThan(left, right) {
-    const uhleft = left.high >>> 0;
-    const uhright = right.high >>> 0;
-    if (uhleft < uhright) {
-        return true;
-    }
-    else if (uhleft === uhright) {
-        const ulleft = left.low >>> 0;
-        const ulright = right.low >>> 0;
-        if (ulleft < ulright)
-            return true;
-    }
-    return false;
-}
-function invalidErr(string, message) {
-    throw new BSONError(`"${string}" is not a valid Decimal128 string - ${message}`);
-}
-class Decimal128 extends BSONValue {
-    get _bsontype() {
-        return 'Decimal128';
-    }
-    constructor(bytes) {
-        super();
-        if (typeof bytes === 'string') {
-            this.bytes = Decimal128.fromString(bytes).bytes;
-        }
-        else if (isUint8Array(bytes)) {
-            if (bytes.byteLength !== 16) {
-                throw new BSONError('Decimal128 must take a Buffer of 16 bytes');
-            }
-            this.bytes = bytes;
-        }
-        else {
-            throw new BSONError('Decimal128 must take a Buffer or string');
-        }
-    }
-    static fromString(representation) {
-        return Decimal128._fromString(representation, { allowRounding: false });
-    }
-    static fromStringWithRounding(representation) {
-        return Decimal128._fromString(representation, { allowRounding: true });
-    }
-    static _fromString(representation, options) {
-        let isNegative = false;
-        let sawSign = false;
-        let sawRadix = false;
-        let foundNonZero = false;
-        let significantDigits = 0;
-        let nDigitsRead = 0;
-        let nDigits = 0;
-        let radixPosition = 0;
-        let firstNonZero = 0;
-        const digits = [0];
-        let nDigitsStored = 0;
-        let digitsInsert = 0;
-        let lastDigit = 0;
-        let exponent = 0;
-        let significandHigh = new Long(0, 0);
-        let significandLow = new Long(0, 0);
-        let biasedExponent = 0;
-        let index = 0;
-        if (representation.length >= 7000) {
-            throw new BSONError('' + representation + ' not a valid Decimal128 string');
-        }
-        const stringMatch = representation.match(PARSE_STRING_REGEXP);
-        const infMatch = representation.match(PARSE_INF_REGEXP);
-        const nanMatch = representation.match(PARSE_NAN_REGEXP);
-        if ((!stringMatch && !infMatch && !nanMatch) || representation.length === 0) {
-            throw new BSONError('' + representation + ' not a valid Decimal128 string');
-        }
-        if (stringMatch) {
-            const unsignedNumber = stringMatch[2];
-            const e = stringMatch[4];
-            const expSign = stringMatch[5];
-            const expNumber = stringMatch[6];
-            if (e && expNumber === undefined)
-                invalidErr(representation, 'missing exponent power');
-            if (e && unsignedNumber === undefined)
-                invalidErr(representation, 'missing exponent base');
-            if (e === undefined && (expSign || expNumber)) {
-                invalidErr(representation, 'missing e before exponent');
-            }
-        }
-        if (representation[index] === '+' || representation[index] === '-') {
-            sawSign = true;
-            isNegative = representation[index++] === '-';
-        }
-        if (!isDigit(representation[index]) && representation[index] !== '.') {
-            if (representation[index] === 'i' || representation[index] === 'I') {
-                return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
-            }
-            else if (representation[index] === 'N') {
-                return new Decimal128(NAN_BUFFER);
-            }
-        }
-        while (isDigit(representation[index]) || representation[index] === '.') {
-            if (representation[index] === '.') {
-                if (sawRadix)
-                    invalidErr(representation, 'contains multiple periods');
-                sawRadix = true;
-                index = index + 1;
-                continue;
-            }
-            if (nDigitsStored < MAX_DIGITS) {
-                if (representation[index] !== '0' || foundNonZero) {
-                    if (!foundNonZero) {
-                        firstNonZero = nDigitsRead;
-                    }
-                    foundNonZero = true;
-                    digits[digitsInsert++] = parseInt(representation[index], 10);
-                    nDigitsStored = nDigitsStored + 1;
-                }
-            }
-            if (foundNonZero)
-                nDigits = nDigits + 1;
-            if (sawRadix)
-                radixPosition = radixPosition + 1;
-            nDigitsRead = nDigitsRead + 1;
-            index = index + 1;
-        }
-        if (sawRadix && !nDigitsRead)
-            throw new BSONError('' + representation + ' not a valid Decimal128 string');
-        if (representation[index] === 'e' || representation[index] === 'E') {
-            const match = representation.substr(++index).match(EXPONENT_REGEX);
-            if (!match || !match[2])
-                return new Decimal128(NAN_BUFFER);
-            exponent = parseInt(match[0], 10);
-            index = index + match[0].length;
-        }
-        if (representation[index])
-            return new Decimal128(NAN_BUFFER);
-        if (!nDigitsStored) {
-            digits[0] = 0;
-            nDigits = 1;
-            nDigitsStored = 1;
-            significantDigits = 0;
-        }
-        else {
-            lastDigit = nDigitsStored - 1;
-            significantDigits = nDigits;
-            if (significantDigits !== 1) {
-                while (representation[firstNonZero + significantDigits - 1 + Number(sawSign) + Number(sawRadix)] === '0') {
-                    significantDigits = significantDigits - 1;
-                }
-            }
-        }
-        if (exponent <= radixPosition && radixPosition > exponent + (1 << 14)) {
-            exponent = EXPONENT_MIN;
-        }
-        else {
-            exponent = exponent - radixPosition;
-        }
-        while (exponent > EXPONENT_MAX) {
-            lastDigit = lastDigit + 1;
-            if (lastDigit >= MAX_DIGITS) {
-                if (significantDigits === 0) {
-                    exponent = EXPONENT_MAX;
-                    break;
-                }
-                invalidErr(representation, 'overflow');
-            }
-            exponent = exponent - 1;
-        }
-        if (options.allowRounding) {
-            while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
-                if (lastDigit === 0 && significantDigits < nDigitsStored) {
-                    exponent = EXPONENT_MIN;
-                    significantDigits = 0;
-                    break;
-                }
-                if (nDigitsStored < nDigits) {
-                    nDigits = nDigits - 1;
-                }
-                else {
-                    lastDigit = lastDigit - 1;
-                }
-                if (exponent < EXPONENT_MAX) {
-                    exponent = exponent + 1;
-                }
-                else {
-                    const digitsString = digits.join('');
-                    if (digitsString.match(/^0+$/)) {
-                        exponent = EXPONENT_MAX;
-                        break;
-                    }
-                    invalidErr(representation, 'overflow');
-                }
-            }
-            if (lastDigit + 1 < significantDigits) {
-                let endOfString = nDigitsRead;
-                if (sawRadix) {
-                    firstNonZero = firstNonZero + 1;
-                    endOfString = endOfString + 1;
-                }
-                if (sawSign) {
-                    firstNonZero = firstNonZero + 1;
-                    endOfString = endOfString + 1;
-                }
-                const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
-                let roundBit = 0;
-                if (roundDigit >= 5) {
-                    roundBit = 1;
-                    if (roundDigit === 5) {
-                        roundBit = digits[lastDigit] % 2 === 1 ? 1 : 0;
-                        for (let i = firstNonZero + lastDigit + 2; i < endOfString; i++) {
-                            if (parseInt(representation[i], 10)) {
-                                roundBit = 1;
-                                break;
-                            }
-                        }
-                    }
-                }
-                if (roundBit) {
-                    let dIdx = lastDigit;
-                    for (; dIdx >= 0; dIdx--) {
-                        if (++digits[dIdx] > 9) {
-                            digits[dIdx] = 0;
-                            if (dIdx === 0) {
-                                if (exponent < EXPONENT_MAX) {
-                                    exponent = exponent + 1;
-                                    digits[dIdx] = 1;
-                                }
-                                else {
-                                    return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
-                                }
-                            }
-                        }
-                        else {
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-        else {
-            while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
-                if (lastDigit === 0) {
-                    if (significantDigits === 0) {
-                        exponent = EXPONENT_MIN;
-                        break;
-                    }
-                    invalidErr(representation, 'exponent underflow');
-                }
-                if (nDigitsStored < nDigits) {
-                    if (representation[nDigits - 1 + Number(sawSign) + Number(sawRadix)] !== '0' &&
-                        significantDigits !== 0) {
-                        invalidErr(representation, 'inexact rounding');
-                    }
-                    nDigits = nDigits - 1;
-                }
-                else {
-                    if (digits[lastDigit] !== 0) {
-                        invalidErr(representation, 'inexact rounding');
-                    }
-                    lastDigit = lastDigit - 1;
-                }
-                if (exponent < EXPONENT_MAX) {
-                    exponent = exponent + 1;
-                }
-                else {
-                    invalidErr(representation, 'overflow');
-                }
-            }
-            if (lastDigit + 1 < significantDigits) {
-                if (sawRadix) {
-                    firstNonZero = firstNonZero + 1;
-                }
-                if (sawSign) {
-                    firstNonZero = firstNonZero + 1;
-                }
-                const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
-                if (roundDigit !== 0) {
-                    invalidErr(representation, 'inexact rounding');
-                }
-            }
-        }
-        significandHigh = Long.fromNumber(0);
-        significandLow = Long.fromNumber(0);
-        if (significantDigits === 0) {
-            significandHigh = Long.fromNumber(0);
-            significandLow = Long.fromNumber(0);
-        }
-        else if (lastDigit < 17) {
-            let dIdx = 0;
-            significandLow = Long.fromNumber(digits[dIdx++]);
-            significandHigh = new Long(0, 0);
-            for (; dIdx <= lastDigit; dIdx++) {
-                significandLow = significandLow.multiply(Long.fromNumber(10));
-                significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
-            }
-        }
-        else {
-            let dIdx = 0;
-            significandHigh = Long.fromNumber(digits[dIdx++]);
-            for (; dIdx <= lastDigit - 17; dIdx++) {
-                significandHigh = significandHigh.multiply(Long.fromNumber(10));
-                significandHigh = significandHigh.add(Long.fromNumber(digits[dIdx]));
-            }
-            significandLow = Long.fromNumber(digits[dIdx++]);
-            for (; dIdx <= lastDigit; dIdx++) {
-                significandLow = significandLow.multiply(Long.fromNumber(10));
-                significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
-            }
-        }
-        const significand = multiply64x2(significandHigh, Long.fromString('100000000000000000'));
-        significand.low = significand.low.add(significandLow);
-        if (lessThan(significand.low, significandLow)) {
-            significand.high = significand.high.add(Long.fromNumber(1));
-        }
-        biasedExponent = exponent + EXPONENT_BIAS;
-        const dec = { low: Long.fromNumber(0), high: Long.fromNumber(0) };
-        if (significand.high.shiftRightUnsigned(49).and(Long.fromNumber(1)).equals(Long.fromNumber(1))) {
-            dec.high = dec.high.or(Long.fromNumber(0x3).shiftLeft(61));
-            dec.high = dec.high.or(Long.fromNumber(biasedExponent).and(Long.fromNumber(0x3fff).shiftLeft(47)));
-            dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x7fffffffffff)));
-        }
-        else {
-            dec.high = dec.high.or(Long.fromNumber(biasedExponent & 0x3fff).shiftLeft(49));
-            dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x1ffffffffffff)));
-        }
-        dec.low = significand.low;
-        if (isNegative) {
-            dec.high = dec.high.or(Long.fromString('9223372036854775808'));
-        }
-        const buffer = ByteUtils.allocateUnsafe(16);
-        index = 0;
-        buffer[index++] = dec.low.low & 0xff;
-        buffer[index++] = (dec.low.low >> 8) & 0xff;
-        buffer[index++] = (dec.low.low >> 16) & 0xff;
-        buffer[index++] = (dec.low.low >> 24) & 0xff;
-        buffer[index++] = dec.low.high & 0xff;
-        buffer[index++] = (dec.low.high >> 8) & 0xff;
-        buffer[index++] = (dec.low.high >> 16) & 0xff;
-        buffer[index++] = (dec.low.high >> 24) & 0xff;
-        buffer[index++] = dec.high.low & 0xff;
-        buffer[index++] = (dec.high.low >> 8) & 0xff;
-        buffer[index++] = (dec.high.low >> 16) & 0xff;
-        buffer[index++] = (dec.high.low >> 24) & 0xff;
-        buffer[index++] = dec.high.high & 0xff;
-        buffer[index++] = (dec.high.high >> 8) & 0xff;
-        buffer[index++] = (dec.high.high >> 16) & 0xff;
-        buffer[index++] = (dec.high.high >> 24) & 0xff;
-        return new Decimal128(buffer);
-    }
-    toString() {
-        let biased_exponent;
-        let significand_digits = 0;
-        const significand = new Array(36);
-        for (let i = 0; i < significand.length; i++)
-            significand[i] = 0;
-        let index = 0;
-        let is_zero = false;
-        let significand_msb;
-        let significand128 = { parts: [0, 0, 0, 0] };
-        let j, k;
-        const string = [];
-        index = 0;
-        const buffer = this.bytes;
-        const low = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        const midl = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        const midh = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        const high = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        index = 0;
-        const dec = {
-            low: new Long(low, midl),
-            high: new Long(midh, high)
-        };
-        if (dec.high.lessThan(Long.ZERO)) {
-            string.push('-');
-        }
-        const combination = (high >> 26) & COMBINATION_MASK;
-        if (combination >> 3 === 3) {
-            if (combination === COMBINATION_INFINITY) {
-                return string.join('') + 'Infinity';
-            }
-            else if (combination === COMBINATION_NAN) {
-                return 'NaN';
-            }
-            else {
-                biased_exponent = (high >> 15) & EXPONENT_MASK;
-                significand_msb = 0x08 + ((high >> 14) & 0x01);
-            }
-        }
-        else {
-            significand_msb = (high >> 14) & 0x07;
-            biased_exponent = (high >> 17) & EXPONENT_MASK;
-        }
-        const exponent = biased_exponent - EXPONENT_BIAS;
-        significand128.parts[0] = (high & 0x3fff) + ((significand_msb & 0xf) << 14);
-        significand128.parts[1] = midh;
-        significand128.parts[2] = midl;
-        significand128.parts[3] = low;
-        if (significand128.parts[0] === 0 &&
-            significand128.parts[1] === 0 &&
-            significand128.parts[2] === 0 &&
-            significand128.parts[3] === 0) {
-            is_zero = true;
-        }
-        else {
-            for (k = 3; k >= 0; k--) {
-                let least_digits = 0;
-                const result = divideu128(significand128);
-                significand128 = result.quotient;
-                least_digits = result.rem.low;
-                if (!least_digits)
-                    continue;
-                for (j = 8; j >= 0; j--) {
-                    significand[k * 9 + j] = least_digits % 10;
-                    least_digits = Math.floor(least_digits / 10);
-                }
-            }
-        }
-        if (is_zero) {
-            significand_digits = 1;
-            significand[index] = 0;
-        }
-        else {
-            significand_digits = 36;
-            while (!significand[index]) {
-                significand_digits = significand_digits - 1;
-                index = index + 1;
-            }
-        }
-        const scientific_exponent = significand_digits - 1 + exponent;
-        if (scientific_exponent >= 34 || scientific_exponent <= -7 || exponent > 0) {
-            if (significand_digits > 34) {
-                string.push(`${0}`);
-                if (exponent > 0)
-                    string.push(`E+${exponent}`);
-                else if (exponent < 0)
-                    string.push(`E${exponent}`);
-                return string.join('');
-            }
-            string.push(`${significand[index++]}`);
-            significand_digits = significand_digits - 1;
-            if (significand_digits) {
-                string.push('.');
-            }
-            for (let i = 0; i < significand_digits; i++) {
-                string.push(`${significand[index++]}`);
-            }
-            string.push('E');
-            if (scientific_exponent > 0) {
-                string.push(`+${scientific_exponent}`);
-            }
-            else {
-                string.push(`${scientific_exponent}`);
-            }
-        }
-        else {
-            if (exponent >= 0) {
-                for (let i = 0; i < significand_digits; i++) {
-                    string.push(`${significand[index++]}`);
-                }
-            }
-            else {
-                let radix_position = significand_digits + exponent;
-                if (radix_position > 0) {
-                    for (let i = 0; i < radix_position; i++) {
-                        string.push(`${significand[index++]}`);
-                    }
-                }
-                else {
-                    string.push('0');
-                }
-                string.push('.');
-                while (radix_position++ < 0) {
-                    string.push('0');
-                }
-                for (let i = 0; i < significand_digits - Math.max(radix_position - 1, 0); i++) {
-                    string.push(`${significand[index++]}`);
-                }
-            }
-        }
-        return string.join('');
-    }
-    toJSON() {
-        return { $numberDecimal: this.toString() };
-    }
-    toExtendedJSON() {
-        return { $numberDecimal: this.toString() };
-    }
-    static fromExtendedJSON(doc) {
-        return Decimal128.fromString(doc.$numberDecimal);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const d128string = inspect(this.toString(), options);
-        return `new Decimal128(${d128string})`;
-    }
-}
-
-class Double extends BSONValue {
-    get _bsontype() {
-        return 'Double';
-    }
-    constructor(value) {
-        super();
-        if (value instanceof Number) {
-            value = value.valueOf();
-        }
-        this.value = +value;
-    }
-    valueOf() {
-        return this.value;
-    }
-    toJSON() {
-        return this.value;
-    }
-    toString(radix) {
-        return this.value.toString(radix);
-    }
-    toExtendedJSON(options) {
-        if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) {
-            return this.value;
-        }
-        if (Object.is(Math.sign(this.value), -0)) {
-            return { $numberDouble: '-0.0' };
-        }
-        return {
-            $numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString()
-        };
-    }
-    static fromExtendedJSON(doc, options) {
-        const doubleValue = parseFloat(doc.$numberDouble);
-        return options && options.relaxed ? doubleValue : new Double(doubleValue);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new Double(${inspect(this.value, options)})`;
-    }
-}
-
-class Int32 extends BSONValue {
-    get _bsontype() {
-        return 'Int32';
-    }
-    constructor(value) {
-        super();
-        if (value instanceof Number) {
-            value = value.valueOf();
-        }
-        this.value = +value | 0;
-    }
-    valueOf() {
-        return this.value;
-    }
-    toString(radix) {
-        return this.value.toString(radix);
-    }
-    toJSON() {
-        return this.value;
-    }
-    toExtendedJSON(options) {
-        if (options && (options.relaxed || options.legacy))
-            return this.value;
-        return { $numberInt: this.value.toString() };
-    }
-    static fromExtendedJSON(doc, options) {
-        return options && options.relaxed ? parseInt(doc.$numberInt, 10) : new Int32(doc.$numberInt);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new Int32(${inspect(this.value, options)})`;
-    }
-}
-
-class MaxKey extends BSONValue {
-    get _bsontype() {
-        return 'MaxKey';
-    }
-    toExtendedJSON() {
-        return { $maxKey: 1 };
-    }
-    static fromExtendedJSON() {
-        return new MaxKey();
-    }
-    inspect() {
-        return 'new MaxKey()';
-    }
-}
-
-class MinKey extends BSONValue {
-    get _bsontype() {
-        return 'MinKey';
-    }
-    toExtendedJSON() {
-        return { $minKey: 1 };
-    }
-    static fromExtendedJSON() {
-        return new MinKey();
-    }
-    inspect() {
-        return 'new MinKey()';
-    }
-}
-
-const FLOAT = new Float64Array(1);
-const FLOAT_BYTES = new Uint8Array(FLOAT.buffer, 0, 8);
-const NumberUtils = {
-    getInt32LE(source, offset) {
-        return (source[offset] |
-            (source[offset + 1] << 8) |
-            (source[offset + 2] << 16) |
-            (source[offset + 3] << 24));
-    },
-    getUint32LE(source, offset) {
-        return (source[offset] +
-            source[offset + 1] * 256 +
-            source[offset + 2] * 65536 +
-            source[offset + 3] * 16777216);
-    },
-    getUint32BE(source, offset) {
-        return (source[offset + 3] +
-            source[offset + 2] * 256 +
-            source[offset + 1] * 65536 +
-            source[offset] * 16777216);
-    },
-    getBigInt64LE(source, offset) {
-        const lo = NumberUtils.getUint32LE(source, offset);
-        const hi = NumberUtils.getUint32LE(source, offset + 4);
-        return (BigInt(hi) << BigInt(32)) + BigInt(lo);
-    },
-    getFloat64LE(source, offset) {
-        FLOAT_BYTES[0] = source[offset];
-        FLOAT_BYTES[1] = source[offset + 1];
-        FLOAT_BYTES[2] = source[offset + 2];
-        FLOAT_BYTES[3] = source[offset + 3];
-        FLOAT_BYTES[4] = source[offset + 4];
-        FLOAT_BYTES[5] = source[offset + 5];
-        FLOAT_BYTES[6] = source[offset + 6];
-        FLOAT_BYTES[7] = source[offset + 7];
-        return FLOAT[0];
-    },
-    setInt32BE(destination, offset, value) {
-        destination[offset + 3] = value;
-        value >>>= 8;
-        destination[offset + 2] = value;
-        value >>>= 8;
-        destination[offset + 1] = value;
-        value >>>= 8;
-        destination[offset] = value;
-        return 4;
-    },
-    setInt32LE(destination, offset, value) {
-        destination[offset] = value;
-        value >>>= 8;
-        destination[offset + 1] = value;
-        value >>>= 8;
-        destination[offset + 2] = value;
-        value >>>= 8;
-        destination[offset + 3] = value;
-        return 4;
-    },
-    setBigInt64LE(destination, offset, value) {
-        const mask32bits = BigInt(4294967295);
-        let lo = Number(value & mask32bits);
-        destination[offset] = lo;
-        lo >>= 8;
-        destination[offset + 1] = lo;
-        lo >>= 8;
-        destination[offset + 2] = lo;
-        lo >>= 8;
-        destination[offset + 3] = lo;
-        let hi = Number((value >> BigInt(32)) & mask32bits);
-        destination[offset + 4] = hi;
-        hi >>= 8;
-        destination[offset + 5] = hi;
-        hi >>= 8;
-        destination[offset + 6] = hi;
-        hi >>= 8;
-        destination[offset + 7] = hi;
-        return 8;
-    },
-    setFloat64LE(destination, offset, value) {
-        FLOAT[0] = value;
-        destination[offset] = FLOAT_BYTES[0];
-        destination[offset + 1] = FLOAT_BYTES[1];
-        destination[offset + 2] = FLOAT_BYTES[2];
-        destination[offset + 3] = FLOAT_BYTES[3];
-        destination[offset + 4] = FLOAT_BYTES[4];
-        destination[offset + 5] = FLOAT_BYTES[5];
-        destination[offset + 6] = FLOAT_BYTES[6];
-        destination[offset + 7] = FLOAT_BYTES[7];
-        return 8;
-    }
-};
-
-const checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$');
-let PROCESS_UNIQUE = null;
-class ObjectId extends BSONValue {
-    get _bsontype() {
-        return 'ObjectId';
-    }
-    constructor(inputId) {
-        super();
-        let workingId;
-        if (typeof inputId === 'object' && inputId && 'id' in inputId) {
-            if (typeof inputId.id !== 'string' && !ArrayBuffer.isView(inputId.id)) {
-                throw new BSONError('Argument passed in must have an id that is of type string or Buffer');
-            }
-            if ('toHexString' in inputId && typeof inputId.toHexString === 'function') {
-                workingId = ByteUtils.fromHex(inputId.toHexString());
-            }
-            else {
-                workingId = inputId.id;
-            }
-        }
-        else {
-            workingId = inputId;
-        }
-        if (workingId == null || typeof workingId === 'number') {
-            this.buffer = ObjectId.generate(typeof workingId === 'number' ? workingId : undefined);
-        }
-        else if (ArrayBuffer.isView(workingId) && workingId.byteLength === 12) {
-            this.buffer = ByteUtils.toLocalBufferType(workingId);
-        }
-        else if (typeof workingId === 'string') {
-            if (workingId.length === 24 && checkForHexRegExp.test(workingId)) {
-                this.buffer = ByteUtils.fromHex(workingId);
-            }
-            else {
-                throw new BSONError('input must be a 24 character hex string, 12 byte Uint8Array, or an integer');
-            }
-        }
-        else {
-            throw new BSONError('Argument passed in does not match the accepted types');
-        }
-        if (ObjectId.cacheHexString) {
-            this.__id = ByteUtils.toHex(this.id);
-        }
-    }
-    get id() {
-        return this.buffer;
-    }
-    set id(value) {
-        this.buffer = value;
-        if (ObjectId.cacheHexString) {
-            this.__id = ByteUtils.toHex(value);
-        }
-    }
-    toHexString() {
-        if (ObjectId.cacheHexString && this.__id) {
-            return this.__id;
-        }
-        const hexString = ByteUtils.toHex(this.id);
-        if (ObjectId.cacheHexString && !this.__id) {
-            this.__id = hexString;
-        }
-        return hexString;
-    }
-    static getInc() {
-        return (ObjectId.index = (ObjectId.index + 1) % 0xffffff);
-    }
-    static generate(time) {
-        if ('number' !== typeof time) {
-            time = Math.floor(Date.now() / 1000);
-        }
-        const inc = ObjectId.getInc();
-        const buffer = ByteUtils.allocateUnsafe(12);
-        NumberUtils.setInt32BE(buffer, 0, time);
-        if (PROCESS_UNIQUE === null) {
-            PROCESS_UNIQUE = ByteUtils.randomBytes(5);
-        }
-        buffer[4] = PROCESS_UNIQUE[0];
-        buffer[5] = PROCESS_UNIQUE[1];
-        buffer[6] = PROCESS_UNIQUE[2];
-        buffer[7] = PROCESS_UNIQUE[3];
-        buffer[8] = PROCESS_UNIQUE[4];
-        buffer[11] = inc & 0xff;
-        buffer[10] = (inc >> 8) & 0xff;
-        buffer[9] = (inc >> 16) & 0xff;
-        return buffer;
-    }
-    toString(encoding) {
-        if (encoding === 'base64')
-            return ByteUtils.toBase64(this.id);
-        if (encoding === 'hex')
-            return this.toHexString();
-        return this.toHexString();
-    }
-    toJSON() {
-        return this.toHexString();
-    }
-    static is(variable) {
-        return (variable != null &&
-            typeof variable === 'object' &&
-            '_bsontype' in variable &&
-            variable._bsontype === 'ObjectId');
-    }
-    equals(otherId) {
-        if (otherId === undefined || otherId === null) {
-            return false;
-        }
-        if (ObjectId.is(otherId)) {
-            return (this.buffer[11] === otherId.buffer[11] && ByteUtils.equals(this.buffer, otherId.buffer));
-        }
-        if (typeof otherId === 'string') {
-            return otherId.toLowerCase() === this.toHexString();
-        }
-        if (typeof otherId === 'object' && typeof otherId.toHexString === 'function') {
-            const otherIdString = otherId.toHexString();
-            const thisIdString = this.toHexString();
-            return typeof otherIdString === 'string' && otherIdString.toLowerCase() === thisIdString;
-        }
-        return false;
-    }
-    getTimestamp() {
-        const timestamp = new Date();
-        const time = NumberUtils.getUint32BE(this.buffer, 0);
-        timestamp.setTime(Math.floor(time) * 1000);
-        return timestamp;
-    }
-    static createPk() {
-        return new ObjectId();
-    }
-    serializeInto(uint8array, index) {
-        uint8array[index] = this.buffer[0];
-        uint8array[index + 1] = this.buffer[1];
-        uint8array[index + 2] = this.buffer[2];
-        uint8array[index + 3] = this.buffer[3];
-        uint8array[index + 4] = this.buffer[4];
-        uint8array[index + 5] = this.buffer[5];
-        uint8array[index + 6] = this.buffer[6];
-        uint8array[index + 7] = this.buffer[7];
-        uint8array[index + 8] = this.buffer[8];
-        uint8array[index + 9] = this.buffer[9];
-        uint8array[index + 10] = this.buffer[10];
-        uint8array[index + 11] = this.buffer[11];
-        return 12;
-    }
-    static createFromTime(time) {
-        const buffer = ByteUtils.allocate(12);
-        for (let i = 11; i >= 4; i--)
-            buffer[i] = 0;
-        NumberUtils.setInt32BE(buffer, 0, time);
-        return new ObjectId(buffer);
-    }
-    static createFromHexString(hexString) {
-        if (hexString?.length !== 24) {
-            throw new BSONError('hex string must be 24 characters');
-        }
-        return new ObjectId(ByteUtils.fromHex(hexString));
-    }
-    static createFromBase64(base64) {
-        if (base64?.length !== 16) {
-            throw new BSONError('base64 string must be 16 characters');
-        }
-        return new ObjectId(ByteUtils.fromBase64(base64));
-    }
-    static isValid(id) {
-        if (id == null)
-            return false;
-        try {
-            new ObjectId(id);
-            return true;
-        }
-        catch {
-            return false;
-        }
-    }
-    toExtendedJSON() {
-        if (this.toHexString)
-            return { $oid: this.toHexString() };
-        return { $oid: this.toString('hex') };
-    }
-    static fromExtendedJSON(doc) {
-        return new ObjectId(doc.$oid);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new ObjectId(${inspect(this.toHexString(), options)})`;
-    }
-}
-ObjectId.index = Math.floor(Math.random() * 0xffffff);
-
-function internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined) {
-    let totalLength = 4 + 1;
-    if (Array.isArray(object)) {
-        for (let i = 0; i < object.length; i++) {
-            totalLength += calculateElement(i.toString(), object[i], serializeFunctions, true, ignoreUndefined);
-        }
-    }
-    else {
-        if (typeof object?.toBSON === 'function') {
-            object = object.toBSON();
-        }
-        for (const key of Object.keys(object)) {
-            totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined);
-        }
-    }
-    return totalLength;
-}
-function calculateElement(name, value, serializeFunctions = false, isArray = false, ignoreUndefined = false) {
-    if (typeof value?.toBSON === 'function') {
-        value = value.toBSON();
-    }
-    switch (typeof value) {
-        case 'string':
-            return 1 + ByteUtils.utf8ByteLength(name) + 1 + 4 + ByteUtils.utf8ByteLength(value) + 1;
-        case 'number':
-            if (Math.floor(value) === value &&
-                value >= JS_INT_MIN &&
-                value <= JS_INT_MAX) {
-                if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
-                    return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (4 + 1);
-                }
-                else {
-                    return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-                }
-            }
-            else {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-            }
-        case 'undefined':
-            if (isArray || !ignoreUndefined)
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
-            return 0;
-        case 'boolean':
-            return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 1);
-        case 'object':
-            if (value != null &&
-                typeof value._bsontype === 'string' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value == null || value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
-            }
-            else if (value._bsontype === 'ObjectId') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (12 + 1);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-            }
-            else if (ArrayBuffer.isView(value) ||
-                value instanceof ArrayBuffer ||
-                isAnyArrayBuffer(value)) {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 4 + 1) + value.byteLength);
-            }
-            else if (value._bsontype === 'Long' ||
-                value._bsontype === 'Double' ||
-                value._bsontype === 'Timestamp') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-            }
-            else if (value._bsontype === 'Decimal128') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (16 + 1);
-            }
-            else if (value._bsontype === 'Code') {
-                if (value.scope != null && Object.keys(value.scope).length > 0) {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                        1 +
-                        4 +
-                        4 +
-                        ByteUtils.utf8ByteLength(value.code.toString()) +
-                        1 +
-                        internalCalculateObjectSize(value.scope, serializeFunctions, ignoreUndefined));
-                }
-                else {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                        1 +
-                        4 +
-                        ByteUtils.utf8ByteLength(value.code.toString()) +
-                        1);
-                }
-            }
-            else if (value._bsontype === 'Binary') {
-                const binary = value;
-                if (binary.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                        (binary.position + 1 + 4 + 1 + 4));
-                }
-                else {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (binary.position + 1 + 4 + 1));
-                }
-            }
-            else if (value._bsontype === 'Symbol') {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    ByteUtils.utf8ByteLength(value.value) +
-                    4 +
-                    1 +
-                    1);
-            }
-            else if (value._bsontype === 'DBRef') {
-                const ordered_values = Object.assign({
-                    $ref: value.collection,
-                    $id: value.oid
-                }, value.fields);
-                if (value.db != null) {
-                    ordered_values['$db'] = value.db;
-                }
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    internalCalculateObjectSize(ordered_values, serializeFunctions, ignoreUndefined));
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    ByteUtils.utf8ByteLength(value.source) +
-                    1 +
-                    (value.global ? 1 : 0) +
-                    (value.ignoreCase ? 1 : 0) +
-                    (value.multiline ? 1 : 0) +
-                    1);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    ByteUtils.utf8ByteLength(value.pattern) +
-                    1 +
-                    ByteUtils.utf8ByteLength(value.options) +
-                    1);
-            }
-            else {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    internalCalculateObjectSize(value, serializeFunctions, ignoreUndefined) +
-                    1);
-            }
-        case 'function':
-            if (serializeFunctions) {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    4 +
-                    ByteUtils.utf8ByteLength(value.toString()) +
-                    1);
-            }
-    }
-    return 0;
-}
-
-function alphabetize(str) {
-    return str.split('').sort().join('');
-}
-class BSONRegExp extends BSONValue {
-    get _bsontype() {
-        return 'BSONRegExp';
-    }
-    constructor(pattern, options) {
-        super();
-        this.pattern = pattern;
-        this.options = alphabetize(options ?? '');
-        if (this.pattern.indexOf('\x00') !== -1) {
-            throw new BSONError(`BSON Regex patterns cannot contain null bytes, found: ${JSON.stringify(this.pattern)}`);
-        }
-        if (this.options.indexOf('\x00') !== -1) {
-            throw new BSONError(`BSON Regex options cannot contain null bytes, found: ${JSON.stringify(this.options)}`);
-        }
-        for (let i = 0; i < this.options.length; i++) {
-            if (!(this.options[i] === 'i' ||
-                this.options[i] === 'm' ||
-                this.options[i] === 'x' ||
-                this.options[i] === 'l' ||
-                this.options[i] === 's' ||
-                this.options[i] === 'u')) {
-                throw new BSONError(`The regular expression option [${this.options[i]}] is not supported`);
-            }
-        }
-    }
-    static parseOptions(options) {
-        return options ? options.split('').sort().join('') : '';
-    }
-    toExtendedJSON(options) {
-        options = options || {};
-        if (options.legacy) {
-            return { $regex: this.pattern, $options: this.options };
-        }
-        return { $regularExpression: { pattern: this.pattern, options: this.options } };
-    }
-    static fromExtendedJSON(doc) {
-        if ('$regex' in doc) {
-            if (typeof doc.$regex !== 'string') {
-                if (doc.$regex._bsontype === 'BSONRegExp') {
-                    return doc;
-                }
-            }
-            else {
-                return new BSONRegExp(doc.$regex, BSONRegExp.parseOptions(doc.$options));
-            }
-        }
-        if ('$regularExpression' in doc) {
-            return new BSONRegExp(doc.$regularExpression.pattern, BSONRegExp.parseOptions(doc.$regularExpression.options));
-        }
-        throw new BSONError(`Unexpected BSONRegExp EJSON object form: ${JSON.stringify(doc)}`);
-    }
-    inspect(depth, options, inspect) {
-        const stylize = getStylizeFunction(options) ?? (v => v);
-        inspect ??= defaultInspect;
-        const pattern = stylize(inspect(this.pattern), 'regexp');
-        const flags = stylize(inspect(this.options), 'regexp');
-        return `new BSONRegExp(${pattern}, ${flags})`;
-    }
-}
-
-class BSONSymbol extends BSONValue {
-    get _bsontype() {
-        return 'BSONSymbol';
-    }
-    constructor(value) {
-        super();
-        this.value = value;
-    }
-    valueOf() {
-        return this.value;
-    }
-    toString() {
-        return this.value;
-    }
-    toJSON() {
-        return this.value;
-    }
-    toExtendedJSON() {
-        return { $symbol: this.value };
-    }
-    static fromExtendedJSON(doc) {
-        return new BSONSymbol(doc.$symbol);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new BSONSymbol(${inspect(this.value, options)})`;
-    }
-}
-
-const LongWithoutOverridesClass = Long;
-class Timestamp extends LongWithoutOverridesClass {
-    get _bsontype() {
-        return 'Timestamp';
-    }
-    constructor(low) {
-        if (low == null) {
-            super(0, 0, true);
-        }
-        else if (typeof low === 'bigint') {
-            super(low, true);
-        }
-        else if (Long.isLong(low)) {
-            super(low.low, low.high, true);
-        }
-        else if (typeof low === 'object' && 't' in low && 'i' in low) {
-            if (typeof low.t !== 'number' && (typeof low.t !== 'object' || low.t._bsontype !== 'Int32')) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide t as a number');
-            }
-            if (typeof low.i !== 'number' && (typeof low.i !== 'object' || low.i._bsontype !== 'Int32')) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide i as a number');
-            }
-            const t = Number(low.t);
-            const i = Number(low.i);
-            if (t < 0 || Number.isNaN(t)) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide a positive t');
-            }
-            if (i < 0 || Number.isNaN(i)) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide a positive i');
-            }
-            if (t > 4294967295) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide t equal or less than uint32 max');
-            }
-            if (i > 4294967295) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide i equal or less than uint32 max');
-            }
-            super(i, t, true);
-        }
-        else {
-            throw new BSONError('A Timestamp can only be constructed with: bigint, Long, or { t: number; i: number }');
-        }
-    }
-    toJSON() {
-        return {
-            $timestamp: this.toString()
-        };
-    }
-    static fromInt(value) {
-        return new Timestamp(Long.fromInt(value, true));
-    }
-    static fromNumber(value) {
-        return new Timestamp(Long.fromNumber(value, true));
-    }
-    static fromBits(lowBits, highBits) {
-        return new Timestamp({ i: lowBits, t: highBits });
-    }
-    static fromString(str, optRadix) {
-        return new Timestamp(Long.fromString(str, true, optRadix));
-    }
-    toExtendedJSON() {
-        return { $timestamp: { t: this.high >>> 0, i: this.low >>> 0 } };
-    }
-    static fromExtendedJSON(doc) {
-        const i = Long.isLong(doc.$timestamp.i)
-            ? doc.$timestamp.i.getLowBitsUnsigned()
-            : doc.$timestamp.i;
-        const t = Long.isLong(doc.$timestamp.t)
-            ? doc.$timestamp.t.getLowBitsUnsigned()
-            : doc.$timestamp.t;
-        return new Timestamp({ t, i });
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const t = inspect(this.high >>> 0, options);
-        const i = inspect(this.low >>> 0, options);
-        return `new Timestamp({ t: ${t}, i: ${i} })`;
-    }
-}
-Timestamp.MAX_VALUE = Long.MAX_UNSIGNED_VALUE;
-
-const JS_INT_MAX_LONG = Long.fromNumber(JS_INT_MAX);
-const JS_INT_MIN_LONG = Long.fromNumber(JS_INT_MIN);
-function internalDeserialize(buffer, options, isArray) {
-    options = options == null ? {} : options;
-    const index = options && options.index ? options.index : 0;
-    const size = NumberUtils.getInt32LE(buffer, index);
-    if (size < 5) {
-        throw new BSONError(`bson size must be >= 5, is ${size}`);
-    }
-    if (options.allowObjectSmallerThanBufferSize && buffer.length < size) {
-        throw new BSONError(`buffer length ${buffer.length} must be >= bson size ${size}`);
-    }
-    if (!options.allowObjectSmallerThanBufferSize && buffer.length !== size) {
-        throw new BSONError(`buffer length ${buffer.length} must === bson size ${size}`);
-    }
-    if (size + index > buffer.byteLength) {
-        throw new BSONError(`(bson size ${size} + options.index ${index} must be <= buffer length ${buffer.byteLength})`);
-    }
-    if (buffer[index + size - 1] !== 0) {
-        throw new BSONError("One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00");
-    }
-    return deserializeObject(buffer, index, options, isArray);
-}
-const allowedDBRefKeys = /^\$ref$|^\$id$|^\$db$/;
-function deserializeObject(buffer, index, options, isArray = false) {
-    const fieldsAsRaw = options['fieldsAsRaw'] == null ? null : options['fieldsAsRaw'];
-    const raw = options['raw'] == null ? false : options['raw'];
-    const bsonRegExp = typeof options['bsonRegExp'] === 'boolean' ? options['bsonRegExp'] : false;
-    const promoteBuffers = options.promoteBuffers ?? false;
-    const promoteLongs = options.promoteLongs ?? true;
-    const promoteValues = options.promoteValues ?? true;
-    const useBigInt64 = options.useBigInt64 ?? false;
-    if (useBigInt64 && !promoteValues) {
-        throw new BSONError('Must either request bigint or Long for int64 deserialization');
-    }
-    if (useBigInt64 && !promoteLongs) {
-        throw new BSONError('Must either request bigint or Long for int64 deserialization');
-    }
-    const validation = options.validation == null ? { utf8: true } : options.validation;
-    let globalUTFValidation = true;
-    let validationSetting;
-    let utf8KeysSet;
-    const utf8ValidatedKeys = validation.utf8;
-    if (typeof utf8ValidatedKeys === 'boolean') {
-        validationSetting = utf8ValidatedKeys;
-    }
-    else {
-        globalUTFValidation = false;
-        const utf8ValidationValues = Object.keys(utf8ValidatedKeys).map(function (key) {
-            return utf8ValidatedKeys[key];
-        });
-        if (utf8ValidationValues.length === 0) {
-            throw new BSONError('UTF-8 validation setting cannot be empty');
-        }
-        if (typeof utf8ValidationValues[0] !== 'boolean') {
-            throw new BSONError('Invalid UTF-8 validation option, must specify boolean values');
-        }
-        validationSetting = utf8ValidationValues[0];
-        if (!utf8ValidationValues.every(item => item === validationSetting)) {
-            throw new BSONError('Invalid UTF-8 validation option - keys must be all true or all false');
-        }
-    }
-    if (!globalUTFValidation) {
-        utf8KeysSet = new Set();
-        for (const key of Object.keys(utf8ValidatedKeys)) {
-            utf8KeysSet.add(key);
-        }
-    }
-    const startIndex = index;
-    if (buffer.length < 5)
-        throw new BSONError('corrupt bson message < 5 bytes long');
-    const size = NumberUtils.getInt32LE(buffer, index);
-    index += 4;
-    if (size < 5 || size > buffer.length)
-        throw new BSONError('corrupt bson message');
-    const object = isArray ? [] : {};
-    let arrayIndex = 0;
-    const done = false;
-    let isPossibleDBRef = isArray ? false : null;
-    while (!done) {
-        const elementType = buffer[index++];
-        if (elementType === 0)
-            break;
-        let i = index;
-        while (buffer[i] !== 0x00 && i < buffer.length) {
-            i++;
-        }
-        if (i >= buffer.byteLength)
-            throw new BSONError('Bad BSON Document: illegal CString');
-        const name = isArray ? arrayIndex++ : ByteUtils.toUTF8(buffer, index, i, false);
-        let shouldValidateKey = true;
-        if (globalUTFValidation || utf8KeysSet?.has(name)) {
-            shouldValidateKey = validationSetting;
-        }
-        else {
-            shouldValidateKey = !validationSetting;
-        }
-        if (isPossibleDBRef !== false && name[0] === '$') {
-            isPossibleDBRef = allowedDBRefKeys.test(name);
-        }
-        let value;
-        index = i + 1;
-        if (elementType === BSON_DATA_STRING) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            value = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            index = index + stringSize;
-        }
-        else if (elementType === BSON_DATA_OID) {
-            const oid = ByteUtils.allocateUnsafe(12);
-            for (let i = 0; i < 12; i++)
-                oid[i] = buffer[index + i];
-            value = new ObjectId(oid);
-            index = index + 12;
-        }
-        else if (elementType === BSON_DATA_INT && promoteValues === false) {
-            value = new Int32(NumberUtils.getInt32LE(buffer, index));
-            index += 4;
-        }
-        else if (elementType === BSON_DATA_INT) {
-            value = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-        }
-        else if (elementType === BSON_DATA_NUMBER) {
-            value = NumberUtils.getFloat64LE(buffer, index);
-            index += 8;
-            if (promoteValues === false)
-                value = new Double(value);
-        }
-        else if (elementType === BSON_DATA_DATE) {
-            const lowBits = NumberUtils.getInt32LE(buffer, index);
-            const highBits = NumberUtils.getInt32LE(buffer, index + 4);
-            index += 8;
-            value = new Date(new Long(lowBits, highBits).toNumber());
-        }
-        else if (elementType === BSON_DATA_BOOLEAN) {
-            if (buffer[index] !== 0 && buffer[index] !== 1)
-                throw new BSONError('illegal boolean type value');
-            value = buffer[index++] === 1;
-        }
-        else if (elementType === BSON_DATA_OBJECT) {
-            const _index = index;
-            const objectSize = NumberUtils.getInt32LE(buffer, index);
-            if (objectSize <= 0 || objectSize > buffer.length - index)
-                throw new BSONError('bad embedded document length in bson');
-            if (raw) {
-                value = buffer.slice(index, index + objectSize);
-            }
-            else {
-                let objectOptions = options;
-                if (!globalUTFValidation) {
-                    objectOptions = { ...options, validation: { utf8: shouldValidateKey } };
-                }
-                value = deserializeObject(buffer, _index, objectOptions, false);
-            }
-            index = index + objectSize;
-        }
-        else if (elementType === BSON_DATA_ARRAY) {
-            const _index = index;
-            const objectSize = NumberUtils.getInt32LE(buffer, index);
-            let arrayOptions = options;
-            const stopIndex = index + objectSize;
-            if (fieldsAsRaw && fieldsAsRaw[name]) {
-                arrayOptions = { ...options, raw: true };
-            }
-            if (!globalUTFValidation) {
-                arrayOptions = { ...arrayOptions, validation: { utf8: shouldValidateKey } };
-            }
-            value = deserializeObject(buffer, _index, arrayOptions, true);
-            index = index + objectSize;
-            if (buffer[index - 1] !== 0)
-                throw new BSONError('invalid array terminator byte');
-            if (index !== stopIndex)
-                throw new BSONError('corrupted array bson');
-        }
-        else if (elementType === BSON_DATA_UNDEFINED) {
-            value = undefined;
-        }
-        else if (elementType === BSON_DATA_NULL) {
-            value = null;
-        }
-        else if (elementType === BSON_DATA_LONG) {
-            if (useBigInt64) {
-                value = NumberUtils.getBigInt64LE(buffer, index);
-                index += 8;
-            }
-            else {
-                const lowBits = NumberUtils.getInt32LE(buffer, index);
-                const highBits = NumberUtils.getInt32LE(buffer, index + 4);
-                index += 8;
-                const long = new Long(lowBits, highBits);
-                if (promoteLongs && promoteValues === true) {
-                    value =
-                        long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG)
-                            ? long.toNumber()
-                            : long;
-                }
-                else {
-                    value = long;
-                }
-            }
-        }
-        else if (elementType === BSON_DATA_DECIMAL128) {
-            const bytes = ByteUtils.allocateUnsafe(16);
-            for (let i = 0; i < 16; i++)
-                bytes[i] = buffer[index + i];
-            index = index + 16;
-            value = new Decimal128(bytes);
-        }
-        else if (elementType === BSON_DATA_BINARY) {
-            let binarySize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            const totalBinarySize = binarySize;
-            const subType = buffer[index++];
-            if (binarySize < 0)
-                throw new BSONError('Negative binary type element size found');
-            if (binarySize > buffer.byteLength)
-                throw new BSONError('Binary type size larger than document size');
-            if (buffer['slice'] != null) {
-                if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
-                    binarySize = NumberUtils.getInt32LE(buffer, index);
-                    index += 4;
-                    if (binarySize < 0)
-                        throw new BSONError('Negative binary type element size found for subtype 0x02');
-                    if (binarySize > totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
-                    if (binarySize < totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
-                }
-                if (promoteBuffers && promoteValues) {
-                    value = ByteUtils.toLocalBufferType(buffer.slice(index, index + binarySize));
-                }
-                else {
-                    value = new Binary(buffer.slice(index, index + binarySize), subType);
-                    if (subType === BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
-                        value = value.toUUID();
-                    }
-                }
-            }
-            else {
-                if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
-                    binarySize = NumberUtils.getInt32LE(buffer, index);
-                    index += 4;
-                    if (binarySize < 0)
-                        throw new BSONError('Negative binary type element size found for subtype 0x02');
-                    if (binarySize > totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
-                    if (binarySize < totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
-                }
-                if (promoteBuffers && promoteValues) {
-                    value = ByteUtils.allocateUnsafe(binarySize);
-                    for (i = 0; i < binarySize; i++) {
-                        value[i] = buffer[index + i];
-                    }
-                }
-                else {
-                    value = new Binary(buffer.slice(index, index + binarySize), subType);
-                    if (subType === BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
-                        value = value.toUUID();
-                    }
-                }
-            }
-            index = index + binarySize;
-        }
-        else if (elementType === BSON_DATA_REGEXP && bsonRegExp === false) {
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const source = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            const optionsArray = new Array(regExpOptions.length);
-            for (i = 0; i < regExpOptions.length; i++) {
-                switch (regExpOptions[i]) {
-                    case 'm':
-                        optionsArray[i] = 'm';
-                        break;
-                    case 's':
-                        optionsArray[i] = 'g';
-                        break;
-                    case 'i':
-                        optionsArray[i] = 'i';
-                        break;
-                }
-            }
-            value = new RegExp(source, optionsArray.join(''));
-        }
-        else if (elementType === BSON_DATA_REGEXP && bsonRegExp === true) {
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const source = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            value = new BSONRegExp(source, regExpOptions);
-        }
-        else if (elementType === BSON_DATA_SYMBOL) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            const symbol = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            value = promoteValues ? symbol : new BSONSymbol(symbol);
-            index = index + stringSize;
-        }
-        else if (elementType === BSON_DATA_TIMESTAMP) {
-            value = new Timestamp({
-                i: NumberUtils.getUint32LE(buffer, index),
-                t: NumberUtils.getUint32LE(buffer, index + 4)
-            });
-            index += 8;
-        }
-        else if (elementType === BSON_DATA_MIN_KEY) {
-            value = new MinKey();
-        }
-        else if (elementType === BSON_DATA_MAX_KEY) {
-            value = new MaxKey();
-        }
-        else if (elementType === BSON_DATA_CODE) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            const functionString = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            value = new Code(functionString);
-            index = index + stringSize;
-        }
-        else if (elementType === BSON_DATA_CODE_W_SCOPE) {
-            const totalSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (totalSize < 4 + 4 + 4 + 1) {
-                throw new BSONError('code_w_scope total size shorter minimum expected length');
-            }
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            const functionString = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            index = index + stringSize;
-            const _index = index;
-            const objectSize = NumberUtils.getInt32LE(buffer, index);
-            const scopeObject = deserializeObject(buffer, _index, options, false);
-            index = index + objectSize;
-            if (totalSize < 4 + 4 + objectSize + stringSize) {
-                throw new BSONError('code_w_scope total size is too short, truncating scope');
-            }
-            if (totalSize > 4 + 4 + objectSize + stringSize) {
-                throw new BSONError('code_w_scope total size is too long, clips outer document');
-            }
-            value = new Code(functionString, scopeObject);
-        }
-        else if (elementType === BSON_DATA_DBPOINTER) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0)
-                throw new BSONError('bad string length in bson');
-            if (validation != null && validation.utf8) {
-                if (!validateUtf8(buffer, index, index + stringSize - 1)) {
-                    throw new BSONError('Invalid UTF-8 string in BSON document');
-                }
-            }
-            const namespace = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, false);
-            index = index + stringSize;
-            const oidBuffer = ByteUtils.allocateUnsafe(12);
-            for (let i = 0; i < 12; i++)
-                oidBuffer[i] = buffer[index + i];
-            const oid = new ObjectId(oidBuffer);
-            index = index + 12;
-            value = new DBRef(namespace, oid);
-        }
-        else {
-            throw new BSONError(`Detected unknown BSON type ${elementType.toString(16)} for fieldname "${name}"`);
-        }
-        if (name === '__proto__') {
-            Object.defineProperty(object, name, {
-                value,
-                writable: true,
-                enumerable: true,
-                configurable: true
-            });
-        }
-        else {
-            object[name] = value;
-        }
-    }
-    if (size !== index - startIndex) {
-        if (isArray)
-            throw new BSONError('corrupt array bson');
-        throw new BSONError('corrupt object bson');
-    }
-    if (!isPossibleDBRef)
-        return object;
-    if (isDBRefLike(object)) {
-        const copy = Object.assign({}, object);
-        delete copy.$ref;
-        delete copy.$id;
-        delete copy.$db;
-        return new DBRef(object.$ref, object.$id, object.$db, copy);
-    }
-    return object;
-}
-
-const regexp = /\x00/;
-const ignoreKeys = new Set(['$db', '$ref', '$id', '$clusterTime']);
-function serializeString(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_STRING;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes + 1;
-    buffer[index - 1] = 0;
-    const size = ByteUtils.encodeUTF8Into(buffer, value, index + 4);
-    NumberUtils.setInt32LE(buffer, index, size + 1);
-    index = index + 4 + size;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeNumber(buffer, key, value, index) {
-    const isNegativeZero = Object.is(value, -0);
-    const type = !isNegativeZero &&
-        Number.isSafeInteger(value) &&
-        value <= BSON_INT32_MAX &&
-        value >= BSON_INT32_MIN
-        ? BSON_DATA_INT
-        : BSON_DATA_NUMBER;
-    buffer[index++] = type;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0x00;
-    if (type === BSON_DATA_INT) {
-        index += NumberUtils.setInt32LE(buffer, index, value);
-    }
-    else {
-        index += NumberUtils.setFloat64LE(buffer, index, value);
-    }
-    return index;
-}
-function serializeBigInt(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_LONG;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index += numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += NumberUtils.setBigInt64LE(buffer, index, value);
-    return index;
-}
-function serializeNull(buffer, key, _, index) {
-    buffer[index++] = BSON_DATA_NULL;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeBoolean(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_BOOLEAN;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    buffer[index++] = value ? 1 : 0;
-    return index;
-}
-function serializeDate(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_DATE;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const dateInMilis = Long.fromNumber(value.getTime());
-    const lowBits = dateInMilis.getLowBits();
-    const highBits = dateInMilis.getHighBits();
-    index += NumberUtils.setInt32LE(buffer, index, lowBits);
-    index += NumberUtils.setInt32LE(buffer, index, highBits);
-    return index;
-}
-function serializeRegExp(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_REGEXP;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    if (value.source && value.source.match(regexp) != null) {
-        throw new BSONError('value ' + value.source + ' must not contain null bytes');
-    }
-    index = index + ByteUtils.encodeUTF8Into(buffer, value.source, index);
-    buffer[index++] = 0x00;
-    if (value.ignoreCase)
-        buffer[index++] = 0x69;
-    if (value.global)
-        buffer[index++] = 0x73;
-    if (value.multiline)
-        buffer[index++] = 0x6d;
-    buffer[index++] = 0x00;
-    return index;
-}
-function serializeBSONRegExp(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_REGEXP;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    if (value.pattern.match(regexp) != null) {
-        throw new BSONError('pattern ' + value.pattern + ' must not contain null bytes');
-    }
-    index = index + ByteUtils.encodeUTF8Into(buffer, value.pattern, index);
-    buffer[index++] = 0x00;
-    const sortedOptions = value.options.split('').sort().join('');
-    index = index + ByteUtils.encodeUTF8Into(buffer, sortedOptions, index);
-    buffer[index++] = 0x00;
-    return index;
-}
-function serializeMinMax(buffer, key, value, index) {
-    if (value === null) {
-        buffer[index++] = BSON_DATA_NULL;
-    }
-    else if (value._bsontype === 'MinKey') {
-        buffer[index++] = BSON_DATA_MIN_KEY;
-    }
-    else {
-        buffer[index++] = BSON_DATA_MAX_KEY;
-    }
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeObjectId(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_OID;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += value.serializeInto(buffer, index);
-    return index;
-}
-function serializeBuffer(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_BINARY;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const size = value.length;
-    index += NumberUtils.setInt32LE(buffer, index, size);
-    buffer[index++] = BSON_BINARY_SUBTYPE_DEFAULT;
-    if (size <= 16) {
-        for (let i = 0; i < size; i++)
-            buffer[index + i] = value[i];
-    }
-    else {
-        buffer.set(value, index);
-    }
-    index = index + size;
-    return index;
-}
-function serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path) {
-    if (path.has(value)) {
-        throw new BSONError('Cannot convert circular structure to BSON');
-    }
-    path.add(value);
-    buffer[index++] = Array.isArray(value) ? BSON_DATA_ARRAY : BSON_DATA_OBJECT;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const endIndex = serializeInto(buffer, value, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path);
-    path.delete(value);
-    return endIndex;
-}
-function serializeDecimal128(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_DECIMAL128;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    for (let i = 0; i < 16; i++)
-        buffer[index + i] = value.bytes[i];
-    return index + 16;
-}
-function serializeLong(buffer, key, value, index) {
-    buffer[index++] =
-        value._bsontype === 'Long' ? BSON_DATA_LONG : BSON_DATA_TIMESTAMP;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const lowBits = value.getLowBits();
-    const highBits = value.getHighBits();
-    index += NumberUtils.setInt32LE(buffer, index, lowBits);
-    index += NumberUtils.setInt32LE(buffer, index, highBits);
-    return index;
-}
-function serializeInt32(buffer, key, value, index) {
-    value = value.valueOf();
-    buffer[index++] = BSON_DATA_INT;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += NumberUtils.setInt32LE(buffer, index, value);
-    return index;
-}
-function serializeDouble(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_NUMBER;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += NumberUtils.setFloat64LE(buffer, index, value.value);
-    return index;
-}
-function serializeFunction(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_CODE;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const functionString = value.toString();
-    const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-    NumberUtils.setInt32LE(buffer, index, size);
-    index = index + 4 + size - 1;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeCode(buffer, key, value, index, checkKeys = false, depth = 0, serializeFunctions = false, ignoreUndefined = true, path) {
-    if (value.scope && typeof value.scope === 'object') {
-        buffer[index++] = BSON_DATA_CODE_W_SCOPE;
-        const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-        index = index + numberOfWrittenBytes;
-        buffer[index++] = 0;
-        let startIndex = index;
-        const functionString = value.code;
-        index = index + 4;
-        const codeSize = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-        NumberUtils.setInt32LE(buffer, index, codeSize);
-        buffer[index + 4 + codeSize - 1] = 0;
-        index = index + codeSize + 4;
-        const endIndex = serializeInto(buffer, value.scope, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path);
-        index = endIndex - 1;
-        const totalSize = endIndex - startIndex;
-        startIndex += NumberUtils.setInt32LE(buffer, startIndex, totalSize);
-        buffer[index++] = 0;
-    }
-    else {
-        buffer[index++] = BSON_DATA_CODE;
-        const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-        index = index + numberOfWrittenBytes;
-        buffer[index++] = 0;
-        const functionString = value.code.toString();
-        const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-        NumberUtils.setInt32LE(buffer, index, size);
-        index = index + 4 + size - 1;
-        buffer[index++] = 0;
-    }
-    return index;
-}
-function serializeBinary(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_BINARY;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const data = value.buffer;
-    let size = value.position;
-    if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY)
-        size = size + 4;
-    index += NumberUtils.setInt32LE(buffer, index, size);
-    buffer[index++] = value.sub_type;
-    if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
-        size = size - 4;
-        index += NumberUtils.setInt32LE(buffer, index, size);
-    }
-    if (size <= 16) {
-        for (let i = 0; i < size; i++)
-            buffer[index + i] = data[i];
-    }
-    else {
-        buffer.set(data, index);
-    }
-    index = index + value.position;
-    return index;
-}
-function serializeSymbol(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_SYMBOL;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const size = ByteUtils.encodeUTF8Into(buffer, value.value, index + 4) + 1;
-    NumberUtils.setInt32LE(buffer, index, size);
-    index = index + 4 + size - 1;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path) {
-    buffer[index++] = BSON_DATA_OBJECT;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    let startIndex = index;
-    let output = {
-        $ref: value.collection || value.namespace,
-        $id: value.oid
-    };
-    if (value.db != null) {
-        output.$db = value.db;
-    }
-    output = Object.assign(output, value.fields);
-    const endIndex = serializeInto(buffer, output, false, index, depth + 1, serializeFunctions, true, path);
-    const size = endIndex - startIndex;
-    startIndex += NumberUtils.setInt32LE(buffer, index, size);
-    return endIndex;
-}
-function serializeInto(buffer, object, checkKeys, startingIndex, depth, serializeFunctions, ignoreUndefined, path) {
-    if (path == null) {
-        if (object == null) {
-            buffer[0] = 0x05;
-            buffer[1] = 0x00;
-            buffer[2] = 0x00;
-            buffer[3] = 0x00;
-            buffer[4] = 0x00;
-            return 5;
-        }
-        if (Array.isArray(object)) {
-            throw new BSONError('serialize does not support an array as the root input');
-        }
-        if (typeof object !== 'object') {
-            throw new BSONError('serialize does not support non-object as the root input');
-        }
-        else if ('_bsontype' in object && typeof object._bsontype === 'string') {
-            throw new BSONError(`BSON types cannot be serialized as a document`);
-        }
-        else if (isDate(object) ||
-            isRegExp(object) ||
-            isUint8Array(object) ||
-            isAnyArrayBuffer(object)) {
-            throw new BSONError(`date, regexp, typedarray, and arraybuffer cannot be BSON documents`);
-        }
-        path = new Set();
-    }
-    path.add(object);
-    let index = startingIndex + 4;
-    if (Array.isArray(object)) {
-        for (let i = 0; i < object.length; i++) {
-            const key = `${i}`;
-            let value = object[i];
-            if (typeof value?.toBSON === 'function') {
-                value = value.toBSON();
-            }
-            if (typeof value === 'string') {
-                index = serializeString(buffer, key, value, index);
-            }
-            else if (typeof value === 'number') {
-                index = serializeNumber(buffer, key, value, index);
-            }
-            else if (typeof value === 'bigint') {
-                index = serializeBigInt(buffer, key, value, index);
-            }
-            else if (typeof value === 'boolean') {
-                index = serializeBoolean(buffer, key, value, index);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                index = serializeDate(buffer, key, value, index);
-            }
-            else if (value === undefined) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (value === null) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (isUint8Array(value)) {
-                index = serializeBuffer(buffer, key, value, index);
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                index = serializeRegExp(buffer, key, value, index);
-            }
-            else if (typeof value === 'object' && value._bsontype == null) {
-                index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'object' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value._bsontype === 'ObjectId') {
-                index = serializeObjectId(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Decimal128') {
-                index = serializeDecimal128(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-                index = serializeLong(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Double') {
-                index = serializeDouble(buffer, key, value, index);
-            }
-            else if (typeof value === 'function' && serializeFunctions) {
-                index = serializeFunction(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Code') {
-                index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (value._bsontype === 'Binary') {
-                index = serializeBinary(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'BSONSymbol') {
-                index = serializeSymbol(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'DBRef') {
-                index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                index = serializeBSONRegExp(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Int32') {
-                index = serializeInt32(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                index = serializeMinMax(buffer, key, value, index);
-            }
-            else if (typeof value._bsontype !== 'undefined') {
-                throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-            }
-        }
-    }
-    else if (object instanceof Map || isMap(object)) {
-        const iterator = object.entries();
-        let done = false;
-        while (!done) {
-            const entry = iterator.next();
-            done = !!entry.done;
-            if (done)
-                continue;
-            const key = entry.value[0];
-            let value = entry.value[1];
-            if (typeof value?.toBSON === 'function') {
-                value = value.toBSON();
-            }
-            const type = typeof value;
-            if (typeof key === 'string' && !ignoreKeys.has(key)) {
-                if (key.match(regexp) != null) {
-                    throw new BSONError('key ' + key + ' must not contain null bytes');
-                }
-                if (checkKeys) {
-                    if ('$' === key[0]) {
-                        throw new BSONError('key ' + key + " must not start with '$'");
-                    }
-                    else if (key.includes('.')) {
-                        throw new BSONError('key ' + key + " must not contain '.'");
-                    }
-                }
-            }
-            if (type === 'string') {
-                index = serializeString(buffer, key, value, index);
-            }
-            else if (type === 'number') {
-                index = serializeNumber(buffer, key, value, index);
-            }
-            else if (type === 'bigint') {
-                index = serializeBigInt(buffer, key, value, index);
-            }
-            else if (type === 'boolean') {
-                index = serializeBoolean(buffer, key, value, index);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                index = serializeDate(buffer, key, value, index);
-            }
-            else if (value === null || (value === undefined && ignoreUndefined === false)) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (isUint8Array(value)) {
-                index = serializeBuffer(buffer, key, value, index);
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                index = serializeRegExp(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype == null) {
-                index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'object' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value._bsontype === 'ObjectId') {
-                index = serializeObjectId(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype === 'Decimal128') {
-                index = serializeDecimal128(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-                index = serializeLong(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Double') {
-                index = serializeDouble(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Code') {
-                index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'function' && serializeFunctions) {
-                index = serializeFunction(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Binary') {
-                index = serializeBinary(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'BSONSymbol') {
-                index = serializeSymbol(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'DBRef') {
-                index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                index = serializeBSONRegExp(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Int32') {
-                index = serializeInt32(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                index = serializeMinMax(buffer, key, value, index);
-            }
-            else if (typeof value._bsontype !== 'undefined') {
-                throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-            }
-        }
-    }
-    else {
-        if (typeof object?.toBSON === 'function') {
-            object = object.toBSON();
-            if (object != null && typeof object !== 'object') {
-                throw new BSONError('toBSON function did not return an object');
-            }
-        }
-        for (const key of Object.keys(object)) {
-            let value = object[key];
-            if (typeof value?.toBSON === 'function') {
-                value = value.toBSON();
-            }
-            const type = typeof value;
-            if (typeof key === 'string' && !ignoreKeys.has(key)) {
-                if (key.match(regexp) != null) {
-                    throw new BSONError('key ' + key + ' must not contain null bytes');
-                }
-                if (checkKeys) {
-                    if ('$' === key[0]) {
-                        throw new BSONError('key ' + key + " must not start with '$'");
-                    }
-                    else if (key.includes('.')) {
-                        throw new BSONError('key ' + key + " must not contain '.'");
-                    }
-                }
-            }
-            if (type === 'string') {
-                index = serializeString(buffer, key, value, index);
-            }
-            else if (type === 'number') {
-                index = serializeNumber(buffer, key, value, index);
-            }
-            else if (type === 'bigint') {
-                index = serializeBigInt(buffer, key, value, index);
-            }
-            else if (type === 'boolean') {
-                index = serializeBoolean(buffer, key, value, index);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                index = serializeDate(buffer, key, value, index);
-            }
-            else if (value === undefined) {
-                if (ignoreUndefined === false)
-                    index = serializeNull(buffer, key, value, index);
-            }
-            else if (value === null) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (isUint8Array(value)) {
-                index = serializeBuffer(buffer, key, value, index);
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                index = serializeRegExp(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype == null) {
-                index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'object' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value._bsontype === 'ObjectId') {
-                index = serializeObjectId(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype === 'Decimal128') {
-                index = serializeDecimal128(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-                index = serializeLong(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Double') {
-                index = serializeDouble(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Code') {
-                index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'function' && serializeFunctions) {
-                index = serializeFunction(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Binary') {
-                index = serializeBinary(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'BSONSymbol') {
-                index = serializeSymbol(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'DBRef') {
-                index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                index = serializeBSONRegExp(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Int32') {
-                index = serializeInt32(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                index = serializeMinMax(buffer, key, value, index);
-            }
-            else if (typeof value._bsontype !== 'undefined') {
-                throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-            }
-        }
-    }
-    path.delete(object);
-    buffer[index++] = 0x00;
-    const size = index - startingIndex;
-    startingIndex += NumberUtils.setInt32LE(buffer, startingIndex, size);
-    return index;
-}
-
-function isBSONType(value) {
-    return (value != null &&
-        typeof value === 'object' &&
-        '_bsontype' in value &&
-        typeof value._bsontype === 'string');
-}
-const keysToCodecs = {
-    $oid: ObjectId,
-    $binary: Binary,
-    $uuid: Binary,
-    $symbol: BSONSymbol,
-    $numberInt: Int32,
-    $numberDecimal: Decimal128,
-    $numberDouble: Double,
-    $numberLong: Long,
-    $minKey: MinKey,
-    $maxKey: MaxKey,
-    $regex: BSONRegExp,
-    $regularExpression: BSONRegExp,
-    $timestamp: Timestamp
-};
-function deserializeValue(value, options = {}) {
-    if (typeof value === 'number') {
-        const in32BitRange = value <= BSON_INT32_MAX && value >= BSON_INT32_MIN;
-        const in64BitRange = value <= BSON_INT64_MAX && value >= BSON_INT64_MIN;
-        if (options.relaxed || options.legacy) {
-            return value;
-        }
-        if (Number.isInteger(value) && !Object.is(value, -0)) {
-            if (in32BitRange) {
-                return new Int32(value);
-            }
-            if (in64BitRange) {
-                if (options.useBigInt64) {
-                    return BigInt(value);
-                }
-                return Long.fromNumber(value);
-            }
-        }
-        return new Double(value);
-    }
-    if (value == null || typeof value !== 'object')
-        return value;
-    if (value.$undefined)
-        return null;
-    const keys = Object.keys(value).filter(k => k.startsWith('$') && value[k] != null);
-    for (let i = 0; i < keys.length; i++) {
-        const c = keysToCodecs[keys[i]];
-        if (c)
-            return c.fromExtendedJSON(value, options);
-    }
-    if (value.$date != null) {
-        const d = value.$date;
-        const date = new Date();
-        if (options.legacy) {
-            if (typeof d === 'number')
-                date.setTime(d);
-            else if (typeof d === 'string')
-                date.setTime(Date.parse(d));
-            else if (typeof d === 'bigint')
-                date.setTime(Number(d));
-            else
-                throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
-        }
-        else {
-            if (typeof d === 'string')
-                date.setTime(Date.parse(d));
-            else if (Long.isLong(d))
-                date.setTime(d.toNumber());
-            else if (typeof d === 'number' && options.relaxed)
-                date.setTime(d);
-            else if (typeof d === 'bigint')
-                date.setTime(Number(d));
-            else
-                throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
-        }
-        return date;
-    }
-    if (value.$code != null) {
-        const copy = Object.assign({}, value);
-        if (value.$scope) {
-            copy.$scope = deserializeValue(value.$scope);
-        }
-        return Code.fromExtendedJSON(value);
-    }
-    if (isDBRefLike(value) || value.$dbPointer) {
-        const v = value.$ref ? value : value.$dbPointer;
-        if (v instanceof DBRef)
-            return v;
-        const dollarKeys = Object.keys(v).filter(k => k.startsWith('$'));
-        let valid = true;
-        dollarKeys.forEach(k => {
-            if (['$ref', '$id', '$db'].indexOf(k) === -1)
-                valid = false;
-        });
-        if (valid)
-            return DBRef.fromExtendedJSON(v);
-    }
-    return value;
-}
-function serializeArray(array, options) {
-    return array.map((v, index) => {
-        options.seenObjects.push({ propertyName: `index ${index}`, obj: null });
-        try {
-            return serializeValue(v, options);
-        }
-        finally {
-            options.seenObjects.pop();
-        }
-    });
-}
-function getISOString(date) {
-    const isoStr = date.toISOString();
-    return date.getUTCMilliseconds() !== 0 ? isoStr : isoStr.slice(0, -5) + 'Z';
-}
-function serializeValue(value, options) {
-    if (value instanceof Map || isMap(value)) {
-        const obj = Object.create(null);
-        for (const [k, v] of value) {
-            if (typeof k !== 'string') {
-                throw new BSONError('Can only serialize maps with string keys');
-            }
-            obj[k] = v;
-        }
-        return serializeValue(obj, options);
-    }
-    if ((typeof value === 'object' || typeof value === 'function') && value !== null) {
-        const index = options.seenObjects.findIndex(entry => entry.obj === value);
-        if (index !== -1) {
-            const props = options.seenObjects.map(entry => entry.propertyName);
-            const leadingPart = props
-                .slice(0, index)
-                .map(prop => `${prop} -> `)
-                .join('');
-            const alreadySeen = props[index];
-            const circularPart = ' -> ' +
-                props
-                    .slice(index + 1, props.length - 1)
-                    .map(prop => `${prop} -> `)
-                    .join('');
-            const current = props[props.length - 1];
-            const leadingSpace = ' '.repeat(leadingPart.length + alreadySeen.length / 2);
-            const dashes = '-'.repeat(circularPart.length + (alreadySeen.length + current.length) / 2 - 1);
-            throw new BSONError('Converting circular structure to EJSON:\n' +
-                `    ${leadingPart}${alreadySeen}${circularPart}${current}\n` +
-                `    ${leadingSpace}\\${dashes}/`);
-        }
-        options.seenObjects[options.seenObjects.length - 1].obj = value;
-    }
-    if (Array.isArray(value))
-        return serializeArray(value, options);
-    if (value === undefined)
-        return null;
-    if (value instanceof Date || isDate(value)) {
-        const dateNum = value.getTime(), inRange = dateNum > -1 && dateNum < 253402318800000;
-        if (options.legacy) {
-            return options.relaxed && inRange
-                ? { $date: value.getTime() }
-                : { $date: getISOString(value) };
-        }
-        return options.relaxed && inRange
-            ? { $date: getISOString(value) }
-            : { $date: { $numberLong: value.getTime().toString() } };
-    }
-    if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) {
-        if (Number.isInteger(value) && !Object.is(value, -0)) {
-            if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
-                return { $numberInt: value.toString() };
-            }
-            if (value >= BSON_INT64_MIN && value <= BSON_INT64_MAX) {
-                return { $numberLong: value.toString() };
-            }
-        }
-        return { $numberDouble: Object.is(value, -0) ? '-0.0' : value.toString() };
-    }
-    if (typeof value === 'bigint') {
-        if (!options.relaxed) {
-            return { $numberLong: BigInt.asIntN(64, value).toString() };
-        }
-        return Number(BigInt.asIntN(64, value));
-    }
-    if (value instanceof RegExp || isRegExp(value)) {
-        let flags = value.flags;
-        if (flags === undefined) {
-            const match = value.toString().match(/[gimuy]*$/);
-            if (match) {
-                flags = match[0];
-            }
-        }
-        const rx = new BSONRegExp(value.source, flags);
-        return rx.toExtendedJSON(options);
-    }
-    if (value != null && typeof value === 'object')
-        return serializeDocument(value, options);
-    return value;
-}
-const BSON_TYPE_MAPPINGS = {
-    Binary: (o) => new Binary(o.value(), o.sub_type),
-    Code: (o) => new Code(o.code, o.scope),
-    DBRef: (o) => new DBRef(o.collection || o.namespace, o.oid, o.db, o.fields),
-    Decimal128: (o) => new Decimal128(o.bytes),
-    Double: (o) => new Double(o.value),
-    Int32: (o) => new Int32(o.value),
-    Long: (o) => Long.fromBits(o.low != null ? o.low : o.low_, o.low != null ? o.high : o.high_, o.low != null ? o.unsigned : o.unsigned_),
-    MaxKey: () => new MaxKey(),
-    MinKey: () => new MinKey(),
-    ObjectId: (o) => new ObjectId(o),
-    BSONRegExp: (o) => new BSONRegExp(o.pattern, o.options),
-    BSONSymbol: (o) => new BSONSymbol(o.value),
-    Timestamp: (o) => Timestamp.fromBits(o.low, o.high)
-};
-function serializeDocument(doc, options) {
-    if (doc == null || typeof doc !== 'object')
-        throw new BSONError('not an object instance');
-    const bsontype = doc._bsontype;
-    if (typeof bsontype === 'undefined') {
-        const _doc = {};
-        for (const name of Object.keys(doc)) {
-            options.seenObjects.push({ propertyName: name, obj: null });
-            try {
-                const value = serializeValue(doc[name], options);
-                if (name === '__proto__') {
-                    Object.defineProperty(_doc, name, {
-                        value,
-                        writable: true,
-                        enumerable: true,
-                        configurable: true
-                    });
-                }
-                else {
-                    _doc[name] = value;
-                }
-            }
-            finally {
-                options.seenObjects.pop();
-            }
-        }
-        return _doc;
-    }
-    else if (doc != null &&
-        typeof doc === 'object' &&
-        typeof doc._bsontype === 'string' &&
-        doc[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-        throw new BSONVersionError();
-    }
-    else if (isBSONType(doc)) {
-        let outDoc = doc;
-        if (typeof outDoc.toExtendedJSON !== 'function') {
-            const mapper = BSON_TYPE_MAPPINGS[doc._bsontype];
-            if (!mapper) {
-                throw new BSONError('Unrecognized or invalid _bsontype: ' + doc._bsontype);
-            }
-            outDoc = mapper(outDoc);
-        }
-        if (bsontype === 'Code' && outDoc.scope) {
-            outDoc = new Code(outDoc.code, serializeValue(outDoc.scope, options));
-        }
-        else if (bsontype === 'DBRef' && outDoc.oid) {
-            outDoc = new DBRef(serializeValue(outDoc.collection, options), serializeValue(outDoc.oid, options), serializeValue(outDoc.db, options), serializeValue(outDoc.fields, options));
-        }
-        return outDoc.toExtendedJSON(options);
-    }
-    else {
-        throw new BSONError('_bsontype must be a string, but was: ' + typeof bsontype);
-    }
-}
-function parse(text, options) {
-    const ejsonOptions = {
-        useBigInt64: options?.useBigInt64 ?? false,
-        relaxed: options?.relaxed ?? true,
-        legacy: options?.legacy ?? false
-    };
-    return JSON.parse(text, (key, value) => {
-        if (key.indexOf('\x00') !== -1) {
-            throw new BSONError(`BSON Document field names cannot contain null bytes, found: ${JSON.stringify(key)}`);
-        }
-        return deserializeValue(value, ejsonOptions);
-    });
-}
-function stringify(value, replacer, space, options) {
-    if (space != null && typeof space === 'object') {
-        options = space;
-        space = 0;
-    }
-    if (replacer != null && typeof replacer === 'object' && !Array.isArray(replacer)) {
-        options = replacer;
-        replacer = undefined;
-        space = 0;
-    }
-    const serializeOptions = Object.assign({ relaxed: true, legacy: false }, options, {
-        seenObjects: [{ propertyName: '(root)', obj: null }]
-    });
-    const doc = serializeValue(value, serializeOptions);
-    return JSON.stringify(doc, replacer, space);
-}
-function EJSONserialize(value, options) {
-    options = options || {};
-    return JSON.parse(stringify(value, options));
-}
-function EJSONdeserialize(ejson, options) {
-    options = options || {};
-    return parse(JSON.stringify(ejson), options);
-}
-const EJSON = Object.create(null);
-EJSON.parse = parse;
-EJSON.stringify = stringify;
-EJSON.serialize = EJSONserialize;
-EJSON.deserialize = EJSONdeserialize;
-Object.freeze(EJSON);
-
-const MAXSIZE = 1024 * 1024 * 17;
-let buffer = ByteUtils.allocate(MAXSIZE);
-function setInternalBufferSize(size) {
-    if (buffer.length < size) {
-        buffer = ByteUtils.allocate(size);
-    }
-}
-function serialize(object, options = {}) {
-    const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-    const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-    const minInternalBufferSize = typeof options.minInternalBufferSize === 'number' ? options.minInternalBufferSize : MAXSIZE;
-    if (buffer.length < minInternalBufferSize) {
-        buffer = ByteUtils.allocate(minInternalBufferSize);
-    }
-    const serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, null);
-    const finishedBuffer = ByteUtils.allocateUnsafe(serializationIndex);
-    finishedBuffer.set(buffer.subarray(0, serializationIndex), 0);
-    return finishedBuffer;
-}
-function serializeWithBufferAndIndex(object, finalBuffer, options = {}) {
-    const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-    const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-    const startIndex = typeof options.index === 'number' ? options.index : 0;
-    const serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, null);
-    finalBuffer.set(buffer.subarray(0, serializationIndex), startIndex);
-    return startIndex + serializationIndex - 1;
-}
-function deserialize(buffer, options = {}) {
-    return internalDeserialize(ByteUtils.toLocalBufferType(buffer), options);
-}
-function calculateObjectSize(object, options = {}) {
-    options = options || {};
-    const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-    return internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined);
-}
-function deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options) {
-    const internalOptions = Object.assign({ allowObjectSmallerThanBufferSize: true, index: 0 }, options);
-    const bufferData = ByteUtils.toLocalBufferType(data);
-    let index = startIndex;
-    for (let i = 0; i < numberOfDocuments; i++) {
-        const size = NumberUtils.getInt32LE(bufferData, index);
-        internalOptions.index = index;
-        documents[docStartIndex + i] = internalDeserialize(bufferData, internalOptions);
-        index = index + size;
-    }
-    return index;
-}
-
-var bson = /*#__PURE__*/Object.freeze({
-__proto__: null,
-BSONError: BSONError,
-BSONRegExp: BSONRegExp,
-BSONRuntimeError: BSONRuntimeError,
-BSONSymbol: BSONSymbol,
-BSONType: BSONType,
-BSONValue: BSONValue,
-BSONVersionError: BSONVersionError,
-Binary: Binary,
-Code: Code,
-DBRef: DBRef,
-Decimal128: Decimal128,
-Double: Double,
-EJSON: EJSON,
-Int32: Int32,
-Long: Long,
-MaxKey: MaxKey,
-MinKey: MinKey,
-ObjectId: ObjectId,
-Timestamp: Timestamp,
-UUID: UUID,
-calculateObjectSize: calculateObjectSize,
-deserialize: deserialize,
-deserializeStream: deserializeStream,
-serialize: serialize,
-serializeWithBufferAndIndex: serializeWithBufferAndIndex,
-setInternalBufferSize: setInternalBufferSize
-});
-
-exports.BSON = bson;
-exports.BSONError = BSONError;
-exports.BSONRegExp = BSONRegExp;
-exports.BSONRuntimeError = BSONRuntimeError;
-exports.BSONSymbol = BSONSymbol;
-exports.BSONType = BSONType;
-exports.BSONValue = BSONValue;
-exports.BSONVersionError = BSONVersionError;
-exports.Binary = Binary;
-exports.Code = Code;
-exports.DBRef = DBRef;
-exports.Decimal128 = Decimal128;
-exports.Double = Double;
-exports.EJSON = EJSON;
-exports.Int32 = Int32;
-exports.Long = Long;
-exports.MaxKey = MaxKey;
-exports.MinKey = MinKey;
-exports.ObjectId = ObjectId;
-exports.Timestamp = Timestamp;
-exports.UUID = UUID;
-exports.calculateObjectSize = calculateObjectSize;
-exports.deserialize = deserialize;
-exports.deserializeStream = deserializeStream;
-exports.serialize = serialize;
-exports.serializeWithBufferAndIndex = serializeWithBufferAndIndex;
-exports.setInternalBufferSize = setInternalBufferSize;
-
-return exports;
-
-})({});
-//# sourceMappingURL=bson.bundle.js.map
diff --git a/server/data-import/node_modules/bson/lib/bson.bundle.js.map b/server/data-import/node_modules/bson/lib/bson.bundle.js.map
deleted file mode 100644
index 24a5649320d80fec7e7fb279f87b9bb5eb9df663..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/lib/bson.bundle.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"bson.bundle.js","sources":["../src/parser/utils.ts","../src/constants.ts","../src/error.ts","../src/validate_utf8.ts","../src/utils/latin.ts","../src/utils/node_byte_utils.ts","../src/utils/web_byte_utils.ts","../src/utils/byte_utils.ts","../src/bson_value.ts","../src/binary.ts","../src/code.ts","../src/db_ref.ts","../src/long.ts","../src/decimal128.ts","../src/double.ts","../src/int_32.ts","../src/max_key.ts","../src/min_key.ts","../src/utils/number_utils.ts","../src/objectid.ts","../src/parser/calculate_size.ts","../src/regexp.ts","../src/symbol.ts","../src/timestamp.ts","../src/parser/deserializer.ts","../src/parser/serializer.ts","../src/extended_json.ts","../src/bson.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["constants.JS_INT_MIN","constants.JS_INT_MAX","constants.BSON_INT32_MIN","constants.BSON_INT32_MAX","constants.BSON_MAJOR_VERSION","constants.BSON_DATA_STRING","constants.BSON_DATA_OID","constants.BSON_DATA_INT","constants.BSON_DATA_NUMBER","constants.BSON_DATA_DATE","constants.BSON_DATA_BOOLEAN","constants.BSON_DATA_OBJECT","constants.BSON_DATA_ARRAY","constants.BSON_DATA_UNDEFINED","constants.BSON_DATA_NULL","constants.BSON_DATA_LONG","constants.BSON_DATA_DECIMAL128","constants.BSON_DATA_BINARY","constants.BSON_BINARY_SUBTYPE_UUID_NEW","constants.BSON_DATA_REGEXP","constants.BSON_DATA_SYMBOL","constants.BSON_DATA_TIMESTAMP","constants.BSON_DATA_MIN_KEY","constants.BSON_DATA_MAX_KEY","constants.BSON_DATA_CODE","constants.BSON_DATA_CODE_W_SCOPE","constants.BSON_DATA_DBPOINTER","constants.BSON_BINARY_SUBTYPE_DEFAULT"],"mappings":"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AC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GA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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/bson/lib/bson.cjs b/server/data-import/node_modules/bson/lib/bson.cjs
deleted file mode 100644
index 50ba29520aa10ff0258bf2df189dbfd020875161..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/lib/bson.cjs
+++ /dev/null
@@ -1,4200 +0,0 @@
-'use strict';
-
-function isAnyArrayBuffer(value) {
-    return ['[object ArrayBuffer]', '[object SharedArrayBuffer]'].includes(Object.prototype.toString.call(value));
-}
-function isUint8Array(value) {
-    return Object.prototype.toString.call(value) === '[object Uint8Array]';
-}
-function isRegExp(d) {
-    return Object.prototype.toString.call(d) === '[object RegExp]';
-}
-function isMap(d) {
-    return Object.prototype.toString.call(d) === '[object Map]';
-}
-function isDate(d) {
-    return Object.prototype.toString.call(d) === '[object Date]';
-}
-function defaultInspect(x, _options) {
-    return JSON.stringify(x, (k, v) => {
-        if (typeof v === 'bigint') {
-            return { $numberLong: `${v}` };
-        }
-        else if (isMap(v)) {
-            return Object.fromEntries(v);
-        }
-        return v;
-    });
-}
-function getStylizeFunction(options) {
-    const stylizeExists = options != null &&
-        typeof options === 'object' &&
-        'stylize' in options &&
-        typeof options.stylize === 'function';
-    if (stylizeExists) {
-        return options.stylize;
-    }
-}
-
-const BSON_MAJOR_VERSION = 6;
-const BSON_INT32_MAX = 0x7fffffff;
-const BSON_INT32_MIN = -0x80000000;
-const BSON_INT64_MAX = Math.pow(2, 63) - 1;
-const BSON_INT64_MIN = -Math.pow(2, 63);
-const JS_INT_MAX = Math.pow(2, 53);
-const JS_INT_MIN = -Math.pow(2, 53);
-const BSON_DATA_NUMBER = 1;
-const BSON_DATA_STRING = 2;
-const BSON_DATA_OBJECT = 3;
-const BSON_DATA_ARRAY = 4;
-const BSON_DATA_BINARY = 5;
-const BSON_DATA_UNDEFINED = 6;
-const BSON_DATA_OID = 7;
-const BSON_DATA_BOOLEAN = 8;
-const BSON_DATA_DATE = 9;
-const BSON_DATA_NULL = 10;
-const BSON_DATA_REGEXP = 11;
-const BSON_DATA_DBPOINTER = 12;
-const BSON_DATA_CODE = 13;
-const BSON_DATA_SYMBOL = 14;
-const BSON_DATA_CODE_W_SCOPE = 15;
-const BSON_DATA_INT = 16;
-const BSON_DATA_TIMESTAMP = 17;
-const BSON_DATA_LONG = 18;
-const BSON_DATA_DECIMAL128 = 19;
-const BSON_DATA_MIN_KEY = 0xff;
-const BSON_DATA_MAX_KEY = 0x7f;
-const BSON_BINARY_SUBTYPE_DEFAULT = 0;
-const BSON_BINARY_SUBTYPE_UUID_NEW = 4;
-const BSONType = Object.freeze({
-    double: 1,
-    string: 2,
-    object: 3,
-    array: 4,
-    binData: 5,
-    undefined: 6,
-    objectId: 7,
-    bool: 8,
-    date: 9,
-    null: 10,
-    regex: 11,
-    dbPointer: 12,
-    javascript: 13,
-    symbol: 14,
-    javascriptWithScope: 15,
-    int: 16,
-    timestamp: 17,
-    long: 18,
-    decimal: 19,
-    minKey: -1,
-    maxKey: 127
-});
-
-class BSONError extends Error {
-    get bsonError() {
-        return true;
-    }
-    get name() {
-        return 'BSONError';
-    }
-    constructor(message, options) {
-        super(message, options);
-    }
-    static isBSONError(value) {
-        return (value != null &&
-            typeof value === 'object' &&
-            'bsonError' in value &&
-            value.bsonError === true &&
-            'name' in value &&
-            'message' in value &&
-            'stack' in value);
-    }
-}
-class BSONVersionError extends BSONError {
-    get name() {
-        return 'BSONVersionError';
-    }
-    constructor() {
-        super(`Unsupported BSON version, bson types must be from bson ${BSON_MAJOR_VERSION}.x.x`);
-    }
-}
-class BSONRuntimeError extends BSONError {
-    get name() {
-        return 'BSONRuntimeError';
-    }
-    constructor(message) {
-        super(message);
-    }
-}
-
-const FIRST_BIT = 0x80;
-const FIRST_TWO_BITS = 0xc0;
-const FIRST_THREE_BITS = 0xe0;
-const FIRST_FOUR_BITS = 0xf0;
-const FIRST_FIVE_BITS = 0xf8;
-const TWO_BIT_CHAR = 0xc0;
-const THREE_BIT_CHAR = 0xe0;
-const FOUR_BIT_CHAR = 0xf0;
-const CONTINUING_CHAR = 0x80;
-function validateUtf8(bytes, start, end) {
-    let continuation = 0;
-    for (let i = start; i < end; i += 1) {
-        const byte = bytes[i];
-        if (continuation) {
-            if ((byte & FIRST_TWO_BITS) !== CONTINUING_CHAR) {
-                return false;
-            }
-            continuation -= 1;
-        }
-        else if (byte & FIRST_BIT) {
-            if ((byte & FIRST_THREE_BITS) === TWO_BIT_CHAR) {
-                continuation = 1;
-            }
-            else if ((byte & FIRST_FOUR_BITS) === THREE_BIT_CHAR) {
-                continuation = 2;
-            }
-            else if ((byte & FIRST_FIVE_BITS) === FOUR_BIT_CHAR) {
-                continuation = 3;
-            }
-            else {
-                return false;
-            }
-        }
-    }
-    return !continuation;
-}
-
-function tryReadBasicLatin(uint8array, start, end) {
-    if (uint8array.length === 0) {
-        return '';
-    }
-    const stringByteLength = end - start;
-    if (stringByteLength === 0) {
-        return '';
-    }
-    if (stringByteLength > 20) {
-        return null;
-    }
-    if (stringByteLength === 1 && uint8array[start] < 128) {
-        return String.fromCharCode(uint8array[start]);
-    }
-    if (stringByteLength === 2 && uint8array[start] < 128 && uint8array[start + 1] < 128) {
-        return String.fromCharCode(uint8array[start]) + String.fromCharCode(uint8array[start + 1]);
-    }
-    if (stringByteLength === 3 &&
-        uint8array[start] < 128 &&
-        uint8array[start + 1] < 128 &&
-        uint8array[start + 2] < 128) {
-        return (String.fromCharCode(uint8array[start]) +
-            String.fromCharCode(uint8array[start + 1]) +
-            String.fromCharCode(uint8array[start + 2]));
-    }
-    const latinBytes = [];
-    for (let i = start; i < end; i++) {
-        const byte = uint8array[i];
-        if (byte > 127) {
-            return null;
-        }
-        latinBytes.push(byte);
-    }
-    return String.fromCharCode(...latinBytes);
-}
-function tryWriteBasicLatin(destination, source, offset) {
-    if (source.length === 0)
-        return 0;
-    if (source.length > 25)
-        return null;
-    if (destination.length - offset < source.length)
-        return null;
-    for (let charOffset = 0, destinationOffset = offset; charOffset < source.length; charOffset++, destinationOffset++) {
-        const char = source.charCodeAt(charOffset);
-        if (char > 127)
-            return null;
-        destination[destinationOffset] = char;
-    }
-    return source.length;
-}
-
-function nodejsMathRandomBytes(byteLength) {
-    return nodeJsByteUtils.fromNumberArray(Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256)));
-}
-const nodejsRandomBytes = (() => {
-    try {
-        return require('crypto').randomBytes;
-    }
-    catch {
-        return nodejsMathRandomBytes;
-    }
-})();
-const nodeJsByteUtils = {
-    toLocalBufferType(potentialBuffer) {
-        if (Buffer.isBuffer(potentialBuffer)) {
-            return potentialBuffer;
-        }
-        if (ArrayBuffer.isView(potentialBuffer)) {
-            return Buffer.from(potentialBuffer.buffer, potentialBuffer.byteOffset, potentialBuffer.byteLength);
-        }
-        const stringTag = potentialBuffer?.[Symbol.toStringTag] ?? Object.prototype.toString.call(potentialBuffer);
-        if (stringTag === 'ArrayBuffer' ||
-            stringTag === 'SharedArrayBuffer' ||
-            stringTag === '[object ArrayBuffer]' ||
-            stringTag === '[object SharedArrayBuffer]') {
-            return Buffer.from(potentialBuffer);
-        }
-        throw new BSONError(`Cannot create Buffer from ${String(potentialBuffer)}`);
-    },
-    allocate(size) {
-        return Buffer.alloc(size);
-    },
-    allocateUnsafe(size) {
-        return Buffer.allocUnsafe(size);
-    },
-    equals(a, b) {
-        return nodeJsByteUtils.toLocalBufferType(a).equals(b);
-    },
-    fromNumberArray(array) {
-        return Buffer.from(array);
-    },
-    fromBase64(base64) {
-        return Buffer.from(base64, 'base64');
-    },
-    toBase64(buffer) {
-        return nodeJsByteUtils.toLocalBufferType(buffer).toString('base64');
-    },
-    fromISO88591(codePoints) {
-        return Buffer.from(codePoints, 'binary');
-    },
-    toISO88591(buffer) {
-        return nodeJsByteUtils.toLocalBufferType(buffer).toString('binary');
-    },
-    fromHex(hex) {
-        return Buffer.from(hex, 'hex');
-    },
-    toHex(buffer) {
-        return nodeJsByteUtils.toLocalBufferType(buffer).toString('hex');
-    },
-    toUTF8(buffer, start, end, fatal) {
-        const basicLatin = end - start <= 20 ? tryReadBasicLatin(buffer, start, end) : null;
-        if (basicLatin != null) {
-            return basicLatin;
-        }
-        const string = nodeJsByteUtils.toLocalBufferType(buffer).toString('utf8', start, end);
-        if (fatal) {
-            for (let i = 0; i < string.length; i++) {
-                if (string.charCodeAt(i) === 0xfffd) {
-                    if (!validateUtf8(buffer, start, end)) {
-                        throw new BSONError('Invalid UTF-8 string in BSON document');
-                    }
-                    break;
-                }
-            }
-        }
-        return string;
-    },
-    utf8ByteLength(input) {
-        return Buffer.byteLength(input, 'utf8');
-    },
-    encodeUTF8Into(buffer, source, byteOffset) {
-        const latinBytesWritten = tryWriteBasicLatin(buffer, source, byteOffset);
-        if (latinBytesWritten != null) {
-            return latinBytesWritten;
-        }
-        return nodeJsByteUtils.toLocalBufferType(buffer).write(source, byteOffset, undefined, 'utf8');
-    },
-    randomBytes: nodejsRandomBytes
-};
-
-function isReactNative() {
-    const { navigator } = globalThis;
-    return typeof navigator === 'object' && navigator.product === 'ReactNative';
-}
-function webMathRandomBytes(byteLength) {
-    if (byteLength < 0) {
-        throw new RangeError(`The argument 'byteLength' is invalid. Received ${byteLength}`);
-    }
-    return webByteUtils.fromNumberArray(Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256)));
-}
-const webRandomBytes = (() => {
-    const { crypto } = globalThis;
-    if (crypto != null && typeof crypto.getRandomValues === 'function') {
-        return (byteLength) => {
-            return crypto.getRandomValues(webByteUtils.allocate(byteLength));
-        };
-    }
-    else {
-        if (isReactNative()) {
-            const { console } = globalThis;
-            console?.warn?.('BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.');
-        }
-        return webMathRandomBytes;
-    }
-})();
-const HEX_DIGIT = /(\d|[a-f])/i;
-const webByteUtils = {
-    toLocalBufferType(potentialUint8array) {
-        const stringTag = potentialUint8array?.[Symbol.toStringTag] ??
-            Object.prototype.toString.call(potentialUint8array);
-        if (stringTag === 'Uint8Array') {
-            return potentialUint8array;
-        }
-        if (ArrayBuffer.isView(potentialUint8array)) {
-            return new Uint8Array(potentialUint8array.buffer.slice(potentialUint8array.byteOffset, potentialUint8array.byteOffset + potentialUint8array.byteLength));
-        }
-        if (stringTag === 'ArrayBuffer' ||
-            stringTag === 'SharedArrayBuffer' ||
-            stringTag === '[object ArrayBuffer]' ||
-            stringTag === '[object SharedArrayBuffer]') {
-            return new Uint8Array(potentialUint8array);
-        }
-        throw new BSONError(`Cannot make a Uint8Array from ${String(potentialUint8array)}`);
-    },
-    allocate(size) {
-        if (typeof size !== 'number') {
-            throw new TypeError(`The "size" argument must be of type number. Received ${String(size)}`);
-        }
-        return new Uint8Array(size);
-    },
-    allocateUnsafe(size) {
-        return webByteUtils.allocate(size);
-    },
-    equals(a, b) {
-        if (a.byteLength !== b.byteLength) {
-            return false;
-        }
-        for (let i = 0; i < a.byteLength; i++) {
-            if (a[i] !== b[i]) {
-                return false;
-            }
-        }
-        return true;
-    },
-    fromNumberArray(array) {
-        return Uint8Array.from(array);
-    },
-    fromBase64(base64) {
-        return Uint8Array.from(atob(base64), c => c.charCodeAt(0));
-    },
-    toBase64(uint8array) {
-        return btoa(webByteUtils.toISO88591(uint8array));
-    },
-    fromISO88591(codePoints) {
-        return Uint8Array.from(codePoints, c => c.charCodeAt(0) & 0xff);
-    },
-    toISO88591(uint8array) {
-        return Array.from(Uint16Array.from(uint8array), b => String.fromCharCode(b)).join('');
-    },
-    fromHex(hex) {
-        const evenLengthHex = hex.length % 2 === 0 ? hex : hex.slice(0, hex.length - 1);
-        const buffer = [];
-        for (let i = 0; i < evenLengthHex.length; i += 2) {
-            const firstDigit = evenLengthHex[i];
-            const secondDigit = evenLengthHex[i + 1];
-            if (!HEX_DIGIT.test(firstDigit)) {
-                break;
-            }
-            if (!HEX_DIGIT.test(secondDigit)) {
-                break;
-            }
-            const hexDigit = Number.parseInt(`${firstDigit}${secondDigit}`, 16);
-            buffer.push(hexDigit);
-        }
-        return Uint8Array.from(buffer);
-    },
-    toHex(uint8array) {
-        return Array.from(uint8array, byte => byte.toString(16).padStart(2, '0')).join('');
-    },
-    toUTF8(uint8array, start, end, fatal) {
-        const basicLatin = end - start <= 20 ? tryReadBasicLatin(uint8array, start, end) : null;
-        if (basicLatin != null) {
-            return basicLatin;
-        }
-        if (fatal) {
-            try {
-                return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
-            }
-            catch (cause) {
-                throw new BSONError('Invalid UTF-8 string in BSON document', { cause });
-            }
-        }
-        return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
-    },
-    utf8ByteLength(input) {
-        return new TextEncoder().encode(input).byteLength;
-    },
-    encodeUTF8Into(uint8array, source, byteOffset) {
-        const bytes = new TextEncoder().encode(source);
-        uint8array.set(bytes, byteOffset);
-        return bytes.byteLength;
-    },
-    randomBytes: webRandomBytes
-};
-
-const hasGlobalBuffer = typeof Buffer === 'function' && Buffer.prototype?._isBuffer !== true;
-const ByteUtils = hasGlobalBuffer ? nodeJsByteUtils : webByteUtils;
-
-class BSONValue {
-    get [Symbol.for('@@mdb.bson.version')]() {
-        return BSON_MAJOR_VERSION;
-    }
-    [Symbol.for('nodejs.util.inspect.custom')](depth, options, inspect) {
-        return this.inspect(depth, options, inspect);
-    }
-}
-
-class Binary extends BSONValue {
-    get _bsontype() {
-        return 'Binary';
-    }
-    constructor(buffer, subType) {
-        super();
-        if (!(buffer == null) &&
-            typeof buffer === 'string' &&
-            !ArrayBuffer.isView(buffer) &&
-            !isAnyArrayBuffer(buffer) &&
-            !Array.isArray(buffer)) {
-            throw new BSONError('Binary can only be constructed from Uint8Array or number[]');
-        }
-        this.sub_type = subType ?? Binary.BSON_BINARY_SUBTYPE_DEFAULT;
-        if (buffer == null) {
-            this.buffer = ByteUtils.allocate(Binary.BUFFER_SIZE);
-            this.position = 0;
-        }
-        else {
-            this.buffer = Array.isArray(buffer)
-                ? ByteUtils.fromNumberArray(buffer)
-                : ByteUtils.toLocalBufferType(buffer);
-            this.position = this.buffer.byteLength;
-        }
-    }
-    put(byteValue) {
-        if (typeof byteValue === 'string' && byteValue.length !== 1) {
-            throw new BSONError('only accepts single character String');
-        }
-        else if (typeof byteValue !== 'number' && byteValue.length !== 1)
-            throw new BSONError('only accepts single character Uint8Array or Array');
-        let decodedByte;
-        if (typeof byteValue === 'string') {
-            decodedByte = byteValue.charCodeAt(0);
-        }
-        else if (typeof byteValue === 'number') {
-            decodedByte = byteValue;
-        }
-        else {
-            decodedByte = byteValue[0];
-        }
-        if (decodedByte < 0 || decodedByte > 255) {
-            throw new BSONError('only accepts number in a valid unsigned byte range 0-255');
-        }
-        if (this.buffer.byteLength > this.position) {
-            this.buffer[this.position++] = decodedByte;
-        }
-        else {
-            const newSpace = ByteUtils.allocate(Binary.BUFFER_SIZE + this.buffer.length);
-            newSpace.set(this.buffer, 0);
-            this.buffer = newSpace;
-            this.buffer[this.position++] = decodedByte;
-        }
-    }
-    write(sequence, offset) {
-        offset = typeof offset === 'number' ? offset : this.position;
-        if (this.buffer.byteLength < offset + sequence.length) {
-            const newSpace = ByteUtils.allocate(this.buffer.byteLength + sequence.length);
-            newSpace.set(this.buffer, 0);
-            this.buffer = newSpace;
-        }
-        if (ArrayBuffer.isView(sequence)) {
-            this.buffer.set(ByteUtils.toLocalBufferType(sequence), offset);
-            this.position =
-                offset + sequence.byteLength > this.position ? offset + sequence.length : this.position;
-        }
-        else if (typeof sequence === 'string') {
-            throw new BSONError('input cannot be string');
-        }
-    }
-    read(position, length) {
-        length = length && length > 0 ? length : this.position;
-        return this.buffer.slice(position, position + length);
-    }
-    value() {
-        return this.buffer.length === this.position
-            ? this.buffer
-            : this.buffer.subarray(0, this.position);
-    }
-    length() {
-        return this.position;
-    }
-    toJSON() {
-        return ByteUtils.toBase64(this.buffer);
-    }
-    toString(encoding) {
-        if (encoding === 'hex')
-            return ByteUtils.toHex(this.buffer);
-        if (encoding === 'base64')
-            return ByteUtils.toBase64(this.buffer);
-        if (encoding === 'utf8' || encoding === 'utf-8')
-            return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
-        return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
-    }
-    toExtendedJSON(options) {
-        options = options || {};
-        const base64String = ByteUtils.toBase64(this.buffer);
-        const subType = Number(this.sub_type).toString(16);
-        if (options.legacy) {
-            return {
-                $binary: base64String,
-                $type: subType.length === 1 ? '0' + subType : subType
-            };
-        }
-        return {
-            $binary: {
-                base64: base64String,
-                subType: subType.length === 1 ? '0' + subType : subType
-            }
-        };
-    }
-    toUUID() {
-        if (this.sub_type === Binary.SUBTYPE_UUID) {
-            return new UUID(this.buffer.slice(0, this.position));
-        }
-        throw new BSONError(`Binary sub_type "${this.sub_type}" is not supported for converting to UUID. Only "${Binary.SUBTYPE_UUID}" is currently supported.`);
-    }
-    static createFromHexString(hex, subType) {
-        return new Binary(ByteUtils.fromHex(hex), subType);
-    }
-    static createFromBase64(base64, subType) {
-        return new Binary(ByteUtils.fromBase64(base64), subType);
-    }
-    static fromExtendedJSON(doc, options) {
-        options = options || {};
-        let data;
-        let type;
-        if ('$binary' in doc) {
-            if (options.legacy && typeof doc.$binary === 'string' && '$type' in doc) {
-                type = doc.$type ? parseInt(doc.$type, 16) : 0;
-                data = ByteUtils.fromBase64(doc.$binary);
-            }
-            else {
-                if (typeof doc.$binary !== 'string') {
-                    type = doc.$binary.subType ? parseInt(doc.$binary.subType, 16) : 0;
-                    data = ByteUtils.fromBase64(doc.$binary.base64);
-                }
-            }
-        }
-        else if ('$uuid' in doc) {
-            type = 4;
-            data = UUID.bytesFromString(doc.$uuid);
-        }
-        if (!data) {
-            throw new BSONError(`Unexpected Binary Extended JSON format ${JSON.stringify(doc)}`);
-        }
-        return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const base64 = ByteUtils.toBase64(this.buffer.subarray(0, this.position));
-        const base64Arg = inspect(base64, options);
-        const subTypeArg = inspect(this.sub_type, options);
-        return `Binary.createFromBase64(${base64Arg}, ${subTypeArg})`;
-    }
-}
-Binary.BSON_BINARY_SUBTYPE_DEFAULT = 0;
-Binary.BUFFER_SIZE = 256;
-Binary.SUBTYPE_DEFAULT = 0;
-Binary.SUBTYPE_FUNCTION = 1;
-Binary.SUBTYPE_BYTE_ARRAY = 2;
-Binary.SUBTYPE_UUID_OLD = 3;
-Binary.SUBTYPE_UUID = 4;
-Binary.SUBTYPE_MD5 = 5;
-Binary.SUBTYPE_ENCRYPTED = 6;
-Binary.SUBTYPE_COLUMN = 7;
-Binary.SUBTYPE_USER_DEFINED = 128;
-const UUID_BYTE_LENGTH = 16;
-const UUID_WITHOUT_DASHES = /^[0-9A-F]{32}$/i;
-const UUID_WITH_DASHES = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
-class UUID extends Binary {
-    constructor(input) {
-        let bytes;
-        if (input == null) {
-            bytes = UUID.generate();
-        }
-        else if (input instanceof UUID) {
-            bytes = ByteUtils.toLocalBufferType(new Uint8Array(input.buffer));
-        }
-        else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) {
-            bytes = ByteUtils.toLocalBufferType(input);
-        }
-        else if (typeof input === 'string') {
-            bytes = UUID.bytesFromString(input);
-        }
-        else {
-            throw new BSONError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).');
-        }
-        super(bytes, BSON_BINARY_SUBTYPE_UUID_NEW);
-    }
-    get id() {
-        return this.buffer;
-    }
-    set id(value) {
-        this.buffer = value;
-    }
-    toHexString(includeDashes = true) {
-        if (includeDashes) {
-            return [
-                ByteUtils.toHex(this.buffer.subarray(0, 4)),
-                ByteUtils.toHex(this.buffer.subarray(4, 6)),
-                ByteUtils.toHex(this.buffer.subarray(6, 8)),
-                ByteUtils.toHex(this.buffer.subarray(8, 10)),
-                ByteUtils.toHex(this.buffer.subarray(10, 16))
-            ].join('-');
-        }
-        return ByteUtils.toHex(this.buffer);
-    }
-    toString(encoding) {
-        if (encoding === 'hex')
-            return ByteUtils.toHex(this.id);
-        if (encoding === 'base64')
-            return ByteUtils.toBase64(this.id);
-        return this.toHexString();
-    }
-    toJSON() {
-        return this.toHexString();
-    }
-    equals(otherId) {
-        if (!otherId) {
-            return false;
-        }
-        if (otherId instanceof UUID) {
-            return ByteUtils.equals(otherId.id, this.id);
-        }
-        try {
-            return ByteUtils.equals(new UUID(otherId).id, this.id);
-        }
-        catch {
-            return false;
-        }
-    }
-    toBinary() {
-        return new Binary(this.id, Binary.SUBTYPE_UUID);
-    }
-    static generate() {
-        const bytes = ByteUtils.randomBytes(UUID_BYTE_LENGTH);
-        bytes[6] = (bytes[6] & 0x0f) | 0x40;
-        bytes[8] = (bytes[8] & 0x3f) | 0x80;
-        return bytes;
-    }
-    static isValid(input) {
-        if (!input) {
-            return false;
-        }
-        if (typeof input === 'string') {
-            return UUID.isValidUUIDString(input);
-        }
-        if (isUint8Array(input)) {
-            return input.byteLength === UUID_BYTE_LENGTH;
-        }
-        return (input._bsontype === 'Binary' &&
-            input.sub_type === this.SUBTYPE_UUID &&
-            input.buffer.byteLength === 16);
-    }
-    static createFromHexString(hexString) {
-        const buffer = UUID.bytesFromString(hexString);
-        return new UUID(buffer);
-    }
-    static createFromBase64(base64) {
-        return new UUID(ByteUtils.fromBase64(base64));
-    }
-    static bytesFromString(representation) {
-        if (!UUID.isValidUUIDString(representation)) {
-            throw new BSONError('UUID string representation must be 32 hex digits or canonical hyphenated representation');
-        }
-        return ByteUtils.fromHex(representation.replace(/-/g, ''));
-    }
-    static isValidUUIDString(representation) {
-        return UUID_WITHOUT_DASHES.test(representation) || UUID_WITH_DASHES.test(representation);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new UUID(${inspect(this.toHexString(), options)})`;
-    }
-}
-
-class Code extends BSONValue {
-    get _bsontype() {
-        return 'Code';
-    }
-    constructor(code, scope) {
-        super();
-        this.code = code.toString();
-        this.scope = scope ?? null;
-    }
-    toJSON() {
-        if (this.scope != null) {
-            return { code: this.code, scope: this.scope };
-        }
-        return { code: this.code };
-    }
-    toExtendedJSON() {
-        if (this.scope) {
-            return { $code: this.code, $scope: this.scope };
-        }
-        return { $code: this.code };
-    }
-    static fromExtendedJSON(doc) {
-        return new Code(doc.$code, doc.$scope);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        let parametersString = inspect(this.code, options);
-        const multiLineFn = parametersString.includes('\n');
-        if (this.scope != null) {
-            parametersString += `,${multiLineFn ? '\n' : ' '}${inspect(this.scope, options)}`;
-        }
-        const endingNewline = multiLineFn && this.scope === null;
-        return `new Code(${multiLineFn ? '\n' : ''}${parametersString}${endingNewline ? '\n' : ''})`;
-    }
-}
-
-function isDBRefLike(value) {
-    return (value != null &&
-        typeof value === 'object' &&
-        '$id' in value &&
-        value.$id != null &&
-        '$ref' in value &&
-        typeof value.$ref === 'string' &&
-        (!('$db' in value) || ('$db' in value && typeof value.$db === 'string')));
-}
-class DBRef extends BSONValue {
-    get _bsontype() {
-        return 'DBRef';
-    }
-    constructor(collection, oid, db, fields) {
-        super();
-        const parts = collection.split('.');
-        if (parts.length === 2) {
-            db = parts.shift();
-            collection = parts.shift();
-        }
-        this.collection = collection;
-        this.oid = oid;
-        this.db = db;
-        this.fields = fields || {};
-    }
-    get namespace() {
-        return this.collection;
-    }
-    set namespace(value) {
-        this.collection = value;
-    }
-    toJSON() {
-        const o = Object.assign({
-            $ref: this.collection,
-            $id: this.oid
-        }, this.fields);
-        if (this.db != null)
-            o.$db = this.db;
-        return o;
-    }
-    toExtendedJSON(options) {
-        options = options || {};
-        let o = {
-            $ref: this.collection,
-            $id: this.oid
-        };
-        if (options.legacy) {
-            return o;
-        }
-        if (this.db)
-            o.$db = this.db;
-        o = Object.assign(o, this.fields);
-        return o;
-    }
-    static fromExtendedJSON(doc) {
-        const copy = Object.assign({}, doc);
-        delete copy.$ref;
-        delete copy.$id;
-        delete copy.$db;
-        return new DBRef(doc.$ref, doc.$id, doc.$db, copy);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const args = [
-            inspect(this.namespace, options),
-            inspect(this.oid, options),
-            ...(this.db ? [inspect(this.db, options)] : []),
-            ...(Object.keys(this.fields).length > 0 ? [inspect(this.fields, options)] : [])
-        ];
-        args[1] = inspect === defaultInspect ? `new ObjectId(${args[1]})` : args[1];
-        return `new DBRef(${args.join(', ')})`;
-    }
-}
-
-let wasm = undefined;
-try {
-    wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])), {}).exports;
-}
-catch {
-}
-const TWO_PWR_16_DBL = 1 << 16;
-const TWO_PWR_24_DBL = 1 << 24;
-const TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;
-const TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;
-const TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;
-const INT_CACHE = {};
-const UINT_CACHE = {};
-const MAX_INT64_STRING_LENGTH = 20;
-const DECIMAL_REG_EX = /^(\+?0|(\+|-)?[1-9][0-9]*)$/;
-class Long extends BSONValue {
-    get _bsontype() {
-        return 'Long';
-    }
-    get __isLong__() {
-        return true;
-    }
-    constructor(low = 0, high, unsigned) {
-        super();
-        if (typeof low === 'bigint') {
-            Object.assign(this, Long.fromBigInt(low, !!high));
-        }
-        else if (typeof low === 'string') {
-            Object.assign(this, Long.fromString(low, !!high));
-        }
-        else {
-            this.low = low | 0;
-            this.high = high | 0;
-            this.unsigned = !!unsigned;
-        }
-    }
-    static fromBits(lowBits, highBits, unsigned) {
-        return new Long(lowBits, highBits, unsigned);
-    }
-    static fromInt(value, unsigned) {
-        let obj, cachedObj, cache;
-        if (unsigned) {
-            value >>>= 0;
-            if ((cache = 0 <= value && value < 256)) {
-                cachedObj = UINT_CACHE[value];
-                if (cachedObj)
-                    return cachedObj;
-            }
-            obj = Long.fromBits(value, (value | 0) < 0 ? -1 : 0, true);
-            if (cache)
-                UINT_CACHE[value] = obj;
-            return obj;
-        }
-        else {
-            value |= 0;
-            if ((cache = -128 <= value && value < 128)) {
-                cachedObj = INT_CACHE[value];
-                if (cachedObj)
-                    return cachedObj;
-            }
-            obj = Long.fromBits(value, value < 0 ? -1 : 0, false);
-            if (cache)
-                INT_CACHE[value] = obj;
-            return obj;
-        }
-    }
-    static fromNumber(value, unsigned) {
-        if (isNaN(value))
-            return unsigned ? Long.UZERO : Long.ZERO;
-        if (unsigned) {
-            if (value < 0)
-                return Long.UZERO;
-            if (value >= TWO_PWR_64_DBL)
-                return Long.MAX_UNSIGNED_VALUE;
-        }
-        else {
-            if (value <= -TWO_PWR_63_DBL)
-                return Long.MIN_VALUE;
-            if (value + 1 >= TWO_PWR_63_DBL)
-                return Long.MAX_VALUE;
-        }
-        if (value < 0)
-            return Long.fromNumber(-value, unsigned).neg();
-        return Long.fromBits(value % TWO_PWR_32_DBL | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);
-    }
-    static fromBigInt(value, unsigned) {
-        return Long.fromString(value.toString(), unsigned);
-    }
-    static fromString(str, unsigned, radix) {
-        if (str.length === 0)
-            throw new BSONError('empty string');
-        if (str === 'NaN' || str === 'Infinity' || str === '+Infinity' || str === '-Infinity')
-            return Long.ZERO;
-        if (typeof unsigned === 'number') {
-            (radix = unsigned), (unsigned = false);
-        }
-        else {
-            unsigned = !!unsigned;
-        }
-        radix = radix || 10;
-        if (radix < 2 || 36 < radix)
-            throw new BSONError('radix');
-        let p;
-        if ((p = str.indexOf('-')) > 0)
-            throw new BSONError('interior hyphen');
-        else if (p === 0) {
-            return Long.fromString(str.substring(1), unsigned, radix).neg();
-        }
-        const radixToPower = Long.fromNumber(Math.pow(radix, 8));
-        let result = Long.ZERO;
-        for (let i = 0; i < str.length; i += 8) {
-            const size = Math.min(8, str.length - i), value = parseInt(str.substring(i, i + size), radix);
-            if (size < 8) {
-                const power = Long.fromNumber(Math.pow(radix, size));
-                result = result.mul(power).add(Long.fromNumber(value));
-            }
-            else {
-                result = result.mul(radixToPower);
-                result = result.add(Long.fromNumber(value));
-            }
-        }
-        result.unsigned = unsigned;
-        return result;
-    }
-    static fromBytes(bytes, unsigned, le) {
-        return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);
-    }
-    static fromBytesLE(bytes, unsigned) {
-        return new Long(bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24), bytes[4] | (bytes[5] << 8) | (bytes[6] << 16) | (bytes[7] << 24), unsigned);
-    }
-    static fromBytesBE(bytes, unsigned) {
-        return new Long((bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7], (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3], unsigned);
-    }
-    static isLong(value) {
-        return (value != null &&
-            typeof value === 'object' &&
-            '__isLong__' in value &&
-            value.__isLong__ === true);
-    }
-    static fromValue(val, unsigned) {
-        if (typeof val === 'number')
-            return Long.fromNumber(val, unsigned);
-        if (typeof val === 'string')
-            return Long.fromString(val, unsigned);
-        return Long.fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);
-    }
-    add(addend) {
-        if (!Long.isLong(addend))
-            addend = Long.fromValue(addend);
-        const a48 = this.high >>> 16;
-        const a32 = this.high & 0xffff;
-        const a16 = this.low >>> 16;
-        const a00 = this.low & 0xffff;
-        const b48 = addend.high >>> 16;
-        const b32 = addend.high & 0xffff;
-        const b16 = addend.low >>> 16;
-        const b00 = addend.low & 0xffff;
-        let c48 = 0, c32 = 0, c16 = 0, c00 = 0;
-        c00 += a00 + b00;
-        c16 += c00 >>> 16;
-        c00 &= 0xffff;
-        c16 += a16 + b16;
-        c32 += c16 >>> 16;
-        c16 &= 0xffff;
-        c32 += a32 + b32;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c48 += a48 + b48;
-        c48 &= 0xffff;
-        return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
-    }
-    and(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        return Long.fromBits(this.low & other.low, this.high & other.high, this.unsigned);
-    }
-    compare(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        if (this.eq(other))
-            return 0;
-        const thisNeg = this.isNegative(), otherNeg = other.isNegative();
-        if (thisNeg && !otherNeg)
-            return -1;
-        if (!thisNeg && otherNeg)
-            return 1;
-        if (!this.unsigned)
-            return this.sub(other).isNegative() ? -1 : 1;
-        return other.high >>> 0 > this.high >>> 0 ||
-            (other.high === this.high && other.low >>> 0 > this.low >>> 0)
-            ? -1
-            : 1;
-    }
-    comp(other) {
-        return this.compare(other);
-    }
-    divide(divisor) {
-        if (!Long.isLong(divisor))
-            divisor = Long.fromValue(divisor);
-        if (divisor.isZero())
-            throw new BSONError('division by zero');
-        if (wasm) {
-            if (!this.unsigned &&
-                this.high === -0x80000000 &&
-                divisor.low === -1 &&
-                divisor.high === -1) {
-                return this;
-            }
-            const low = (this.unsigned ? wasm.div_u : wasm.div_s)(this.low, this.high, divisor.low, divisor.high);
-            return Long.fromBits(low, wasm.get_high(), this.unsigned);
-        }
-        if (this.isZero())
-            return this.unsigned ? Long.UZERO : Long.ZERO;
-        let approx, rem, res;
-        if (!this.unsigned) {
-            if (this.eq(Long.MIN_VALUE)) {
-                if (divisor.eq(Long.ONE) || divisor.eq(Long.NEG_ONE))
-                    return Long.MIN_VALUE;
-                else if (divisor.eq(Long.MIN_VALUE))
-                    return Long.ONE;
-                else {
-                    const halfThis = this.shr(1);
-                    approx = halfThis.div(divisor).shl(1);
-                    if (approx.eq(Long.ZERO)) {
-                        return divisor.isNegative() ? Long.ONE : Long.NEG_ONE;
-                    }
-                    else {
-                        rem = this.sub(divisor.mul(approx));
-                        res = approx.add(rem.div(divisor));
-                        return res;
-                    }
-                }
-            }
-            else if (divisor.eq(Long.MIN_VALUE))
-                return this.unsigned ? Long.UZERO : Long.ZERO;
-            if (this.isNegative()) {
-                if (divisor.isNegative())
-                    return this.neg().div(divisor.neg());
-                return this.neg().div(divisor).neg();
-            }
-            else if (divisor.isNegative())
-                return this.div(divisor.neg()).neg();
-            res = Long.ZERO;
-        }
-        else {
-            if (!divisor.unsigned)
-                divisor = divisor.toUnsigned();
-            if (divisor.gt(this))
-                return Long.UZERO;
-            if (divisor.gt(this.shru(1)))
-                return Long.UONE;
-            res = Long.UZERO;
-        }
-        rem = this;
-        while (rem.gte(divisor)) {
-            approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));
-            const log2 = Math.ceil(Math.log(approx) / Math.LN2);
-            const delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48);
-            let approxRes = Long.fromNumber(approx);
-            let approxRem = approxRes.mul(divisor);
-            while (approxRem.isNegative() || approxRem.gt(rem)) {
-                approx -= delta;
-                approxRes = Long.fromNumber(approx, this.unsigned);
-                approxRem = approxRes.mul(divisor);
-            }
-            if (approxRes.isZero())
-                approxRes = Long.ONE;
-            res = res.add(approxRes);
-            rem = rem.sub(approxRem);
-        }
-        return res;
-    }
-    div(divisor) {
-        return this.divide(divisor);
-    }
-    equals(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1)
-            return false;
-        return this.high === other.high && this.low === other.low;
-    }
-    eq(other) {
-        return this.equals(other);
-    }
-    getHighBits() {
-        return this.high;
-    }
-    getHighBitsUnsigned() {
-        return this.high >>> 0;
-    }
-    getLowBits() {
-        return this.low;
-    }
-    getLowBitsUnsigned() {
-        return this.low >>> 0;
-    }
-    getNumBitsAbs() {
-        if (this.isNegative()) {
-            return this.eq(Long.MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();
-        }
-        const val = this.high !== 0 ? this.high : this.low;
-        let bit;
-        for (bit = 31; bit > 0; bit--)
-            if ((val & (1 << bit)) !== 0)
-                break;
-        return this.high !== 0 ? bit + 33 : bit + 1;
-    }
-    greaterThan(other) {
-        return this.comp(other) > 0;
-    }
-    gt(other) {
-        return this.greaterThan(other);
-    }
-    greaterThanOrEqual(other) {
-        return this.comp(other) >= 0;
-    }
-    gte(other) {
-        return this.greaterThanOrEqual(other);
-    }
-    ge(other) {
-        return this.greaterThanOrEqual(other);
-    }
-    isEven() {
-        return (this.low & 1) === 0;
-    }
-    isNegative() {
-        return !this.unsigned && this.high < 0;
-    }
-    isOdd() {
-        return (this.low & 1) === 1;
-    }
-    isPositive() {
-        return this.unsigned || this.high >= 0;
-    }
-    isZero() {
-        return this.high === 0 && this.low === 0;
-    }
-    lessThan(other) {
-        return this.comp(other) < 0;
-    }
-    lt(other) {
-        return this.lessThan(other);
-    }
-    lessThanOrEqual(other) {
-        return this.comp(other) <= 0;
-    }
-    lte(other) {
-        return this.lessThanOrEqual(other);
-    }
-    modulo(divisor) {
-        if (!Long.isLong(divisor))
-            divisor = Long.fromValue(divisor);
-        if (wasm) {
-            const low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(this.low, this.high, divisor.low, divisor.high);
-            return Long.fromBits(low, wasm.get_high(), this.unsigned);
-        }
-        return this.sub(this.div(divisor).mul(divisor));
-    }
-    mod(divisor) {
-        return this.modulo(divisor);
-    }
-    rem(divisor) {
-        return this.modulo(divisor);
-    }
-    multiply(multiplier) {
-        if (this.isZero())
-            return Long.ZERO;
-        if (!Long.isLong(multiplier))
-            multiplier = Long.fromValue(multiplier);
-        if (wasm) {
-            const low = wasm.mul(this.low, this.high, multiplier.low, multiplier.high);
-            return Long.fromBits(low, wasm.get_high(), this.unsigned);
-        }
-        if (multiplier.isZero())
-            return Long.ZERO;
-        if (this.eq(Long.MIN_VALUE))
-            return multiplier.isOdd() ? Long.MIN_VALUE : Long.ZERO;
-        if (multiplier.eq(Long.MIN_VALUE))
-            return this.isOdd() ? Long.MIN_VALUE : Long.ZERO;
-        if (this.isNegative()) {
-            if (multiplier.isNegative())
-                return this.neg().mul(multiplier.neg());
-            else
-                return this.neg().mul(multiplier).neg();
-        }
-        else if (multiplier.isNegative())
-            return this.mul(multiplier.neg()).neg();
-        if (this.lt(Long.TWO_PWR_24) && multiplier.lt(Long.TWO_PWR_24))
-            return Long.fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);
-        const a48 = this.high >>> 16;
-        const a32 = this.high & 0xffff;
-        const a16 = this.low >>> 16;
-        const a00 = this.low & 0xffff;
-        const b48 = multiplier.high >>> 16;
-        const b32 = multiplier.high & 0xffff;
-        const b16 = multiplier.low >>> 16;
-        const b00 = multiplier.low & 0xffff;
-        let c48 = 0, c32 = 0, c16 = 0, c00 = 0;
-        c00 += a00 * b00;
-        c16 += c00 >>> 16;
-        c00 &= 0xffff;
-        c16 += a16 * b00;
-        c32 += c16 >>> 16;
-        c16 &= 0xffff;
-        c16 += a00 * b16;
-        c32 += c16 >>> 16;
-        c16 &= 0xffff;
-        c32 += a32 * b00;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c32 += a16 * b16;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c32 += a00 * b32;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
-        c48 &= 0xffff;
-        return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
-    }
-    mul(multiplier) {
-        return this.multiply(multiplier);
-    }
-    negate() {
-        if (!this.unsigned && this.eq(Long.MIN_VALUE))
-            return Long.MIN_VALUE;
-        return this.not().add(Long.ONE);
-    }
-    neg() {
-        return this.negate();
-    }
-    not() {
-        return Long.fromBits(~this.low, ~this.high, this.unsigned);
-    }
-    notEquals(other) {
-        return !this.equals(other);
-    }
-    neq(other) {
-        return this.notEquals(other);
-    }
-    ne(other) {
-        return this.notEquals(other);
-    }
-    or(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        return Long.fromBits(this.low | other.low, this.high | other.high, this.unsigned);
-    }
-    shiftLeft(numBits) {
-        if (Long.isLong(numBits))
-            numBits = numBits.toInt();
-        if ((numBits &= 63) === 0)
-            return this;
-        else if (numBits < 32)
-            return Long.fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);
-        else
-            return Long.fromBits(0, this.low << (numBits - 32), this.unsigned);
-    }
-    shl(numBits) {
-        return this.shiftLeft(numBits);
-    }
-    shiftRight(numBits) {
-        if (Long.isLong(numBits))
-            numBits = numBits.toInt();
-        if ((numBits &= 63) === 0)
-            return this;
-        else if (numBits < 32)
-            return Long.fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);
-        else
-            return Long.fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);
-    }
-    shr(numBits) {
-        return this.shiftRight(numBits);
-    }
-    shiftRightUnsigned(numBits) {
-        if (Long.isLong(numBits))
-            numBits = numBits.toInt();
-        numBits &= 63;
-        if (numBits === 0)
-            return this;
-        else {
-            const high = this.high;
-            if (numBits < 32) {
-                const low = this.low;
-                return Long.fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);
-            }
-            else if (numBits === 32)
-                return Long.fromBits(high, 0, this.unsigned);
-            else
-                return Long.fromBits(high >>> (numBits - 32), 0, this.unsigned);
-        }
-    }
-    shr_u(numBits) {
-        return this.shiftRightUnsigned(numBits);
-    }
-    shru(numBits) {
-        return this.shiftRightUnsigned(numBits);
-    }
-    subtract(subtrahend) {
-        if (!Long.isLong(subtrahend))
-            subtrahend = Long.fromValue(subtrahend);
-        return this.add(subtrahend.neg());
-    }
-    sub(subtrahend) {
-        return this.subtract(subtrahend);
-    }
-    toInt() {
-        return this.unsigned ? this.low >>> 0 : this.low;
-    }
-    toNumber() {
-        if (this.unsigned)
-            return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);
-        return this.high * TWO_PWR_32_DBL + (this.low >>> 0);
-    }
-    toBigInt() {
-        return BigInt(this.toString());
-    }
-    toBytes(le) {
-        return le ? this.toBytesLE() : this.toBytesBE();
-    }
-    toBytesLE() {
-        const hi = this.high, lo = this.low;
-        return [
-            lo & 0xff,
-            (lo >>> 8) & 0xff,
-            (lo >>> 16) & 0xff,
-            lo >>> 24,
-            hi & 0xff,
-            (hi >>> 8) & 0xff,
-            (hi >>> 16) & 0xff,
-            hi >>> 24
-        ];
-    }
-    toBytesBE() {
-        const hi = this.high, lo = this.low;
-        return [
-            hi >>> 24,
-            (hi >>> 16) & 0xff,
-            (hi >>> 8) & 0xff,
-            hi & 0xff,
-            lo >>> 24,
-            (lo >>> 16) & 0xff,
-            (lo >>> 8) & 0xff,
-            lo & 0xff
-        ];
-    }
-    toSigned() {
-        if (!this.unsigned)
-            return this;
-        return Long.fromBits(this.low, this.high, false);
-    }
-    toString(radix) {
-        radix = radix || 10;
-        if (radix < 2 || 36 < radix)
-            throw new BSONError('radix');
-        if (this.isZero())
-            return '0';
-        if (this.isNegative()) {
-            if (this.eq(Long.MIN_VALUE)) {
-                const radixLong = Long.fromNumber(radix), div = this.div(radixLong), rem1 = div.mul(radixLong).sub(this);
-                return div.toString(radix) + rem1.toInt().toString(radix);
-            }
-            else
-                return '-' + this.neg().toString(radix);
-        }
-        const radixToPower = Long.fromNumber(Math.pow(radix, 6), this.unsigned);
-        let rem = this;
-        let result = '';
-        while (true) {
-            const remDiv = rem.div(radixToPower);
-            const intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0;
-            let digits = intval.toString(radix);
-            rem = remDiv;
-            if (rem.isZero()) {
-                return digits + result;
-            }
-            else {
-                while (digits.length < 6)
-                    digits = '0' + digits;
-                result = '' + digits + result;
-            }
-        }
-    }
-    toUnsigned() {
-        if (this.unsigned)
-            return this;
-        return Long.fromBits(this.low, this.high, true);
-    }
-    xor(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        return Long.fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);
-    }
-    eqz() {
-        return this.isZero();
-    }
-    le(other) {
-        return this.lessThanOrEqual(other);
-    }
-    toExtendedJSON(options) {
-        if (options && options.relaxed)
-            return this.toNumber();
-        return { $numberLong: this.toString() };
-    }
-    static fromExtendedJSON(doc, options) {
-        const { useBigInt64 = false, relaxed = true } = { ...options };
-        if (doc.$numberLong.length > MAX_INT64_STRING_LENGTH) {
-            throw new BSONError('$numberLong string is too long');
-        }
-        if (!DECIMAL_REG_EX.test(doc.$numberLong)) {
-            throw new BSONError(`$numberLong string "${doc.$numberLong}" is in an invalid format`);
-        }
-        if (useBigInt64) {
-            const bigIntResult = BigInt(doc.$numberLong);
-            return BigInt.asIntN(64, bigIntResult);
-        }
-        const longResult = Long.fromString(doc.$numberLong);
-        if (relaxed) {
-            return longResult.toNumber();
-        }
-        return longResult;
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const longVal = inspect(this.toString(), options);
-        const unsignedVal = this.unsigned ? `, ${inspect(this.unsigned, options)}` : '';
-        return `new Long(${longVal}${unsignedVal})`;
-    }
-}
-Long.TWO_PWR_24 = Long.fromInt(TWO_PWR_24_DBL);
-Long.MAX_UNSIGNED_VALUE = Long.fromBits(0xffffffff | 0, 0xffffffff | 0, true);
-Long.ZERO = Long.fromInt(0);
-Long.UZERO = Long.fromInt(0, true);
-Long.ONE = Long.fromInt(1);
-Long.UONE = Long.fromInt(1, true);
-Long.NEG_ONE = Long.fromInt(-1);
-Long.MAX_VALUE = Long.fromBits(0xffffffff | 0, 0x7fffffff | 0, false);
-Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0, false);
-
-const PARSE_STRING_REGEXP = /^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/;
-const PARSE_INF_REGEXP = /^(\+|-)?(Infinity|inf)$/i;
-const PARSE_NAN_REGEXP = /^(\+|-)?NaN$/i;
-const EXPONENT_MAX = 6111;
-const EXPONENT_MIN = -6176;
-const EXPONENT_BIAS = 6176;
-const MAX_DIGITS = 34;
-const NAN_BUFFER = ByteUtils.fromNumberArray([
-    0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-].reverse());
-const INF_NEGATIVE_BUFFER = ByteUtils.fromNumberArray([
-    0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-].reverse());
-const INF_POSITIVE_BUFFER = ByteUtils.fromNumberArray([
-    0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-].reverse());
-const EXPONENT_REGEX = /^([-+])?(\d+)?$/;
-const COMBINATION_MASK = 0x1f;
-const EXPONENT_MASK = 0x3fff;
-const COMBINATION_INFINITY = 30;
-const COMBINATION_NAN = 31;
-function isDigit(value) {
-    return !isNaN(parseInt(value, 10));
-}
-function divideu128(value) {
-    const DIVISOR = Long.fromNumber(1000 * 1000 * 1000);
-    let _rem = Long.fromNumber(0);
-    if (!value.parts[0] && !value.parts[1] && !value.parts[2] && !value.parts[3]) {
-        return { quotient: value, rem: _rem };
-    }
-    for (let i = 0; i <= 3; i++) {
-        _rem = _rem.shiftLeft(32);
-        _rem = _rem.add(new Long(value.parts[i], 0));
-        value.parts[i] = _rem.div(DIVISOR).low;
-        _rem = _rem.modulo(DIVISOR);
-    }
-    return { quotient: value, rem: _rem };
-}
-function multiply64x2(left, right) {
-    if (!left && !right) {
-        return { high: Long.fromNumber(0), low: Long.fromNumber(0) };
-    }
-    const leftHigh = left.shiftRightUnsigned(32);
-    const leftLow = new Long(left.getLowBits(), 0);
-    const rightHigh = right.shiftRightUnsigned(32);
-    const rightLow = new Long(right.getLowBits(), 0);
-    let productHigh = leftHigh.multiply(rightHigh);
-    let productMid = leftHigh.multiply(rightLow);
-    const productMid2 = leftLow.multiply(rightHigh);
-    let productLow = leftLow.multiply(rightLow);
-    productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
-    productMid = new Long(productMid.getLowBits(), 0)
-        .add(productMid2)
-        .add(productLow.shiftRightUnsigned(32));
-    productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
-    productLow = productMid.shiftLeft(32).add(new Long(productLow.getLowBits(), 0));
-    return { high: productHigh, low: productLow };
-}
-function lessThan(left, right) {
-    const uhleft = left.high >>> 0;
-    const uhright = right.high >>> 0;
-    if (uhleft < uhright) {
-        return true;
-    }
-    else if (uhleft === uhright) {
-        const ulleft = left.low >>> 0;
-        const ulright = right.low >>> 0;
-        if (ulleft < ulright)
-            return true;
-    }
-    return false;
-}
-function invalidErr(string, message) {
-    throw new BSONError(`"${string}" is not a valid Decimal128 string - ${message}`);
-}
-class Decimal128 extends BSONValue {
-    get _bsontype() {
-        return 'Decimal128';
-    }
-    constructor(bytes) {
-        super();
-        if (typeof bytes === 'string') {
-            this.bytes = Decimal128.fromString(bytes).bytes;
-        }
-        else if (isUint8Array(bytes)) {
-            if (bytes.byteLength !== 16) {
-                throw new BSONError('Decimal128 must take a Buffer of 16 bytes');
-            }
-            this.bytes = bytes;
-        }
-        else {
-            throw new BSONError('Decimal128 must take a Buffer or string');
-        }
-    }
-    static fromString(representation) {
-        return Decimal128._fromString(representation, { allowRounding: false });
-    }
-    static fromStringWithRounding(representation) {
-        return Decimal128._fromString(representation, { allowRounding: true });
-    }
-    static _fromString(representation, options) {
-        let isNegative = false;
-        let sawSign = false;
-        let sawRadix = false;
-        let foundNonZero = false;
-        let significantDigits = 0;
-        let nDigitsRead = 0;
-        let nDigits = 0;
-        let radixPosition = 0;
-        let firstNonZero = 0;
-        const digits = [0];
-        let nDigitsStored = 0;
-        let digitsInsert = 0;
-        let lastDigit = 0;
-        let exponent = 0;
-        let significandHigh = new Long(0, 0);
-        let significandLow = new Long(0, 0);
-        let biasedExponent = 0;
-        let index = 0;
-        if (representation.length >= 7000) {
-            throw new BSONError('' + representation + ' not a valid Decimal128 string');
-        }
-        const stringMatch = representation.match(PARSE_STRING_REGEXP);
-        const infMatch = representation.match(PARSE_INF_REGEXP);
-        const nanMatch = representation.match(PARSE_NAN_REGEXP);
-        if ((!stringMatch && !infMatch && !nanMatch) || representation.length === 0) {
-            throw new BSONError('' + representation + ' not a valid Decimal128 string');
-        }
-        if (stringMatch) {
-            const unsignedNumber = stringMatch[2];
-            const e = stringMatch[4];
-            const expSign = stringMatch[5];
-            const expNumber = stringMatch[6];
-            if (e && expNumber === undefined)
-                invalidErr(representation, 'missing exponent power');
-            if (e && unsignedNumber === undefined)
-                invalidErr(representation, 'missing exponent base');
-            if (e === undefined && (expSign || expNumber)) {
-                invalidErr(representation, 'missing e before exponent');
-            }
-        }
-        if (representation[index] === '+' || representation[index] === '-') {
-            sawSign = true;
-            isNegative = representation[index++] === '-';
-        }
-        if (!isDigit(representation[index]) && representation[index] !== '.') {
-            if (representation[index] === 'i' || representation[index] === 'I') {
-                return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
-            }
-            else if (representation[index] === 'N') {
-                return new Decimal128(NAN_BUFFER);
-            }
-        }
-        while (isDigit(representation[index]) || representation[index] === '.') {
-            if (representation[index] === '.') {
-                if (sawRadix)
-                    invalidErr(representation, 'contains multiple periods');
-                sawRadix = true;
-                index = index + 1;
-                continue;
-            }
-            if (nDigitsStored < MAX_DIGITS) {
-                if (representation[index] !== '0' || foundNonZero) {
-                    if (!foundNonZero) {
-                        firstNonZero = nDigitsRead;
-                    }
-                    foundNonZero = true;
-                    digits[digitsInsert++] = parseInt(representation[index], 10);
-                    nDigitsStored = nDigitsStored + 1;
-                }
-            }
-            if (foundNonZero)
-                nDigits = nDigits + 1;
-            if (sawRadix)
-                radixPosition = radixPosition + 1;
-            nDigitsRead = nDigitsRead + 1;
-            index = index + 1;
-        }
-        if (sawRadix && !nDigitsRead)
-            throw new BSONError('' + representation + ' not a valid Decimal128 string');
-        if (representation[index] === 'e' || representation[index] === 'E') {
-            const match = representation.substr(++index).match(EXPONENT_REGEX);
-            if (!match || !match[2])
-                return new Decimal128(NAN_BUFFER);
-            exponent = parseInt(match[0], 10);
-            index = index + match[0].length;
-        }
-        if (representation[index])
-            return new Decimal128(NAN_BUFFER);
-        if (!nDigitsStored) {
-            digits[0] = 0;
-            nDigits = 1;
-            nDigitsStored = 1;
-            significantDigits = 0;
-        }
-        else {
-            lastDigit = nDigitsStored - 1;
-            significantDigits = nDigits;
-            if (significantDigits !== 1) {
-                while (representation[firstNonZero + significantDigits - 1 + Number(sawSign) + Number(sawRadix)] === '0') {
-                    significantDigits = significantDigits - 1;
-                }
-            }
-        }
-        if (exponent <= radixPosition && radixPosition > exponent + (1 << 14)) {
-            exponent = EXPONENT_MIN;
-        }
-        else {
-            exponent = exponent - radixPosition;
-        }
-        while (exponent > EXPONENT_MAX) {
-            lastDigit = lastDigit + 1;
-            if (lastDigit >= MAX_DIGITS) {
-                if (significantDigits === 0) {
-                    exponent = EXPONENT_MAX;
-                    break;
-                }
-                invalidErr(representation, 'overflow');
-            }
-            exponent = exponent - 1;
-        }
-        if (options.allowRounding) {
-            while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
-                if (lastDigit === 0 && significantDigits < nDigitsStored) {
-                    exponent = EXPONENT_MIN;
-                    significantDigits = 0;
-                    break;
-                }
-                if (nDigitsStored < nDigits) {
-                    nDigits = nDigits - 1;
-                }
-                else {
-                    lastDigit = lastDigit - 1;
-                }
-                if (exponent < EXPONENT_MAX) {
-                    exponent = exponent + 1;
-                }
-                else {
-                    const digitsString = digits.join('');
-                    if (digitsString.match(/^0+$/)) {
-                        exponent = EXPONENT_MAX;
-                        break;
-                    }
-                    invalidErr(representation, 'overflow');
-                }
-            }
-            if (lastDigit + 1 < significantDigits) {
-                let endOfString = nDigitsRead;
-                if (sawRadix) {
-                    firstNonZero = firstNonZero + 1;
-                    endOfString = endOfString + 1;
-                }
-                if (sawSign) {
-                    firstNonZero = firstNonZero + 1;
-                    endOfString = endOfString + 1;
-                }
-                const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
-                let roundBit = 0;
-                if (roundDigit >= 5) {
-                    roundBit = 1;
-                    if (roundDigit === 5) {
-                        roundBit = digits[lastDigit] % 2 === 1 ? 1 : 0;
-                        for (let i = firstNonZero + lastDigit + 2; i < endOfString; i++) {
-                            if (parseInt(representation[i], 10)) {
-                                roundBit = 1;
-                                break;
-                            }
-                        }
-                    }
-                }
-                if (roundBit) {
-                    let dIdx = lastDigit;
-                    for (; dIdx >= 0; dIdx--) {
-                        if (++digits[dIdx] > 9) {
-                            digits[dIdx] = 0;
-                            if (dIdx === 0) {
-                                if (exponent < EXPONENT_MAX) {
-                                    exponent = exponent + 1;
-                                    digits[dIdx] = 1;
-                                }
-                                else {
-                                    return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
-                                }
-                            }
-                        }
-                        else {
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-        else {
-            while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
-                if (lastDigit === 0) {
-                    if (significantDigits === 0) {
-                        exponent = EXPONENT_MIN;
-                        break;
-                    }
-                    invalidErr(representation, 'exponent underflow');
-                }
-                if (nDigitsStored < nDigits) {
-                    if (representation[nDigits - 1 + Number(sawSign) + Number(sawRadix)] !== '0' &&
-                        significantDigits !== 0) {
-                        invalidErr(representation, 'inexact rounding');
-                    }
-                    nDigits = nDigits - 1;
-                }
-                else {
-                    if (digits[lastDigit] !== 0) {
-                        invalidErr(representation, 'inexact rounding');
-                    }
-                    lastDigit = lastDigit - 1;
-                }
-                if (exponent < EXPONENT_MAX) {
-                    exponent = exponent + 1;
-                }
-                else {
-                    invalidErr(representation, 'overflow');
-                }
-            }
-            if (lastDigit + 1 < significantDigits) {
-                if (sawRadix) {
-                    firstNonZero = firstNonZero + 1;
-                }
-                if (sawSign) {
-                    firstNonZero = firstNonZero + 1;
-                }
-                const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
-                if (roundDigit !== 0) {
-                    invalidErr(representation, 'inexact rounding');
-                }
-            }
-        }
-        significandHigh = Long.fromNumber(0);
-        significandLow = Long.fromNumber(0);
-        if (significantDigits === 0) {
-            significandHigh = Long.fromNumber(0);
-            significandLow = Long.fromNumber(0);
-        }
-        else if (lastDigit < 17) {
-            let dIdx = 0;
-            significandLow = Long.fromNumber(digits[dIdx++]);
-            significandHigh = new Long(0, 0);
-            for (; dIdx <= lastDigit; dIdx++) {
-                significandLow = significandLow.multiply(Long.fromNumber(10));
-                significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
-            }
-        }
-        else {
-            let dIdx = 0;
-            significandHigh = Long.fromNumber(digits[dIdx++]);
-            for (; dIdx <= lastDigit - 17; dIdx++) {
-                significandHigh = significandHigh.multiply(Long.fromNumber(10));
-                significandHigh = significandHigh.add(Long.fromNumber(digits[dIdx]));
-            }
-            significandLow = Long.fromNumber(digits[dIdx++]);
-            for (; dIdx <= lastDigit; dIdx++) {
-                significandLow = significandLow.multiply(Long.fromNumber(10));
-                significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
-            }
-        }
-        const significand = multiply64x2(significandHigh, Long.fromString('100000000000000000'));
-        significand.low = significand.low.add(significandLow);
-        if (lessThan(significand.low, significandLow)) {
-            significand.high = significand.high.add(Long.fromNumber(1));
-        }
-        biasedExponent = exponent + EXPONENT_BIAS;
-        const dec = { low: Long.fromNumber(0), high: Long.fromNumber(0) };
-        if (significand.high.shiftRightUnsigned(49).and(Long.fromNumber(1)).equals(Long.fromNumber(1))) {
-            dec.high = dec.high.or(Long.fromNumber(0x3).shiftLeft(61));
-            dec.high = dec.high.or(Long.fromNumber(biasedExponent).and(Long.fromNumber(0x3fff).shiftLeft(47)));
-            dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x7fffffffffff)));
-        }
-        else {
-            dec.high = dec.high.or(Long.fromNumber(biasedExponent & 0x3fff).shiftLeft(49));
-            dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x1ffffffffffff)));
-        }
-        dec.low = significand.low;
-        if (isNegative) {
-            dec.high = dec.high.or(Long.fromString('9223372036854775808'));
-        }
-        const buffer = ByteUtils.allocateUnsafe(16);
-        index = 0;
-        buffer[index++] = dec.low.low & 0xff;
-        buffer[index++] = (dec.low.low >> 8) & 0xff;
-        buffer[index++] = (dec.low.low >> 16) & 0xff;
-        buffer[index++] = (dec.low.low >> 24) & 0xff;
-        buffer[index++] = dec.low.high & 0xff;
-        buffer[index++] = (dec.low.high >> 8) & 0xff;
-        buffer[index++] = (dec.low.high >> 16) & 0xff;
-        buffer[index++] = (dec.low.high >> 24) & 0xff;
-        buffer[index++] = dec.high.low & 0xff;
-        buffer[index++] = (dec.high.low >> 8) & 0xff;
-        buffer[index++] = (dec.high.low >> 16) & 0xff;
-        buffer[index++] = (dec.high.low >> 24) & 0xff;
-        buffer[index++] = dec.high.high & 0xff;
-        buffer[index++] = (dec.high.high >> 8) & 0xff;
-        buffer[index++] = (dec.high.high >> 16) & 0xff;
-        buffer[index++] = (dec.high.high >> 24) & 0xff;
-        return new Decimal128(buffer);
-    }
-    toString() {
-        let biased_exponent;
-        let significand_digits = 0;
-        const significand = new Array(36);
-        for (let i = 0; i < significand.length; i++)
-            significand[i] = 0;
-        let index = 0;
-        let is_zero = false;
-        let significand_msb;
-        let significand128 = { parts: [0, 0, 0, 0] };
-        let j, k;
-        const string = [];
-        index = 0;
-        const buffer = this.bytes;
-        const low = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        const midl = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        const midh = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        const high = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        index = 0;
-        const dec = {
-            low: new Long(low, midl),
-            high: new Long(midh, high)
-        };
-        if (dec.high.lessThan(Long.ZERO)) {
-            string.push('-');
-        }
-        const combination = (high >> 26) & COMBINATION_MASK;
-        if (combination >> 3 === 3) {
-            if (combination === COMBINATION_INFINITY) {
-                return string.join('') + 'Infinity';
-            }
-            else if (combination === COMBINATION_NAN) {
-                return 'NaN';
-            }
-            else {
-                biased_exponent = (high >> 15) & EXPONENT_MASK;
-                significand_msb = 0x08 + ((high >> 14) & 0x01);
-            }
-        }
-        else {
-            significand_msb = (high >> 14) & 0x07;
-            biased_exponent = (high >> 17) & EXPONENT_MASK;
-        }
-        const exponent = biased_exponent - EXPONENT_BIAS;
-        significand128.parts[0] = (high & 0x3fff) + ((significand_msb & 0xf) << 14);
-        significand128.parts[1] = midh;
-        significand128.parts[2] = midl;
-        significand128.parts[3] = low;
-        if (significand128.parts[0] === 0 &&
-            significand128.parts[1] === 0 &&
-            significand128.parts[2] === 0 &&
-            significand128.parts[3] === 0) {
-            is_zero = true;
-        }
-        else {
-            for (k = 3; k >= 0; k--) {
-                let least_digits = 0;
-                const result = divideu128(significand128);
-                significand128 = result.quotient;
-                least_digits = result.rem.low;
-                if (!least_digits)
-                    continue;
-                for (j = 8; j >= 0; j--) {
-                    significand[k * 9 + j] = least_digits % 10;
-                    least_digits = Math.floor(least_digits / 10);
-                }
-            }
-        }
-        if (is_zero) {
-            significand_digits = 1;
-            significand[index] = 0;
-        }
-        else {
-            significand_digits = 36;
-            while (!significand[index]) {
-                significand_digits = significand_digits - 1;
-                index = index + 1;
-            }
-        }
-        const scientific_exponent = significand_digits - 1 + exponent;
-        if (scientific_exponent >= 34 || scientific_exponent <= -7 || exponent > 0) {
-            if (significand_digits > 34) {
-                string.push(`${0}`);
-                if (exponent > 0)
-                    string.push(`E+${exponent}`);
-                else if (exponent < 0)
-                    string.push(`E${exponent}`);
-                return string.join('');
-            }
-            string.push(`${significand[index++]}`);
-            significand_digits = significand_digits - 1;
-            if (significand_digits) {
-                string.push('.');
-            }
-            for (let i = 0; i < significand_digits; i++) {
-                string.push(`${significand[index++]}`);
-            }
-            string.push('E');
-            if (scientific_exponent > 0) {
-                string.push(`+${scientific_exponent}`);
-            }
-            else {
-                string.push(`${scientific_exponent}`);
-            }
-        }
-        else {
-            if (exponent >= 0) {
-                for (let i = 0; i < significand_digits; i++) {
-                    string.push(`${significand[index++]}`);
-                }
-            }
-            else {
-                let radix_position = significand_digits + exponent;
-                if (radix_position > 0) {
-                    for (let i = 0; i < radix_position; i++) {
-                        string.push(`${significand[index++]}`);
-                    }
-                }
-                else {
-                    string.push('0');
-                }
-                string.push('.');
-                while (radix_position++ < 0) {
-                    string.push('0');
-                }
-                for (let i = 0; i < significand_digits - Math.max(radix_position - 1, 0); i++) {
-                    string.push(`${significand[index++]}`);
-                }
-            }
-        }
-        return string.join('');
-    }
-    toJSON() {
-        return { $numberDecimal: this.toString() };
-    }
-    toExtendedJSON() {
-        return { $numberDecimal: this.toString() };
-    }
-    static fromExtendedJSON(doc) {
-        return Decimal128.fromString(doc.$numberDecimal);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const d128string = inspect(this.toString(), options);
-        return `new Decimal128(${d128string})`;
-    }
-}
-
-class Double extends BSONValue {
-    get _bsontype() {
-        return 'Double';
-    }
-    constructor(value) {
-        super();
-        if (value instanceof Number) {
-            value = value.valueOf();
-        }
-        this.value = +value;
-    }
-    valueOf() {
-        return this.value;
-    }
-    toJSON() {
-        return this.value;
-    }
-    toString(radix) {
-        return this.value.toString(radix);
-    }
-    toExtendedJSON(options) {
-        if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) {
-            return this.value;
-        }
-        if (Object.is(Math.sign(this.value), -0)) {
-            return { $numberDouble: '-0.0' };
-        }
-        return {
-            $numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString()
-        };
-    }
-    static fromExtendedJSON(doc, options) {
-        const doubleValue = parseFloat(doc.$numberDouble);
-        return options && options.relaxed ? doubleValue : new Double(doubleValue);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new Double(${inspect(this.value, options)})`;
-    }
-}
-
-class Int32 extends BSONValue {
-    get _bsontype() {
-        return 'Int32';
-    }
-    constructor(value) {
-        super();
-        if (value instanceof Number) {
-            value = value.valueOf();
-        }
-        this.value = +value | 0;
-    }
-    valueOf() {
-        return this.value;
-    }
-    toString(radix) {
-        return this.value.toString(radix);
-    }
-    toJSON() {
-        return this.value;
-    }
-    toExtendedJSON(options) {
-        if (options && (options.relaxed || options.legacy))
-            return this.value;
-        return { $numberInt: this.value.toString() };
-    }
-    static fromExtendedJSON(doc, options) {
-        return options && options.relaxed ? parseInt(doc.$numberInt, 10) : new Int32(doc.$numberInt);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new Int32(${inspect(this.value, options)})`;
-    }
-}
-
-class MaxKey extends BSONValue {
-    get _bsontype() {
-        return 'MaxKey';
-    }
-    toExtendedJSON() {
-        return { $maxKey: 1 };
-    }
-    static fromExtendedJSON() {
-        return new MaxKey();
-    }
-    inspect() {
-        return 'new MaxKey()';
-    }
-}
-
-class MinKey extends BSONValue {
-    get _bsontype() {
-        return 'MinKey';
-    }
-    toExtendedJSON() {
-        return { $minKey: 1 };
-    }
-    static fromExtendedJSON() {
-        return new MinKey();
-    }
-    inspect() {
-        return 'new MinKey()';
-    }
-}
-
-const FLOAT = new Float64Array(1);
-const FLOAT_BYTES = new Uint8Array(FLOAT.buffer, 0, 8);
-const NumberUtils = {
-    getInt32LE(source, offset) {
-        return (source[offset] |
-            (source[offset + 1] << 8) |
-            (source[offset + 2] << 16) |
-            (source[offset + 3] << 24));
-    },
-    getUint32LE(source, offset) {
-        return (source[offset] +
-            source[offset + 1] * 256 +
-            source[offset + 2] * 65536 +
-            source[offset + 3] * 16777216);
-    },
-    getUint32BE(source, offset) {
-        return (source[offset + 3] +
-            source[offset + 2] * 256 +
-            source[offset + 1] * 65536 +
-            source[offset] * 16777216);
-    },
-    getBigInt64LE(source, offset) {
-        const lo = NumberUtils.getUint32LE(source, offset);
-        const hi = NumberUtils.getUint32LE(source, offset + 4);
-        return (BigInt(hi) << BigInt(32)) + BigInt(lo);
-    },
-    getFloat64LE(source, offset) {
-        FLOAT_BYTES[0] = source[offset];
-        FLOAT_BYTES[1] = source[offset + 1];
-        FLOAT_BYTES[2] = source[offset + 2];
-        FLOAT_BYTES[3] = source[offset + 3];
-        FLOAT_BYTES[4] = source[offset + 4];
-        FLOAT_BYTES[5] = source[offset + 5];
-        FLOAT_BYTES[6] = source[offset + 6];
-        FLOAT_BYTES[7] = source[offset + 7];
-        return FLOAT[0];
-    },
-    setInt32BE(destination, offset, value) {
-        destination[offset + 3] = value;
-        value >>>= 8;
-        destination[offset + 2] = value;
-        value >>>= 8;
-        destination[offset + 1] = value;
-        value >>>= 8;
-        destination[offset] = value;
-        return 4;
-    },
-    setInt32LE(destination, offset, value) {
-        destination[offset] = value;
-        value >>>= 8;
-        destination[offset + 1] = value;
-        value >>>= 8;
-        destination[offset + 2] = value;
-        value >>>= 8;
-        destination[offset + 3] = value;
-        return 4;
-    },
-    setBigInt64LE(destination, offset, value) {
-        const mask32bits = BigInt(4294967295);
-        let lo = Number(value & mask32bits);
-        destination[offset] = lo;
-        lo >>= 8;
-        destination[offset + 1] = lo;
-        lo >>= 8;
-        destination[offset + 2] = lo;
-        lo >>= 8;
-        destination[offset + 3] = lo;
-        let hi = Number((value >> BigInt(32)) & mask32bits);
-        destination[offset + 4] = hi;
-        hi >>= 8;
-        destination[offset + 5] = hi;
-        hi >>= 8;
-        destination[offset + 6] = hi;
-        hi >>= 8;
-        destination[offset + 7] = hi;
-        return 8;
-    },
-    setFloat64LE(destination, offset, value) {
-        FLOAT[0] = value;
-        destination[offset] = FLOAT_BYTES[0];
-        destination[offset + 1] = FLOAT_BYTES[1];
-        destination[offset + 2] = FLOAT_BYTES[2];
-        destination[offset + 3] = FLOAT_BYTES[3];
-        destination[offset + 4] = FLOAT_BYTES[4];
-        destination[offset + 5] = FLOAT_BYTES[5];
-        destination[offset + 6] = FLOAT_BYTES[6];
-        destination[offset + 7] = FLOAT_BYTES[7];
-        return 8;
-    }
-};
-
-const checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$');
-let PROCESS_UNIQUE = null;
-class ObjectId extends BSONValue {
-    get _bsontype() {
-        return 'ObjectId';
-    }
-    constructor(inputId) {
-        super();
-        let workingId;
-        if (typeof inputId === 'object' && inputId && 'id' in inputId) {
-            if (typeof inputId.id !== 'string' && !ArrayBuffer.isView(inputId.id)) {
-                throw new BSONError('Argument passed in must have an id that is of type string or Buffer');
-            }
-            if ('toHexString' in inputId && typeof inputId.toHexString === 'function') {
-                workingId = ByteUtils.fromHex(inputId.toHexString());
-            }
-            else {
-                workingId = inputId.id;
-            }
-        }
-        else {
-            workingId = inputId;
-        }
-        if (workingId == null || typeof workingId === 'number') {
-            this.buffer = ObjectId.generate(typeof workingId === 'number' ? workingId : undefined);
-        }
-        else if (ArrayBuffer.isView(workingId) && workingId.byteLength === 12) {
-            this.buffer = ByteUtils.toLocalBufferType(workingId);
-        }
-        else if (typeof workingId === 'string') {
-            if (workingId.length === 24 && checkForHexRegExp.test(workingId)) {
-                this.buffer = ByteUtils.fromHex(workingId);
-            }
-            else {
-                throw new BSONError('input must be a 24 character hex string, 12 byte Uint8Array, or an integer');
-            }
-        }
-        else {
-            throw new BSONError('Argument passed in does not match the accepted types');
-        }
-        if (ObjectId.cacheHexString) {
-            this.__id = ByteUtils.toHex(this.id);
-        }
-    }
-    get id() {
-        return this.buffer;
-    }
-    set id(value) {
-        this.buffer = value;
-        if (ObjectId.cacheHexString) {
-            this.__id = ByteUtils.toHex(value);
-        }
-    }
-    toHexString() {
-        if (ObjectId.cacheHexString && this.__id) {
-            return this.__id;
-        }
-        const hexString = ByteUtils.toHex(this.id);
-        if (ObjectId.cacheHexString && !this.__id) {
-            this.__id = hexString;
-        }
-        return hexString;
-    }
-    static getInc() {
-        return (ObjectId.index = (ObjectId.index + 1) % 0xffffff);
-    }
-    static generate(time) {
-        if ('number' !== typeof time) {
-            time = Math.floor(Date.now() / 1000);
-        }
-        const inc = ObjectId.getInc();
-        const buffer = ByteUtils.allocateUnsafe(12);
-        NumberUtils.setInt32BE(buffer, 0, time);
-        if (PROCESS_UNIQUE === null) {
-            PROCESS_UNIQUE = ByteUtils.randomBytes(5);
-        }
-        buffer[4] = PROCESS_UNIQUE[0];
-        buffer[5] = PROCESS_UNIQUE[1];
-        buffer[6] = PROCESS_UNIQUE[2];
-        buffer[7] = PROCESS_UNIQUE[3];
-        buffer[8] = PROCESS_UNIQUE[4];
-        buffer[11] = inc & 0xff;
-        buffer[10] = (inc >> 8) & 0xff;
-        buffer[9] = (inc >> 16) & 0xff;
-        return buffer;
-    }
-    toString(encoding) {
-        if (encoding === 'base64')
-            return ByteUtils.toBase64(this.id);
-        if (encoding === 'hex')
-            return this.toHexString();
-        return this.toHexString();
-    }
-    toJSON() {
-        return this.toHexString();
-    }
-    static is(variable) {
-        return (variable != null &&
-            typeof variable === 'object' &&
-            '_bsontype' in variable &&
-            variable._bsontype === 'ObjectId');
-    }
-    equals(otherId) {
-        if (otherId === undefined || otherId === null) {
-            return false;
-        }
-        if (ObjectId.is(otherId)) {
-            return (this.buffer[11] === otherId.buffer[11] && ByteUtils.equals(this.buffer, otherId.buffer));
-        }
-        if (typeof otherId === 'string') {
-            return otherId.toLowerCase() === this.toHexString();
-        }
-        if (typeof otherId === 'object' && typeof otherId.toHexString === 'function') {
-            const otherIdString = otherId.toHexString();
-            const thisIdString = this.toHexString();
-            return typeof otherIdString === 'string' && otherIdString.toLowerCase() === thisIdString;
-        }
-        return false;
-    }
-    getTimestamp() {
-        const timestamp = new Date();
-        const time = NumberUtils.getUint32BE(this.buffer, 0);
-        timestamp.setTime(Math.floor(time) * 1000);
-        return timestamp;
-    }
-    static createPk() {
-        return new ObjectId();
-    }
-    serializeInto(uint8array, index) {
-        uint8array[index] = this.buffer[0];
-        uint8array[index + 1] = this.buffer[1];
-        uint8array[index + 2] = this.buffer[2];
-        uint8array[index + 3] = this.buffer[3];
-        uint8array[index + 4] = this.buffer[4];
-        uint8array[index + 5] = this.buffer[5];
-        uint8array[index + 6] = this.buffer[6];
-        uint8array[index + 7] = this.buffer[7];
-        uint8array[index + 8] = this.buffer[8];
-        uint8array[index + 9] = this.buffer[9];
-        uint8array[index + 10] = this.buffer[10];
-        uint8array[index + 11] = this.buffer[11];
-        return 12;
-    }
-    static createFromTime(time) {
-        const buffer = ByteUtils.allocate(12);
-        for (let i = 11; i >= 4; i--)
-            buffer[i] = 0;
-        NumberUtils.setInt32BE(buffer, 0, time);
-        return new ObjectId(buffer);
-    }
-    static createFromHexString(hexString) {
-        if (hexString?.length !== 24) {
-            throw new BSONError('hex string must be 24 characters');
-        }
-        return new ObjectId(ByteUtils.fromHex(hexString));
-    }
-    static createFromBase64(base64) {
-        if (base64?.length !== 16) {
-            throw new BSONError('base64 string must be 16 characters');
-        }
-        return new ObjectId(ByteUtils.fromBase64(base64));
-    }
-    static isValid(id) {
-        if (id == null)
-            return false;
-        try {
-            new ObjectId(id);
-            return true;
-        }
-        catch {
-            return false;
-        }
-    }
-    toExtendedJSON() {
-        if (this.toHexString)
-            return { $oid: this.toHexString() };
-        return { $oid: this.toString('hex') };
-    }
-    static fromExtendedJSON(doc) {
-        return new ObjectId(doc.$oid);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new ObjectId(${inspect(this.toHexString(), options)})`;
-    }
-}
-ObjectId.index = Math.floor(Math.random() * 0xffffff);
-
-function internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined) {
-    let totalLength = 4 + 1;
-    if (Array.isArray(object)) {
-        for (let i = 0; i < object.length; i++) {
-            totalLength += calculateElement(i.toString(), object[i], serializeFunctions, true, ignoreUndefined);
-        }
-    }
-    else {
-        if (typeof object?.toBSON === 'function') {
-            object = object.toBSON();
-        }
-        for (const key of Object.keys(object)) {
-            totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined);
-        }
-    }
-    return totalLength;
-}
-function calculateElement(name, value, serializeFunctions = false, isArray = false, ignoreUndefined = false) {
-    if (typeof value?.toBSON === 'function') {
-        value = value.toBSON();
-    }
-    switch (typeof value) {
-        case 'string':
-            return 1 + ByteUtils.utf8ByteLength(name) + 1 + 4 + ByteUtils.utf8ByteLength(value) + 1;
-        case 'number':
-            if (Math.floor(value) === value &&
-                value >= JS_INT_MIN &&
-                value <= JS_INT_MAX) {
-                if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
-                    return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (4 + 1);
-                }
-                else {
-                    return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-                }
-            }
-            else {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-            }
-        case 'undefined':
-            if (isArray || !ignoreUndefined)
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
-            return 0;
-        case 'boolean':
-            return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 1);
-        case 'object':
-            if (value != null &&
-                typeof value._bsontype === 'string' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value == null || value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
-            }
-            else if (value._bsontype === 'ObjectId') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (12 + 1);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-            }
-            else if (ArrayBuffer.isView(value) ||
-                value instanceof ArrayBuffer ||
-                isAnyArrayBuffer(value)) {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 4 + 1) + value.byteLength);
-            }
-            else if (value._bsontype === 'Long' ||
-                value._bsontype === 'Double' ||
-                value._bsontype === 'Timestamp') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-            }
-            else if (value._bsontype === 'Decimal128') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (16 + 1);
-            }
-            else if (value._bsontype === 'Code') {
-                if (value.scope != null && Object.keys(value.scope).length > 0) {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                        1 +
-                        4 +
-                        4 +
-                        ByteUtils.utf8ByteLength(value.code.toString()) +
-                        1 +
-                        internalCalculateObjectSize(value.scope, serializeFunctions, ignoreUndefined));
-                }
-                else {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                        1 +
-                        4 +
-                        ByteUtils.utf8ByteLength(value.code.toString()) +
-                        1);
-                }
-            }
-            else if (value._bsontype === 'Binary') {
-                const binary = value;
-                if (binary.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                        (binary.position + 1 + 4 + 1 + 4));
-                }
-                else {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (binary.position + 1 + 4 + 1));
-                }
-            }
-            else if (value._bsontype === 'Symbol') {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    ByteUtils.utf8ByteLength(value.value) +
-                    4 +
-                    1 +
-                    1);
-            }
-            else if (value._bsontype === 'DBRef') {
-                const ordered_values = Object.assign({
-                    $ref: value.collection,
-                    $id: value.oid
-                }, value.fields);
-                if (value.db != null) {
-                    ordered_values['$db'] = value.db;
-                }
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    internalCalculateObjectSize(ordered_values, serializeFunctions, ignoreUndefined));
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    ByteUtils.utf8ByteLength(value.source) +
-                    1 +
-                    (value.global ? 1 : 0) +
-                    (value.ignoreCase ? 1 : 0) +
-                    (value.multiline ? 1 : 0) +
-                    1);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    ByteUtils.utf8ByteLength(value.pattern) +
-                    1 +
-                    ByteUtils.utf8ByteLength(value.options) +
-                    1);
-            }
-            else {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    internalCalculateObjectSize(value, serializeFunctions, ignoreUndefined) +
-                    1);
-            }
-        case 'function':
-            if (serializeFunctions) {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    4 +
-                    ByteUtils.utf8ByteLength(value.toString()) +
-                    1);
-            }
-    }
-    return 0;
-}
-
-function alphabetize(str) {
-    return str.split('').sort().join('');
-}
-class BSONRegExp extends BSONValue {
-    get _bsontype() {
-        return 'BSONRegExp';
-    }
-    constructor(pattern, options) {
-        super();
-        this.pattern = pattern;
-        this.options = alphabetize(options ?? '');
-        if (this.pattern.indexOf('\x00') !== -1) {
-            throw new BSONError(`BSON Regex patterns cannot contain null bytes, found: ${JSON.stringify(this.pattern)}`);
-        }
-        if (this.options.indexOf('\x00') !== -1) {
-            throw new BSONError(`BSON Regex options cannot contain null bytes, found: ${JSON.stringify(this.options)}`);
-        }
-        for (let i = 0; i < this.options.length; i++) {
-            if (!(this.options[i] === 'i' ||
-                this.options[i] === 'm' ||
-                this.options[i] === 'x' ||
-                this.options[i] === 'l' ||
-                this.options[i] === 's' ||
-                this.options[i] === 'u')) {
-                throw new BSONError(`The regular expression option [${this.options[i]}] is not supported`);
-            }
-        }
-    }
-    static parseOptions(options) {
-        return options ? options.split('').sort().join('') : '';
-    }
-    toExtendedJSON(options) {
-        options = options || {};
-        if (options.legacy) {
-            return { $regex: this.pattern, $options: this.options };
-        }
-        return { $regularExpression: { pattern: this.pattern, options: this.options } };
-    }
-    static fromExtendedJSON(doc) {
-        if ('$regex' in doc) {
-            if (typeof doc.$regex !== 'string') {
-                if (doc.$regex._bsontype === 'BSONRegExp') {
-                    return doc;
-                }
-            }
-            else {
-                return new BSONRegExp(doc.$regex, BSONRegExp.parseOptions(doc.$options));
-            }
-        }
-        if ('$regularExpression' in doc) {
-            return new BSONRegExp(doc.$regularExpression.pattern, BSONRegExp.parseOptions(doc.$regularExpression.options));
-        }
-        throw new BSONError(`Unexpected BSONRegExp EJSON object form: ${JSON.stringify(doc)}`);
-    }
-    inspect(depth, options, inspect) {
-        const stylize = getStylizeFunction(options) ?? (v => v);
-        inspect ??= defaultInspect;
-        const pattern = stylize(inspect(this.pattern), 'regexp');
-        const flags = stylize(inspect(this.options), 'regexp');
-        return `new BSONRegExp(${pattern}, ${flags})`;
-    }
-}
-
-class BSONSymbol extends BSONValue {
-    get _bsontype() {
-        return 'BSONSymbol';
-    }
-    constructor(value) {
-        super();
-        this.value = value;
-    }
-    valueOf() {
-        return this.value;
-    }
-    toString() {
-        return this.value;
-    }
-    toJSON() {
-        return this.value;
-    }
-    toExtendedJSON() {
-        return { $symbol: this.value };
-    }
-    static fromExtendedJSON(doc) {
-        return new BSONSymbol(doc.$symbol);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new BSONSymbol(${inspect(this.value, options)})`;
-    }
-}
-
-const LongWithoutOverridesClass = Long;
-class Timestamp extends LongWithoutOverridesClass {
-    get _bsontype() {
-        return 'Timestamp';
-    }
-    constructor(low) {
-        if (low == null) {
-            super(0, 0, true);
-        }
-        else if (typeof low === 'bigint') {
-            super(low, true);
-        }
-        else if (Long.isLong(low)) {
-            super(low.low, low.high, true);
-        }
-        else if (typeof low === 'object' && 't' in low && 'i' in low) {
-            if (typeof low.t !== 'number' && (typeof low.t !== 'object' || low.t._bsontype !== 'Int32')) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide t as a number');
-            }
-            if (typeof low.i !== 'number' && (typeof low.i !== 'object' || low.i._bsontype !== 'Int32')) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide i as a number');
-            }
-            const t = Number(low.t);
-            const i = Number(low.i);
-            if (t < 0 || Number.isNaN(t)) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide a positive t');
-            }
-            if (i < 0 || Number.isNaN(i)) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide a positive i');
-            }
-            if (t > 4294967295) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide t equal or less than uint32 max');
-            }
-            if (i > 4294967295) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide i equal or less than uint32 max');
-            }
-            super(i, t, true);
-        }
-        else {
-            throw new BSONError('A Timestamp can only be constructed with: bigint, Long, or { t: number; i: number }');
-        }
-    }
-    toJSON() {
-        return {
-            $timestamp: this.toString()
-        };
-    }
-    static fromInt(value) {
-        return new Timestamp(Long.fromInt(value, true));
-    }
-    static fromNumber(value) {
-        return new Timestamp(Long.fromNumber(value, true));
-    }
-    static fromBits(lowBits, highBits) {
-        return new Timestamp({ i: lowBits, t: highBits });
-    }
-    static fromString(str, optRadix) {
-        return new Timestamp(Long.fromString(str, true, optRadix));
-    }
-    toExtendedJSON() {
-        return { $timestamp: { t: this.high >>> 0, i: this.low >>> 0 } };
-    }
-    static fromExtendedJSON(doc) {
-        const i = Long.isLong(doc.$timestamp.i)
-            ? doc.$timestamp.i.getLowBitsUnsigned()
-            : doc.$timestamp.i;
-        const t = Long.isLong(doc.$timestamp.t)
-            ? doc.$timestamp.t.getLowBitsUnsigned()
-            : doc.$timestamp.t;
-        return new Timestamp({ t, i });
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const t = inspect(this.high >>> 0, options);
-        const i = inspect(this.low >>> 0, options);
-        return `new Timestamp({ t: ${t}, i: ${i} })`;
-    }
-}
-Timestamp.MAX_VALUE = Long.MAX_UNSIGNED_VALUE;
-
-const JS_INT_MAX_LONG = Long.fromNumber(JS_INT_MAX);
-const JS_INT_MIN_LONG = Long.fromNumber(JS_INT_MIN);
-function internalDeserialize(buffer, options, isArray) {
-    options = options == null ? {} : options;
-    const index = options && options.index ? options.index : 0;
-    const size = NumberUtils.getInt32LE(buffer, index);
-    if (size < 5) {
-        throw new BSONError(`bson size must be >= 5, is ${size}`);
-    }
-    if (options.allowObjectSmallerThanBufferSize && buffer.length < size) {
-        throw new BSONError(`buffer length ${buffer.length} must be >= bson size ${size}`);
-    }
-    if (!options.allowObjectSmallerThanBufferSize && buffer.length !== size) {
-        throw new BSONError(`buffer length ${buffer.length} must === bson size ${size}`);
-    }
-    if (size + index > buffer.byteLength) {
-        throw new BSONError(`(bson size ${size} + options.index ${index} must be <= buffer length ${buffer.byteLength})`);
-    }
-    if (buffer[index + size - 1] !== 0) {
-        throw new BSONError("One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00");
-    }
-    return deserializeObject(buffer, index, options, isArray);
-}
-const allowedDBRefKeys = /^\$ref$|^\$id$|^\$db$/;
-function deserializeObject(buffer, index, options, isArray = false) {
-    const fieldsAsRaw = options['fieldsAsRaw'] == null ? null : options['fieldsAsRaw'];
-    const raw = options['raw'] == null ? false : options['raw'];
-    const bsonRegExp = typeof options['bsonRegExp'] === 'boolean' ? options['bsonRegExp'] : false;
-    const promoteBuffers = options.promoteBuffers ?? false;
-    const promoteLongs = options.promoteLongs ?? true;
-    const promoteValues = options.promoteValues ?? true;
-    const useBigInt64 = options.useBigInt64 ?? false;
-    if (useBigInt64 && !promoteValues) {
-        throw new BSONError('Must either request bigint or Long for int64 deserialization');
-    }
-    if (useBigInt64 && !promoteLongs) {
-        throw new BSONError('Must either request bigint or Long for int64 deserialization');
-    }
-    const validation = options.validation == null ? { utf8: true } : options.validation;
-    let globalUTFValidation = true;
-    let validationSetting;
-    let utf8KeysSet;
-    const utf8ValidatedKeys = validation.utf8;
-    if (typeof utf8ValidatedKeys === 'boolean') {
-        validationSetting = utf8ValidatedKeys;
-    }
-    else {
-        globalUTFValidation = false;
-        const utf8ValidationValues = Object.keys(utf8ValidatedKeys).map(function (key) {
-            return utf8ValidatedKeys[key];
-        });
-        if (utf8ValidationValues.length === 0) {
-            throw new BSONError('UTF-8 validation setting cannot be empty');
-        }
-        if (typeof utf8ValidationValues[0] !== 'boolean') {
-            throw new BSONError('Invalid UTF-8 validation option, must specify boolean values');
-        }
-        validationSetting = utf8ValidationValues[0];
-        if (!utf8ValidationValues.every(item => item === validationSetting)) {
-            throw new BSONError('Invalid UTF-8 validation option - keys must be all true or all false');
-        }
-    }
-    if (!globalUTFValidation) {
-        utf8KeysSet = new Set();
-        for (const key of Object.keys(utf8ValidatedKeys)) {
-            utf8KeysSet.add(key);
-        }
-    }
-    const startIndex = index;
-    if (buffer.length < 5)
-        throw new BSONError('corrupt bson message < 5 bytes long');
-    const size = NumberUtils.getInt32LE(buffer, index);
-    index += 4;
-    if (size < 5 || size > buffer.length)
-        throw new BSONError('corrupt bson message');
-    const object = isArray ? [] : {};
-    let arrayIndex = 0;
-    const done = false;
-    let isPossibleDBRef = isArray ? false : null;
-    while (!done) {
-        const elementType = buffer[index++];
-        if (elementType === 0)
-            break;
-        let i = index;
-        while (buffer[i] !== 0x00 && i < buffer.length) {
-            i++;
-        }
-        if (i >= buffer.byteLength)
-            throw new BSONError('Bad BSON Document: illegal CString');
-        const name = isArray ? arrayIndex++ : ByteUtils.toUTF8(buffer, index, i, false);
-        let shouldValidateKey = true;
-        if (globalUTFValidation || utf8KeysSet?.has(name)) {
-            shouldValidateKey = validationSetting;
-        }
-        else {
-            shouldValidateKey = !validationSetting;
-        }
-        if (isPossibleDBRef !== false && name[0] === '$') {
-            isPossibleDBRef = allowedDBRefKeys.test(name);
-        }
-        let value;
-        index = i + 1;
-        if (elementType === BSON_DATA_STRING) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            value = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            index = index + stringSize;
-        }
-        else if (elementType === BSON_DATA_OID) {
-            const oid = ByteUtils.allocateUnsafe(12);
-            for (let i = 0; i < 12; i++)
-                oid[i] = buffer[index + i];
-            value = new ObjectId(oid);
-            index = index + 12;
-        }
-        else if (elementType === BSON_DATA_INT && promoteValues === false) {
-            value = new Int32(NumberUtils.getInt32LE(buffer, index));
-            index += 4;
-        }
-        else if (elementType === BSON_DATA_INT) {
-            value = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-        }
-        else if (elementType === BSON_DATA_NUMBER) {
-            value = NumberUtils.getFloat64LE(buffer, index);
-            index += 8;
-            if (promoteValues === false)
-                value = new Double(value);
-        }
-        else if (elementType === BSON_DATA_DATE) {
-            const lowBits = NumberUtils.getInt32LE(buffer, index);
-            const highBits = NumberUtils.getInt32LE(buffer, index + 4);
-            index += 8;
-            value = new Date(new Long(lowBits, highBits).toNumber());
-        }
-        else if (elementType === BSON_DATA_BOOLEAN) {
-            if (buffer[index] !== 0 && buffer[index] !== 1)
-                throw new BSONError('illegal boolean type value');
-            value = buffer[index++] === 1;
-        }
-        else if (elementType === BSON_DATA_OBJECT) {
-            const _index = index;
-            const objectSize = NumberUtils.getInt32LE(buffer, index);
-            if (objectSize <= 0 || objectSize > buffer.length - index)
-                throw new BSONError('bad embedded document length in bson');
-            if (raw) {
-                value = buffer.slice(index, index + objectSize);
-            }
-            else {
-                let objectOptions = options;
-                if (!globalUTFValidation) {
-                    objectOptions = { ...options, validation: { utf8: shouldValidateKey } };
-                }
-                value = deserializeObject(buffer, _index, objectOptions, false);
-            }
-            index = index + objectSize;
-        }
-        else if (elementType === BSON_DATA_ARRAY) {
-            const _index = index;
-            const objectSize = NumberUtils.getInt32LE(buffer, index);
-            let arrayOptions = options;
-            const stopIndex = index + objectSize;
-            if (fieldsAsRaw && fieldsAsRaw[name]) {
-                arrayOptions = { ...options, raw: true };
-            }
-            if (!globalUTFValidation) {
-                arrayOptions = { ...arrayOptions, validation: { utf8: shouldValidateKey } };
-            }
-            value = deserializeObject(buffer, _index, arrayOptions, true);
-            index = index + objectSize;
-            if (buffer[index - 1] !== 0)
-                throw new BSONError('invalid array terminator byte');
-            if (index !== stopIndex)
-                throw new BSONError('corrupted array bson');
-        }
-        else if (elementType === BSON_DATA_UNDEFINED) {
-            value = undefined;
-        }
-        else if (elementType === BSON_DATA_NULL) {
-            value = null;
-        }
-        else if (elementType === BSON_DATA_LONG) {
-            if (useBigInt64) {
-                value = NumberUtils.getBigInt64LE(buffer, index);
-                index += 8;
-            }
-            else {
-                const lowBits = NumberUtils.getInt32LE(buffer, index);
-                const highBits = NumberUtils.getInt32LE(buffer, index + 4);
-                index += 8;
-                const long = new Long(lowBits, highBits);
-                if (promoteLongs && promoteValues === true) {
-                    value =
-                        long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG)
-                            ? long.toNumber()
-                            : long;
-                }
-                else {
-                    value = long;
-                }
-            }
-        }
-        else if (elementType === BSON_DATA_DECIMAL128) {
-            const bytes = ByteUtils.allocateUnsafe(16);
-            for (let i = 0; i < 16; i++)
-                bytes[i] = buffer[index + i];
-            index = index + 16;
-            value = new Decimal128(bytes);
-        }
-        else if (elementType === BSON_DATA_BINARY) {
-            let binarySize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            const totalBinarySize = binarySize;
-            const subType = buffer[index++];
-            if (binarySize < 0)
-                throw new BSONError('Negative binary type element size found');
-            if (binarySize > buffer.byteLength)
-                throw new BSONError('Binary type size larger than document size');
-            if (buffer['slice'] != null) {
-                if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
-                    binarySize = NumberUtils.getInt32LE(buffer, index);
-                    index += 4;
-                    if (binarySize < 0)
-                        throw new BSONError('Negative binary type element size found for subtype 0x02');
-                    if (binarySize > totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
-                    if (binarySize < totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
-                }
-                if (promoteBuffers && promoteValues) {
-                    value = ByteUtils.toLocalBufferType(buffer.slice(index, index + binarySize));
-                }
-                else {
-                    value = new Binary(buffer.slice(index, index + binarySize), subType);
-                    if (subType === BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
-                        value = value.toUUID();
-                    }
-                }
-            }
-            else {
-                if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
-                    binarySize = NumberUtils.getInt32LE(buffer, index);
-                    index += 4;
-                    if (binarySize < 0)
-                        throw new BSONError('Negative binary type element size found for subtype 0x02');
-                    if (binarySize > totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
-                    if (binarySize < totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
-                }
-                if (promoteBuffers && promoteValues) {
-                    value = ByteUtils.allocateUnsafe(binarySize);
-                    for (i = 0; i < binarySize; i++) {
-                        value[i] = buffer[index + i];
-                    }
-                }
-                else {
-                    value = new Binary(buffer.slice(index, index + binarySize), subType);
-                    if (subType === BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
-                        value = value.toUUID();
-                    }
-                }
-            }
-            index = index + binarySize;
-        }
-        else if (elementType === BSON_DATA_REGEXP && bsonRegExp === false) {
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const source = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            const optionsArray = new Array(regExpOptions.length);
-            for (i = 0; i < regExpOptions.length; i++) {
-                switch (regExpOptions[i]) {
-                    case 'm':
-                        optionsArray[i] = 'm';
-                        break;
-                    case 's':
-                        optionsArray[i] = 'g';
-                        break;
-                    case 'i':
-                        optionsArray[i] = 'i';
-                        break;
-                }
-            }
-            value = new RegExp(source, optionsArray.join(''));
-        }
-        else if (elementType === BSON_DATA_REGEXP && bsonRegExp === true) {
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const source = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            value = new BSONRegExp(source, regExpOptions);
-        }
-        else if (elementType === BSON_DATA_SYMBOL) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            const symbol = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            value = promoteValues ? symbol : new BSONSymbol(symbol);
-            index = index + stringSize;
-        }
-        else if (elementType === BSON_DATA_TIMESTAMP) {
-            value = new Timestamp({
-                i: NumberUtils.getUint32LE(buffer, index),
-                t: NumberUtils.getUint32LE(buffer, index + 4)
-            });
-            index += 8;
-        }
-        else if (elementType === BSON_DATA_MIN_KEY) {
-            value = new MinKey();
-        }
-        else if (elementType === BSON_DATA_MAX_KEY) {
-            value = new MaxKey();
-        }
-        else if (elementType === BSON_DATA_CODE) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            const functionString = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            value = new Code(functionString);
-            index = index + stringSize;
-        }
-        else if (elementType === BSON_DATA_CODE_W_SCOPE) {
-            const totalSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (totalSize < 4 + 4 + 4 + 1) {
-                throw new BSONError('code_w_scope total size shorter minimum expected length');
-            }
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            const functionString = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            index = index + stringSize;
-            const _index = index;
-            const objectSize = NumberUtils.getInt32LE(buffer, index);
-            const scopeObject = deserializeObject(buffer, _index, options, false);
-            index = index + objectSize;
-            if (totalSize < 4 + 4 + objectSize + stringSize) {
-                throw new BSONError('code_w_scope total size is too short, truncating scope');
-            }
-            if (totalSize > 4 + 4 + objectSize + stringSize) {
-                throw new BSONError('code_w_scope total size is too long, clips outer document');
-            }
-            value = new Code(functionString, scopeObject);
-        }
-        else if (elementType === BSON_DATA_DBPOINTER) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0)
-                throw new BSONError('bad string length in bson');
-            if (validation != null && validation.utf8) {
-                if (!validateUtf8(buffer, index, index + stringSize - 1)) {
-                    throw new BSONError('Invalid UTF-8 string in BSON document');
-                }
-            }
-            const namespace = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, false);
-            index = index + stringSize;
-            const oidBuffer = ByteUtils.allocateUnsafe(12);
-            for (let i = 0; i < 12; i++)
-                oidBuffer[i] = buffer[index + i];
-            const oid = new ObjectId(oidBuffer);
-            index = index + 12;
-            value = new DBRef(namespace, oid);
-        }
-        else {
-            throw new BSONError(`Detected unknown BSON type ${elementType.toString(16)} for fieldname "${name}"`);
-        }
-        if (name === '__proto__') {
-            Object.defineProperty(object, name, {
-                value,
-                writable: true,
-                enumerable: true,
-                configurable: true
-            });
-        }
-        else {
-            object[name] = value;
-        }
-    }
-    if (size !== index - startIndex) {
-        if (isArray)
-            throw new BSONError('corrupt array bson');
-        throw new BSONError('corrupt object bson');
-    }
-    if (!isPossibleDBRef)
-        return object;
-    if (isDBRefLike(object)) {
-        const copy = Object.assign({}, object);
-        delete copy.$ref;
-        delete copy.$id;
-        delete copy.$db;
-        return new DBRef(object.$ref, object.$id, object.$db, copy);
-    }
-    return object;
-}
-
-const regexp = /\x00/;
-const ignoreKeys = new Set(['$db', '$ref', '$id', '$clusterTime']);
-function serializeString(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_STRING;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes + 1;
-    buffer[index - 1] = 0;
-    const size = ByteUtils.encodeUTF8Into(buffer, value, index + 4);
-    NumberUtils.setInt32LE(buffer, index, size + 1);
-    index = index + 4 + size;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeNumber(buffer, key, value, index) {
-    const isNegativeZero = Object.is(value, -0);
-    const type = !isNegativeZero &&
-        Number.isSafeInteger(value) &&
-        value <= BSON_INT32_MAX &&
-        value >= BSON_INT32_MIN
-        ? BSON_DATA_INT
-        : BSON_DATA_NUMBER;
-    buffer[index++] = type;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0x00;
-    if (type === BSON_DATA_INT) {
-        index += NumberUtils.setInt32LE(buffer, index, value);
-    }
-    else {
-        index += NumberUtils.setFloat64LE(buffer, index, value);
-    }
-    return index;
-}
-function serializeBigInt(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_LONG;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index += numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += NumberUtils.setBigInt64LE(buffer, index, value);
-    return index;
-}
-function serializeNull(buffer, key, _, index) {
-    buffer[index++] = BSON_DATA_NULL;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeBoolean(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_BOOLEAN;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    buffer[index++] = value ? 1 : 0;
-    return index;
-}
-function serializeDate(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_DATE;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const dateInMilis = Long.fromNumber(value.getTime());
-    const lowBits = dateInMilis.getLowBits();
-    const highBits = dateInMilis.getHighBits();
-    index += NumberUtils.setInt32LE(buffer, index, lowBits);
-    index += NumberUtils.setInt32LE(buffer, index, highBits);
-    return index;
-}
-function serializeRegExp(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_REGEXP;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    if (value.source && value.source.match(regexp) != null) {
-        throw new BSONError('value ' + value.source + ' must not contain null bytes');
-    }
-    index = index + ByteUtils.encodeUTF8Into(buffer, value.source, index);
-    buffer[index++] = 0x00;
-    if (value.ignoreCase)
-        buffer[index++] = 0x69;
-    if (value.global)
-        buffer[index++] = 0x73;
-    if (value.multiline)
-        buffer[index++] = 0x6d;
-    buffer[index++] = 0x00;
-    return index;
-}
-function serializeBSONRegExp(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_REGEXP;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    if (value.pattern.match(regexp) != null) {
-        throw new BSONError('pattern ' + value.pattern + ' must not contain null bytes');
-    }
-    index = index + ByteUtils.encodeUTF8Into(buffer, value.pattern, index);
-    buffer[index++] = 0x00;
-    const sortedOptions = value.options.split('').sort().join('');
-    index = index + ByteUtils.encodeUTF8Into(buffer, sortedOptions, index);
-    buffer[index++] = 0x00;
-    return index;
-}
-function serializeMinMax(buffer, key, value, index) {
-    if (value === null) {
-        buffer[index++] = BSON_DATA_NULL;
-    }
-    else if (value._bsontype === 'MinKey') {
-        buffer[index++] = BSON_DATA_MIN_KEY;
-    }
-    else {
-        buffer[index++] = BSON_DATA_MAX_KEY;
-    }
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeObjectId(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_OID;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += value.serializeInto(buffer, index);
-    return index;
-}
-function serializeBuffer(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_BINARY;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const size = value.length;
-    index += NumberUtils.setInt32LE(buffer, index, size);
-    buffer[index++] = BSON_BINARY_SUBTYPE_DEFAULT;
-    if (size <= 16) {
-        for (let i = 0; i < size; i++)
-            buffer[index + i] = value[i];
-    }
-    else {
-        buffer.set(value, index);
-    }
-    index = index + size;
-    return index;
-}
-function serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path) {
-    if (path.has(value)) {
-        throw new BSONError('Cannot convert circular structure to BSON');
-    }
-    path.add(value);
-    buffer[index++] = Array.isArray(value) ? BSON_DATA_ARRAY : BSON_DATA_OBJECT;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const endIndex = serializeInto(buffer, value, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path);
-    path.delete(value);
-    return endIndex;
-}
-function serializeDecimal128(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_DECIMAL128;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    for (let i = 0; i < 16; i++)
-        buffer[index + i] = value.bytes[i];
-    return index + 16;
-}
-function serializeLong(buffer, key, value, index) {
-    buffer[index++] =
-        value._bsontype === 'Long' ? BSON_DATA_LONG : BSON_DATA_TIMESTAMP;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const lowBits = value.getLowBits();
-    const highBits = value.getHighBits();
-    index += NumberUtils.setInt32LE(buffer, index, lowBits);
-    index += NumberUtils.setInt32LE(buffer, index, highBits);
-    return index;
-}
-function serializeInt32(buffer, key, value, index) {
-    value = value.valueOf();
-    buffer[index++] = BSON_DATA_INT;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += NumberUtils.setInt32LE(buffer, index, value);
-    return index;
-}
-function serializeDouble(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_NUMBER;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += NumberUtils.setFloat64LE(buffer, index, value.value);
-    return index;
-}
-function serializeFunction(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_CODE;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const functionString = value.toString();
-    const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-    NumberUtils.setInt32LE(buffer, index, size);
-    index = index + 4 + size - 1;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeCode(buffer, key, value, index, checkKeys = false, depth = 0, serializeFunctions = false, ignoreUndefined = true, path) {
-    if (value.scope && typeof value.scope === 'object') {
-        buffer[index++] = BSON_DATA_CODE_W_SCOPE;
-        const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-        index = index + numberOfWrittenBytes;
-        buffer[index++] = 0;
-        let startIndex = index;
-        const functionString = value.code;
-        index = index + 4;
-        const codeSize = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-        NumberUtils.setInt32LE(buffer, index, codeSize);
-        buffer[index + 4 + codeSize - 1] = 0;
-        index = index + codeSize + 4;
-        const endIndex = serializeInto(buffer, value.scope, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path);
-        index = endIndex - 1;
-        const totalSize = endIndex - startIndex;
-        startIndex += NumberUtils.setInt32LE(buffer, startIndex, totalSize);
-        buffer[index++] = 0;
-    }
-    else {
-        buffer[index++] = BSON_DATA_CODE;
-        const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-        index = index + numberOfWrittenBytes;
-        buffer[index++] = 0;
-        const functionString = value.code.toString();
-        const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-        NumberUtils.setInt32LE(buffer, index, size);
-        index = index + 4 + size - 1;
-        buffer[index++] = 0;
-    }
-    return index;
-}
-function serializeBinary(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_BINARY;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const data = value.buffer;
-    let size = value.position;
-    if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY)
-        size = size + 4;
-    index += NumberUtils.setInt32LE(buffer, index, size);
-    buffer[index++] = value.sub_type;
-    if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
-        size = size - 4;
-        index += NumberUtils.setInt32LE(buffer, index, size);
-    }
-    if (size <= 16) {
-        for (let i = 0; i < size; i++)
-            buffer[index + i] = data[i];
-    }
-    else {
-        buffer.set(data, index);
-    }
-    index = index + value.position;
-    return index;
-}
-function serializeSymbol(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_SYMBOL;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const size = ByteUtils.encodeUTF8Into(buffer, value.value, index + 4) + 1;
-    NumberUtils.setInt32LE(buffer, index, size);
-    index = index + 4 + size - 1;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path) {
-    buffer[index++] = BSON_DATA_OBJECT;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    let startIndex = index;
-    let output = {
-        $ref: value.collection || value.namespace,
-        $id: value.oid
-    };
-    if (value.db != null) {
-        output.$db = value.db;
-    }
-    output = Object.assign(output, value.fields);
-    const endIndex = serializeInto(buffer, output, false, index, depth + 1, serializeFunctions, true, path);
-    const size = endIndex - startIndex;
-    startIndex += NumberUtils.setInt32LE(buffer, index, size);
-    return endIndex;
-}
-function serializeInto(buffer, object, checkKeys, startingIndex, depth, serializeFunctions, ignoreUndefined, path) {
-    if (path == null) {
-        if (object == null) {
-            buffer[0] = 0x05;
-            buffer[1] = 0x00;
-            buffer[2] = 0x00;
-            buffer[3] = 0x00;
-            buffer[4] = 0x00;
-            return 5;
-        }
-        if (Array.isArray(object)) {
-            throw new BSONError('serialize does not support an array as the root input');
-        }
-        if (typeof object !== 'object') {
-            throw new BSONError('serialize does not support non-object as the root input');
-        }
-        else if ('_bsontype' in object && typeof object._bsontype === 'string') {
-            throw new BSONError(`BSON types cannot be serialized as a document`);
-        }
-        else if (isDate(object) ||
-            isRegExp(object) ||
-            isUint8Array(object) ||
-            isAnyArrayBuffer(object)) {
-            throw new BSONError(`date, regexp, typedarray, and arraybuffer cannot be BSON documents`);
-        }
-        path = new Set();
-    }
-    path.add(object);
-    let index = startingIndex + 4;
-    if (Array.isArray(object)) {
-        for (let i = 0; i < object.length; i++) {
-            const key = `${i}`;
-            let value = object[i];
-            if (typeof value?.toBSON === 'function') {
-                value = value.toBSON();
-            }
-            if (typeof value === 'string') {
-                index = serializeString(buffer, key, value, index);
-            }
-            else if (typeof value === 'number') {
-                index = serializeNumber(buffer, key, value, index);
-            }
-            else if (typeof value === 'bigint') {
-                index = serializeBigInt(buffer, key, value, index);
-            }
-            else if (typeof value === 'boolean') {
-                index = serializeBoolean(buffer, key, value, index);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                index = serializeDate(buffer, key, value, index);
-            }
-            else if (value === undefined) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (value === null) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (isUint8Array(value)) {
-                index = serializeBuffer(buffer, key, value, index);
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                index = serializeRegExp(buffer, key, value, index);
-            }
-            else if (typeof value === 'object' && value._bsontype == null) {
-                index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'object' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value._bsontype === 'ObjectId') {
-                index = serializeObjectId(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Decimal128') {
-                index = serializeDecimal128(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-                index = serializeLong(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Double') {
-                index = serializeDouble(buffer, key, value, index);
-            }
-            else if (typeof value === 'function' && serializeFunctions) {
-                index = serializeFunction(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Code') {
-                index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (value._bsontype === 'Binary') {
-                index = serializeBinary(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'BSONSymbol') {
-                index = serializeSymbol(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'DBRef') {
-                index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                index = serializeBSONRegExp(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Int32') {
-                index = serializeInt32(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                index = serializeMinMax(buffer, key, value, index);
-            }
-            else if (typeof value._bsontype !== 'undefined') {
-                throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-            }
-        }
-    }
-    else if (object instanceof Map || isMap(object)) {
-        const iterator = object.entries();
-        let done = false;
-        while (!done) {
-            const entry = iterator.next();
-            done = !!entry.done;
-            if (done)
-                continue;
-            const key = entry.value[0];
-            let value = entry.value[1];
-            if (typeof value?.toBSON === 'function') {
-                value = value.toBSON();
-            }
-            const type = typeof value;
-            if (typeof key === 'string' && !ignoreKeys.has(key)) {
-                if (key.match(regexp) != null) {
-                    throw new BSONError('key ' + key + ' must not contain null bytes');
-                }
-                if (checkKeys) {
-                    if ('$' === key[0]) {
-                        throw new BSONError('key ' + key + " must not start with '$'");
-                    }
-                    else if (key.includes('.')) {
-                        throw new BSONError('key ' + key + " must not contain '.'");
-                    }
-                }
-            }
-            if (type === 'string') {
-                index = serializeString(buffer, key, value, index);
-            }
-            else if (type === 'number') {
-                index = serializeNumber(buffer, key, value, index);
-            }
-            else if (type === 'bigint') {
-                index = serializeBigInt(buffer, key, value, index);
-            }
-            else if (type === 'boolean') {
-                index = serializeBoolean(buffer, key, value, index);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                index = serializeDate(buffer, key, value, index);
-            }
-            else if (value === null || (value === undefined && ignoreUndefined === false)) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (isUint8Array(value)) {
-                index = serializeBuffer(buffer, key, value, index);
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                index = serializeRegExp(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype == null) {
-                index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'object' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value._bsontype === 'ObjectId') {
-                index = serializeObjectId(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype === 'Decimal128') {
-                index = serializeDecimal128(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-                index = serializeLong(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Double') {
-                index = serializeDouble(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Code') {
-                index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'function' && serializeFunctions) {
-                index = serializeFunction(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Binary') {
-                index = serializeBinary(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'BSONSymbol') {
-                index = serializeSymbol(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'DBRef') {
-                index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                index = serializeBSONRegExp(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Int32') {
-                index = serializeInt32(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                index = serializeMinMax(buffer, key, value, index);
-            }
-            else if (typeof value._bsontype !== 'undefined') {
-                throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-            }
-        }
-    }
-    else {
-        if (typeof object?.toBSON === 'function') {
-            object = object.toBSON();
-            if (object != null && typeof object !== 'object') {
-                throw new BSONError('toBSON function did not return an object');
-            }
-        }
-        for (const key of Object.keys(object)) {
-            let value = object[key];
-            if (typeof value?.toBSON === 'function') {
-                value = value.toBSON();
-            }
-            const type = typeof value;
-            if (typeof key === 'string' && !ignoreKeys.has(key)) {
-                if (key.match(regexp) != null) {
-                    throw new BSONError('key ' + key + ' must not contain null bytes');
-                }
-                if (checkKeys) {
-                    if ('$' === key[0]) {
-                        throw new BSONError('key ' + key + " must not start with '$'");
-                    }
-                    else if (key.includes('.')) {
-                        throw new BSONError('key ' + key + " must not contain '.'");
-                    }
-                }
-            }
-            if (type === 'string') {
-                index = serializeString(buffer, key, value, index);
-            }
-            else if (type === 'number') {
-                index = serializeNumber(buffer, key, value, index);
-            }
-            else if (type === 'bigint') {
-                index = serializeBigInt(buffer, key, value, index);
-            }
-            else if (type === 'boolean') {
-                index = serializeBoolean(buffer, key, value, index);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                index = serializeDate(buffer, key, value, index);
-            }
-            else if (value === undefined) {
-                if (ignoreUndefined === false)
-                    index = serializeNull(buffer, key, value, index);
-            }
-            else if (value === null) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (isUint8Array(value)) {
-                index = serializeBuffer(buffer, key, value, index);
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                index = serializeRegExp(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype == null) {
-                index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'object' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value._bsontype === 'ObjectId') {
-                index = serializeObjectId(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype === 'Decimal128') {
-                index = serializeDecimal128(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-                index = serializeLong(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Double') {
-                index = serializeDouble(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Code') {
-                index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'function' && serializeFunctions) {
-                index = serializeFunction(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Binary') {
-                index = serializeBinary(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'BSONSymbol') {
-                index = serializeSymbol(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'DBRef') {
-                index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                index = serializeBSONRegExp(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Int32') {
-                index = serializeInt32(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                index = serializeMinMax(buffer, key, value, index);
-            }
-            else if (typeof value._bsontype !== 'undefined') {
-                throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-            }
-        }
-    }
-    path.delete(object);
-    buffer[index++] = 0x00;
-    const size = index - startingIndex;
-    startingIndex += NumberUtils.setInt32LE(buffer, startingIndex, size);
-    return index;
-}
-
-function isBSONType(value) {
-    return (value != null &&
-        typeof value === 'object' &&
-        '_bsontype' in value &&
-        typeof value._bsontype === 'string');
-}
-const keysToCodecs = {
-    $oid: ObjectId,
-    $binary: Binary,
-    $uuid: Binary,
-    $symbol: BSONSymbol,
-    $numberInt: Int32,
-    $numberDecimal: Decimal128,
-    $numberDouble: Double,
-    $numberLong: Long,
-    $minKey: MinKey,
-    $maxKey: MaxKey,
-    $regex: BSONRegExp,
-    $regularExpression: BSONRegExp,
-    $timestamp: Timestamp
-};
-function deserializeValue(value, options = {}) {
-    if (typeof value === 'number') {
-        const in32BitRange = value <= BSON_INT32_MAX && value >= BSON_INT32_MIN;
-        const in64BitRange = value <= BSON_INT64_MAX && value >= BSON_INT64_MIN;
-        if (options.relaxed || options.legacy) {
-            return value;
-        }
-        if (Number.isInteger(value) && !Object.is(value, -0)) {
-            if (in32BitRange) {
-                return new Int32(value);
-            }
-            if (in64BitRange) {
-                if (options.useBigInt64) {
-                    return BigInt(value);
-                }
-                return Long.fromNumber(value);
-            }
-        }
-        return new Double(value);
-    }
-    if (value == null || typeof value !== 'object')
-        return value;
-    if (value.$undefined)
-        return null;
-    const keys = Object.keys(value).filter(k => k.startsWith('$') && value[k] != null);
-    for (let i = 0; i < keys.length; i++) {
-        const c = keysToCodecs[keys[i]];
-        if (c)
-            return c.fromExtendedJSON(value, options);
-    }
-    if (value.$date != null) {
-        const d = value.$date;
-        const date = new Date();
-        if (options.legacy) {
-            if (typeof d === 'number')
-                date.setTime(d);
-            else if (typeof d === 'string')
-                date.setTime(Date.parse(d));
-            else if (typeof d === 'bigint')
-                date.setTime(Number(d));
-            else
-                throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
-        }
-        else {
-            if (typeof d === 'string')
-                date.setTime(Date.parse(d));
-            else if (Long.isLong(d))
-                date.setTime(d.toNumber());
-            else if (typeof d === 'number' && options.relaxed)
-                date.setTime(d);
-            else if (typeof d === 'bigint')
-                date.setTime(Number(d));
-            else
-                throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
-        }
-        return date;
-    }
-    if (value.$code != null) {
-        const copy = Object.assign({}, value);
-        if (value.$scope) {
-            copy.$scope = deserializeValue(value.$scope);
-        }
-        return Code.fromExtendedJSON(value);
-    }
-    if (isDBRefLike(value) || value.$dbPointer) {
-        const v = value.$ref ? value : value.$dbPointer;
-        if (v instanceof DBRef)
-            return v;
-        const dollarKeys = Object.keys(v).filter(k => k.startsWith('$'));
-        let valid = true;
-        dollarKeys.forEach(k => {
-            if (['$ref', '$id', '$db'].indexOf(k) === -1)
-                valid = false;
-        });
-        if (valid)
-            return DBRef.fromExtendedJSON(v);
-    }
-    return value;
-}
-function serializeArray(array, options) {
-    return array.map((v, index) => {
-        options.seenObjects.push({ propertyName: `index ${index}`, obj: null });
-        try {
-            return serializeValue(v, options);
-        }
-        finally {
-            options.seenObjects.pop();
-        }
-    });
-}
-function getISOString(date) {
-    const isoStr = date.toISOString();
-    return date.getUTCMilliseconds() !== 0 ? isoStr : isoStr.slice(0, -5) + 'Z';
-}
-function serializeValue(value, options) {
-    if (value instanceof Map || isMap(value)) {
-        const obj = Object.create(null);
-        for (const [k, v] of value) {
-            if (typeof k !== 'string') {
-                throw new BSONError('Can only serialize maps with string keys');
-            }
-            obj[k] = v;
-        }
-        return serializeValue(obj, options);
-    }
-    if ((typeof value === 'object' || typeof value === 'function') && value !== null) {
-        const index = options.seenObjects.findIndex(entry => entry.obj === value);
-        if (index !== -1) {
-            const props = options.seenObjects.map(entry => entry.propertyName);
-            const leadingPart = props
-                .slice(0, index)
-                .map(prop => `${prop} -> `)
-                .join('');
-            const alreadySeen = props[index];
-            const circularPart = ' -> ' +
-                props
-                    .slice(index + 1, props.length - 1)
-                    .map(prop => `${prop} -> `)
-                    .join('');
-            const current = props[props.length - 1];
-            const leadingSpace = ' '.repeat(leadingPart.length + alreadySeen.length / 2);
-            const dashes = '-'.repeat(circularPart.length + (alreadySeen.length + current.length) / 2 - 1);
-            throw new BSONError('Converting circular structure to EJSON:\n' +
-                `    ${leadingPart}${alreadySeen}${circularPart}${current}\n` +
-                `    ${leadingSpace}\\${dashes}/`);
-        }
-        options.seenObjects[options.seenObjects.length - 1].obj = value;
-    }
-    if (Array.isArray(value))
-        return serializeArray(value, options);
-    if (value === undefined)
-        return null;
-    if (value instanceof Date || isDate(value)) {
-        const dateNum = value.getTime(), inRange = dateNum > -1 && dateNum < 253402318800000;
-        if (options.legacy) {
-            return options.relaxed && inRange
-                ? { $date: value.getTime() }
-                : { $date: getISOString(value) };
-        }
-        return options.relaxed && inRange
-            ? { $date: getISOString(value) }
-            : { $date: { $numberLong: value.getTime().toString() } };
-    }
-    if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) {
-        if (Number.isInteger(value) && !Object.is(value, -0)) {
-            if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
-                return { $numberInt: value.toString() };
-            }
-            if (value >= BSON_INT64_MIN && value <= BSON_INT64_MAX) {
-                return { $numberLong: value.toString() };
-            }
-        }
-        return { $numberDouble: Object.is(value, -0) ? '-0.0' : value.toString() };
-    }
-    if (typeof value === 'bigint') {
-        if (!options.relaxed) {
-            return { $numberLong: BigInt.asIntN(64, value).toString() };
-        }
-        return Number(BigInt.asIntN(64, value));
-    }
-    if (value instanceof RegExp || isRegExp(value)) {
-        let flags = value.flags;
-        if (flags === undefined) {
-            const match = value.toString().match(/[gimuy]*$/);
-            if (match) {
-                flags = match[0];
-            }
-        }
-        const rx = new BSONRegExp(value.source, flags);
-        return rx.toExtendedJSON(options);
-    }
-    if (value != null && typeof value === 'object')
-        return serializeDocument(value, options);
-    return value;
-}
-const BSON_TYPE_MAPPINGS = {
-    Binary: (o) => new Binary(o.value(), o.sub_type),
-    Code: (o) => new Code(o.code, o.scope),
-    DBRef: (o) => new DBRef(o.collection || o.namespace, o.oid, o.db, o.fields),
-    Decimal128: (o) => new Decimal128(o.bytes),
-    Double: (o) => new Double(o.value),
-    Int32: (o) => new Int32(o.value),
-    Long: (o) => Long.fromBits(o.low != null ? o.low : o.low_, o.low != null ? o.high : o.high_, o.low != null ? o.unsigned : o.unsigned_),
-    MaxKey: () => new MaxKey(),
-    MinKey: () => new MinKey(),
-    ObjectId: (o) => new ObjectId(o),
-    BSONRegExp: (o) => new BSONRegExp(o.pattern, o.options),
-    BSONSymbol: (o) => new BSONSymbol(o.value),
-    Timestamp: (o) => Timestamp.fromBits(o.low, o.high)
-};
-function serializeDocument(doc, options) {
-    if (doc == null || typeof doc !== 'object')
-        throw new BSONError('not an object instance');
-    const bsontype = doc._bsontype;
-    if (typeof bsontype === 'undefined') {
-        const _doc = {};
-        for (const name of Object.keys(doc)) {
-            options.seenObjects.push({ propertyName: name, obj: null });
-            try {
-                const value = serializeValue(doc[name], options);
-                if (name === '__proto__') {
-                    Object.defineProperty(_doc, name, {
-                        value,
-                        writable: true,
-                        enumerable: true,
-                        configurable: true
-                    });
-                }
-                else {
-                    _doc[name] = value;
-                }
-            }
-            finally {
-                options.seenObjects.pop();
-            }
-        }
-        return _doc;
-    }
-    else if (doc != null &&
-        typeof doc === 'object' &&
-        typeof doc._bsontype === 'string' &&
-        doc[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-        throw new BSONVersionError();
-    }
-    else if (isBSONType(doc)) {
-        let outDoc = doc;
-        if (typeof outDoc.toExtendedJSON !== 'function') {
-            const mapper = BSON_TYPE_MAPPINGS[doc._bsontype];
-            if (!mapper) {
-                throw new BSONError('Unrecognized or invalid _bsontype: ' + doc._bsontype);
-            }
-            outDoc = mapper(outDoc);
-        }
-        if (bsontype === 'Code' && outDoc.scope) {
-            outDoc = new Code(outDoc.code, serializeValue(outDoc.scope, options));
-        }
-        else if (bsontype === 'DBRef' && outDoc.oid) {
-            outDoc = new DBRef(serializeValue(outDoc.collection, options), serializeValue(outDoc.oid, options), serializeValue(outDoc.db, options), serializeValue(outDoc.fields, options));
-        }
-        return outDoc.toExtendedJSON(options);
-    }
-    else {
-        throw new BSONError('_bsontype must be a string, but was: ' + typeof bsontype);
-    }
-}
-function parse(text, options) {
-    const ejsonOptions = {
-        useBigInt64: options?.useBigInt64 ?? false,
-        relaxed: options?.relaxed ?? true,
-        legacy: options?.legacy ?? false
-    };
-    return JSON.parse(text, (key, value) => {
-        if (key.indexOf('\x00') !== -1) {
-            throw new BSONError(`BSON Document field names cannot contain null bytes, found: ${JSON.stringify(key)}`);
-        }
-        return deserializeValue(value, ejsonOptions);
-    });
-}
-function stringify(value, replacer, space, options) {
-    if (space != null && typeof space === 'object') {
-        options = space;
-        space = 0;
-    }
-    if (replacer != null && typeof replacer === 'object' && !Array.isArray(replacer)) {
-        options = replacer;
-        replacer = undefined;
-        space = 0;
-    }
-    const serializeOptions = Object.assign({ relaxed: true, legacy: false }, options, {
-        seenObjects: [{ propertyName: '(root)', obj: null }]
-    });
-    const doc = serializeValue(value, serializeOptions);
-    return JSON.stringify(doc, replacer, space);
-}
-function EJSONserialize(value, options) {
-    options = options || {};
-    return JSON.parse(stringify(value, options));
-}
-function EJSONdeserialize(ejson, options) {
-    options = options || {};
-    return parse(JSON.stringify(ejson), options);
-}
-const EJSON = Object.create(null);
-EJSON.parse = parse;
-EJSON.stringify = stringify;
-EJSON.serialize = EJSONserialize;
-EJSON.deserialize = EJSONdeserialize;
-Object.freeze(EJSON);
-
-const MAXSIZE = 1024 * 1024 * 17;
-let buffer = ByteUtils.allocate(MAXSIZE);
-function setInternalBufferSize(size) {
-    if (buffer.length < size) {
-        buffer = ByteUtils.allocate(size);
-    }
-}
-function serialize(object, options = {}) {
-    const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-    const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-    const minInternalBufferSize = typeof options.minInternalBufferSize === 'number' ? options.minInternalBufferSize : MAXSIZE;
-    if (buffer.length < minInternalBufferSize) {
-        buffer = ByteUtils.allocate(minInternalBufferSize);
-    }
-    const serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, null);
-    const finishedBuffer = ByteUtils.allocateUnsafe(serializationIndex);
-    finishedBuffer.set(buffer.subarray(0, serializationIndex), 0);
-    return finishedBuffer;
-}
-function serializeWithBufferAndIndex(object, finalBuffer, options = {}) {
-    const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-    const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-    const startIndex = typeof options.index === 'number' ? options.index : 0;
-    const serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, null);
-    finalBuffer.set(buffer.subarray(0, serializationIndex), startIndex);
-    return startIndex + serializationIndex - 1;
-}
-function deserialize(buffer, options = {}) {
-    return internalDeserialize(ByteUtils.toLocalBufferType(buffer), options);
-}
-function calculateObjectSize(object, options = {}) {
-    options = options || {};
-    const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-    return internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined);
-}
-function deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options) {
-    const internalOptions = Object.assign({ allowObjectSmallerThanBufferSize: true, index: 0 }, options);
-    const bufferData = ByteUtils.toLocalBufferType(data);
-    let index = startIndex;
-    for (let i = 0; i < numberOfDocuments; i++) {
-        const size = NumberUtils.getInt32LE(bufferData, index);
-        internalOptions.index = index;
-        documents[docStartIndex + i] = internalDeserialize(bufferData, internalOptions);
-        index = index + size;
-    }
-    return index;
-}
-
-var bson = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    BSONError: BSONError,
-    BSONRegExp: BSONRegExp,
-    BSONRuntimeError: BSONRuntimeError,
-    BSONSymbol: BSONSymbol,
-    BSONType: BSONType,
-    BSONValue: BSONValue,
-    BSONVersionError: BSONVersionError,
-    Binary: Binary,
-    Code: Code,
-    DBRef: DBRef,
-    Decimal128: Decimal128,
-    Double: Double,
-    EJSON: EJSON,
-    Int32: Int32,
-    Long: Long,
-    MaxKey: MaxKey,
-    MinKey: MinKey,
-    ObjectId: ObjectId,
-    Timestamp: Timestamp,
-    UUID: UUID,
-    calculateObjectSize: calculateObjectSize,
-    deserialize: deserialize,
-    deserializeStream: deserializeStream,
-    serialize: serialize,
-    serializeWithBufferAndIndex: serializeWithBufferAndIndex,
-    setInternalBufferSize: setInternalBufferSize
-});
-
-exports.BSON = bson;
-exports.BSONError = BSONError;
-exports.BSONRegExp = BSONRegExp;
-exports.BSONRuntimeError = BSONRuntimeError;
-exports.BSONSymbol = BSONSymbol;
-exports.BSONType = BSONType;
-exports.BSONValue = BSONValue;
-exports.BSONVersionError = BSONVersionError;
-exports.Binary = Binary;
-exports.Code = Code;
-exports.DBRef = DBRef;
-exports.Decimal128 = Decimal128;
-exports.Double = Double;
-exports.EJSON = EJSON;
-exports.Int32 = Int32;
-exports.Long = Long;
-exports.MaxKey = MaxKey;
-exports.MinKey = MinKey;
-exports.ObjectId = ObjectId;
-exports.Timestamp = Timestamp;
-exports.UUID = UUID;
-exports.calculateObjectSize = calculateObjectSize;
-exports.deserialize = deserialize;
-exports.deserializeStream = deserializeStream;
-exports.serialize = serialize;
-exports.serializeWithBufferAndIndex = serializeWithBufferAndIndex;
-exports.setInternalBufferSize = setInternalBufferSize;
-//# sourceMappingURL=bson.cjs.map
diff --git a/server/data-import/node_modules/bson/lib/bson.cjs.map b/server/data-import/node_modules/bson/lib/bson.cjs.map
deleted file mode 100644
index 59cd8bf402eb67fdeaa6a648ac57a3256002b81a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/lib/bson.cjs.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"bson.cjs","sources":["../src/parser/utils.ts","../src/constants.ts","../src/error.ts","../src/validate_utf8.ts","../src/utils/latin.ts","../src/utils/node_byte_utils.ts","../src/utils/web_byte_utils.ts","../src/utils/byte_utils.ts","../src/bson_value.ts","../src/binary.ts","../src/code.ts","../src/db_ref.ts","../src/long.ts","../src/decimal128.ts","../src/double.ts","../src/int_32.ts","../src/max_key.ts","../src/min_key.ts","../src/utils/number_utils.ts","../src/objectid.ts","../src/parser/calculate_size.ts","../src/regexp.ts","../src/symbol.ts","../src/timestamp.ts","../src/parser/deserializer.ts","../src/parser/serializer.ts","../src/extended_json.ts","../src/bson.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["constants.JS_INT_MIN","constants.JS_INT_MAX","constants.BSON_INT32_MIN","constants.BSON_INT32_MAX","constants.BSON_MAJOR_VERSION","constants.BSON_DATA_STRING","constants.BSON_DATA_OID","constants.BSON_DATA_INT","constants.BSON_DATA_NUMBER","constants.BSON_DATA_DATE","constants.BSON_DATA_BOOLEAN","constants.BSON_DATA_OBJECT","constants.BSON_DATA_ARRAY","constants.BSON_DATA_UNDEFINED","constants.BSON_DATA_NULL","constants.BSON_DATA_LONG","constants.BSON_DATA_DECIMAL128","constants.BSON_DATA_BINARY","constants.BSON_BINARY_SUBTYPE_UUID_NEW","constants.BSON_DATA_REGEXP","constants.BSON_DATA_SYMBOL","constants.BSON_DATA_TIMESTAMP","constants.BSON_DATA_MIN_KEY","constants.BSON_DATA_MAX_KEY","constants.BSON_DATA_CODE","constants.BSON_DATA_CODE_W_SCOPE","constants.BSON_DATA_DBPOINTER","constants.BSON_BINARY_SUBTYPE_DEFAULT"],"mappings":"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C,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAA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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/bson/lib/bson.mjs b/server/data-import/node_modules/bson/lib/bson.mjs
deleted file mode 100644
index a2cdc37b1e7735d24a66d4697846d72785c33dcc..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/lib/bson.mjs
+++ /dev/null
@@ -1,4172 +0,0 @@
-function isAnyArrayBuffer(value) {
-    return ['[object ArrayBuffer]', '[object SharedArrayBuffer]'].includes(Object.prototype.toString.call(value));
-}
-function isUint8Array(value) {
-    return Object.prototype.toString.call(value) === '[object Uint8Array]';
-}
-function isRegExp(d) {
-    return Object.prototype.toString.call(d) === '[object RegExp]';
-}
-function isMap(d) {
-    return Object.prototype.toString.call(d) === '[object Map]';
-}
-function isDate(d) {
-    return Object.prototype.toString.call(d) === '[object Date]';
-}
-function defaultInspect(x, _options) {
-    return JSON.stringify(x, (k, v) => {
-        if (typeof v === 'bigint') {
-            return { $numberLong: `${v}` };
-        }
-        else if (isMap(v)) {
-            return Object.fromEntries(v);
-        }
-        return v;
-    });
-}
-function getStylizeFunction(options) {
-    const stylizeExists = options != null &&
-        typeof options === 'object' &&
-        'stylize' in options &&
-        typeof options.stylize === 'function';
-    if (stylizeExists) {
-        return options.stylize;
-    }
-}
-
-const BSON_MAJOR_VERSION = 6;
-const BSON_INT32_MAX = 0x7fffffff;
-const BSON_INT32_MIN = -0x80000000;
-const BSON_INT64_MAX = Math.pow(2, 63) - 1;
-const BSON_INT64_MIN = -Math.pow(2, 63);
-const JS_INT_MAX = Math.pow(2, 53);
-const JS_INT_MIN = -Math.pow(2, 53);
-const BSON_DATA_NUMBER = 1;
-const BSON_DATA_STRING = 2;
-const BSON_DATA_OBJECT = 3;
-const BSON_DATA_ARRAY = 4;
-const BSON_DATA_BINARY = 5;
-const BSON_DATA_UNDEFINED = 6;
-const BSON_DATA_OID = 7;
-const BSON_DATA_BOOLEAN = 8;
-const BSON_DATA_DATE = 9;
-const BSON_DATA_NULL = 10;
-const BSON_DATA_REGEXP = 11;
-const BSON_DATA_DBPOINTER = 12;
-const BSON_DATA_CODE = 13;
-const BSON_DATA_SYMBOL = 14;
-const BSON_DATA_CODE_W_SCOPE = 15;
-const BSON_DATA_INT = 16;
-const BSON_DATA_TIMESTAMP = 17;
-const BSON_DATA_LONG = 18;
-const BSON_DATA_DECIMAL128 = 19;
-const BSON_DATA_MIN_KEY = 0xff;
-const BSON_DATA_MAX_KEY = 0x7f;
-const BSON_BINARY_SUBTYPE_DEFAULT = 0;
-const BSON_BINARY_SUBTYPE_UUID_NEW = 4;
-const BSONType = Object.freeze({
-    double: 1,
-    string: 2,
-    object: 3,
-    array: 4,
-    binData: 5,
-    undefined: 6,
-    objectId: 7,
-    bool: 8,
-    date: 9,
-    null: 10,
-    regex: 11,
-    dbPointer: 12,
-    javascript: 13,
-    symbol: 14,
-    javascriptWithScope: 15,
-    int: 16,
-    timestamp: 17,
-    long: 18,
-    decimal: 19,
-    minKey: -1,
-    maxKey: 127
-});
-
-class BSONError extends Error {
-    get bsonError() {
-        return true;
-    }
-    get name() {
-        return 'BSONError';
-    }
-    constructor(message, options) {
-        super(message, options);
-    }
-    static isBSONError(value) {
-        return (value != null &&
-            typeof value === 'object' &&
-            'bsonError' in value &&
-            value.bsonError === true &&
-            'name' in value &&
-            'message' in value &&
-            'stack' in value);
-    }
-}
-class BSONVersionError extends BSONError {
-    get name() {
-        return 'BSONVersionError';
-    }
-    constructor() {
-        super(`Unsupported BSON version, bson types must be from bson ${BSON_MAJOR_VERSION}.x.x`);
-    }
-}
-class BSONRuntimeError extends BSONError {
-    get name() {
-        return 'BSONRuntimeError';
-    }
-    constructor(message) {
-        super(message);
-    }
-}
-
-const FIRST_BIT = 0x80;
-const FIRST_TWO_BITS = 0xc0;
-const FIRST_THREE_BITS = 0xe0;
-const FIRST_FOUR_BITS = 0xf0;
-const FIRST_FIVE_BITS = 0xf8;
-const TWO_BIT_CHAR = 0xc0;
-const THREE_BIT_CHAR = 0xe0;
-const FOUR_BIT_CHAR = 0xf0;
-const CONTINUING_CHAR = 0x80;
-function validateUtf8(bytes, start, end) {
-    let continuation = 0;
-    for (let i = start; i < end; i += 1) {
-        const byte = bytes[i];
-        if (continuation) {
-            if ((byte & FIRST_TWO_BITS) !== CONTINUING_CHAR) {
-                return false;
-            }
-            continuation -= 1;
-        }
-        else if (byte & FIRST_BIT) {
-            if ((byte & FIRST_THREE_BITS) === TWO_BIT_CHAR) {
-                continuation = 1;
-            }
-            else if ((byte & FIRST_FOUR_BITS) === THREE_BIT_CHAR) {
-                continuation = 2;
-            }
-            else if ((byte & FIRST_FIVE_BITS) === FOUR_BIT_CHAR) {
-                continuation = 3;
-            }
-            else {
-                return false;
-            }
-        }
-    }
-    return !continuation;
-}
-
-function tryReadBasicLatin(uint8array, start, end) {
-    if (uint8array.length === 0) {
-        return '';
-    }
-    const stringByteLength = end - start;
-    if (stringByteLength === 0) {
-        return '';
-    }
-    if (stringByteLength > 20) {
-        return null;
-    }
-    if (stringByteLength === 1 && uint8array[start] < 128) {
-        return String.fromCharCode(uint8array[start]);
-    }
-    if (stringByteLength === 2 && uint8array[start] < 128 && uint8array[start + 1] < 128) {
-        return String.fromCharCode(uint8array[start]) + String.fromCharCode(uint8array[start + 1]);
-    }
-    if (stringByteLength === 3 &&
-        uint8array[start] < 128 &&
-        uint8array[start + 1] < 128 &&
-        uint8array[start + 2] < 128) {
-        return (String.fromCharCode(uint8array[start]) +
-            String.fromCharCode(uint8array[start + 1]) +
-            String.fromCharCode(uint8array[start + 2]));
-    }
-    const latinBytes = [];
-    for (let i = start; i < end; i++) {
-        const byte = uint8array[i];
-        if (byte > 127) {
-            return null;
-        }
-        latinBytes.push(byte);
-    }
-    return String.fromCharCode(...latinBytes);
-}
-function tryWriteBasicLatin(destination, source, offset) {
-    if (source.length === 0)
-        return 0;
-    if (source.length > 25)
-        return null;
-    if (destination.length - offset < source.length)
-        return null;
-    for (let charOffset = 0, destinationOffset = offset; charOffset < source.length; charOffset++, destinationOffset++) {
-        const char = source.charCodeAt(charOffset);
-        if (char > 127)
-            return null;
-        destination[destinationOffset] = char;
-    }
-    return source.length;
-}
-
-function nodejsMathRandomBytes(byteLength) {
-    return nodeJsByteUtils.fromNumberArray(Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256)));
-}
-const nodejsRandomBytes = await (async () => {
-    try {
-        return (await import('crypto')).randomBytes;
-    }
-    catch {
-        return nodejsMathRandomBytes;
-    }
-})();
-const nodeJsByteUtils = {
-    toLocalBufferType(potentialBuffer) {
-        if (Buffer.isBuffer(potentialBuffer)) {
-            return potentialBuffer;
-        }
-        if (ArrayBuffer.isView(potentialBuffer)) {
-            return Buffer.from(potentialBuffer.buffer, potentialBuffer.byteOffset, potentialBuffer.byteLength);
-        }
-        const stringTag = potentialBuffer?.[Symbol.toStringTag] ?? Object.prototype.toString.call(potentialBuffer);
-        if (stringTag === 'ArrayBuffer' ||
-            stringTag === 'SharedArrayBuffer' ||
-            stringTag === '[object ArrayBuffer]' ||
-            stringTag === '[object SharedArrayBuffer]') {
-            return Buffer.from(potentialBuffer);
-        }
-        throw new BSONError(`Cannot create Buffer from ${String(potentialBuffer)}`);
-    },
-    allocate(size) {
-        return Buffer.alloc(size);
-    },
-    allocateUnsafe(size) {
-        return Buffer.allocUnsafe(size);
-    },
-    equals(a, b) {
-        return nodeJsByteUtils.toLocalBufferType(a).equals(b);
-    },
-    fromNumberArray(array) {
-        return Buffer.from(array);
-    },
-    fromBase64(base64) {
-        return Buffer.from(base64, 'base64');
-    },
-    toBase64(buffer) {
-        return nodeJsByteUtils.toLocalBufferType(buffer).toString('base64');
-    },
-    fromISO88591(codePoints) {
-        return Buffer.from(codePoints, 'binary');
-    },
-    toISO88591(buffer) {
-        return nodeJsByteUtils.toLocalBufferType(buffer).toString('binary');
-    },
-    fromHex(hex) {
-        return Buffer.from(hex, 'hex');
-    },
-    toHex(buffer) {
-        return nodeJsByteUtils.toLocalBufferType(buffer).toString('hex');
-    },
-    toUTF8(buffer, start, end, fatal) {
-        const basicLatin = end - start <= 20 ? tryReadBasicLatin(buffer, start, end) : null;
-        if (basicLatin != null) {
-            return basicLatin;
-        }
-        const string = nodeJsByteUtils.toLocalBufferType(buffer).toString('utf8', start, end);
-        if (fatal) {
-            for (let i = 0; i < string.length; i++) {
-                if (string.charCodeAt(i) === 0xfffd) {
-                    if (!validateUtf8(buffer, start, end)) {
-                        throw new BSONError('Invalid UTF-8 string in BSON document');
-                    }
-                    break;
-                }
-            }
-        }
-        return string;
-    },
-    utf8ByteLength(input) {
-        return Buffer.byteLength(input, 'utf8');
-    },
-    encodeUTF8Into(buffer, source, byteOffset) {
-        const latinBytesWritten = tryWriteBasicLatin(buffer, source, byteOffset);
-        if (latinBytesWritten != null) {
-            return latinBytesWritten;
-        }
-        return nodeJsByteUtils.toLocalBufferType(buffer).write(source, byteOffset, undefined, 'utf8');
-    },
-    randomBytes: nodejsRandomBytes
-};
-
-function isReactNative() {
-    const { navigator } = globalThis;
-    return typeof navigator === 'object' && navigator.product === 'ReactNative';
-}
-function webMathRandomBytes(byteLength) {
-    if (byteLength < 0) {
-        throw new RangeError(`The argument 'byteLength' is invalid. Received ${byteLength}`);
-    }
-    return webByteUtils.fromNumberArray(Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256)));
-}
-const webRandomBytes = (() => {
-    const { crypto } = globalThis;
-    if (crypto != null && typeof crypto.getRandomValues === 'function') {
-        return (byteLength) => {
-            return crypto.getRandomValues(webByteUtils.allocate(byteLength));
-        };
-    }
-    else {
-        if (isReactNative()) {
-            const { console } = globalThis;
-            console?.warn?.('BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.');
-        }
-        return webMathRandomBytes;
-    }
-})();
-const HEX_DIGIT = /(\d|[a-f])/i;
-const webByteUtils = {
-    toLocalBufferType(potentialUint8array) {
-        const stringTag = potentialUint8array?.[Symbol.toStringTag] ??
-            Object.prototype.toString.call(potentialUint8array);
-        if (stringTag === 'Uint8Array') {
-            return potentialUint8array;
-        }
-        if (ArrayBuffer.isView(potentialUint8array)) {
-            return new Uint8Array(potentialUint8array.buffer.slice(potentialUint8array.byteOffset, potentialUint8array.byteOffset + potentialUint8array.byteLength));
-        }
-        if (stringTag === 'ArrayBuffer' ||
-            stringTag === 'SharedArrayBuffer' ||
-            stringTag === '[object ArrayBuffer]' ||
-            stringTag === '[object SharedArrayBuffer]') {
-            return new Uint8Array(potentialUint8array);
-        }
-        throw new BSONError(`Cannot make a Uint8Array from ${String(potentialUint8array)}`);
-    },
-    allocate(size) {
-        if (typeof size !== 'number') {
-            throw new TypeError(`The "size" argument must be of type number. Received ${String(size)}`);
-        }
-        return new Uint8Array(size);
-    },
-    allocateUnsafe(size) {
-        return webByteUtils.allocate(size);
-    },
-    equals(a, b) {
-        if (a.byteLength !== b.byteLength) {
-            return false;
-        }
-        for (let i = 0; i < a.byteLength; i++) {
-            if (a[i] !== b[i]) {
-                return false;
-            }
-        }
-        return true;
-    },
-    fromNumberArray(array) {
-        return Uint8Array.from(array);
-    },
-    fromBase64(base64) {
-        return Uint8Array.from(atob(base64), c => c.charCodeAt(0));
-    },
-    toBase64(uint8array) {
-        return btoa(webByteUtils.toISO88591(uint8array));
-    },
-    fromISO88591(codePoints) {
-        return Uint8Array.from(codePoints, c => c.charCodeAt(0) & 0xff);
-    },
-    toISO88591(uint8array) {
-        return Array.from(Uint16Array.from(uint8array), b => String.fromCharCode(b)).join('');
-    },
-    fromHex(hex) {
-        const evenLengthHex = hex.length % 2 === 0 ? hex : hex.slice(0, hex.length - 1);
-        const buffer = [];
-        for (let i = 0; i < evenLengthHex.length; i += 2) {
-            const firstDigit = evenLengthHex[i];
-            const secondDigit = evenLengthHex[i + 1];
-            if (!HEX_DIGIT.test(firstDigit)) {
-                break;
-            }
-            if (!HEX_DIGIT.test(secondDigit)) {
-                break;
-            }
-            const hexDigit = Number.parseInt(`${firstDigit}${secondDigit}`, 16);
-            buffer.push(hexDigit);
-        }
-        return Uint8Array.from(buffer);
-    },
-    toHex(uint8array) {
-        return Array.from(uint8array, byte => byte.toString(16).padStart(2, '0')).join('');
-    },
-    toUTF8(uint8array, start, end, fatal) {
-        const basicLatin = end - start <= 20 ? tryReadBasicLatin(uint8array, start, end) : null;
-        if (basicLatin != null) {
-            return basicLatin;
-        }
-        if (fatal) {
-            try {
-                return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
-            }
-            catch (cause) {
-                throw new BSONError('Invalid UTF-8 string in BSON document', { cause });
-            }
-        }
-        return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
-    },
-    utf8ByteLength(input) {
-        return new TextEncoder().encode(input).byteLength;
-    },
-    encodeUTF8Into(uint8array, source, byteOffset) {
-        const bytes = new TextEncoder().encode(source);
-        uint8array.set(bytes, byteOffset);
-        return bytes.byteLength;
-    },
-    randomBytes: webRandomBytes
-};
-
-const hasGlobalBuffer = typeof Buffer === 'function' && Buffer.prototype?._isBuffer !== true;
-const ByteUtils = hasGlobalBuffer ? nodeJsByteUtils : webByteUtils;
-
-class BSONValue {
-    get [Symbol.for('@@mdb.bson.version')]() {
-        return BSON_MAJOR_VERSION;
-    }
-    [Symbol.for('nodejs.util.inspect.custom')](depth, options, inspect) {
-        return this.inspect(depth, options, inspect);
-    }
-}
-
-class Binary extends BSONValue {
-    get _bsontype() {
-        return 'Binary';
-    }
-    constructor(buffer, subType) {
-        super();
-        if (!(buffer == null) &&
-            typeof buffer === 'string' &&
-            !ArrayBuffer.isView(buffer) &&
-            !isAnyArrayBuffer(buffer) &&
-            !Array.isArray(buffer)) {
-            throw new BSONError('Binary can only be constructed from Uint8Array or number[]');
-        }
-        this.sub_type = subType ?? Binary.BSON_BINARY_SUBTYPE_DEFAULT;
-        if (buffer == null) {
-            this.buffer = ByteUtils.allocate(Binary.BUFFER_SIZE);
-            this.position = 0;
-        }
-        else {
-            this.buffer = Array.isArray(buffer)
-                ? ByteUtils.fromNumberArray(buffer)
-                : ByteUtils.toLocalBufferType(buffer);
-            this.position = this.buffer.byteLength;
-        }
-    }
-    put(byteValue) {
-        if (typeof byteValue === 'string' && byteValue.length !== 1) {
-            throw new BSONError('only accepts single character String');
-        }
-        else if (typeof byteValue !== 'number' && byteValue.length !== 1)
-            throw new BSONError('only accepts single character Uint8Array or Array');
-        let decodedByte;
-        if (typeof byteValue === 'string') {
-            decodedByte = byteValue.charCodeAt(0);
-        }
-        else if (typeof byteValue === 'number') {
-            decodedByte = byteValue;
-        }
-        else {
-            decodedByte = byteValue[0];
-        }
-        if (decodedByte < 0 || decodedByte > 255) {
-            throw new BSONError('only accepts number in a valid unsigned byte range 0-255');
-        }
-        if (this.buffer.byteLength > this.position) {
-            this.buffer[this.position++] = decodedByte;
-        }
-        else {
-            const newSpace = ByteUtils.allocate(Binary.BUFFER_SIZE + this.buffer.length);
-            newSpace.set(this.buffer, 0);
-            this.buffer = newSpace;
-            this.buffer[this.position++] = decodedByte;
-        }
-    }
-    write(sequence, offset) {
-        offset = typeof offset === 'number' ? offset : this.position;
-        if (this.buffer.byteLength < offset + sequence.length) {
-            const newSpace = ByteUtils.allocate(this.buffer.byteLength + sequence.length);
-            newSpace.set(this.buffer, 0);
-            this.buffer = newSpace;
-        }
-        if (ArrayBuffer.isView(sequence)) {
-            this.buffer.set(ByteUtils.toLocalBufferType(sequence), offset);
-            this.position =
-                offset + sequence.byteLength > this.position ? offset + sequence.length : this.position;
-        }
-        else if (typeof sequence === 'string') {
-            throw new BSONError('input cannot be string');
-        }
-    }
-    read(position, length) {
-        length = length && length > 0 ? length : this.position;
-        return this.buffer.slice(position, position + length);
-    }
-    value() {
-        return this.buffer.length === this.position
-            ? this.buffer
-            : this.buffer.subarray(0, this.position);
-    }
-    length() {
-        return this.position;
-    }
-    toJSON() {
-        return ByteUtils.toBase64(this.buffer);
-    }
-    toString(encoding) {
-        if (encoding === 'hex')
-            return ByteUtils.toHex(this.buffer);
-        if (encoding === 'base64')
-            return ByteUtils.toBase64(this.buffer);
-        if (encoding === 'utf8' || encoding === 'utf-8')
-            return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
-        return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
-    }
-    toExtendedJSON(options) {
-        options = options || {};
-        const base64String = ByteUtils.toBase64(this.buffer);
-        const subType = Number(this.sub_type).toString(16);
-        if (options.legacy) {
-            return {
-                $binary: base64String,
-                $type: subType.length === 1 ? '0' + subType : subType
-            };
-        }
-        return {
-            $binary: {
-                base64: base64String,
-                subType: subType.length === 1 ? '0' + subType : subType
-            }
-        };
-    }
-    toUUID() {
-        if (this.sub_type === Binary.SUBTYPE_UUID) {
-            return new UUID(this.buffer.slice(0, this.position));
-        }
-        throw new BSONError(`Binary sub_type "${this.sub_type}" is not supported for converting to UUID. Only "${Binary.SUBTYPE_UUID}" is currently supported.`);
-    }
-    static createFromHexString(hex, subType) {
-        return new Binary(ByteUtils.fromHex(hex), subType);
-    }
-    static createFromBase64(base64, subType) {
-        return new Binary(ByteUtils.fromBase64(base64), subType);
-    }
-    static fromExtendedJSON(doc, options) {
-        options = options || {};
-        let data;
-        let type;
-        if ('$binary' in doc) {
-            if (options.legacy && typeof doc.$binary === 'string' && '$type' in doc) {
-                type = doc.$type ? parseInt(doc.$type, 16) : 0;
-                data = ByteUtils.fromBase64(doc.$binary);
-            }
-            else {
-                if (typeof doc.$binary !== 'string') {
-                    type = doc.$binary.subType ? parseInt(doc.$binary.subType, 16) : 0;
-                    data = ByteUtils.fromBase64(doc.$binary.base64);
-                }
-            }
-        }
-        else if ('$uuid' in doc) {
-            type = 4;
-            data = UUID.bytesFromString(doc.$uuid);
-        }
-        if (!data) {
-            throw new BSONError(`Unexpected Binary Extended JSON format ${JSON.stringify(doc)}`);
-        }
-        return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const base64 = ByteUtils.toBase64(this.buffer.subarray(0, this.position));
-        const base64Arg = inspect(base64, options);
-        const subTypeArg = inspect(this.sub_type, options);
-        return `Binary.createFromBase64(${base64Arg}, ${subTypeArg})`;
-    }
-}
-Binary.BSON_BINARY_SUBTYPE_DEFAULT = 0;
-Binary.BUFFER_SIZE = 256;
-Binary.SUBTYPE_DEFAULT = 0;
-Binary.SUBTYPE_FUNCTION = 1;
-Binary.SUBTYPE_BYTE_ARRAY = 2;
-Binary.SUBTYPE_UUID_OLD = 3;
-Binary.SUBTYPE_UUID = 4;
-Binary.SUBTYPE_MD5 = 5;
-Binary.SUBTYPE_ENCRYPTED = 6;
-Binary.SUBTYPE_COLUMN = 7;
-Binary.SUBTYPE_USER_DEFINED = 128;
-const UUID_BYTE_LENGTH = 16;
-const UUID_WITHOUT_DASHES = /^[0-9A-F]{32}$/i;
-const UUID_WITH_DASHES = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
-class UUID extends Binary {
-    constructor(input) {
-        let bytes;
-        if (input == null) {
-            bytes = UUID.generate();
-        }
-        else if (input instanceof UUID) {
-            bytes = ByteUtils.toLocalBufferType(new Uint8Array(input.buffer));
-        }
-        else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) {
-            bytes = ByteUtils.toLocalBufferType(input);
-        }
-        else if (typeof input === 'string') {
-            bytes = UUID.bytesFromString(input);
-        }
-        else {
-            throw new BSONError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).');
-        }
-        super(bytes, BSON_BINARY_SUBTYPE_UUID_NEW);
-    }
-    get id() {
-        return this.buffer;
-    }
-    set id(value) {
-        this.buffer = value;
-    }
-    toHexString(includeDashes = true) {
-        if (includeDashes) {
-            return [
-                ByteUtils.toHex(this.buffer.subarray(0, 4)),
-                ByteUtils.toHex(this.buffer.subarray(4, 6)),
-                ByteUtils.toHex(this.buffer.subarray(6, 8)),
-                ByteUtils.toHex(this.buffer.subarray(8, 10)),
-                ByteUtils.toHex(this.buffer.subarray(10, 16))
-            ].join('-');
-        }
-        return ByteUtils.toHex(this.buffer);
-    }
-    toString(encoding) {
-        if (encoding === 'hex')
-            return ByteUtils.toHex(this.id);
-        if (encoding === 'base64')
-            return ByteUtils.toBase64(this.id);
-        return this.toHexString();
-    }
-    toJSON() {
-        return this.toHexString();
-    }
-    equals(otherId) {
-        if (!otherId) {
-            return false;
-        }
-        if (otherId instanceof UUID) {
-            return ByteUtils.equals(otherId.id, this.id);
-        }
-        try {
-            return ByteUtils.equals(new UUID(otherId).id, this.id);
-        }
-        catch {
-            return false;
-        }
-    }
-    toBinary() {
-        return new Binary(this.id, Binary.SUBTYPE_UUID);
-    }
-    static generate() {
-        const bytes = ByteUtils.randomBytes(UUID_BYTE_LENGTH);
-        bytes[6] = (bytes[6] & 0x0f) | 0x40;
-        bytes[8] = (bytes[8] & 0x3f) | 0x80;
-        return bytes;
-    }
-    static isValid(input) {
-        if (!input) {
-            return false;
-        }
-        if (typeof input === 'string') {
-            return UUID.isValidUUIDString(input);
-        }
-        if (isUint8Array(input)) {
-            return input.byteLength === UUID_BYTE_LENGTH;
-        }
-        return (input._bsontype === 'Binary' &&
-            input.sub_type === this.SUBTYPE_UUID &&
-            input.buffer.byteLength === 16);
-    }
-    static createFromHexString(hexString) {
-        const buffer = UUID.bytesFromString(hexString);
-        return new UUID(buffer);
-    }
-    static createFromBase64(base64) {
-        return new UUID(ByteUtils.fromBase64(base64));
-    }
-    static bytesFromString(representation) {
-        if (!UUID.isValidUUIDString(representation)) {
-            throw new BSONError('UUID string representation must be 32 hex digits or canonical hyphenated representation');
-        }
-        return ByteUtils.fromHex(representation.replace(/-/g, ''));
-    }
-    static isValidUUIDString(representation) {
-        return UUID_WITHOUT_DASHES.test(representation) || UUID_WITH_DASHES.test(representation);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new UUID(${inspect(this.toHexString(), options)})`;
-    }
-}
-
-class Code extends BSONValue {
-    get _bsontype() {
-        return 'Code';
-    }
-    constructor(code, scope) {
-        super();
-        this.code = code.toString();
-        this.scope = scope ?? null;
-    }
-    toJSON() {
-        if (this.scope != null) {
-            return { code: this.code, scope: this.scope };
-        }
-        return { code: this.code };
-    }
-    toExtendedJSON() {
-        if (this.scope) {
-            return { $code: this.code, $scope: this.scope };
-        }
-        return { $code: this.code };
-    }
-    static fromExtendedJSON(doc) {
-        return new Code(doc.$code, doc.$scope);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        let parametersString = inspect(this.code, options);
-        const multiLineFn = parametersString.includes('\n');
-        if (this.scope != null) {
-            parametersString += `,${multiLineFn ? '\n' : ' '}${inspect(this.scope, options)}`;
-        }
-        const endingNewline = multiLineFn && this.scope === null;
-        return `new Code(${multiLineFn ? '\n' : ''}${parametersString}${endingNewline ? '\n' : ''})`;
-    }
-}
-
-function isDBRefLike(value) {
-    return (value != null &&
-        typeof value === 'object' &&
-        '$id' in value &&
-        value.$id != null &&
-        '$ref' in value &&
-        typeof value.$ref === 'string' &&
-        (!('$db' in value) || ('$db' in value && typeof value.$db === 'string')));
-}
-class DBRef extends BSONValue {
-    get _bsontype() {
-        return 'DBRef';
-    }
-    constructor(collection, oid, db, fields) {
-        super();
-        const parts = collection.split('.');
-        if (parts.length === 2) {
-            db = parts.shift();
-            collection = parts.shift();
-        }
-        this.collection = collection;
-        this.oid = oid;
-        this.db = db;
-        this.fields = fields || {};
-    }
-    get namespace() {
-        return this.collection;
-    }
-    set namespace(value) {
-        this.collection = value;
-    }
-    toJSON() {
-        const o = Object.assign({
-            $ref: this.collection,
-            $id: this.oid
-        }, this.fields);
-        if (this.db != null)
-            o.$db = this.db;
-        return o;
-    }
-    toExtendedJSON(options) {
-        options = options || {};
-        let o = {
-            $ref: this.collection,
-            $id: this.oid
-        };
-        if (options.legacy) {
-            return o;
-        }
-        if (this.db)
-            o.$db = this.db;
-        o = Object.assign(o, this.fields);
-        return o;
-    }
-    static fromExtendedJSON(doc) {
-        const copy = Object.assign({}, doc);
-        delete copy.$ref;
-        delete copy.$id;
-        delete copy.$db;
-        return new DBRef(doc.$ref, doc.$id, doc.$db, copy);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const args = [
-            inspect(this.namespace, options),
-            inspect(this.oid, options),
-            ...(this.db ? [inspect(this.db, options)] : []),
-            ...(Object.keys(this.fields).length > 0 ? [inspect(this.fields, options)] : [])
-        ];
-        args[1] = inspect === defaultInspect ? `new ObjectId(${args[1]})` : args[1];
-        return `new DBRef(${args.join(', ')})`;
-    }
-}
-
-let wasm = undefined;
-try {
-    wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])), {}).exports;
-}
-catch {
-}
-const TWO_PWR_16_DBL = 1 << 16;
-const TWO_PWR_24_DBL = 1 << 24;
-const TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;
-const TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;
-const TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;
-const INT_CACHE = {};
-const UINT_CACHE = {};
-const MAX_INT64_STRING_LENGTH = 20;
-const DECIMAL_REG_EX = /^(\+?0|(\+|-)?[1-9][0-9]*)$/;
-class Long extends BSONValue {
-    get _bsontype() {
-        return 'Long';
-    }
-    get __isLong__() {
-        return true;
-    }
-    constructor(low = 0, high, unsigned) {
-        super();
-        if (typeof low === 'bigint') {
-            Object.assign(this, Long.fromBigInt(low, !!high));
-        }
-        else if (typeof low === 'string') {
-            Object.assign(this, Long.fromString(low, !!high));
-        }
-        else {
-            this.low = low | 0;
-            this.high = high | 0;
-            this.unsigned = !!unsigned;
-        }
-    }
-    static fromBits(lowBits, highBits, unsigned) {
-        return new Long(lowBits, highBits, unsigned);
-    }
-    static fromInt(value, unsigned) {
-        let obj, cachedObj, cache;
-        if (unsigned) {
-            value >>>= 0;
-            if ((cache = 0 <= value && value < 256)) {
-                cachedObj = UINT_CACHE[value];
-                if (cachedObj)
-                    return cachedObj;
-            }
-            obj = Long.fromBits(value, (value | 0) < 0 ? -1 : 0, true);
-            if (cache)
-                UINT_CACHE[value] = obj;
-            return obj;
-        }
-        else {
-            value |= 0;
-            if ((cache = -128 <= value && value < 128)) {
-                cachedObj = INT_CACHE[value];
-                if (cachedObj)
-                    return cachedObj;
-            }
-            obj = Long.fromBits(value, value < 0 ? -1 : 0, false);
-            if (cache)
-                INT_CACHE[value] = obj;
-            return obj;
-        }
-    }
-    static fromNumber(value, unsigned) {
-        if (isNaN(value))
-            return unsigned ? Long.UZERO : Long.ZERO;
-        if (unsigned) {
-            if (value < 0)
-                return Long.UZERO;
-            if (value >= TWO_PWR_64_DBL)
-                return Long.MAX_UNSIGNED_VALUE;
-        }
-        else {
-            if (value <= -TWO_PWR_63_DBL)
-                return Long.MIN_VALUE;
-            if (value + 1 >= TWO_PWR_63_DBL)
-                return Long.MAX_VALUE;
-        }
-        if (value < 0)
-            return Long.fromNumber(-value, unsigned).neg();
-        return Long.fromBits(value % TWO_PWR_32_DBL | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);
-    }
-    static fromBigInt(value, unsigned) {
-        return Long.fromString(value.toString(), unsigned);
-    }
-    static fromString(str, unsigned, radix) {
-        if (str.length === 0)
-            throw new BSONError('empty string');
-        if (str === 'NaN' || str === 'Infinity' || str === '+Infinity' || str === '-Infinity')
-            return Long.ZERO;
-        if (typeof unsigned === 'number') {
-            (radix = unsigned), (unsigned = false);
-        }
-        else {
-            unsigned = !!unsigned;
-        }
-        radix = radix || 10;
-        if (radix < 2 || 36 < radix)
-            throw new BSONError('radix');
-        let p;
-        if ((p = str.indexOf('-')) > 0)
-            throw new BSONError('interior hyphen');
-        else if (p === 0) {
-            return Long.fromString(str.substring(1), unsigned, radix).neg();
-        }
-        const radixToPower = Long.fromNumber(Math.pow(radix, 8));
-        let result = Long.ZERO;
-        for (let i = 0; i < str.length; i += 8) {
-            const size = Math.min(8, str.length - i), value = parseInt(str.substring(i, i + size), radix);
-            if (size < 8) {
-                const power = Long.fromNumber(Math.pow(radix, size));
-                result = result.mul(power).add(Long.fromNumber(value));
-            }
-            else {
-                result = result.mul(radixToPower);
-                result = result.add(Long.fromNumber(value));
-            }
-        }
-        result.unsigned = unsigned;
-        return result;
-    }
-    static fromBytes(bytes, unsigned, le) {
-        return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);
-    }
-    static fromBytesLE(bytes, unsigned) {
-        return new Long(bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24), bytes[4] | (bytes[5] << 8) | (bytes[6] << 16) | (bytes[7] << 24), unsigned);
-    }
-    static fromBytesBE(bytes, unsigned) {
-        return new Long((bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7], (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3], unsigned);
-    }
-    static isLong(value) {
-        return (value != null &&
-            typeof value === 'object' &&
-            '__isLong__' in value &&
-            value.__isLong__ === true);
-    }
-    static fromValue(val, unsigned) {
-        if (typeof val === 'number')
-            return Long.fromNumber(val, unsigned);
-        if (typeof val === 'string')
-            return Long.fromString(val, unsigned);
-        return Long.fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);
-    }
-    add(addend) {
-        if (!Long.isLong(addend))
-            addend = Long.fromValue(addend);
-        const a48 = this.high >>> 16;
-        const a32 = this.high & 0xffff;
-        const a16 = this.low >>> 16;
-        const a00 = this.low & 0xffff;
-        const b48 = addend.high >>> 16;
-        const b32 = addend.high & 0xffff;
-        const b16 = addend.low >>> 16;
-        const b00 = addend.low & 0xffff;
-        let c48 = 0, c32 = 0, c16 = 0, c00 = 0;
-        c00 += a00 + b00;
-        c16 += c00 >>> 16;
-        c00 &= 0xffff;
-        c16 += a16 + b16;
-        c32 += c16 >>> 16;
-        c16 &= 0xffff;
-        c32 += a32 + b32;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c48 += a48 + b48;
-        c48 &= 0xffff;
-        return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
-    }
-    and(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        return Long.fromBits(this.low & other.low, this.high & other.high, this.unsigned);
-    }
-    compare(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        if (this.eq(other))
-            return 0;
-        const thisNeg = this.isNegative(), otherNeg = other.isNegative();
-        if (thisNeg && !otherNeg)
-            return -1;
-        if (!thisNeg && otherNeg)
-            return 1;
-        if (!this.unsigned)
-            return this.sub(other).isNegative() ? -1 : 1;
-        return other.high >>> 0 > this.high >>> 0 ||
-            (other.high === this.high && other.low >>> 0 > this.low >>> 0)
-            ? -1
-            : 1;
-    }
-    comp(other) {
-        return this.compare(other);
-    }
-    divide(divisor) {
-        if (!Long.isLong(divisor))
-            divisor = Long.fromValue(divisor);
-        if (divisor.isZero())
-            throw new BSONError('division by zero');
-        if (wasm) {
-            if (!this.unsigned &&
-                this.high === -0x80000000 &&
-                divisor.low === -1 &&
-                divisor.high === -1) {
-                return this;
-            }
-            const low = (this.unsigned ? wasm.div_u : wasm.div_s)(this.low, this.high, divisor.low, divisor.high);
-            return Long.fromBits(low, wasm.get_high(), this.unsigned);
-        }
-        if (this.isZero())
-            return this.unsigned ? Long.UZERO : Long.ZERO;
-        let approx, rem, res;
-        if (!this.unsigned) {
-            if (this.eq(Long.MIN_VALUE)) {
-                if (divisor.eq(Long.ONE) || divisor.eq(Long.NEG_ONE))
-                    return Long.MIN_VALUE;
-                else if (divisor.eq(Long.MIN_VALUE))
-                    return Long.ONE;
-                else {
-                    const halfThis = this.shr(1);
-                    approx = halfThis.div(divisor).shl(1);
-                    if (approx.eq(Long.ZERO)) {
-                        return divisor.isNegative() ? Long.ONE : Long.NEG_ONE;
-                    }
-                    else {
-                        rem = this.sub(divisor.mul(approx));
-                        res = approx.add(rem.div(divisor));
-                        return res;
-                    }
-                }
-            }
-            else if (divisor.eq(Long.MIN_VALUE))
-                return this.unsigned ? Long.UZERO : Long.ZERO;
-            if (this.isNegative()) {
-                if (divisor.isNegative())
-                    return this.neg().div(divisor.neg());
-                return this.neg().div(divisor).neg();
-            }
-            else if (divisor.isNegative())
-                return this.div(divisor.neg()).neg();
-            res = Long.ZERO;
-        }
-        else {
-            if (!divisor.unsigned)
-                divisor = divisor.toUnsigned();
-            if (divisor.gt(this))
-                return Long.UZERO;
-            if (divisor.gt(this.shru(1)))
-                return Long.UONE;
-            res = Long.UZERO;
-        }
-        rem = this;
-        while (rem.gte(divisor)) {
-            approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));
-            const log2 = Math.ceil(Math.log(approx) / Math.LN2);
-            const delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48);
-            let approxRes = Long.fromNumber(approx);
-            let approxRem = approxRes.mul(divisor);
-            while (approxRem.isNegative() || approxRem.gt(rem)) {
-                approx -= delta;
-                approxRes = Long.fromNumber(approx, this.unsigned);
-                approxRem = approxRes.mul(divisor);
-            }
-            if (approxRes.isZero())
-                approxRes = Long.ONE;
-            res = res.add(approxRes);
-            rem = rem.sub(approxRem);
-        }
-        return res;
-    }
-    div(divisor) {
-        return this.divide(divisor);
-    }
-    equals(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1)
-            return false;
-        return this.high === other.high && this.low === other.low;
-    }
-    eq(other) {
-        return this.equals(other);
-    }
-    getHighBits() {
-        return this.high;
-    }
-    getHighBitsUnsigned() {
-        return this.high >>> 0;
-    }
-    getLowBits() {
-        return this.low;
-    }
-    getLowBitsUnsigned() {
-        return this.low >>> 0;
-    }
-    getNumBitsAbs() {
-        if (this.isNegative()) {
-            return this.eq(Long.MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();
-        }
-        const val = this.high !== 0 ? this.high : this.low;
-        let bit;
-        for (bit = 31; bit > 0; bit--)
-            if ((val & (1 << bit)) !== 0)
-                break;
-        return this.high !== 0 ? bit + 33 : bit + 1;
-    }
-    greaterThan(other) {
-        return this.comp(other) > 0;
-    }
-    gt(other) {
-        return this.greaterThan(other);
-    }
-    greaterThanOrEqual(other) {
-        return this.comp(other) >= 0;
-    }
-    gte(other) {
-        return this.greaterThanOrEqual(other);
-    }
-    ge(other) {
-        return this.greaterThanOrEqual(other);
-    }
-    isEven() {
-        return (this.low & 1) === 0;
-    }
-    isNegative() {
-        return !this.unsigned && this.high < 0;
-    }
-    isOdd() {
-        return (this.low & 1) === 1;
-    }
-    isPositive() {
-        return this.unsigned || this.high >= 0;
-    }
-    isZero() {
-        return this.high === 0 && this.low === 0;
-    }
-    lessThan(other) {
-        return this.comp(other) < 0;
-    }
-    lt(other) {
-        return this.lessThan(other);
-    }
-    lessThanOrEqual(other) {
-        return this.comp(other) <= 0;
-    }
-    lte(other) {
-        return this.lessThanOrEqual(other);
-    }
-    modulo(divisor) {
-        if (!Long.isLong(divisor))
-            divisor = Long.fromValue(divisor);
-        if (wasm) {
-            const low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(this.low, this.high, divisor.low, divisor.high);
-            return Long.fromBits(low, wasm.get_high(), this.unsigned);
-        }
-        return this.sub(this.div(divisor).mul(divisor));
-    }
-    mod(divisor) {
-        return this.modulo(divisor);
-    }
-    rem(divisor) {
-        return this.modulo(divisor);
-    }
-    multiply(multiplier) {
-        if (this.isZero())
-            return Long.ZERO;
-        if (!Long.isLong(multiplier))
-            multiplier = Long.fromValue(multiplier);
-        if (wasm) {
-            const low = wasm.mul(this.low, this.high, multiplier.low, multiplier.high);
-            return Long.fromBits(low, wasm.get_high(), this.unsigned);
-        }
-        if (multiplier.isZero())
-            return Long.ZERO;
-        if (this.eq(Long.MIN_VALUE))
-            return multiplier.isOdd() ? Long.MIN_VALUE : Long.ZERO;
-        if (multiplier.eq(Long.MIN_VALUE))
-            return this.isOdd() ? Long.MIN_VALUE : Long.ZERO;
-        if (this.isNegative()) {
-            if (multiplier.isNegative())
-                return this.neg().mul(multiplier.neg());
-            else
-                return this.neg().mul(multiplier).neg();
-        }
-        else if (multiplier.isNegative())
-            return this.mul(multiplier.neg()).neg();
-        if (this.lt(Long.TWO_PWR_24) && multiplier.lt(Long.TWO_PWR_24))
-            return Long.fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);
-        const a48 = this.high >>> 16;
-        const a32 = this.high & 0xffff;
-        const a16 = this.low >>> 16;
-        const a00 = this.low & 0xffff;
-        const b48 = multiplier.high >>> 16;
-        const b32 = multiplier.high & 0xffff;
-        const b16 = multiplier.low >>> 16;
-        const b00 = multiplier.low & 0xffff;
-        let c48 = 0, c32 = 0, c16 = 0, c00 = 0;
-        c00 += a00 * b00;
-        c16 += c00 >>> 16;
-        c00 &= 0xffff;
-        c16 += a16 * b00;
-        c32 += c16 >>> 16;
-        c16 &= 0xffff;
-        c16 += a00 * b16;
-        c32 += c16 >>> 16;
-        c16 &= 0xffff;
-        c32 += a32 * b00;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c32 += a16 * b16;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c32 += a00 * b32;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
-        c48 &= 0xffff;
-        return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
-    }
-    mul(multiplier) {
-        return this.multiply(multiplier);
-    }
-    negate() {
-        if (!this.unsigned && this.eq(Long.MIN_VALUE))
-            return Long.MIN_VALUE;
-        return this.not().add(Long.ONE);
-    }
-    neg() {
-        return this.negate();
-    }
-    not() {
-        return Long.fromBits(~this.low, ~this.high, this.unsigned);
-    }
-    notEquals(other) {
-        return !this.equals(other);
-    }
-    neq(other) {
-        return this.notEquals(other);
-    }
-    ne(other) {
-        return this.notEquals(other);
-    }
-    or(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        return Long.fromBits(this.low | other.low, this.high | other.high, this.unsigned);
-    }
-    shiftLeft(numBits) {
-        if (Long.isLong(numBits))
-            numBits = numBits.toInt();
-        if ((numBits &= 63) === 0)
-            return this;
-        else if (numBits < 32)
-            return Long.fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);
-        else
-            return Long.fromBits(0, this.low << (numBits - 32), this.unsigned);
-    }
-    shl(numBits) {
-        return this.shiftLeft(numBits);
-    }
-    shiftRight(numBits) {
-        if (Long.isLong(numBits))
-            numBits = numBits.toInt();
-        if ((numBits &= 63) === 0)
-            return this;
-        else if (numBits < 32)
-            return Long.fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);
-        else
-            return Long.fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);
-    }
-    shr(numBits) {
-        return this.shiftRight(numBits);
-    }
-    shiftRightUnsigned(numBits) {
-        if (Long.isLong(numBits))
-            numBits = numBits.toInt();
-        numBits &= 63;
-        if (numBits === 0)
-            return this;
-        else {
-            const high = this.high;
-            if (numBits < 32) {
-                const low = this.low;
-                return Long.fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);
-            }
-            else if (numBits === 32)
-                return Long.fromBits(high, 0, this.unsigned);
-            else
-                return Long.fromBits(high >>> (numBits - 32), 0, this.unsigned);
-        }
-    }
-    shr_u(numBits) {
-        return this.shiftRightUnsigned(numBits);
-    }
-    shru(numBits) {
-        return this.shiftRightUnsigned(numBits);
-    }
-    subtract(subtrahend) {
-        if (!Long.isLong(subtrahend))
-            subtrahend = Long.fromValue(subtrahend);
-        return this.add(subtrahend.neg());
-    }
-    sub(subtrahend) {
-        return this.subtract(subtrahend);
-    }
-    toInt() {
-        return this.unsigned ? this.low >>> 0 : this.low;
-    }
-    toNumber() {
-        if (this.unsigned)
-            return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);
-        return this.high * TWO_PWR_32_DBL + (this.low >>> 0);
-    }
-    toBigInt() {
-        return BigInt(this.toString());
-    }
-    toBytes(le) {
-        return le ? this.toBytesLE() : this.toBytesBE();
-    }
-    toBytesLE() {
-        const hi = this.high, lo = this.low;
-        return [
-            lo & 0xff,
-            (lo >>> 8) & 0xff,
-            (lo >>> 16) & 0xff,
-            lo >>> 24,
-            hi & 0xff,
-            (hi >>> 8) & 0xff,
-            (hi >>> 16) & 0xff,
-            hi >>> 24
-        ];
-    }
-    toBytesBE() {
-        const hi = this.high, lo = this.low;
-        return [
-            hi >>> 24,
-            (hi >>> 16) & 0xff,
-            (hi >>> 8) & 0xff,
-            hi & 0xff,
-            lo >>> 24,
-            (lo >>> 16) & 0xff,
-            (lo >>> 8) & 0xff,
-            lo & 0xff
-        ];
-    }
-    toSigned() {
-        if (!this.unsigned)
-            return this;
-        return Long.fromBits(this.low, this.high, false);
-    }
-    toString(radix) {
-        radix = radix || 10;
-        if (radix < 2 || 36 < radix)
-            throw new BSONError('radix');
-        if (this.isZero())
-            return '0';
-        if (this.isNegative()) {
-            if (this.eq(Long.MIN_VALUE)) {
-                const radixLong = Long.fromNumber(radix), div = this.div(radixLong), rem1 = div.mul(radixLong).sub(this);
-                return div.toString(radix) + rem1.toInt().toString(radix);
-            }
-            else
-                return '-' + this.neg().toString(radix);
-        }
-        const radixToPower = Long.fromNumber(Math.pow(radix, 6), this.unsigned);
-        let rem = this;
-        let result = '';
-        while (true) {
-            const remDiv = rem.div(radixToPower);
-            const intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0;
-            let digits = intval.toString(radix);
-            rem = remDiv;
-            if (rem.isZero()) {
-                return digits + result;
-            }
-            else {
-                while (digits.length < 6)
-                    digits = '0' + digits;
-                result = '' + digits + result;
-            }
-        }
-    }
-    toUnsigned() {
-        if (this.unsigned)
-            return this;
-        return Long.fromBits(this.low, this.high, true);
-    }
-    xor(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        return Long.fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);
-    }
-    eqz() {
-        return this.isZero();
-    }
-    le(other) {
-        return this.lessThanOrEqual(other);
-    }
-    toExtendedJSON(options) {
-        if (options && options.relaxed)
-            return this.toNumber();
-        return { $numberLong: this.toString() };
-    }
-    static fromExtendedJSON(doc, options) {
-        const { useBigInt64 = false, relaxed = true } = { ...options };
-        if (doc.$numberLong.length > MAX_INT64_STRING_LENGTH) {
-            throw new BSONError('$numberLong string is too long');
-        }
-        if (!DECIMAL_REG_EX.test(doc.$numberLong)) {
-            throw new BSONError(`$numberLong string "${doc.$numberLong}" is in an invalid format`);
-        }
-        if (useBigInt64) {
-            const bigIntResult = BigInt(doc.$numberLong);
-            return BigInt.asIntN(64, bigIntResult);
-        }
-        const longResult = Long.fromString(doc.$numberLong);
-        if (relaxed) {
-            return longResult.toNumber();
-        }
-        return longResult;
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const longVal = inspect(this.toString(), options);
-        const unsignedVal = this.unsigned ? `, ${inspect(this.unsigned, options)}` : '';
-        return `new Long(${longVal}${unsignedVal})`;
-    }
-}
-Long.TWO_PWR_24 = Long.fromInt(TWO_PWR_24_DBL);
-Long.MAX_UNSIGNED_VALUE = Long.fromBits(0xffffffff | 0, 0xffffffff | 0, true);
-Long.ZERO = Long.fromInt(0);
-Long.UZERO = Long.fromInt(0, true);
-Long.ONE = Long.fromInt(1);
-Long.UONE = Long.fromInt(1, true);
-Long.NEG_ONE = Long.fromInt(-1);
-Long.MAX_VALUE = Long.fromBits(0xffffffff | 0, 0x7fffffff | 0, false);
-Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0, false);
-
-const PARSE_STRING_REGEXP = /^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/;
-const PARSE_INF_REGEXP = /^(\+|-)?(Infinity|inf)$/i;
-const PARSE_NAN_REGEXP = /^(\+|-)?NaN$/i;
-const EXPONENT_MAX = 6111;
-const EXPONENT_MIN = -6176;
-const EXPONENT_BIAS = 6176;
-const MAX_DIGITS = 34;
-const NAN_BUFFER = ByteUtils.fromNumberArray([
-    0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-].reverse());
-const INF_NEGATIVE_BUFFER = ByteUtils.fromNumberArray([
-    0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-].reverse());
-const INF_POSITIVE_BUFFER = ByteUtils.fromNumberArray([
-    0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-].reverse());
-const EXPONENT_REGEX = /^([-+])?(\d+)?$/;
-const COMBINATION_MASK = 0x1f;
-const EXPONENT_MASK = 0x3fff;
-const COMBINATION_INFINITY = 30;
-const COMBINATION_NAN = 31;
-function isDigit(value) {
-    return !isNaN(parseInt(value, 10));
-}
-function divideu128(value) {
-    const DIVISOR = Long.fromNumber(1000 * 1000 * 1000);
-    let _rem = Long.fromNumber(0);
-    if (!value.parts[0] && !value.parts[1] && !value.parts[2] && !value.parts[3]) {
-        return { quotient: value, rem: _rem };
-    }
-    for (let i = 0; i <= 3; i++) {
-        _rem = _rem.shiftLeft(32);
-        _rem = _rem.add(new Long(value.parts[i], 0));
-        value.parts[i] = _rem.div(DIVISOR).low;
-        _rem = _rem.modulo(DIVISOR);
-    }
-    return { quotient: value, rem: _rem };
-}
-function multiply64x2(left, right) {
-    if (!left && !right) {
-        return { high: Long.fromNumber(0), low: Long.fromNumber(0) };
-    }
-    const leftHigh = left.shiftRightUnsigned(32);
-    const leftLow = new Long(left.getLowBits(), 0);
-    const rightHigh = right.shiftRightUnsigned(32);
-    const rightLow = new Long(right.getLowBits(), 0);
-    let productHigh = leftHigh.multiply(rightHigh);
-    let productMid = leftHigh.multiply(rightLow);
-    const productMid2 = leftLow.multiply(rightHigh);
-    let productLow = leftLow.multiply(rightLow);
-    productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
-    productMid = new Long(productMid.getLowBits(), 0)
-        .add(productMid2)
-        .add(productLow.shiftRightUnsigned(32));
-    productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
-    productLow = productMid.shiftLeft(32).add(new Long(productLow.getLowBits(), 0));
-    return { high: productHigh, low: productLow };
-}
-function lessThan(left, right) {
-    const uhleft = left.high >>> 0;
-    const uhright = right.high >>> 0;
-    if (uhleft < uhright) {
-        return true;
-    }
-    else if (uhleft === uhright) {
-        const ulleft = left.low >>> 0;
-        const ulright = right.low >>> 0;
-        if (ulleft < ulright)
-            return true;
-    }
-    return false;
-}
-function invalidErr(string, message) {
-    throw new BSONError(`"${string}" is not a valid Decimal128 string - ${message}`);
-}
-class Decimal128 extends BSONValue {
-    get _bsontype() {
-        return 'Decimal128';
-    }
-    constructor(bytes) {
-        super();
-        if (typeof bytes === 'string') {
-            this.bytes = Decimal128.fromString(bytes).bytes;
-        }
-        else if (isUint8Array(bytes)) {
-            if (bytes.byteLength !== 16) {
-                throw new BSONError('Decimal128 must take a Buffer of 16 bytes');
-            }
-            this.bytes = bytes;
-        }
-        else {
-            throw new BSONError('Decimal128 must take a Buffer or string');
-        }
-    }
-    static fromString(representation) {
-        return Decimal128._fromString(representation, { allowRounding: false });
-    }
-    static fromStringWithRounding(representation) {
-        return Decimal128._fromString(representation, { allowRounding: true });
-    }
-    static _fromString(representation, options) {
-        let isNegative = false;
-        let sawSign = false;
-        let sawRadix = false;
-        let foundNonZero = false;
-        let significantDigits = 0;
-        let nDigitsRead = 0;
-        let nDigits = 0;
-        let radixPosition = 0;
-        let firstNonZero = 0;
-        const digits = [0];
-        let nDigitsStored = 0;
-        let digitsInsert = 0;
-        let lastDigit = 0;
-        let exponent = 0;
-        let significandHigh = new Long(0, 0);
-        let significandLow = new Long(0, 0);
-        let biasedExponent = 0;
-        let index = 0;
-        if (representation.length >= 7000) {
-            throw new BSONError('' + representation + ' not a valid Decimal128 string');
-        }
-        const stringMatch = representation.match(PARSE_STRING_REGEXP);
-        const infMatch = representation.match(PARSE_INF_REGEXP);
-        const nanMatch = representation.match(PARSE_NAN_REGEXP);
-        if ((!stringMatch && !infMatch && !nanMatch) || representation.length === 0) {
-            throw new BSONError('' + representation + ' not a valid Decimal128 string');
-        }
-        if (stringMatch) {
-            const unsignedNumber = stringMatch[2];
-            const e = stringMatch[4];
-            const expSign = stringMatch[5];
-            const expNumber = stringMatch[6];
-            if (e && expNumber === undefined)
-                invalidErr(representation, 'missing exponent power');
-            if (e && unsignedNumber === undefined)
-                invalidErr(representation, 'missing exponent base');
-            if (e === undefined && (expSign || expNumber)) {
-                invalidErr(representation, 'missing e before exponent');
-            }
-        }
-        if (representation[index] === '+' || representation[index] === '-') {
-            sawSign = true;
-            isNegative = representation[index++] === '-';
-        }
-        if (!isDigit(representation[index]) && representation[index] !== '.') {
-            if (representation[index] === 'i' || representation[index] === 'I') {
-                return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
-            }
-            else if (representation[index] === 'N') {
-                return new Decimal128(NAN_BUFFER);
-            }
-        }
-        while (isDigit(representation[index]) || representation[index] === '.') {
-            if (representation[index] === '.') {
-                if (sawRadix)
-                    invalidErr(representation, 'contains multiple periods');
-                sawRadix = true;
-                index = index + 1;
-                continue;
-            }
-            if (nDigitsStored < MAX_DIGITS) {
-                if (representation[index] !== '0' || foundNonZero) {
-                    if (!foundNonZero) {
-                        firstNonZero = nDigitsRead;
-                    }
-                    foundNonZero = true;
-                    digits[digitsInsert++] = parseInt(representation[index], 10);
-                    nDigitsStored = nDigitsStored + 1;
-                }
-            }
-            if (foundNonZero)
-                nDigits = nDigits + 1;
-            if (sawRadix)
-                radixPosition = radixPosition + 1;
-            nDigitsRead = nDigitsRead + 1;
-            index = index + 1;
-        }
-        if (sawRadix && !nDigitsRead)
-            throw new BSONError('' + representation + ' not a valid Decimal128 string');
-        if (representation[index] === 'e' || representation[index] === 'E') {
-            const match = representation.substr(++index).match(EXPONENT_REGEX);
-            if (!match || !match[2])
-                return new Decimal128(NAN_BUFFER);
-            exponent = parseInt(match[0], 10);
-            index = index + match[0].length;
-        }
-        if (representation[index])
-            return new Decimal128(NAN_BUFFER);
-        if (!nDigitsStored) {
-            digits[0] = 0;
-            nDigits = 1;
-            nDigitsStored = 1;
-            significantDigits = 0;
-        }
-        else {
-            lastDigit = nDigitsStored - 1;
-            significantDigits = nDigits;
-            if (significantDigits !== 1) {
-                while (representation[firstNonZero + significantDigits - 1 + Number(sawSign) + Number(sawRadix)] === '0') {
-                    significantDigits = significantDigits - 1;
-                }
-            }
-        }
-        if (exponent <= radixPosition && radixPosition > exponent + (1 << 14)) {
-            exponent = EXPONENT_MIN;
-        }
-        else {
-            exponent = exponent - radixPosition;
-        }
-        while (exponent > EXPONENT_MAX) {
-            lastDigit = lastDigit + 1;
-            if (lastDigit >= MAX_DIGITS) {
-                if (significantDigits === 0) {
-                    exponent = EXPONENT_MAX;
-                    break;
-                }
-                invalidErr(representation, 'overflow');
-            }
-            exponent = exponent - 1;
-        }
-        if (options.allowRounding) {
-            while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
-                if (lastDigit === 0 && significantDigits < nDigitsStored) {
-                    exponent = EXPONENT_MIN;
-                    significantDigits = 0;
-                    break;
-                }
-                if (nDigitsStored < nDigits) {
-                    nDigits = nDigits - 1;
-                }
-                else {
-                    lastDigit = lastDigit - 1;
-                }
-                if (exponent < EXPONENT_MAX) {
-                    exponent = exponent + 1;
-                }
-                else {
-                    const digitsString = digits.join('');
-                    if (digitsString.match(/^0+$/)) {
-                        exponent = EXPONENT_MAX;
-                        break;
-                    }
-                    invalidErr(representation, 'overflow');
-                }
-            }
-            if (lastDigit + 1 < significantDigits) {
-                let endOfString = nDigitsRead;
-                if (sawRadix) {
-                    firstNonZero = firstNonZero + 1;
-                    endOfString = endOfString + 1;
-                }
-                if (sawSign) {
-                    firstNonZero = firstNonZero + 1;
-                    endOfString = endOfString + 1;
-                }
-                const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
-                let roundBit = 0;
-                if (roundDigit >= 5) {
-                    roundBit = 1;
-                    if (roundDigit === 5) {
-                        roundBit = digits[lastDigit] % 2 === 1 ? 1 : 0;
-                        for (let i = firstNonZero + lastDigit + 2; i < endOfString; i++) {
-                            if (parseInt(representation[i], 10)) {
-                                roundBit = 1;
-                                break;
-                            }
-                        }
-                    }
-                }
-                if (roundBit) {
-                    let dIdx = lastDigit;
-                    for (; dIdx >= 0; dIdx--) {
-                        if (++digits[dIdx] > 9) {
-                            digits[dIdx] = 0;
-                            if (dIdx === 0) {
-                                if (exponent < EXPONENT_MAX) {
-                                    exponent = exponent + 1;
-                                    digits[dIdx] = 1;
-                                }
-                                else {
-                                    return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
-                                }
-                            }
-                        }
-                        else {
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-        else {
-            while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
-                if (lastDigit === 0) {
-                    if (significantDigits === 0) {
-                        exponent = EXPONENT_MIN;
-                        break;
-                    }
-                    invalidErr(representation, 'exponent underflow');
-                }
-                if (nDigitsStored < nDigits) {
-                    if (representation[nDigits - 1 + Number(sawSign) + Number(sawRadix)] !== '0' &&
-                        significantDigits !== 0) {
-                        invalidErr(representation, 'inexact rounding');
-                    }
-                    nDigits = nDigits - 1;
-                }
-                else {
-                    if (digits[lastDigit] !== 0) {
-                        invalidErr(representation, 'inexact rounding');
-                    }
-                    lastDigit = lastDigit - 1;
-                }
-                if (exponent < EXPONENT_MAX) {
-                    exponent = exponent + 1;
-                }
-                else {
-                    invalidErr(representation, 'overflow');
-                }
-            }
-            if (lastDigit + 1 < significantDigits) {
-                if (sawRadix) {
-                    firstNonZero = firstNonZero + 1;
-                }
-                if (sawSign) {
-                    firstNonZero = firstNonZero + 1;
-                }
-                const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
-                if (roundDigit !== 0) {
-                    invalidErr(representation, 'inexact rounding');
-                }
-            }
-        }
-        significandHigh = Long.fromNumber(0);
-        significandLow = Long.fromNumber(0);
-        if (significantDigits === 0) {
-            significandHigh = Long.fromNumber(0);
-            significandLow = Long.fromNumber(0);
-        }
-        else if (lastDigit < 17) {
-            let dIdx = 0;
-            significandLow = Long.fromNumber(digits[dIdx++]);
-            significandHigh = new Long(0, 0);
-            for (; dIdx <= lastDigit; dIdx++) {
-                significandLow = significandLow.multiply(Long.fromNumber(10));
-                significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
-            }
-        }
-        else {
-            let dIdx = 0;
-            significandHigh = Long.fromNumber(digits[dIdx++]);
-            for (; dIdx <= lastDigit - 17; dIdx++) {
-                significandHigh = significandHigh.multiply(Long.fromNumber(10));
-                significandHigh = significandHigh.add(Long.fromNumber(digits[dIdx]));
-            }
-            significandLow = Long.fromNumber(digits[dIdx++]);
-            for (; dIdx <= lastDigit; dIdx++) {
-                significandLow = significandLow.multiply(Long.fromNumber(10));
-                significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
-            }
-        }
-        const significand = multiply64x2(significandHigh, Long.fromString('100000000000000000'));
-        significand.low = significand.low.add(significandLow);
-        if (lessThan(significand.low, significandLow)) {
-            significand.high = significand.high.add(Long.fromNumber(1));
-        }
-        biasedExponent = exponent + EXPONENT_BIAS;
-        const dec = { low: Long.fromNumber(0), high: Long.fromNumber(0) };
-        if (significand.high.shiftRightUnsigned(49).and(Long.fromNumber(1)).equals(Long.fromNumber(1))) {
-            dec.high = dec.high.or(Long.fromNumber(0x3).shiftLeft(61));
-            dec.high = dec.high.or(Long.fromNumber(biasedExponent).and(Long.fromNumber(0x3fff).shiftLeft(47)));
-            dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x7fffffffffff)));
-        }
-        else {
-            dec.high = dec.high.or(Long.fromNumber(biasedExponent & 0x3fff).shiftLeft(49));
-            dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x1ffffffffffff)));
-        }
-        dec.low = significand.low;
-        if (isNegative) {
-            dec.high = dec.high.or(Long.fromString('9223372036854775808'));
-        }
-        const buffer = ByteUtils.allocateUnsafe(16);
-        index = 0;
-        buffer[index++] = dec.low.low & 0xff;
-        buffer[index++] = (dec.low.low >> 8) & 0xff;
-        buffer[index++] = (dec.low.low >> 16) & 0xff;
-        buffer[index++] = (dec.low.low >> 24) & 0xff;
-        buffer[index++] = dec.low.high & 0xff;
-        buffer[index++] = (dec.low.high >> 8) & 0xff;
-        buffer[index++] = (dec.low.high >> 16) & 0xff;
-        buffer[index++] = (dec.low.high >> 24) & 0xff;
-        buffer[index++] = dec.high.low & 0xff;
-        buffer[index++] = (dec.high.low >> 8) & 0xff;
-        buffer[index++] = (dec.high.low >> 16) & 0xff;
-        buffer[index++] = (dec.high.low >> 24) & 0xff;
-        buffer[index++] = dec.high.high & 0xff;
-        buffer[index++] = (dec.high.high >> 8) & 0xff;
-        buffer[index++] = (dec.high.high >> 16) & 0xff;
-        buffer[index++] = (dec.high.high >> 24) & 0xff;
-        return new Decimal128(buffer);
-    }
-    toString() {
-        let biased_exponent;
-        let significand_digits = 0;
-        const significand = new Array(36);
-        for (let i = 0; i < significand.length; i++)
-            significand[i] = 0;
-        let index = 0;
-        let is_zero = false;
-        let significand_msb;
-        let significand128 = { parts: [0, 0, 0, 0] };
-        let j, k;
-        const string = [];
-        index = 0;
-        const buffer = this.bytes;
-        const low = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        const midl = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        const midh = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        const high = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        index = 0;
-        const dec = {
-            low: new Long(low, midl),
-            high: new Long(midh, high)
-        };
-        if (dec.high.lessThan(Long.ZERO)) {
-            string.push('-');
-        }
-        const combination = (high >> 26) & COMBINATION_MASK;
-        if (combination >> 3 === 3) {
-            if (combination === COMBINATION_INFINITY) {
-                return string.join('') + 'Infinity';
-            }
-            else if (combination === COMBINATION_NAN) {
-                return 'NaN';
-            }
-            else {
-                biased_exponent = (high >> 15) & EXPONENT_MASK;
-                significand_msb = 0x08 + ((high >> 14) & 0x01);
-            }
-        }
-        else {
-            significand_msb = (high >> 14) & 0x07;
-            biased_exponent = (high >> 17) & EXPONENT_MASK;
-        }
-        const exponent = biased_exponent - EXPONENT_BIAS;
-        significand128.parts[0] = (high & 0x3fff) + ((significand_msb & 0xf) << 14);
-        significand128.parts[1] = midh;
-        significand128.parts[2] = midl;
-        significand128.parts[3] = low;
-        if (significand128.parts[0] === 0 &&
-            significand128.parts[1] === 0 &&
-            significand128.parts[2] === 0 &&
-            significand128.parts[3] === 0) {
-            is_zero = true;
-        }
-        else {
-            for (k = 3; k >= 0; k--) {
-                let least_digits = 0;
-                const result = divideu128(significand128);
-                significand128 = result.quotient;
-                least_digits = result.rem.low;
-                if (!least_digits)
-                    continue;
-                for (j = 8; j >= 0; j--) {
-                    significand[k * 9 + j] = least_digits % 10;
-                    least_digits = Math.floor(least_digits / 10);
-                }
-            }
-        }
-        if (is_zero) {
-            significand_digits = 1;
-            significand[index] = 0;
-        }
-        else {
-            significand_digits = 36;
-            while (!significand[index]) {
-                significand_digits = significand_digits - 1;
-                index = index + 1;
-            }
-        }
-        const scientific_exponent = significand_digits - 1 + exponent;
-        if (scientific_exponent >= 34 || scientific_exponent <= -7 || exponent > 0) {
-            if (significand_digits > 34) {
-                string.push(`${0}`);
-                if (exponent > 0)
-                    string.push(`E+${exponent}`);
-                else if (exponent < 0)
-                    string.push(`E${exponent}`);
-                return string.join('');
-            }
-            string.push(`${significand[index++]}`);
-            significand_digits = significand_digits - 1;
-            if (significand_digits) {
-                string.push('.');
-            }
-            for (let i = 0; i < significand_digits; i++) {
-                string.push(`${significand[index++]}`);
-            }
-            string.push('E');
-            if (scientific_exponent > 0) {
-                string.push(`+${scientific_exponent}`);
-            }
-            else {
-                string.push(`${scientific_exponent}`);
-            }
-        }
-        else {
-            if (exponent >= 0) {
-                for (let i = 0; i < significand_digits; i++) {
-                    string.push(`${significand[index++]}`);
-                }
-            }
-            else {
-                let radix_position = significand_digits + exponent;
-                if (radix_position > 0) {
-                    for (let i = 0; i < radix_position; i++) {
-                        string.push(`${significand[index++]}`);
-                    }
-                }
-                else {
-                    string.push('0');
-                }
-                string.push('.');
-                while (radix_position++ < 0) {
-                    string.push('0');
-                }
-                for (let i = 0; i < significand_digits - Math.max(radix_position - 1, 0); i++) {
-                    string.push(`${significand[index++]}`);
-                }
-            }
-        }
-        return string.join('');
-    }
-    toJSON() {
-        return { $numberDecimal: this.toString() };
-    }
-    toExtendedJSON() {
-        return { $numberDecimal: this.toString() };
-    }
-    static fromExtendedJSON(doc) {
-        return Decimal128.fromString(doc.$numberDecimal);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const d128string = inspect(this.toString(), options);
-        return `new Decimal128(${d128string})`;
-    }
-}
-
-class Double extends BSONValue {
-    get _bsontype() {
-        return 'Double';
-    }
-    constructor(value) {
-        super();
-        if (value instanceof Number) {
-            value = value.valueOf();
-        }
-        this.value = +value;
-    }
-    valueOf() {
-        return this.value;
-    }
-    toJSON() {
-        return this.value;
-    }
-    toString(radix) {
-        return this.value.toString(radix);
-    }
-    toExtendedJSON(options) {
-        if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) {
-            return this.value;
-        }
-        if (Object.is(Math.sign(this.value), -0)) {
-            return { $numberDouble: '-0.0' };
-        }
-        return {
-            $numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString()
-        };
-    }
-    static fromExtendedJSON(doc, options) {
-        const doubleValue = parseFloat(doc.$numberDouble);
-        return options && options.relaxed ? doubleValue : new Double(doubleValue);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new Double(${inspect(this.value, options)})`;
-    }
-}
-
-class Int32 extends BSONValue {
-    get _bsontype() {
-        return 'Int32';
-    }
-    constructor(value) {
-        super();
-        if (value instanceof Number) {
-            value = value.valueOf();
-        }
-        this.value = +value | 0;
-    }
-    valueOf() {
-        return this.value;
-    }
-    toString(radix) {
-        return this.value.toString(radix);
-    }
-    toJSON() {
-        return this.value;
-    }
-    toExtendedJSON(options) {
-        if (options && (options.relaxed || options.legacy))
-            return this.value;
-        return { $numberInt: this.value.toString() };
-    }
-    static fromExtendedJSON(doc, options) {
-        return options && options.relaxed ? parseInt(doc.$numberInt, 10) : new Int32(doc.$numberInt);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new Int32(${inspect(this.value, options)})`;
-    }
-}
-
-class MaxKey extends BSONValue {
-    get _bsontype() {
-        return 'MaxKey';
-    }
-    toExtendedJSON() {
-        return { $maxKey: 1 };
-    }
-    static fromExtendedJSON() {
-        return new MaxKey();
-    }
-    inspect() {
-        return 'new MaxKey()';
-    }
-}
-
-class MinKey extends BSONValue {
-    get _bsontype() {
-        return 'MinKey';
-    }
-    toExtendedJSON() {
-        return { $minKey: 1 };
-    }
-    static fromExtendedJSON() {
-        return new MinKey();
-    }
-    inspect() {
-        return 'new MinKey()';
-    }
-}
-
-const FLOAT = new Float64Array(1);
-const FLOAT_BYTES = new Uint8Array(FLOAT.buffer, 0, 8);
-const NumberUtils = {
-    getInt32LE(source, offset) {
-        return (source[offset] |
-            (source[offset + 1] << 8) |
-            (source[offset + 2] << 16) |
-            (source[offset + 3] << 24));
-    },
-    getUint32LE(source, offset) {
-        return (source[offset] +
-            source[offset + 1] * 256 +
-            source[offset + 2] * 65536 +
-            source[offset + 3] * 16777216);
-    },
-    getUint32BE(source, offset) {
-        return (source[offset + 3] +
-            source[offset + 2] * 256 +
-            source[offset + 1] * 65536 +
-            source[offset] * 16777216);
-    },
-    getBigInt64LE(source, offset) {
-        const lo = NumberUtils.getUint32LE(source, offset);
-        const hi = NumberUtils.getUint32LE(source, offset + 4);
-        return (BigInt(hi) << BigInt(32)) + BigInt(lo);
-    },
-    getFloat64LE(source, offset) {
-        FLOAT_BYTES[0] = source[offset];
-        FLOAT_BYTES[1] = source[offset + 1];
-        FLOAT_BYTES[2] = source[offset + 2];
-        FLOAT_BYTES[3] = source[offset + 3];
-        FLOAT_BYTES[4] = source[offset + 4];
-        FLOAT_BYTES[5] = source[offset + 5];
-        FLOAT_BYTES[6] = source[offset + 6];
-        FLOAT_BYTES[7] = source[offset + 7];
-        return FLOAT[0];
-    },
-    setInt32BE(destination, offset, value) {
-        destination[offset + 3] = value;
-        value >>>= 8;
-        destination[offset + 2] = value;
-        value >>>= 8;
-        destination[offset + 1] = value;
-        value >>>= 8;
-        destination[offset] = value;
-        return 4;
-    },
-    setInt32LE(destination, offset, value) {
-        destination[offset] = value;
-        value >>>= 8;
-        destination[offset + 1] = value;
-        value >>>= 8;
-        destination[offset + 2] = value;
-        value >>>= 8;
-        destination[offset + 3] = value;
-        return 4;
-    },
-    setBigInt64LE(destination, offset, value) {
-        const mask32bits = BigInt(4294967295);
-        let lo = Number(value & mask32bits);
-        destination[offset] = lo;
-        lo >>= 8;
-        destination[offset + 1] = lo;
-        lo >>= 8;
-        destination[offset + 2] = lo;
-        lo >>= 8;
-        destination[offset + 3] = lo;
-        let hi = Number((value >> BigInt(32)) & mask32bits);
-        destination[offset + 4] = hi;
-        hi >>= 8;
-        destination[offset + 5] = hi;
-        hi >>= 8;
-        destination[offset + 6] = hi;
-        hi >>= 8;
-        destination[offset + 7] = hi;
-        return 8;
-    },
-    setFloat64LE(destination, offset, value) {
-        FLOAT[0] = value;
-        destination[offset] = FLOAT_BYTES[0];
-        destination[offset + 1] = FLOAT_BYTES[1];
-        destination[offset + 2] = FLOAT_BYTES[2];
-        destination[offset + 3] = FLOAT_BYTES[3];
-        destination[offset + 4] = FLOAT_BYTES[4];
-        destination[offset + 5] = FLOAT_BYTES[5];
-        destination[offset + 6] = FLOAT_BYTES[6];
-        destination[offset + 7] = FLOAT_BYTES[7];
-        return 8;
-    }
-};
-
-const checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$');
-let PROCESS_UNIQUE = null;
-class ObjectId extends BSONValue {
-    get _bsontype() {
-        return 'ObjectId';
-    }
-    constructor(inputId) {
-        super();
-        let workingId;
-        if (typeof inputId === 'object' && inputId && 'id' in inputId) {
-            if (typeof inputId.id !== 'string' && !ArrayBuffer.isView(inputId.id)) {
-                throw new BSONError('Argument passed in must have an id that is of type string or Buffer');
-            }
-            if ('toHexString' in inputId && typeof inputId.toHexString === 'function') {
-                workingId = ByteUtils.fromHex(inputId.toHexString());
-            }
-            else {
-                workingId = inputId.id;
-            }
-        }
-        else {
-            workingId = inputId;
-        }
-        if (workingId == null || typeof workingId === 'number') {
-            this.buffer = ObjectId.generate(typeof workingId === 'number' ? workingId : undefined);
-        }
-        else if (ArrayBuffer.isView(workingId) && workingId.byteLength === 12) {
-            this.buffer = ByteUtils.toLocalBufferType(workingId);
-        }
-        else if (typeof workingId === 'string') {
-            if (workingId.length === 24 && checkForHexRegExp.test(workingId)) {
-                this.buffer = ByteUtils.fromHex(workingId);
-            }
-            else {
-                throw new BSONError('input must be a 24 character hex string, 12 byte Uint8Array, or an integer');
-            }
-        }
-        else {
-            throw new BSONError('Argument passed in does not match the accepted types');
-        }
-        if (ObjectId.cacheHexString) {
-            this.__id = ByteUtils.toHex(this.id);
-        }
-    }
-    get id() {
-        return this.buffer;
-    }
-    set id(value) {
-        this.buffer = value;
-        if (ObjectId.cacheHexString) {
-            this.__id = ByteUtils.toHex(value);
-        }
-    }
-    toHexString() {
-        if (ObjectId.cacheHexString && this.__id) {
-            return this.__id;
-        }
-        const hexString = ByteUtils.toHex(this.id);
-        if (ObjectId.cacheHexString && !this.__id) {
-            this.__id = hexString;
-        }
-        return hexString;
-    }
-    static getInc() {
-        return (ObjectId.index = (ObjectId.index + 1) % 0xffffff);
-    }
-    static generate(time) {
-        if ('number' !== typeof time) {
-            time = Math.floor(Date.now() / 1000);
-        }
-        const inc = ObjectId.getInc();
-        const buffer = ByteUtils.allocateUnsafe(12);
-        NumberUtils.setInt32BE(buffer, 0, time);
-        if (PROCESS_UNIQUE === null) {
-            PROCESS_UNIQUE = ByteUtils.randomBytes(5);
-        }
-        buffer[4] = PROCESS_UNIQUE[0];
-        buffer[5] = PROCESS_UNIQUE[1];
-        buffer[6] = PROCESS_UNIQUE[2];
-        buffer[7] = PROCESS_UNIQUE[3];
-        buffer[8] = PROCESS_UNIQUE[4];
-        buffer[11] = inc & 0xff;
-        buffer[10] = (inc >> 8) & 0xff;
-        buffer[9] = (inc >> 16) & 0xff;
-        return buffer;
-    }
-    toString(encoding) {
-        if (encoding === 'base64')
-            return ByteUtils.toBase64(this.id);
-        if (encoding === 'hex')
-            return this.toHexString();
-        return this.toHexString();
-    }
-    toJSON() {
-        return this.toHexString();
-    }
-    static is(variable) {
-        return (variable != null &&
-            typeof variable === 'object' &&
-            '_bsontype' in variable &&
-            variable._bsontype === 'ObjectId');
-    }
-    equals(otherId) {
-        if (otherId === undefined || otherId === null) {
-            return false;
-        }
-        if (ObjectId.is(otherId)) {
-            return (this.buffer[11] === otherId.buffer[11] && ByteUtils.equals(this.buffer, otherId.buffer));
-        }
-        if (typeof otherId === 'string') {
-            return otherId.toLowerCase() === this.toHexString();
-        }
-        if (typeof otherId === 'object' && typeof otherId.toHexString === 'function') {
-            const otherIdString = otherId.toHexString();
-            const thisIdString = this.toHexString();
-            return typeof otherIdString === 'string' && otherIdString.toLowerCase() === thisIdString;
-        }
-        return false;
-    }
-    getTimestamp() {
-        const timestamp = new Date();
-        const time = NumberUtils.getUint32BE(this.buffer, 0);
-        timestamp.setTime(Math.floor(time) * 1000);
-        return timestamp;
-    }
-    static createPk() {
-        return new ObjectId();
-    }
-    serializeInto(uint8array, index) {
-        uint8array[index] = this.buffer[0];
-        uint8array[index + 1] = this.buffer[1];
-        uint8array[index + 2] = this.buffer[2];
-        uint8array[index + 3] = this.buffer[3];
-        uint8array[index + 4] = this.buffer[4];
-        uint8array[index + 5] = this.buffer[5];
-        uint8array[index + 6] = this.buffer[6];
-        uint8array[index + 7] = this.buffer[7];
-        uint8array[index + 8] = this.buffer[8];
-        uint8array[index + 9] = this.buffer[9];
-        uint8array[index + 10] = this.buffer[10];
-        uint8array[index + 11] = this.buffer[11];
-        return 12;
-    }
-    static createFromTime(time) {
-        const buffer = ByteUtils.allocate(12);
-        for (let i = 11; i >= 4; i--)
-            buffer[i] = 0;
-        NumberUtils.setInt32BE(buffer, 0, time);
-        return new ObjectId(buffer);
-    }
-    static createFromHexString(hexString) {
-        if (hexString?.length !== 24) {
-            throw new BSONError('hex string must be 24 characters');
-        }
-        return new ObjectId(ByteUtils.fromHex(hexString));
-    }
-    static createFromBase64(base64) {
-        if (base64?.length !== 16) {
-            throw new BSONError('base64 string must be 16 characters');
-        }
-        return new ObjectId(ByteUtils.fromBase64(base64));
-    }
-    static isValid(id) {
-        if (id == null)
-            return false;
-        try {
-            new ObjectId(id);
-            return true;
-        }
-        catch {
-            return false;
-        }
-    }
-    toExtendedJSON() {
-        if (this.toHexString)
-            return { $oid: this.toHexString() };
-        return { $oid: this.toString('hex') };
-    }
-    static fromExtendedJSON(doc) {
-        return new ObjectId(doc.$oid);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new ObjectId(${inspect(this.toHexString(), options)})`;
-    }
-}
-ObjectId.index = Math.floor(Math.random() * 0xffffff);
-
-function internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined) {
-    let totalLength = 4 + 1;
-    if (Array.isArray(object)) {
-        for (let i = 0; i < object.length; i++) {
-            totalLength += calculateElement(i.toString(), object[i], serializeFunctions, true, ignoreUndefined);
-        }
-    }
-    else {
-        if (typeof object?.toBSON === 'function') {
-            object = object.toBSON();
-        }
-        for (const key of Object.keys(object)) {
-            totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined);
-        }
-    }
-    return totalLength;
-}
-function calculateElement(name, value, serializeFunctions = false, isArray = false, ignoreUndefined = false) {
-    if (typeof value?.toBSON === 'function') {
-        value = value.toBSON();
-    }
-    switch (typeof value) {
-        case 'string':
-            return 1 + ByteUtils.utf8ByteLength(name) + 1 + 4 + ByteUtils.utf8ByteLength(value) + 1;
-        case 'number':
-            if (Math.floor(value) === value &&
-                value >= JS_INT_MIN &&
-                value <= JS_INT_MAX) {
-                if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
-                    return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (4 + 1);
-                }
-                else {
-                    return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-                }
-            }
-            else {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-            }
-        case 'undefined':
-            if (isArray || !ignoreUndefined)
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
-            return 0;
-        case 'boolean':
-            return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 1);
-        case 'object':
-            if (value != null &&
-                typeof value._bsontype === 'string' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value == null || value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
-            }
-            else if (value._bsontype === 'ObjectId') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (12 + 1);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-            }
-            else if (ArrayBuffer.isView(value) ||
-                value instanceof ArrayBuffer ||
-                isAnyArrayBuffer(value)) {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 4 + 1) + value.byteLength);
-            }
-            else if (value._bsontype === 'Long' ||
-                value._bsontype === 'Double' ||
-                value._bsontype === 'Timestamp') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-            }
-            else if (value._bsontype === 'Decimal128') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (16 + 1);
-            }
-            else if (value._bsontype === 'Code') {
-                if (value.scope != null && Object.keys(value.scope).length > 0) {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                        1 +
-                        4 +
-                        4 +
-                        ByteUtils.utf8ByteLength(value.code.toString()) +
-                        1 +
-                        internalCalculateObjectSize(value.scope, serializeFunctions, ignoreUndefined));
-                }
-                else {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                        1 +
-                        4 +
-                        ByteUtils.utf8ByteLength(value.code.toString()) +
-                        1);
-                }
-            }
-            else if (value._bsontype === 'Binary') {
-                const binary = value;
-                if (binary.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                        (binary.position + 1 + 4 + 1 + 4));
-                }
-                else {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (binary.position + 1 + 4 + 1));
-                }
-            }
-            else if (value._bsontype === 'Symbol') {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    ByteUtils.utf8ByteLength(value.value) +
-                    4 +
-                    1 +
-                    1);
-            }
-            else if (value._bsontype === 'DBRef') {
-                const ordered_values = Object.assign({
-                    $ref: value.collection,
-                    $id: value.oid
-                }, value.fields);
-                if (value.db != null) {
-                    ordered_values['$db'] = value.db;
-                }
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    internalCalculateObjectSize(ordered_values, serializeFunctions, ignoreUndefined));
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    ByteUtils.utf8ByteLength(value.source) +
-                    1 +
-                    (value.global ? 1 : 0) +
-                    (value.ignoreCase ? 1 : 0) +
-                    (value.multiline ? 1 : 0) +
-                    1);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    ByteUtils.utf8ByteLength(value.pattern) +
-                    1 +
-                    ByteUtils.utf8ByteLength(value.options) +
-                    1);
-            }
-            else {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    internalCalculateObjectSize(value, serializeFunctions, ignoreUndefined) +
-                    1);
-            }
-        case 'function':
-            if (serializeFunctions) {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    4 +
-                    ByteUtils.utf8ByteLength(value.toString()) +
-                    1);
-            }
-    }
-    return 0;
-}
-
-function alphabetize(str) {
-    return str.split('').sort().join('');
-}
-class BSONRegExp extends BSONValue {
-    get _bsontype() {
-        return 'BSONRegExp';
-    }
-    constructor(pattern, options) {
-        super();
-        this.pattern = pattern;
-        this.options = alphabetize(options ?? '');
-        if (this.pattern.indexOf('\x00') !== -1) {
-            throw new BSONError(`BSON Regex patterns cannot contain null bytes, found: ${JSON.stringify(this.pattern)}`);
-        }
-        if (this.options.indexOf('\x00') !== -1) {
-            throw new BSONError(`BSON Regex options cannot contain null bytes, found: ${JSON.stringify(this.options)}`);
-        }
-        for (let i = 0; i < this.options.length; i++) {
-            if (!(this.options[i] === 'i' ||
-                this.options[i] === 'm' ||
-                this.options[i] === 'x' ||
-                this.options[i] === 'l' ||
-                this.options[i] === 's' ||
-                this.options[i] === 'u')) {
-                throw new BSONError(`The regular expression option [${this.options[i]}] is not supported`);
-            }
-        }
-    }
-    static parseOptions(options) {
-        return options ? options.split('').sort().join('') : '';
-    }
-    toExtendedJSON(options) {
-        options = options || {};
-        if (options.legacy) {
-            return { $regex: this.pattern, $options: this.options };
-        }
-        return { $regularExpression: { pattern: this.pattern, options: this.options } };
-    }
-    static fromExtendedJSON(doc) {
-        if ('$regex' in doc) {
-            if (typeof doc.$regex !== 'string') {
-                if (doc.$regex._bsontype === 'BSONRegExp') {
-                    return doc;
-                }
-            }
-            else {
-                return new BSONRegExp(doc.$regex, BSONRegExp.parseOptions(doc.$options));
-            }
-        }
-        if ('$regularExpression' in doc) {
-            return new BSONRegExp(doc.$regularExpression.pattern, BSONRegExp.parseOptions(doc.$regularExpression.options));
-        }
-        throw new BSONError(`Unexpected BSONRegExp EJSON object form: ${JSON.stringify(doc)}`);
-    }
-    inspect(depth, options, inspect) {
-        const stylize = getStylizeFunction(options) ?? (v => v);
-        inspect ??= defaultInspect;
-        const pattern = stylize(inspect(this.pattern), 'regexp');
-        const flags = stylize(inspect(this.options), 'regexp');
-        return `new BSONRegExp(${pattern}, ${flags})`;
-    }
-}
-
-class BSONSymbol extends BSONValue {
-    get _bsontype() {
-        return 'BSONSymbol';
-    }
-    constructor(value) {
-        super();
-        this.value = value;
-    }
-    valueOf() {
-        return this.value;
-    }
-    toString() {
-        return this.value;
-    }
-    toJSON() {
-        return this.value;
-    }
-    toExtendedJSON() {
-        return { $symbol: this.value };
-    }
-    static fromExtendedJSON(doc) {
-        return new BSONSymbol(doc.$symbol);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new BSONSymbol(${inspect(this.value, options)})`;
-    }
-}
-
-const LongWithoutOverridesClass = Long;
-class Timestamp extends LongWithoutOverridesClass {
-    get _bsontype() {
-        return 'Timestamp';
-    }
-    constructor(low) {
-        if (low == null) {
-            super(0, 0, true);
-        }
-        else if (typeof low === 'bigint') {
-            super(low, true);
-        }
-        else if (Long.isLong(low)) {
-            super(low.low, low.high, true);
-        }
-        else if (typeof low === 'object' && 't' in low && 'i' in low) {
-            if (typeof low.t !== 'number' && (typeof low.t !== 'object' || low.t._bsontype !== 'Int32')) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide t as a number');
-            }
-            if (typeof low.i !== 'number' && (typeof low.i !== 'object' || low.i._bsontype !== 'Int32')) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide i as a number');
-            }
-            const t = Number(low.t);
-            const i = Number(low.i);
-            if (t < 0 || Number.isNaN(t)) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide a positive t');
-            }
-            if (i < 0 || Number.isNaN(i)) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide a positive i');
-            }
-            if (t > 4294967295) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide t equal or less than uint32 max');
-            }
-            if (i > 4294967295) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide i equal or less than uint32 max');
-            }
-            super(i, t, true);
-        }
-        else {
-            throw new BSONError('A Timestamp can only be constructed with: bigint, Long, or { t: number; i: number }');
-        }
-    }
-    toJSON() {
-        return {
-            $timestamp: this.toString()
-        };
-    }
-    static fromInt(value) {
-        return new Timestamp(Long.fromInt(value, true));
-    }
-    static fromNumber(value) {
-        return new Timestamp(Long.fromNumber(value, true));
-    }
-    static fromBits(lowBits, highBits) {
-        return new Timestamp({ i: lowBits, t: highBits });
-    }
-    static fromString(str, optRadix) {
-        return new Timestamp(Long.fromString(str, true, optRadix));
-    }
-    toExtendedJSON() {
-        return { $timestamp: { t: this.high >>> 0, i: this.low >>> 0 } };
-    }
-    static fromExtendedJSON(doc) {
-        const i = Long.isLong(doc.$timestamp.i)
-            ? doc.$timestamp.i.getLowBitsUnsigned()
-            : doc.$timestamp.i;
-        const t = Long.isLong(doc.$timestamp.t)
-            ? doc.$timestamp.t.getLowBitsUnsigned()
-            : doc.$timestamp.t;
-        return new Timestamp({ t, i });
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const t = inspect(this.high >>> 0, options);
-        const i = inspect(this.low >>> 0, options);
-        return `new Timestamp({ t: ${t}, i: ${i} })`;
-    }
-}
-Timestamp.MAX_VALUE = Long.MAX_UNSIGNED_VALUE;
-
-const JS_INT_MAX_LONG = Long.fromNumber(JS_INT_MAX);
-const JS_INT_MIN_LONG = Long.fromNumber(JS_INT_MIN);
-function internalDeserialize(buffer, options, isArray) {
-    options = options == null ? {} : options;
-    const index = options && options.index ? options.index : 0;
-    const size = NumberUtils.getInt32LE(buffer, index);
-    if (size < 5) {
-        throw new BSONError(`bson size must be >= 5, is ${size}`);
-    }
-    if (options.allowObjectSmallerThanBufferSize && buffer.length < size) {
-        throw new BSONError(`buffer length ${buffer.length} must be >= bson size ${size}`);
-    }
-    if (!options.allowObjectSmallerThanBufferSize && buffer.length !== size) {
-        throw new BSONError(`buffer length ${buffer.length} must === bson size ${size}`);
-    }
-    if (size + index > buffer.byteLength) {
-        throw new BSONError(`(bson size ${size} + options.index ${index} must be <= buffer length ${buffer.byteLength})`);
-    }
-    if (buffer[index + size - 1] !== 0) {
-        throw new BSONError("One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00");
-    }
-    return deserializeObject(buffer, index, options, isArray);
-}
-const allowedDBRefKeys = /^\$ref$|^\$id$|^\$db$/;
-function deserializeObject(buffer, index, options, isArray = false) {
-    const fieldsAsRaw = options['fieldsAsRaw'] == null ? null : options['fieldsAsRaw'];
-    const raw = options['raw'] == null ? false : options['raw'];
-    const bsonRegExp = typeof options['bsonRegExp'] === 'boolean' ? options['bsonRegExp'] : false;
-    const promoteBuffers = options.promoteBuffers ?? false;
-    const promoteLongs = options.promoteLongs ?? true;
-    const promoteValues = options.promoteValues ?? true;
-    const useBigInt64 = options.useBigInt64 ?? false;
-    if (useBigInt64 && !promoteValues) {
-        throw new BSONError('Must either request bigint or Long for int64 deserialization');
-    }
-    if (useBigInt64 && !promoteLongs) {
-        throw new BSONError('Must either request bigint or Long for int64 deserialization');
-    }
-    const validation = options.validation == null ? { utf8: true } : options.validation;
-    let globalUTFValidation = true;
-    let validationSetting;
-    let utf8KeysSet;
-    const utf8ValidatedKeys = validation.utf8;
-    if (typeof utf8ValidatedKeys === 'boolean') {
-        validationSetting = utf8ValidatedKeys;
-    }
-    else {
-        globalUTFValidation = false;
-        const utf8ValidationValues = Object.keys(utf8ValidatedKeys).map(function (key) {
-            return utf8ValidatedKeys[key];
-        });
-        if (utf8ValidationValues.length === 0) {
-            throw new BSONError('UTF-8 validation setting cannot be empty');
-        }
-        if (typeof utf8ValidationValues[0] !== 'boolean') {
-            throw new BSONError('Invalid UTF-8 validation option, must specify boolean values');
-        }
-        validationSetting = utf8ValidationValues[0];
-        if (!utf8ValidationValues.every(item => item === validationSetting)) {
-            throw new BSONError('Invalid UTF-8 validation option - keys must be all true or all false');
-        }
-    }
-    if (!globalUTFValidation) {
-        utf8KeysSet = new Set();
-        for (const key of Object.keys(utf8ValidatedKeys)) {
-            utf8KeysSet.add(key);
-        }
-    }
-    const startIndex = index;
-    if (buffer.length < 5)
-        throw new BSONError('corrupt bson message < 5 bytes long');
-    const size = NumberUtils.getInt32LE(buffer, index);
-    index += 4;
-    if (size < 5 || size > buffer.length)
-        throw new BSONError('corrupt bson message');
-    const object = isArray ? [] : {};
-    let arrayIndex = 0;
-    const done = false;
-    let isPossibleDBRef = isArray ? false : null;
-    while (!done) {
-        const elementType = buffer[index++];
-        if (elementType === 0)
-            break;
-        let i = index;
-        while (buffer[i] !== 0x00 && i < buffer.length) {
-            i++;
-        }
-        if (i >= buffer.byteLength)
-            throw new BSONError('Bad BSON Document: illegal CString');
-        const name = isArray ? arrayIndex++ : ByteUtils.toUTF8(buffer, index, i, false);
-        let shouldValidateKey = true;
-        if (globalUTFValidation || utf8KeysSet?.has(name)) {
-            shouldValidateKey = validationSetting;
-        }
-        else {
-            shouldValidateKey = !validationSetting;
-        }
-        if (isPossibleDBRef !== false && name[0] === '$') {
-            isPossibleDBRef = allowedDBRefKeys.test(name);
-        }
-        let value;
-        index = i + 1;
-        if (elementType === BSON_DATA_STRING) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            value = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            index = index + stringSize;
-        }
-        else if (elementType === BSON_DATA_OID) {
-            const oid = ByteUtils.allocateUnsafe(12);
-            for (let i = 0; i < 12; i++)
-                oid[i] = buffer[index + i];
-            value = new ObjectId(oid);
-            index = index + 12;
-        }
-        else if (elementType === BSON_DATA_INT && promoteValues === false) {
-            value = new Int32(NumberUtils.getInt32LE(buffer, index));
-            index += 4;
-        }
-        else if (elementType === BSON_DATA_INT) {
-            value = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-        }
-        else if (elementType === BSON_DATA_NUMBER) {
-            value = NumberUtils.getFloat64LE(buffer, index);
-            index += 8;
-            if (promoteValues === false)
-                value = new Double(value);
-        }
-        else if (elementType === BSON_DATA_DATE) {
-            const lowBits = NumberUtils.getInt32LE(buffer, index);
-            const highBits = NumberUtils.getInt32LE(buffer, index + 4);
-            index += 8;
-            value = new Date(new Long(lowBits, highBits).toNumber());
-        }
-        else if (elementType === BSON_DATA_BOOLEAN) {
-            if (buffer[index] !== 0 && buffer[index] !== 1)
-                throw new BSONError('illegal boolean type value');
-            value = buffer[index++] === 1;
-        }
-        else if (elementType === BSON_DATA_OBJECT) {
-            const _index = index;
-            const objectSize = NumberUtils.getInt32LE(buffer, index);
-            if (objectSize <= 0 || objectSize > buffer.length - index)
-                throw new BSONError('bad embedded document length in bson');
-            if (raw) {
-                value = buffer.slice(index, index + objectSize);
-            }
-            else {
-                let objectOptions = options;
-                if (!globalUTFValidation) {
-                    objectOptions = { ...options, validation: { utf8: shouldValidateKey } };
-                }
-                value = deserializeObject(buffer, _index, objectOptions, false);
-            }
-            index = index + objectSize;
-        }
-        else if (elementType === BSON_DATA_ARRAY) {
-            const _index = index;
-            const objectSize = NumberUtils.getInt32LE(buffer, index);
-            let arrayOptions = options;
-            const stopIndex = index + objectSize;
-            if (fieldsAsRaw && fieldsAsRaw[name]) {
-                arrayOptions = { ...options, raw: true };
-            }
-            if (!globalUTFValidation) {
-                arrayOptions = { ...arrayOptions, validation: { utf8: shouldValidateKey } };
-            }
-            value = deserializeObject(buffer, _index, arrayOptions, true);
-            index = index + objectSize;
-            if (buffer[index - 1] !== 0)
-                throw new BSONError('invalid array terminator byte');
-            if (index !== stopIndex)
-                throw new BSONError('corrupted array bson');
-        }
-        else if (elementType === BSON_DATA_UNDEFINED) {
-            value = undefined;
-        }
-        else if (elementType === BSON_DATA_NULL) {
-            value = null;
-        }
-        else if (elementType === BSON_DATA_LONG) {
-            if (useBigInt64) {
-                value = NumberUtils.getBigInt64LE(buffer, index);
-                index += 8;
-            }
-            else {
-                const lowBits = NumberUtils.getInt32LE(buffer, index);
-                const highBits = NumberUtils.getInt32LE(buffer, index + 4);
-                index += 8;
-                const long = new Long(lowBits, highBits);
-                if (promoteLongs && promoteValues === true) {
-                    value =
-                        long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG)
-                            ? long.toNumber()
-                            : long;
-                }
-                else {
-                    value = long;
-                }
-            }
-        }
-        else if (elementType === BSON_DATA_DECIMAL128) {
-            const bytes = ByteUtils.allocateUnsafe(16);
-            for (let i = 0; i < 16; i++)
-                bytes[i] = buffer[index + i];
-            index = index + 16;
-            value = new Decimal128(bytes);
-        }
-        else if (elementType === BSON_DATA_BINARY) {
-            let binarySize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            const totalBinarySize = binarySize;
-            const subType = buffer[index++];
-            if (binarySize < 0)
-                throw new BSONError('Negative binary type element size found');
-            if (binarySize > buffer.byteLength)
-                throw new BSONError('Binary type size larger than document size');
-            if (buffer['slice'] != null) {
-                if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
-                    binarySize = NumberUtils.getInt32LE(buffer, index);
-                    index += 4;
-                    if (binarySize < 0)
-                        throw new BSONError('Negative binary type element size found for subtype 0x02');
-                    if (binarySize > totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
-                    if (binarySize < totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
-                }
-                if (promoteBuffers && promoteValues) {
-                    value = ByteUtils.toLocalBufferType(buffer.slice(index, index + binarySize));
-                }
-                else {
-                    value = new Binary(buffer.slice(index, index + binarySize), subType);
-                    if (subType === BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
-                        value = value.toUUID();
-                    }
-                }
-            }
-            else {
-                if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
-                    binarySize = NumberUtils.getInt32LE(buffer, index);
-                    index += 4;
-                    if (binarySize < 0)
-                        throw new BSONError('Negative binary type element size found for subtype 0x02');
-                    if (binarySize > totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
-                    if (binarySize < totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
-                }
-                if (promoteBuffers && promoteValues) {
-                    value = ByteUtils.allocateUnsafe(binarySize);
-                    for (i = 0; i < binarySize; i++) {
-                        value[i] = buffer[index + i];
-                    }
-                }
-                else {
-                    value = new Binary(buffer.slice(index, index + binarySize), subType);
-                    if (subType === BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
-                        value = value.toUUID();
-                    }
-                }
-            }
-            index = index + binarySize;
-        }
-        else if (elementType === BSON_DATA_REGEXP && bsonRegExp === false) {
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const source = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            const optionsArray = new Array(regExpOptions.length);
-            for (i = 0; i < regExpOptions.length; i++) {
-                switch (regExpOptions[i]) {
-                    case 'm':
-                        optionsArray[i] = 'm';
-                        break;
-                    case 's':
-                        optionsArray[i] = 'g';
-                        break;
-                    case 'i':
-                        optionsArray[i] = 'i';
-                        break;
-                }
-            }
-            value = new RegExp(source, optionsArray.join(''));
-        }
-        else if (elementType === BSON_DATA_REGEXP && bsonRegExp === true) {
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const source = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            value = new BSONRegExp(source, regExpOptions);
-        }
-        else if (elementType === BSON_DATA_SYMBOL) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            const symbol = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            value = promoteValues ? symbol : new BSONSymbol(symbol);
-            index = index + stringSize;
-        }
-        else if (elementType === BSON_DATA_TIMESTAMP) {
-            value = new Timestamp({
-                i: NumberUtils.getUint32LE(buffer, index),
-                t: NumberUtils.getUint32LE(buffer, index + 4)
-            });
-            index += 8;
-        }
-        else if (elementType === BSON_DATA_MIN_KEY) {
-            value = new MinKey();
-        }
-        else if (elementType === BSON_DATA_MAX_KEY) {
-            value = new MaxKey();
-        }
-        else if (elementType === BSON_DATA_CODE) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            const functionString = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            value = new Code(functionString);
-            index = index + stringSize;
-        }
-        else if (elementType === BSON_DATA_CODE_W_SCOPE) {
-            const totalSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (totalSize < 4 + 4 + 4 + 1) {
-                throw new BSONError('code_w_scope total size shorter minimum expected length');
-            }
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            const functionString = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            index = index + stringSize;
-            const _index = index;
-            const objectSize = NumberUtils.getInt32LE(buffer, index);
-            const scopeObject = deserializeObject(buffer, _index, options, false);
-            index = index + objectSize;
-            if (totalSize < 4 + 4 + objectSize + stringSize) {
-                throw new BSONError('code_w_scope total size is too short, truncating scope');
-            }
-            if (totalSize > 4 + 4 + objectSize + stringSize) {
-                throw new BSONError('code_w_scope total size is too long, clips outer document');
-            }
-            value = new Code(functionString, scopeObject);
-        }
-        else if (elementType === BSON_DATA_DBPOINTER) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0)
-                throw new BSONError('bad string length in bson');
-            if (validation != null && validation.utf8) {
-                if (!validateUtf8(buffer, index, index + stringSize - 1)) {
-                    throw new BSONError('Invalid UTF-8 string in BSON document');
-                }
-            }
-            const namespace = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, false);
-            index = index + stringSize;
-            const oidBuffer = ByteUtils.allocateUnsafe(12);
-            for (let i = 0; i < 12; i++)
-                oidBuffer[i] = buffer[index + i];
-            const oid = new ObjectId(oidBuffer);
-            index = index + 12;
-            value = new DBRef(namespace, oid);
-        }
-        else {
-            throw new BSONError(`Detected unknown BSON type ${elementType.toString(16)} for fieldname "${name}"`);
-        }
-        if (name === '__proto__') {
-            Object.defineProperty(object, name, {
-                value,
-                writable: true,
-                enumerable: true,
-                configurable: true
-            });
-        }
-        else {
-            object[name] = value;
-        }
-    }
-    if (size !== index - startIndex) {
-        if (isArray)
-            throw new BSONError('corrupt array bson');
-        throw new BSONError('corrupt object bson');
-    }
-    if (!isPossibleDBRef)
-        return object;
-    if (isDBRefLike(object)) {
-        const copy = Object.assign({}, object);
-        delete copy.$ref;
-        delete copy.$id;
-        delete copy.$db;
-        return new DBRef(object.$ref, object.$id, object.$db, copy);
-    }
-    return object;
-}
-
-const regexp = /\x00/;
-const ignoreKeys = new Set(['$db', '$ref', '$id', '$clusterTime']);
-function serializeString(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_STRING;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes + 1;
-    buffer[index - 1] = 0;
-    const size = ByteUtils.encodeUTF8Into(buffer, value, index + 4);
-    NumberUtils.setInt32LE(buffer, index, size + 1);
-    index = index + 4 + size;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeNumber(buffer, key, value, index) {
-    const isNegativeZero = Object.is(value, -0);
-    const type = !isNegativeZero &&
-        Number.isSafeInteger(value) &&
-        value <= BSON_INT32_MAX &&
-        value >= BSON_INT32_MIN
-        ? BSON_DATA_INT
-        : BSON_DATA_NUMBER;
-    buffer[index++] = type;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0x00;
-    if (type === BSON_DATA_INT) {
-        index += NumberUtils.setInt32LE(buffer, index, value);
-    }
-    else {
-        index += NumberUtils.setFloat64LE(buffer, index, value);
-    }
-    return index;
-}
-function serializeBigInt(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_LONG;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index += numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += NumberUtils.setBigInt64LE(buffer, index, value);
-    return index;
-}
-function serializeNull(buffer, key, _, index) {
-    buffer[index++] = BSON_DATA_NULL;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeBoolean(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_BOOLEAN;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    buffer[index++] = value ? 1 : 0;
-    return index;
-}
-function serializeDate(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_DATE;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const dateInMilis = Long.fromNumber(value.getTime());
-    const lowBits = dateInMilis.getLowBits();
-    const highBits = dateInMilis.getHighBits();
-    index += NumberUtils.setInt32LE(buffer, index, lowBits);
-    index += NumberUtils.setInt32LE(buffer, index, highBits);
-    return index;
-}
-function serializeRegExp(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_REGEXP;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    if (value.source && value.source.match(regexp) != null) {
-        throw new BSONError('value ' + value.source + ' must not contain null bytes');
-    }
-    index = index + ByteUtils.encodeUTF8Into(buffer, value.source, index);
-    buffer[index++] = 0x00;
-    if (value.ignoreCase)
-        buffer[index++] = 0x69;
-    if (value.global)
-        buffer[index++] = 0x73;
-    if (value.multiline)
-        buffer[index++] = 0x6d;
-    buffer[index++] = 0x00;
-    return index;
-}
-function serializeBSONRegExp(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_REGEXP;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    if (value.pattern.match(regexp) != null) {
-        throw new BSONError('pattern ' + value.pattern + ' must not contain null bytes');
-    }
-    index = index + ByteUtils.encodeUTF8Into(buffer, value.pattern, index);
-    buffer[index++] = 0x00;
-    const sortedOptions = value.options.split('').sort().join('');
-    index = index + ByteUtils.encodeUTF8Into(buffer, sortedOptions, index);
-    buffer[index++] = 0x00;
-    return index;
-}
-function serializeMinMax(buffer, key, value, index) {
-    if (value === null) {
-        buffer[index++] = BSON_DATA_NULL;
-    }
-    else if (value._bsontype === 'MinKey') {
-        buffer[index++] = BSON_DATA_MIN_KEY;
-    }
-    else {
-        buffer[index++] = BSON_DATA_MAX_KEY;
-    }
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeObjectId(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_OID;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += value.serializeInto(buffer, index);
-    return index;
-}
-function serializeBuffer(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_BINARY;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const size = value.length;
-    index += NumberUtils.setInt32LE(buffer, index, size);
-    buffer[index++] = BSON_BINARY_SUBTYPE_DEFAULT;
-    if (size <= 16) {
-        for (let i = 0; i < size; i++)
-            buffer[index + i] = value[i];
-    }
-    else {
-        buffer.set(value, index);
-    }
-    index = index + size;
-    return index;
-}
-function serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path) {
-    if (path.has(value)) {
-        throw new BSONError('Cannot convert circular structure to BSON');
-    }
-    path.add(value);
-    buffer[index++] = Array.isArray(value) ? BSON_DATA_ARRAY : BSON_DATA_OBJECT;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const endIndex = serializeInto(buffer, value, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path);
-    path.delete(value);
-    return endIndex;
-}
-function serializeDecimal128(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_DECIMAL128;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    for (let i = 0; i < 16; i++)
-        buffer[index + i] = value.bytes[i];
-    return index + 16;
-}
-function serializeLong(buffer, key, value, index) {
-    buffer[index++] =
-        value._bsontype === 'Long' ? BSON_DATA_LONG : BSON_DATA_TIMESTAMP;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const lowBits = value.getLowBits();
-    const highBits = value.getHighBits();
-    index += NumberUtils.setInt32LE(buffer, index, lowBits);
-    index += NumberUtils.setInt32LE(buffer, index, highBits);
-    return index;
-}
-function serializeInt32(buffer, key, value, index) {
-    value = value.valueOf();
-    buffer[index++] = BSON_DATA_INT;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += NumberUtils.setInt32LE(buffer, index, value);
-    return index;
-}
-function serializeDouble(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_NUMBER;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += NumberUtils.setFloat64LE(buffer, index, value.value);
-    return index;
-}
-function serializeFunction(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_CODE;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const functionString = value.toString();
-    const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-    NumberUtils.setInt32LE(buffer, index, size);
-    index = index + 4 + size - 1;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeCode(buffer, key, value, index, checkKeys = false, depth = 0, serializeFunctions = false, ignoreUndefined = true, path) {
-    if (value.scope && typeof value.scope === 'object') {
-        buffer[index++] = BSON_DATA_CODE_W_SCOPE;
-        const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-        index = index + numberOfWrittenBytes;
-        buffer[index++] = 0;
-        let startIndex = index;
-        const functionString = value.code;
-        index = index + 4;
-        const codeSize = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-        NumberUtils.setInt32LE(buffer, index, codeSize);
-        buffer[index + 4 + codeSize - 1] = 0;
-        index = index + codeSize + 4;
-        const endIndex = serializeInto(buffer, value.scope, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path);
-        index = endIndex - 1;
-        const totalSize = endIndex - startIndex;
-        startIndex += NumberUtils.setInt32LE(buffer, startIndex, totalSize);
-        buffer[index++] = 0;
-    }
-    else {
-        buffer[index++] = BSON_DATA_CODE;
-        const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-        index = index + numberOfWrittenBytes;
-        buffer[index++] = 0;
-        const functionString = value.code.toString();
-        const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-        NumberUtils.setInt32LE(buffer, index, size);
-        index = index + 4 + size - 1;
-        buffer[index++] = 0;
-    }
-    return index;
-}
-function serializeBinary(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_BINARY;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const data = value.buffer;
-    let size = value.position;
-    if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY)
-        size = size + 4;
-    index += NumberUtils.setInt32LE(buffer, index, size);
-    buffer[index++] = value.sub_type;
-    if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
-        size = size - 4;
-        index += NumberUtils.setInt32LE(buffer, index, size);
-    }
-    if (size <= 16) {
-        for (let i = 0; i < size; i++)
-            buffer[index + i] = data[i];
-    }
-    else {
-        buffer.set(data, index);
-    }
-    index = index + value.position;
-    return index;
-}
-function serializeSymbol(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_SYMBOL;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const size = ByteUtils.encodeUTF8Into(buffer, value.value, index + 4) + 1;
-    NumberUtils.setInt32LE(buffer, index, size);
-    index = index + 4 + size - 1;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path) {
-    buffer[index++] = BSON_DATA_OBJECT;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    let startIndex = index;
-    let output = {
-        $ref: value.collection || value.namespace,
-        $id: value.oid
-    };
-    if (value.db != null) {
-        output.$db = value.db;
-    }
-    output = Object.assign(output, value.fields);
-    const endIndex = serializeInto(buffer, output, false, index, depth + 1, serializeFunctions, true, path);
-    const size = endIndex - startIndex;
-    startIndex += NumberUtils.setInt32LE(buffer, index, size);
-    return endIndex;
-}
-function serializeInto(buffer, object, checkKeys, startingIndex, depth, serializeFunctions, ignoreUndefined, path) {
-    if (path == null) {
-        if (object == null) {
-            buffer[0] = 0x05;
-            buffer[1] = 0x00;
-            buffer[2] = 0x00;
-            buffer[3] = 0x00;
-            buffer[4] = 0x00;
-            return 5;
-        }
-        if (Array.isArray(object)) {
-            throw new BSONError('serialize does not support an array as the root input');
-        }
-        if (typeof object !== 'object') {
-            throw new BSONError('serialize does not support non-object as the root input');
-        }
-        else if ('_bsontype' in object && typeof object._bsontype === 'string') {
-            throw new BSONError(`BSON types cannot be serialized as a document`);
-        }
-        else if (isDate(object) ||
-            isRegExp(object) ||
-            isUint8Array(object) ||
-            isAnyArrayBuffer(object)) {
-            throw new BSONError(`date, regexp, typedarray, and arraybuffer cannot be BSON documents`);
-        }
-        path = new Set();
-    }
-    path.add(object);
-    let index = startingIndex + 4;
-    if (Array.isArray(object)) {
-        for (let i = 0; i < object.length; i++) {
-            const key = `${i}`;
-            let value = object[i];
-            if (typeof value?.toBSON === 'function') {
-                value = value.toBSON();
-            }
-            if (typeof value === 'string') {
-                index = serializeString(buffer, key, value, index);
-            }
-            else if (typeof value === 'number') {
-                index = serializeNumber(buffer, key, value, index);
-            }
-            else if (typeof value === 'bigint') {
-                index = serializeBigInt(buffer, key, value, index);
-            }
-            else if (typeof value === 'boolean') {
-                index = serializeBoolean(buffer, key, value, index);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                index = serializeDate(buffer, key, value, index);
-            }
-            else if (value === undefined) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (value === null) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (isUint8Array(value)) {
-                index = serializeBuffer(buffer, key, value, index);
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                index = serializeRegExp(buffer, key, value, index);
-            }
-            else if (typeof value === 'object' && value._bsontype == null) {
-                index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'object' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value._bsontype === 'ObjectId') {
-                index = serializeObjectId(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Decimal128') {
-                index = serializeDecimal128(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-                index = serializeLong(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Double') {
-                index = serializeDouble(buffer, key, value, index);
-            }
-            else if (typeof value === 'function' && serializeFunctions) {
-                index = serializeFunction(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Code') {
-                index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (value._bsontype === 'Binary') {
-                index = serializeBinary(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'BSONSymbol') {
-                index = serializeSymbol(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'DBRef') {
-                index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                index = serializeBSONRegExp(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Int32') {
-                index = serializeInt32(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                index = serializeMinMax(buffer, key, value, index);
-            }
-            else if (typeof value._bsontype !== 'undefined') {
-                throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-            }
-        }
-    }
-    else if (object instanceof Map || isMap(object)) {
-        const iterator = object.entries();
-        let done = false;
-        while (!done) {
-            const entry = iterator.next();
-            done = !!entry.done;
-            if (done)
-                continue;
-            const key = entry.value[0];
-            let value = entry.value[1];
-            if (typeof value?.toBSON === 'function') {
-                value = value.toBSON();
-            }
-            const type = typeof value;
-            if (typeof key === 'string' && !ignoreKeys.has(key)) {
-                if (key.match(regexp) != null) {
-                    throw new BSONError('key ' + key + ' must not contain null bytes');
-                }
-                if (checkKeys) {
-                    if ('$' === key[0]) {
-                        throw new BSONError('key ' + key + " must not start with '$'");
-                    }
-                    else if (key.includes('.')) {
-                        throw new BSONError('key ' + key + " must not contain '.'");
-                    }
-                }
-            }
-            if (type === 'string') {
-                index = serializeString(buffer, key, value, index);
-            }
-            else if (type === 'number') {
-                index = serializeNumber(buffer, key, value, index);
-            }
-            else if (type === 'bigint') {
-                index = serializeBigInt(buffer, key, value, index);
-            }
-            else if (type === 'boolean') {
-                index = serializeBoolean(buffer, key, value, index);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                index = serializeDate(buffer, key, value, index);
-            }
-            else if (value === null || (value === undefined && ignoreUndefined === false)) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (isUint8Array(value)) {
-                index = serializeBuffer(buffer, key, value, index);
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                index = serializeRegExp(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype == null) {
-                index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'object' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value._bsontype === 'ObjectId') {
-                index = serializeObjectId(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype === 'Decimal128') {
-                index = serializeDecimal128(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-                index = serializeLong(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Double') {
-                index = serializeDouble(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Code') {
-                index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'function' && serializeFunctions) {
-                index = serializeFunction(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Binary') {
-                index = serializeBinary(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'BSONSymbol') {
-                index = serializeSymbol(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'DBRef') {
-                index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                index = serializeBSONRegExp(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Int32') {
-                index = serializeInt32(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                index = serializeMinMax(buffer, key, value, index);
-            }
-            else if (typeof value._bsontype !== 'undefined') {
-                throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-            }
-        }
-    }
-    else {
-        if (typeof object?.toBSON === 'function') {
-            object = object.toBSON();
-            if (object != null && typeof object !== 'object') {
-                throw new BSONError('toBSON function did not return an object');
-            }
-        }
-        for (const key of Object.keys(object)) {
-            let value = object[key];
-            if (typeof value?.toBSON === 'function') {
-                value = value.toBSON();
-            }
-            const type = typeof value;
-            if (typeof key === 'string' && !ignoreKeys.has(key)) {
-                if (key.match(regexp) != null) {
-                    throw new BSONError('key ' + key + ' must not contain null bytes');
-                }
-                if (checkKeys) {
-                    if ('$' === key[0]) {
-                        throw new BSONError('key ' + key + " must not start with '$'");
-                    }
-                    else if (key.includes('.')) {
-                        throw new BSONError('key ' + key + " must not contain '.'");
-                    }
-                }
-            }
-            if (type === 'string') {
-                index = serializeString(buffer, key, value, index);
-            }
-            else if (type === 'number') {
-                index = serializeNumber(buffer, key, value, index);
-            }
-            else if (type === 'bigint') {
-                index = serializeBigInt(buffer, key, value, index);
-            }
-            else if (type === 'boolean') {
-                index = serializeBoolean(buffer, key, value, index);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                index = serializeDate(buffer, key, value, index);
-            }
-            else if (value === undefined) {
-                if (ignoreUndefined === false)
-                    index = serializeNull(buffer, key, value, index);
-            }
-            else if (value === null) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (isUint8Array(value)) {
-                index = serializeBuffer(buffer, key, value, index);
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                index = serializeRegExp(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype == null) {
-                index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'object' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value._bsontype === 'ObjectId') {
-                index = serializeObjectId(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype === 'Decimal128') {
-                index = serializeDecimal128(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-                index = serializeLong(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Double') {
-                index = serializeDouble(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Code') {
-                index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'function' && serializeFunctions) {
-                index = serializeFunction(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Binary') {
-                index = serializeBinary(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'BSONSymbol') {
-                index = serializeSymbol(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'DBRef') {
-                index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                index = serializeBSONRegExp(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Int32') {
-                index = serializeInt32(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                index = serializeMinMax(buffer, key, value, index);
-            }
-            else if (typeof value._bsontype !== 'undefined') {
-                throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-            }
-        }
-    }
-    path.delete(object);
-    buffer[index++] = 0x00;
-    const size = index - startingIndex;
-    startingIndex += NumberUtils.setInt32LE(buffer, startingIndex, size);
-    return index;
-}
-
-function isBSONType(value) {
-    return (value != null &&
-        typeof value === 'object' &&
-        '_bsontype' in value &&
-        typeof value._bsontype === 'string');
-}
-const keysToCodecs = {
-    $oid: ObjectId,
-    $binary: Binary,
-    $uuid: Binary,
-    $symbol: BSONSymbol,
-    $numberInt: Int32,
-    $numberDecimal: Decimal128,
-    $numberDouble: Double,
-    $numberLong: Long,
-    $minKey: MinKey,
-    $maxKey: MaxKey,
-    $regex: BSONRegExp,
-    $regularExpression: BSONRegExp,
-    $timestamp: Timestamp
-};
-function deserializeValue(value, options = {}) {
-    if (typeof value === 'number') {
-        const in32BitRange = value <= BSON_INT32_MAX && value >= BSON_INT32_MIN;
-        const in64BitRange = value <= BSON_INT64_MAX && value >= BSON_INT64_MIN;
-        if (options.relaxed || options.legacy) {
-            return value;
-        }
-        if (Number.isInteger(value) && !Object.is(value, -0)) {
-            if (in32BitRange) {
-                return new Int32(value);
-            }
-            if (in64BitRange) {
-                if (options.useBigInt64) {
-                    return BigInt(value);
-                }
-                return Long.fromNumber(value);
-            }
-        }
-        return new Double(value);
-    }
-    if (value == null || typeof value !== 'object')
-        return value;
-    if (value.$undefined)
-        return null;
-    const keys = Object.keys(value).filter(k => k.startsWith('$') && value[k] != null);
-    for (let i = 0; i < keys.length; i++) {
-        const c = keysToCodecs[keys[i]];
-        if (c)
-            return c.fromExtendedJSON(value, options);
-    }
-    if (value.$date != null) {
-        const d = value.$date;
-        const date = new Date();
-        if (options.legacy) {
-            if (typeof d === 'number')
-                date.setTime(d);
-            else if (typeof d === 'string')
-                date.setTime(Date.parse(d));
-            else if (typeof d === 'bigint')
-                date.setTime(Number(d));
-            else
-                throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
-        }
-        else {
-            if (typeof d === 'string')
-                date.setTime(Date.parse(d));
-            else if (Long.isLong(d))
-                date.setTime(d.toNumber());
-            else if (typeof d === 'number' && options.relaxed)
-                date.setTime(d);
-            else if (typeof d === 'bigint')
-                date.setTime(Number(d));
-            else
-                throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
-        }
-        return date;
-    }
-    if (value.$code != null) {
-        const copy = Object.assign({}, value);
-        if (value.$scope) {
-            copy.$scope = deserializeValue(value.$scope);
-        }
-        return Code.fromExtendedJSON(value);
-    }
-    if (isDBRefLike(value) || value.$dbPointer) {
-        const v = value.$ref ? value : value.$dbPointer;
-        if (v instanceof DBRef)
-            return v;
-        const dollarKeys = Object.keys(v).filter(k => k.startsWith('$'));
-        let valid = true;
-        dollarKeys.forEach(k => {
-            if (['$ref', '$id', '$db'].indexOf(k) === -1)
-                valid = false;
-        });
-        if (valid)
-            return DBRef.fromExtendedJSON(v);
-    }
-    return value;
-}
-function serializeArray(array, options) {
-    return array.map((v, index) => {
-        options.seenObjects.push({ propertyName: `index ${index}`, obj: null });
-        try {
-            return serializeValue(v, options);
-        }
-        finally {
-            options.seenObjects.pop();
-        }
-    });
-}
-function getISOString(date) {
-    const isoStr = date.toISOString();
-    return date.getUTCMilliseconds() !== 0 ? isoStr : isoStr.slice(0, -5) + 'Z';
-}
-function serializeValue(value, options) {
-    if (value instanceof Map || isMap(value)) {
-        const obj = Object.create(null);
-        for (const [k, v] of value) {
-            if (typeof k !== 'string') {
-                throw new BSONError('Can only serialize maps with string keys');
-            }
-            obj[k] = v;
-        }
-        return serializeValue(obj, options);
-    }
-    if ((typeof value === 'object' || typeof value === 'function') && value !== null) {
-        const index = options.seenObjects.findIndex(entry => entry.obj === value);
-        if (index !== -1) {
-            const props = options.seenObjects.map(entry => entry.propertyName);
-            const leadingPart = props
-                .slice(0, index)
-                .map(prop => `${prop} -> `)
-                .join('');
-            const alreadySeen = props[index];
-            const circularPart = ' -> ' +
-                props
-                    .slice(index + 1, props.length - 1)
-                    .map(prop => `${prop} -> `)
-                    .join('');
-            const current = props[props.length - 1];
-            const leadingSpace = ' '.repeat(leadingPart.length + alreadySeen.length / 2);
-            const dashes = '-'.repeat(circularPart.length + (alreadySeen.length + current.length) / 2 - 1);
-            throw new BSONError('Converting circular structure to EJSON:\n' +
-                `    ${leadingPart}${alreadySeen}${circularPart}${current}\n` +
-                `    ${leadingSpace}\\${dashes}/`);
-        }
-        options.seenObjects[options.seenObjects.length - 1].obj = value;
-    }
-    if (Array.isArray(value))
-        return serializeArray(value, options);
-    if (value === undefined)
-        return null;
-    if (value instanceof Date || isDate(value)) {
-        const dateNum = value.getTime(), inRange = dateNum > -1 && dateNum < 253402318800000;
-        if (options.legacy) {
-            return options.relaxed && inRange
-                ? { $date: value.getTime() }
-                : { $date: getISOString(value) };
-        }
-        return options.relaxed && inRange
-            ? { $date: getISOString(value) }
-            : { $date: { $numberLong: value.getTime().toString() } };
-    }
-    if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) {
-        if (Number.isInteger(value) && !Object.is(value, -0)) {
-            if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
-                return { $numberInt: value.toString() };
-            }
-            if (value >= BSON_INT64_MIN && value <= BSON_INT64_MAX) {
-                return { $numberLong: value.toString() };
-            }
-        }
-        return { $numberDouble: Object.is(value, -0) ? '-0.0' : value.toString() };
-    }
-    if (typeof value === 'bigint') {
-        if (!options.relaxed) {
-            return { $numberLong: BigInt.asIntN(64, value).toString() };
-        }
-        return Number(BigInt.asIntN(64, value));
-    }
-    if (value instanceof RegExp || isRegExp(value)) {
-        let flags = value.flags;
-        if (flags === undefined) {
-            const match = value.toString().match(/[gimuy]*$/);
-            if (match) {
-                flags = match[0];
-            }
-        }
-        const rx = new BSONRegExp(value.source, flags);
-        return rx.toExtendedJSON(options);
-    }
-    if (value != null && typeof value === 'object')
-        return serializeDocument(value, options);
-    return value;
-}
-const BSON_TYPE_MAPPINGS = {
-    Binary: (o) => new Binary(o.value(), o.sub_type),
-    Code: (o) => new Code(o.code, o.scope),
-    DBRef: (o) => new DBRef(o.collection || o.namespace, o.oid, o.db, o.fields),
-    Decimal128: (o) => new Decimal128(o.bytes),
-    Double: (o) => new Double(o.value),
-    Int32: (o) => new Int32(o.value),
-    Long: (o) => Long.fromBits(o.low != null ? o.low : o.low_, o.low != null ? o.high : o.high_, o.low != null ? o.unsigned : o.unsigned_),
-    MaxKey: () => new MaxKey(),
-    MinKey: () => new MinKey(),
-    ObjectId: (o) => new ObjectId(o),
-    BSONRegExp: (o) => new BSONRegExp(o.pattern, o.options),
-    BSONSymbol: (o) => new BSONSymbol(o.value),
-    Timestamp: (o) => Timestamp.fromBits(o.low, o.high)
-};
-function serializeDocument(doc, options) {
-    if (doc == null || typeof doc !== 'object')
-        throw new BSONError('not an object instance');
-    const bsontype = doc._bsontype;
-    if (typeof bsontype === 'undefined') {
-        const _doc = {};
-        for (const name of Object.keys(doc)) {
-            options.seenObjects.push({ propertyName: name, obj: null });
-            try {
-                const value = serializeValue(doc[name], options);
-                if (name === '__proto__') {
-                    Object.defineProperty(_doc, name, {
-                        value,
-                        writable: true,
-                        enumerable: true,
-                        configurable: true
-                    });
-                }
-                else {
-                    _doc[name] = value;
-                }
-            }
-            finally {
-                options.seenObjects.pop();
-            }
-        }
-        return _doc;
-    }
-    else if (doc != null &&
-        typeof doc === 'object' &&
-        typeof doc._bsontype === 'string' &&
-        doc[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-        throw new BSONVersionError();
-    }
-    else if (isBSONType(doc)) {
-        let outDoc = doc;
-        if (typeof outDoc.toExtendedJSON !== 'function') {
-            const mapper = BSON_TYPE_MAPPINGS[doc._bsontype];
-            if (!mapper) {
-                throw new BSONError('Unrecognized or invalid _bsontype: ' + doc._bsontype);
-            }
-            outDoc = mapper(outDoc);
-        }
-        if (bsontype === 'Code' && outDoc.scope) {
-            outDoc = new Code(outDoc.code, serializeValue(outDoc.scope, options));
-        }
-        else if (bsontype === 'DBRef' && outDoc.oid) {
-            outDoc = new DBRef(serializeValue(outDoc.collection, options), serializeValue(outDoc.oid, options), serializeValue(outDoc.db, options), serializeValue(outDoc.fields, options));
-        }
-        return outDoc.toExtendedJSON(options);
-    }
-    else {
-        throw new BSONError('_bsontype must be a string, but was: ' + typeof bsontype);
-    }
-}
-function parse(text, options) {
-    const ejsonOptions = {
-        useBigInt64: options?.useBigInt64 ?? false,
-        relaxed: options?.relaxed ?? true,
-        legacy: options?.legacy ?? false
-    };
-    return JSON.parse(text, (key, value) => {
-        if (key.indexOf('\x00') !== -1) {
-            throw new BSONError(`BSON Document field names cannot contain null bytes, found: ${JSON.stringify(key)}`);
-        }
-        return deserializeValue(value, ejsonOptions);
-    });
-}
-function stringify(value, replacer, space, options) {
-    if (space != null && typeof space === 'object') {
-        options = space;
-        space = 0;
-    }
-    if (replacer != null && typeof replacer === 'object' && !Array.isArray(replacer)) {
-        options = replacer;
-        replacer = undefined;
-        space = 0;
-    }
-    const serializeOptions = Object.assign({ relaxed: true, legacy: false }, options, {
-        seenObjects: [{ propertyName: '(root)', obj: null }]
-    });
-    const doc = serializeValue(value, serializeOptions);
-    return JSON.stringify(doc, replacer, space);
-}
-function EJSONserialize(value, options) {
-    options = options || {};
-    return JSON.parse(stringify(value, options));
-}
-function EJSONdeserialize(ejson, options) {
-    options = options || {};
-    return parse(JSON.stringify(ejson), options);
-}
-const EJSON = Object.create(null);
-EJSON.parse = parse;
-EJSON.stringify = stringify;
-EJSON.serialize = EJSONserialize;
-EJSON.deserialize = EJSONdeserialize;
-Object.freeze(EJSON);
-
-const MAXSIZE = 1024 * 1024 * 17;
-let buffer = ByteUtils.allocate(MAXSIZE);
-function setInternalBufferSize(size) {
-    if (buffer.length < size) {
-        buffer = ByteUtils.allocate(size);
-    }
-}
-function serialize(object, options = {}) {
-    const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-    const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-    const minInternalBufferSize = typeof options.minInternalBufferSize === 'number' ? options.minInternalBufferSize : MAXSIZE;
-    if (buffer.length < minInternalBufferSize) {
-        buffer = ByteUtils.allocate(minInternalBufferSize);
-    }
-    const serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, null);
-    const finishedBuffer = ByteUtils.allocateUnsafe(serializationIndex);
-    finishedBuffer.set(buffer.subarray(0, serializationIndex), 0);
-    return finishedBuffer;
-}
-function serializeWithBufferAndIndex(object, finalBuffer, options = {}) {
-    const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-    const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-    const startIndex = typeof options.index === 'number' ? options.index : 0;
-    const serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, null);
-    finalBuffer.set(buffer.subarray(0, serializationIndex), startIndex);
-    return startIndex + serializationIndex - 1;
-}
-function deserialize(buffer, options = {}) {
-    return internalDeserialize(ByteUtils.toLocalBufferType(buffer), options);
-}
-function calculateObjectSize(object, options = {}) {
-    options = options || {};
-    const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-    return internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined);
-}
-function deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options) {
-    const internalOptions = Object.assign({ allowObjectSmallerThanBufferSize: true, index: 0 }, options);
-    const bufferData = ByteUtils.toLocalBufferType(data);
-    let index = startIndex;
-    for (let i = 0; i < numberOfDocuments; i++) {
-        const size = NumberUtils.getInt32LE(bufferData, index);
-        internalOptions.index = index;
-        documents[docStartIndex + i] = internalDeserialize(bufferData, internalOptions);
-        index = index + size;
-    }
-    return index;
-}
-
-var bson = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    BSONError: BSONError,
-    BSONRegExp: BSONRegExp,
-    BSONRuntimeError: BSONRuntimeError,
-    BSONSymbol: BSONSymbol,
-    BSONType: BSONType,
-    BSONValue: BSONValue,
-    BSONVersionError: BSONVersionError,
-    Binary: Binary,
-    Code: Code,
-    DBRef: DBRef,
-    Decimal128: Decimal128,
-    Double: Double,
-    EJSON: EJSON,
-    Int32: Int32,
-    Long: Long,
-    MaxKey: MaxKey,
-    MinKey: MinKey,
-    ObjectId: ObjectId,
-    Timestamp: Timestamp,
-    UUID: UUID,
-    calculateObjectSize: calculateObjectSize,
-    deserialize: deserialize,
-    deserializeStream: deserializeStream,
-    serialize: serialize,
-    serializeWithBufferAndIndex: serializeWithBufferAndIndex,
-    setInternalBufferSize: setInternalBufferSize
-});
-
-export { bson as BSON, BSONError, BSONRegExp, BSONRuntimeError, BSONSymbol, BSONType, BSONValue, BSONVersionError, Binary, Code, DBRef, Decimal128, Double, EJSON, Int32, Long, MaxKey, MinKey, ObjectId, Timestamp, UUID, calculateObjectSize, deserialize, deserializeStream, serialize, serializeWithBufferAndIndex, setInternalBufferSize };
-//# sourceMappingURL=bson.mjs.map
diff --git a/server/data-import/node_modules/bson/lib/bson.mjs.map b/server/data-import/node_modules/bson/lib/bson.mjs.map
deleted file mode 100644
index dd134cd6c69450bfe9d4f53a564460677b0580e9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/lib/bson.mjs.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"bson.mjs","sources":["../src/parser/utils.ts","../src/constants.ts","../src/error.ts","../src/validate_utf8.ts","../src/utils/latin.ts","../src/utils/node_byte_utils.ts","../src/utils/web_byte_utils.ts","../src/utils/byte_utils.ts","../src/bson_value.ts","../src/binary.ts","../src/code.ts","../src/db_ref.ts","../src/long.ts","../src/decimal128.ts","../src/double.ts","../src/int_32.ts","../src/max_key.ts","../src/min_key.ts","../src/utils/number_utils.ts","../src/objectid.ts","../src/parser/calculate_size.ts","../src/regexp.ts","../src/symbol.ts","../src/timestamp.ts","../src/parser/deserializer.ts","../src/parser/serializer.ts","../src/extended_json.ts","../src/bson.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["constants.JS_INT_MIN","constants.JS_INT_MAX","constants.BSON_INT32_MIN","constants.BSON_INT32_MAX","constants.BSON_MAJOR_VERSION","constants.BSON_DATA_STRING","constants.BSON_DATA_OID","constants.BSON_DATA_INT","constants.BSON_DATA_NUMBER","constants.BSON_DATA_DATE","constants.BSON_DATA_BOOLEAN","constants.BSON_DATA_OBJECT","constants.BSON_DATA_ARRAY","constants.BSON_DATA_UNDEFINED","constants.BSON_DATA_NULL","constants.BSON_DATA_LONG","constants.BSON_DATA_DECIMAL128","constants.BSON_DATA_BINARY","constants.BSON_BINARY_SUBTYPE_UUID_NEW","constants.BSON_DATA_REGEXP","constants.BSON_DATA_SYMBOL","constants.BSON_DATA_TIMESTAMP","constants.BSON_DATA_MIN_KEY","constants.BSON_DATA_MAX_KEY","constants.BSON_DATA_CODE","constants.BSON_DATA_CODE_W_SCOPE","constants.BSON_DATA_DBPOINTER","constants.BSON_BINARY_SUBTYPE_DEFAULT"],"mappings":"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AE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EA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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/bson/lib/bson.rn.cjs b/server/data-import/node_modules/bson/lib/bson.rn.cjs
deleted file mode 100644
index 744d488536ec84dbedef9dec483f7c5992985536..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/lib/bson.rn.cjs
+++ /dev/null
@@ -1,4215 +0,0 @@
-'use strict';
-
-function isAnyArrayBuffer(value) {
-    return ['[object ArrayBuffer]', '[object SharedArrayBuffer]'].includes(Object.prototype.toString.call(value));
-}
-function isUint8Array(value) {
-    return Object.prototype.toString.call(value) === '[object Uint8Array]';
-}
-function isBigInt64Array(value) {
-    return Object.prototype.toString.call(value) === '[object BigInt64Array]';
-}
-function isBigUInt64Array(value) {
-    return Object.prototype.toString.call(value) === '[object BigUint64Array]';
-}
-function isRegExp(d) {
-    return Object.prototype.toString.call(d) === '[object RegExp]';
-}
-function isMap(d) {
-    return Object.prototype.toString.call(d) === '[object Map]';
-}
-function isDate(d) {
-    return Object.prototype.toString.call(d) === '[object Date]';
-}
-function defaultInspect(x, _options) {
-    return JSON.stringify(x, (k, v) => {
-        if (typeof v === 'bigint') {
-            return { $numberLong: `${v}` };
-        }
-        else if (isMap(v)) {
-            return Object.fromEntries(v);
-        }
-        return v;
-    });
-}
-function getStylizeFunction(options) {
-    const stylizeExists = options != null &&
-        typeof options === 'object' &&
-        'stylize' in options &&
-        typeof options.stylize === 'function';
-    if (stylizeExists) {
-        return options.stylize;
-    }
-}
-
-const BSON_MAJOR_VERSION = 6;
-const BSON_INT32_MAX = 0x7fffffff;
-const BSON_INT32_MIN = -0x80000000;
-const BSON_INT64_MAX = Math.pow(2, 63) - 1;
-const BSON_INT64_MIN = -Math.pow(2, 63);
-const JS_INT_MAX = Math.pow(2, 53);
-const JS_INT_MIN = -Math.pow(2, 53);
-const BSON_DATA_NUMBER = 1;
-const BSON_DATA_STRING = 2;
-const BSON_DATA_OBJECT = 3;
-const BSON_DATA_ARRAY = 4;
-const BSON_DATA_BINARY = 5;
-const BSON_DATA_UNDEFINED = 6;
-const BSON_DATA_OID = 7;
-const BSON_DATA_BOOLEAN = 8;
-const BSON_DATA_DATE = 9;
-const BSON_DATA_NULL = 10;
-const BSON_DATA_REGEXP = 11;
-const BSON_DATA_DBPOINTER = 12;
-const BSON_DATA_CODE = 13;
-const BSON_DATA_SYMBOL = 14;
-const BSON_DATA_CODE_W_SCOPE = 15;
-const BSON_DATA_INT = 16;
-const BSON_DATA_TIMESTAMP = 17;
-const BSON_DATA_LONG = 18;
-const BSON_DATA_DECIMAL128 = 19;
-const BSON_DATA_MIN_KEY = 0xff;
-const BSON_DATA_MAX_KEY = 0x7f;
-const BSON_BINARY_SUBTYPE_DEFAULT = 0;
-const BSON_BINARY_SUBTYPE_FUNCTION = 1;
-const BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2;
-const BSON_BINARY_SUBTYPE_UUID = 3;
-const BSON_BINARY_SUBTYPE_UUID_NEW = 4;
-const BSON_BINARY_SUBTYPE_MD5 = 5;
-const BSON_BINARY_SUBTYPE_ENCRYPTED = 6;
-const BSON_BINARY_SUBTYPE_COLUMN = 7;
-const BSON_BINARY_SUBTYPE_USER_DEFINED = 128;
-const BSONType = Object.freeze({
-    double: 1,
-    string: 2,
-    object: 3,
-    array: 4,
-    binData: 5,
-    undefined: 6,
-    objectId: 7,
-    bool: 8,
-    date: 9,
-    null: 10,
-    regex: 11,
-    dbPointer: 12,
-    javascript: 13,
-    symbol: 14,
-    javascriptWithScope: 15,
-    int: 16,
-    timestamp: 17,
-    long: 18,
-    decimal: 19,
-    minKey: -1,
-    maxKey: 127
-});
-
-class BSONError extends Error {
-    get bsonError() {
-        return true;
-    }
-    get name() {
-        return 'BSONError';
-    }
-    constructor(message, options) {
-        super(message, options);
-    }
-    static isBSONError(value) {
-        return (value != null &&
-            typeof value === 'object' &&
-            'bsonError' in value &&
-            value.bsonError === true &&
-            'name' in value &&
-            'message' in value &&
-            'stack' in value);
-    }
-}
-class BSONVersionError extends BSONError {
-    get name() {
-        return 'BSONVersionError';
-    }
-    constructor() {
-        super(`Unsupported BSON version, bson types must be from bson ${BSON_MAJOR_VERSION}.x.x`);
-    }
-}
-class BSONRuntimeError extends BSONError {
-    get name() {
-        return 'BSONRuntimeError';
-    }
-    constructor(message) {
-        super(message);
-    }
-}
-
-const FIRST_BIT = 0x80;
-const FIRST_TWO_BITS = 0xc0;
-const FIRST_THREE_BITS = 0xe0;
-const FIRST_FOUR_BITS = 0xf0;
-const FIRST_FIVE_BITS = 0xf8;
-const TWO_BIT_CHAR = 0xc0;
-const THREE_BIT_CHAR = 0xe0;
-const FOUR_BIT_CHAR = 0xf0;
-const CONTINUING_CHAR = 0x80;
-function validateUtf8(bytes, start, end) {
-    let continuation = 0;
-    for (let i = start; i < end; i += 1) {
-        const byte = bytes[i];
-        if (continuation) {
-            if ((byte & FIRST_TWO_BITS) !== CONTINUING_CHAR) {
-                return false;
-            }
-            continuation -= 1;
-        }
-        else if (byte & FIRST_BIT) {
-            if ((byte & FIRST_THREE_BITS) === TWO_BIT_CHAR) {
-                continuation = 1;
-            }
-            else if ((byte & FIRST_FOUR_BITS) === THREE_BIT_CHAR) {
-                continuation = 2;
-            }
-            else if ((byte & FIRST_FIVE_BITS) === FOUR_BIT_CHAR) {
-                continuation = 3;
-            }
-            else {
-                return false;
-            }
-        }
-    }
-    return !continuation;
-}
-
-function tryReadBasicLatin(uint8array, start, end) {
-    if (uint8array.length === 0) {
-        return '';
-    }
-    const stringByteLength = end - start;
-    if (stringByteLength === 0) {
-        return '';
-    }
-    if (stringByteLength > 20) {
-        return null;
-    }
-    if (stringByteLength === 1 && uint8array[start] < 128) {
-        return String.fromCharCode(uint8array[start]);
-    }
-    if (stringByteLength === 2 && uint8array[start] < 128 && uint8array[start + 1] < 128) {
-        return String.fromCharCode(uint8array[start]) + String.fromCharCode(uint8array[start + 1]);
-    }
-    if (stringByteLength === 3 &&
-        uint8array[start] < 128 &&
-        uint8array[start + 1] < 128 &&
-        uint8array[start + 2] < 128) {
-        return (String.fromCharCode(uint8array[start]) +
-            String.fromCharCode(uint8array[start + 1]) +
-            String.fromCharCode(uint8array[start + 2]));
-    }
-    const latinBytes = [];
-    for (let i = start; i < end; i++) {
-        const byte = uint8array[i];
-        if (byte > 127) {
-            return null;
-        }
-        latinBytes.push(byte);
-    }
-    return String.fromCharCode(...latinBytes);
-}
-function tryWriteBasicLatin(destination, source, offset) {
-    if (source.length === 0)
-        return 0;
-    if (source.length > 25)
-        return null;
-    if (destination.length - offset < source.length)
-        return null;
-    for (let charOffset = 0, destinationOffset = offset; charOffset < source.length; charOffset++, destinationOffset++) {
-        const char = source.charCodeAt(charOffset);
-        if (char > 127)
-            return null;
-        destination[destinationOffset] = char;
-    }
-    return source.length;
-}
-
-function nodejsMathRandomBytes(byteLength) {
-    return nodeJsByteUtils.fromNumberArray(Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256)));
-}
-const nodejsRandomBytes = (() => {
-    try {
-        return require('crypto').randomBytes;
-    }
-    catch {
-        return nodejsMathRandomBytes;
-    }
-})();
-const nodeJsByteUtils = {
-    toLocalBufferType(potentialBuffer) {
-        if (Buffer.isBuffer(potentialBuffer)) {
-            return potentialBuffer;
-        }
-        if (ArrayBuffer.isView(potentialBuffer)) {
-            return Buffer.from(potentialBuffer.buffer, potentialBuffer.byteOffset, potentialBuffer.byteLength);
-        }
-        const stringTag = potentialBuffer?.[Symbol.toStringTag] ?? Object.prototype.toString.call(potentialBuffer);
-        if (stringTag === 'ArrayBuffer' ||
-            stringTag === 'SharedArrayBuffer' ||
-            stringTag === '[object ArrayBuffer]' ||
-            stringTag === '[object SharedArrayBuffer]') {
-            return Buffer.from(potentialBuffer);
-        }
-        throw new BSONError(`Cannot create Buffer from ${String(potentialBuffer)}`);
-    },
-    allocate(size) {
-        return Buffer.alloc(size);
-    },
-    allocateUnsafe(size) {
-        return Buffer.allocUnsafe(size);
-    },
-    equals(a, b) {
-        return nodeJsByteUtils.toLocalBufferType(a).equals(b);
-    },
-    fromNumberArray(array) {
-        return Buffer.from(array);
-    },
-    fromBase64(base64) {
-        return Buffer.from(base64, 'base64');
-    },
-    toBase64(buffer) {
-        return nodeJsByteUtils.toLocalBufferType(buffer).toString('base64');
-    },
-    fromISO88591(codePoints) {
-        return Buffer.from(codePoints, 'binary');
-    },
-    toISO88591(buffer) {
-        return nodeJsByteUtils.toLocalBufferType(buffer).toString('binary');
-    },
-    fromHex(hex) {
-        return Buffer.from(hex, 'hex');
-    },
-    toHex(buffer) {
-        return nodeJsByteUtils.toLocalBufferType(buffer).toString('hex');
-    },
-    toUTF8(buffer, start, end, fatal) {
-        const basicLatin = end - start <= 20 ? tryReadBasicLatin(buffer, start, end) : null;
-        if (basicLatin != null) {
-            return basicLatin;
-        }
-        const string = nodeJsByteUtils.toLocalBufferType(buffer).toString('utf8', start, end);
-        if (fatal) {
-            for (let i = 0; i < string.length; i++) {
-                if (string.charCodeAt(i) === 0xfffd) {
-                    if (!validateUtf8(buffer, start, end)) {
-                        throw new BSONError('Invalid UTF-8 string in BSON document');
-                    }
-                    break;
-                }
-            }
-        }
-        return string;
-    },
-    utf8ByteLength(input) {
-        return Buffer.byteLength(input, 'utf8');
-    },
-    encodeUTF8Into(buffer, source, byteOffset) {
-        const latinBytesWritten = tryWriteBasicLatin(buffer, source, byteOffset);
-        if (latinBytesWritten != null) {
-            return latinBytesWritten;
-        }
-        return nodeJsByteUtils.toLocalBufferType(buffer).write(source, byteOffset, undefined, 'utf8');
-    },
-    randomBytes: nodejsRandomBytes
-};
-
-const { TextEncoder, TextDecoder } = require('../vendor/text-encoding');
-const { encode: btoa, decode: atob } = require('../vendor/base64');
-function isReactNative() {
-    const { navigator } = globalThis;
-    return typeof navigator === 'object' && navigator.product === 'ReactNative';
-}
-function webMathRandomBytes(byteLength) {
-    if (byteLength < 0) {
-        throw new RangeError(`The argument 'byteLength' is invalid. Received ${byteLength}`);
-    }
-    return webByteUtils.fromNumberArray(Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256)));
-}
-const webRandomBytes = (() => {
-    const { crypto } = globalThis;
-    if (crypto != null && typeof crypto.getRandomValues === 'function') {
-        return (byteLength) => {
-            return crypto.getRandomValues(webByteUtils.allocate(byteLength));
-        };
-    }
-    else {
-        if (isReactNative()) {
-            const { console } = globalThis;
-            console?.warn?.('BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.');
-        }
-        return webMathRandomBytes;
-    }
-})();
-const HEX_DIGIT = /(\d|[a-f])/i;
-const webByteUtils = {
-    toLocalBufferType(potentialUint8array) {
-        const stringTag = potentialUint8array?.[Symbol.toStringTag] ??
-            Object.prototype.toString.call(potentialUint8array);
-        if (stringTag === 'Uint8Array') {
-            return potentialUint8array;
-        }
-        if (ArrayBuffer.isView(potentialUint8array)) {
-            return new Uint8Array(potentialUint8array.buffer.slice(potentialUint8array.byteOffset, potentialUint8array.byteOffset + potentialUint8array.byteLength));
-        }
-        if (stringTag === 'ArrayBuffer' ||
-            stringTag === 'SharedArrayBuffer' ||
-            stringTag === '[object ArrayBuffer]' ||
-            stringTag === '[object SharedArrayBuffer]') {
-            return new Uint8Array(potentialUint8array);
-        }
-        throw new BSONError(`Cannot make a Uint8Array from ${String(potentialUint8array)}`);
-    },
-    allocate(size) {
-        if (typeof size !== 'number') {
-            throw new TypeError(`The "size" argument must be of type number. Received ${String(size)}`);
-        }
-        return new Uint8Array(size);
-    },
-    allocateUnsafe(size) {
-        return webByteUtils.allocate(size);
-    },
-    equals(a, b) {
-        if (a.byteLength !== b.byteLength) {
-            return false;
-        }
-        for (let i = 0; i < a.byteLength; i++) {
-            if (a[i] !== b[i]) {
-                return false;
-            }
-        }
-        return true;
-    },
-    fromNumberArray(array) {
-        return Uint8Array.from(array);
-    },
-    fromBase64(base64) {
-        return Uint8Array.from(atob(base64), c => c.charCodeAt(0));
-    },
-    toBase64(uint8array) {
-        return btoa(webByteUtils.toISO88591(uint8array));
-    },
-    fromISO88591(codePoints) {
-        return Uint8Array.from(codePoints, c => c.charCodeAt(0) & 0xff);
-    },
-    toISO88591(uint8array) {
-        return Array.from(Uint16Array.from(uint8array), b => String.fromCharCode(b)).join('');
-    },
-    fromHex(hex) {
-        const evenLengthHex = hex.length % 2 === 0 ? hex : hex.slice(0, hex.length - 1);
-        const buffer = [];
-        for (let i = 0; i < evenLengthHex.length; i += 2) {
-            const firstDigit = evenLengthHex[i];
-            const secondDigit = evenLengthHex[i + 1];
-            if (!HEX_DIGIT.test(firstDigit)) {
-                break;
-            }
-            if (!HEX_DIGIT.test(secondDigit)) {
-                break;
-            }
-            const hexDigit = Number.parseInt(`${firstDigit}${secondDigit}`, 16);
-            buffer.push(hexDigit);
-        }
-        return Uint8Array.from(buffer);
-    },
-    toHex(uint8array) {
-        return Array.from(uint8array, byte => byte.toString(16).padStart(2, '0')).join('');
-    },
-    toUTF8(uint8array, start, end, fatal) {
-        const basicLatin = end - start <= 20 ? tryReadBasicLatin(uint8array, start, end) : null;
-        if (basicLatin != null) {
-            return basicLatin;
-        }
-        if (fatal) {
-            try {
-                return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
-            }
-            catch (cause) {
-                throw new BSONError('Invalid UTF-8 string in BSON document', { cause });
-            }
-        }
-        return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
-    },
-    utf8ByteLength(input) {
-        return new TextEncoder().encode(input).byteLength;
-    },
-    encodeUTF8Into(uint8array, source, byteOffset) {
-        const bytes = new TextEncoder().encode(source);
-        uint8array.set(bytes, byteOffset);
-        return bytes.byteLength;
-    },
-    randomBytes: webRandomBytes
-};
-
-const hasGlobalBuffer = typeof Buffer === 'function' && Buffer.prototype?._isBuffer !== true;
-const ByteUtils = hasGlobalBuffer ? nodeJsByteUtils : webByteUtils;
-
-class BSONValue {
-    get [Symbol.for('@@mdb.bson.version')]() {
-        return BSON_MAJOR_VERSION;
-    }
-    [Symbol.for('nodejs.util.inspect.custom')](depth, options, inspect) {
-        return this.inspect(depth, options, inspect);
-    }
-}
-
-class Binary extends BSONValue {
-    get _bsontype() {
-        return 'Binary';
-    }
-    constructor(buffer, subType) {
-        super();
-        if (!(buffer == null) &&
-            typeof buffer === 'string' &&
-            !ArrayBuffer.isView(buffer) &&
-            !isAnyArrayBuffer(buffer) &&
-            !Array.isArray(buffer)) {
-            throw new BSONError('Binary can only be constructed from Uint8Array or number[]');
-        }
-        this.sub_type = subType ?? Binary.BSON_BINARY_SUBTYPE_DEFAULT;
-        if (buffer == null) {
-            this.buffer = ByteUtils.allocate(Binary.BUFFER_SIZE);
-            this.position = 0;
-        }
-        else {
-            this.buffer = Array.isArray(buffer)
-                ? ByteUtils.fromNumberArray(buffer)
-                : ByteUtils.toLocalBufferType(buffer);
-            this.position = this.buffer.byteLength;
-        }
-    }
-    put(byteValue) {
-        if (typeof byteValue === 'string' && byteValue.length !== 1) {
-            throw new BSONError('only accepts single character String');
-        }
-        else if (typeof byteValue !== 'number' && byteValue.length !== 1)
-            throw new BSONError('only accepts single character Uint8Array or Array');
-        let decodedByte;
-        if (typeof byteValue === 'string') {
-            decodedByte = byteValue.charCodeAt(0);
-        }
-        else if (typeof byteValue === 'number') {
-            decodedByte = byteValue;
-        }
-        else {
-            decodedByte = byteValue[0];
-        }
-        if (decodedByte < 0 || decodedByte > 255) {
-            throw new BSONError('only accepts number in a valid unsigned byte range 0-255');
-        }
-        if (this.buffer.byteLength > this.position) {
-            this.buffer[this.position++] = decodedByte;
-        }
-        else {
-            const newSpace = ByteUtils.allocate(Binary.BUFFER_SIZE + this.buffer.length);
-            newSpace.set(this.buffer, 0);
-            this.buffer = newSpace;
-            this.buffer[this.position++] = decodedByte;
-        }
-    }
-    write(sequence, offset) {
-        offset = typeof offset === 'number' ? offset : this.position;
-        if (this.buffer.byteLength < offset + sequence.length) {
-            const newSpace = ByteUtils.allocate(this.buffer.byteLength + sequence.length);
-            newSpace.set(this.buffer, 0);
-            this.buffer = newSpace;
-        }
-        if (ArrayBuffer.isView(sequence)) {
-            this.buffer.set(ByteUtils.toLocalBufferType(sequence), offset);
-            this.position =
-                offset + sequence.byteLength > this.position ? offset + sequence.length : this.position;
-        }
-        else if (typeof sequence === 'string') {
-            throw new BSONError('input cannot be string');
-        }
-    }
-    read(position, length) {
-        length = length && length > 0 ? length : this.position;
-        return this.buffer.slice(position, position + length);
-    }
-    value() {
-        return this.buffer.length === this.position
-            ? this.buffer
-            : this.buffer.subarray(0, this.position);
-    }
-    length() {
-        return this.position;
-    }
-    toJSON() {
-        return ByteUtils.toBase64(this.buffer);
-    }
-    toString(encoding) {
-        if (encoding === 'hex')
-            return ByteUtils.toHex(this.buffer);
-        if (encoding === 'base64')
-            return ByteUtils.toBase64(this.buffer);
-        if (encoding === 'utf8' || encoding === 'utf-8')
-            return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
-        return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
-    }
-    toExtendedJSON(options) {
-        options = options || {};
-        const base64String = ByteUtils.toBase64(this.buffer);
-        const subType = Number(this.sub_type).toString(16);
-        if (options.legacy) {
-            return {
-                $binary: base64String,
-                $type: subType.length === 1 ? '0' + subType : subType
-            };
-        }
-        return {
-            $binary: {
-                base64: base64String,
-                subType: subType.length === 1 ? '0' + subType : subType
-            }
-        };
-    }
-    toUUID() {
-        if (this.sub_type === Binary.SUBTYPE_UUID) {
-            return new UUID(this.buffer.slice(0, this.position));
-        }
-        throw new BSONError(`Binary sub_type "${this.sub_type}" is not supported for converting to UUID. Only "${Binary.SUBTYPE_UUID}" is currently supported.`);
-    }
-    static createFromHexString(hex, subType) {
-        return new Binary(ByteUtils.fromHex(hex), subType);
-    }
-    static createFromBase64(base64, subType) {
-        return new Binary(ByteUtils.fromBase64(base64), subType);
-    }
-    static fromExtendedJSON(doc, options) {
-        options = options || {};
-        let data;
-        let type;
-        if ('$binary' in doc) {
-            if (options.legacy && typeof doc.$binary === 'string' && '$type' in doc) {
-                type = doc.$type ? parseInt(doc.$type, 16) : 0;
-                data = ByteUtils.fromBase64(doc.$binary);
-            }
-            else {
-                if (typeof doc.$binary !== 'string') {
-                    type = doc.$binary.subType ? parseInt(doc.$binary.subType, 16) : 0;
-                    data = ByteUtils.fromBase64(doc.$binary.base64);
-                }
-            }
-        }
-        else if ('$uuid' in doc) {
-            type = 4;
-            data = UUID.bytesFromString(doc.$uuid);
-        }
-        if (!data) {
-            throw new BSONError(`Unexpected Binary Extended JSON format ${JSON.stringify(doc)}`);
-        }
-        return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const base64 = ByteUtils.toBase64(this.buffer.subarray(0, this.position));
-        const base64Arg = inspect(base64, options);
-        const subTypeArg = inspect(this.sub_type, options);
-        return `Binary.createFromBase64(${base64Arg}, ${subTypeArg})`;
-    }
-}
-Binary.BSON_BINARY_SUBTYPE_DEFAULT = 0;
-Binary.BUFFER_SIZE = 256;
-Binary.SUBTYPE_DEFAULT = 0;
-Binary.SUBTYPE_FUNCTION = 1;
-Binary.SUBTYPE_BYTE_ARRAY = 2;
-Binary.SUBTYPE_UUID_OLD = 3;
-Binary.SUBTYPE_UUID = 4;
-Binary.SUBTYPE_MD5 = 5;
-Binary.SUBTYPE_ENCRYPTED = 6;
-Binary.SUBTYPE_COLUMN = 7;
-Binary.SUBTYPE_USER_DEFINED = 128;
-const UUID_BYTE_LENGTH = 16;
-const UUID_WITHOUT_DASHES = /^[0-9A-F]{32}$/i;
-const UUID_WITH_DASHES = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
-class UUID extends Binary {
-    constructor(input) {
-        let bytes;
-        if (input == null) {
-            bytes = UUID.generate();
-        }
-        else if (input instanceof UUID) {
-            bytes = ByteUtils.toLocalBufferType(new Uint8Array(input.buffer));
-        }
-        else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) {
-            bytes = ByteUtils.toLocalBufferType(input);
-        }
-        else if (typeof input === 'string') {
-            bytes = UUID.bytesFromString(input);
-        }
-        else {
-            throw new BSONError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).');
-        }
-        super(bytes, BSON_BINARY_SUBTYPE_UUID_NEW);
-    }
-    get id() {
-        return this.buffer;
-    }
-    set id(value) {
-        this.buffer = value;
-    }
-    toHexString(includeDashes = true) {
-        if (includeDashes) {
-            return [
-                ByteUtils.toHex(this.buffer.subarray(0, 4)),
-                ByteUtils.toHex(this.buffer.subarray(4, 6)),
-                ByteUtils.toHex(this.buffer.subarray(6, 8)),
-                ByteUtils.toHex(this.buffer.subarray(8, 10)),
-                ByteUtils.toHex(this.buffer.subarray(10, 16))
-            ].join('-');
-        }
-        return ByteUtils.toHex(this.buffer);
-    }
-    toString(encoding) {
-        if (encoding === 'hex')
-            return ByteUtils.toHex(this.id);
-        if (encoding === 'base64')
-            return ByteUtils.toBase64(this.id);
-        return this.toHexString();
-    }
-    toJSON() {
-        return this.toHexString();
-    }
-    equals(otherId) {
-        if (!otherId) {
-            return false;
-        }
-        if (otherId instanceof UUID) {
-            return ByteUtils.equals(otherId.id, this.id);
-        }
-        try {
-            return ByteUtils.equals(new UUID(otherId).id, this.id);
-        }
-        catch {
-            return false;
-        }
-    }
-    toBinary() {
-        return new Binary(this.id, Binary.SUBTYPE_UUID);
-    }
-    static generate() {
-        const bytes = ByteUtils.randomBytes(UUID_BYTE_LENGTH);
-        bytes[6] = (bytes[6] & 0x0f) | 0x40;
-        bytes[8] = (bytes[8] & 0x3f) | 0x80;
-        return bytes;
-    }
-    static isValid(input) {
-        if (!input) {
-            return false;
-        }
-        if (typeof input === 'string') {
-            return UUID.isValidUUIDString(input);
-        }
-        if (isUint8Array(input)) {
-            return input.byteLength === UUID_BYTE_LENGTH;
-        }
-        return (input._bsontype === 'Binary' &&
-            input.sub_type === this.SUBTYPE_UUID &&
-            input.buffer.byteLength === 16);
-    }
-    static createFromHexString(hexString) {
-        const buffer = UUID.bytesFromString(hexString);
-        return new UUID(buffer);
-    }
-    static createFromBase64(base64) {
-        return new UUID(ByteUtils.fromBase64(base64));
-    }
-    static bytesFromString(representation) {
-        if (!UUID.isValidUUIDString(representation)) {
-            throw new BSONError('UUID string representation must be 32 hex digits or canonical hyphenated representation');
-        }
-        return ByteUtils.fromHex(representation.replace(/-/g, ''));
-    }
-    static isValidUUIDString(representation) {
-        return UUID_WITHOUT_DASHES.test(representation) || UUID_WITH_DASHES.test(representation);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new UUID(${inspect(this.toHexString(), options)})`;
-    }
-}
-
-class Code extends BSONValue {
-    get _bsontype() {
-        return 'Code';
-    }
-    constructor(code, scope) {
-        super();
-        this.code = code.toString();
-        this.scope = scope ?? null;
-    }
-    toJSON() {
-        if (this.scope != null) {
-            return { code: this.code, scope: this.scope };
-        }
-        return { code: this.code };
-    }
-    toExtendedJSON() {
-        if (this.scope) {
-            return { $code: this.code, $scope: this.scope };
-        }
-        return { $code: this.code };
-    }
-    static fromExtendedJSON(doc) {
-        return new Code(doc.$code, doc.$scope);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        let parametersString = inspect(this.code, options);
-        const multiLineFn = parametersString.includes('\n');
-        if (this.scope != null) {
-            parametersString += `,${multiLineFn ? '\n' : ' '}${inspect(this.scope, options)}`;
-        }
-        const endingNewline = multiLineFn && this.scope === null;
-        return `new Code(${multiLineFn ? '\n' : ''}${parametersString}${endingNewline ? '\n' : ''})`;
-    }
-}
-
-function isDBRefLike(value) {
-    return (value != null &&
-        typeof value === 'object' &&
-        '$id' in value &&
-        value.$id != null &&
-        '$ref' in value &&
-        typeof value.$ref === 'string' &&
-        (!('$db' in value) || ('$db' in value && typeof value.$db === 'string')));
-}
-class DBRef extends BSONValue {
-    get _bsontype() {
-        return 'DBRef';
-    }
-    constructor(collection, oid, db, fields) {
-        super();
-        const parts = collection.split('.');
-        if (parts.length === 2) {
-            db = parts.shift();
-            collection = parts.shift();
-        }
-        this.collection = collection;
-        this.oid = oid;
-        this.db = db;
-        this.fields = fields || {};
-    }
-    get namespace() {
-        return this.collection;
-    }
-    set namespace(value) {
-        this.collection = value;
-    }
-    toJSON() {
-        const o = Object.assign({
-            $ref: this.collection,
-            $id: this.oid
-        }, this.fields);
-        if (this.db != null)
-            o.$db = this.db;
-        return o;
-    }
-    toExtendedJSON(options) {
-        options = options || {};
-        let o = {
-            $ref: this.collection,
-            $id: this.oid
-        };
-        if (options.legacy) {
-            return o;
-        }
-        if (this.db)
-            o.$db = this.db;
-        o = Object.assign(o, this.fields);
-        return o;
-    }
-    static fromExtendedJSON(doc) {
-        const copy = Object.assign({}, doc);
-        delete copy.$ref;
-        delete copy.$id;
-        delete copy.$db;
-        return new DBRef(doc.$ref, doc.$id, doc.$db, copy);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const args = [
-            inspect(this.namespace, options),
-            inspect(this.oid, options),
-            ...(this.db ? [inspect(this.db, options)] : []),
-            ...(Object.keys(this.fields).length > 0 ? [inspect(this.fields, options)] : [])
-        ];
-        args[1] = inspect === defaultInspect ? `new ObjectId(${args[1]})` : args[1];
-        return `new DBRef(${args.join(', ')})`;
-    }
-}
-
-let wasm = undefined;
-try {
-    wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])), {}).exports;
-}
-catch {
-}
-const TWO_PWR_16_DBL = 1 << 16;
-const TWO_PWR_24_DBL = 1 << 24;
-const TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;
-const TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;
-const TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;
-const INT_CACHE = {};
-const UINT_CACHE = {};
-const MAX_INT64_STRING_LENGTH = 20;
-const DECIMAL_REG_EX = /^(\+?0|(\+|-)?[1-9][0-9]*)$/;
-class Long extends BSONValue {
-    get _bsontype() {
-        return 'Long';
-    }
-    get __isLong__() {
-        return true;
-    }
-    constructor(low = 0, high, unsigned) {
-        super();
-        if (typeof low === 'bigint') {
-            Object.assign(this, Long.fromBigInt(low, !!high));
-        }
-        else if (typeof low === 'string') {
-            Object.assign(this, Long.fromString(low, !!high));
-        }
-        else {
-            this.low = low | 0;
-            this.high = high | 0;
-            this.unsigned = !!unsigned;
-        }
-    }
-    static fromBits(lowBits, highBits, unsigned) {
-        return new Long(lowBits, highBits, unsigned);
-    }
-    static fromInt(value, unsigned) {
-        let obj, cachedObj, cache;
-        if (unsigned) {
-            value >>>= 0;
-            if ((cache = 0 <= value && value < 256)) {
-                cachedObj = UINT_CACHE[value];
-                if (cachedObj)
-                    return cachedObj;
-            }
-            obj = Long.fromBits(value, (value | 0) < 0 ? -1 : 0, true);
-            if (cache)
-                UINT_CACHE[value] = obj;
-            return obj;
-        }
-        else {
-            value |= 0;
-            if ((cache = -128 <= value && value < 128)) {
-                cachedObj = INT_CACHE[value];
-                if (cachedObj)
-                    return cachedObj;
-            }
-            obj = Long.fromBits(value, value < 0 ? -1 : 0, false);
-            if (cache)
-                INT_CACHE[value] = obj;
-            return obj;
-        }
-    }
-    static fromNumber(value, unsigned) {
-        if (isNaN(value))
-            return unsigned ? Long.UZERO : Long.ZERO;
-        if (unsigned) {
-            if (value < 0)
-                return Long.UZERO;
-            if (value >= TWO_PWR_64_DBL)
-                return Long.MAX_UNSIGNED_VALUE;
-        }
-        else {
-            if (value <= -TWO_PWR_63_DBL)
-                return Long.MIN_VALUE;
-            if (value + 1 >= TWO_PWR_63_DBL)
-                return Long.MAX_VALUE;
-        }
-        if (value < 0)
-            return Long.fromNumber(-value, unsigned).neg();
-        return Long.fromBits(value % TWO_PWR_32_DBL | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);
-    }
-    static fromBigInt(value, unsigned) {
-        return Long.fromString(value.toString(), unsigned);
-    }
-    static fromString(str, unsigned, radix) {
-        if (str.length === 0)
-            throw new BSONError('empty string');
-        if (str === 'NaN' || str === 'Infinity' || str === '+Infinity' || str === '-Infinity')
-            return Long.ZERO;
-        if (typeof unsigned === 'number') {
-            (radix = unsigned), (unsigned = false);
-        }
-        else {
-            unsigned = !!unsigned;
-        }
-        radix = radix || 10;
-        if (radix < 2 || 36 < radix)
-            throw new BSONError('radix');
-        let p;
-        if ((p = str.indexOf('-')) > 0)
-            throw new BSONError('interior hyphen');
-        else if (p === 0) {
-            return Long.fromString(str.substring(1), unsigned, radix).neg();
-        }
-        const radixToPower = Long.fromNumber(Math.pow(radix, 8));
-        let result = Long.ZERO;
-        for (let i = 0; i < str.length; i += 8) {
-            const size = Math.min(8, str.length - i), value = parseInt(str.substring(i, i + size), radix);
-            if (size < 8) {
-                const power = Long.fromNumber(Math.pow(radix, size));
-                result = result.mul(power).add(Long.fromNumber(value));
-            }
-            else {
-                result = result.mul(radixToPower);
-                result = result.add(Long.fromNumber(value));
-            }
-        }
-        result.unsigned = unsigned;
-        return result;
-    }
-    static fromBytes(bytes, unsigned, le) {
-        return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);
-    }
-    static fromBytesLE(bytes, unsigned) {
-        return new Long(bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24), bytes[4] | (bytes[5] << 8) | (bytes[6] << 16) | (bytes[7] << 24), unsigned);
-    }
-    static fromBytesBE(bytes, unsigned) {
-        return new Long((bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7], (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3], unsigned);
-    }
-    static isLong(value) {
-        return (value != null &&
-            typeof value === 'object' &&
-            '__isLong__' in value &&
-            value.__isLong__ === true);
-    }
-    static fromValue(val, unsigned) {
-        if (typeof val === 'number')
-            return Long.fromNumber(val, unsigned);
-        if (typeof val === 'string')
-            return Long.fromString(val, unsigned);
-        return Long.fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);
-    }
-    add(addend) {
-        if (!Long.isLong(addend))
-            addend = Long.fromValue(addend);
-        const a48 = this.high >>> 16;
-        const a32 = this.high & 0xffff;
-        const a16 = this.low >>> 16;
-        const a00 = this.low & 0xffff;
-        const b48 = addend.high >>> 16;
-        const b32 = addend.high & 0xffff;
-        const b16 = addend.low >>> 16;
-        const b00 = addend.low & 0xffff;
-        let c48 = 0, c32 = 0, c16 = 0, c00 = 0;
-        c00 += a00 + b00;
-        c16 += c00 >>> 16;
-        c00 &= 0xffff;
-        c16 += a16 + b16;
-        c32 += c16 >>> 16;
-        c16 &= 0xffff;
-        c32 += a32 + b32;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c48 += a48 + b48;
-        c48 &= 0xffff;
-        return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
-    }
-    and(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        return Long.fromBits(this.low & other.low, this.high & other.high, this.unsigned);
-    }
-    compare(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        if (this.eq(other))
-            return 0;
-        const thisNeg = this.isNegative(), otherNeg = other.isNegative();
-        if (thisNeg && !otherNeg)
-            return -1;
-        if (!thisNeg && otherNeg)
-            return 1;
-        if (!this.unsigned)
-            return this.sub(other).isNegative() ? -1 : 1;
-        return other.high >>> 0 > this.high >>> 0 ||
-            (other.high === this.high && other.low >>> 0 > this.low >>> 0)
-            ? -1
-            : 1;
-    }
-    comp(other) {
-        return this.compare(other);
-    }
-    divide(divisor) {
-        if (!Long.isLong(divisor))
-            divisor = Long.fromValue(divisor);
-        if (divisor.isZero())
-            throw new BSONError('division by zero');
-        if (wasm) {
-            if (!this.unsigned &&
-                this.high === -0x80000000 &&
-                divisor.low === -1 &&
-                divisor.high === -1) {
-                return this;
-            }
-            const low = (this.unsigned ? wasm.div_u : wasm.div_s)(this.low, this.high, divisor.low, divisor.high);
-            return Long.fromBits(low, wasm.get_high(), this.unsigned);
-        }
-        if (this.isZero())
-            return this.unsigned ? Long.UZERO : Long.ZERO;
-        let approx, rem, res;
-        if (!this.unsigned) {
-            if (this.eq(Long.MIN_VALUE)) {
-                if (divisor.eq(Long.ONE) || divisor.eq(Long.NEG_ONE))
-                    return Long.MIN_VALUE;
-                else if (divisor.eq(Long.MIN_VALUE))
-                    return Long.ONE;
-                else {
-                    const halfThis = this.shr(1);
-                    approx = halfThis.div(divisor).shl(1);
-                    if (approx.eq(Long.ZERO)) {
-                        return divisor.isNegative() ? Long.ONE : Long.NEG_ONE;
-                    }
-                    else {
-                        rem = this.sub(divisor.mul(approx));
-                        res = approx.add(rem.div(divisor));
-                        return res;
-                    }
-                }
-            }
-            else if (divisor.eq(Long.MIN_VALUE))
-                return this.unsigned ? Long.UZERO : Long.ZERO;
-            if (this.isNegative()) {
-                if (divisor.isNegative())
-                    return this.neg().div(divisor.neg());
-                return this.neg().div(divisor).neg();
-            }
-            else if (divisor.isNegative())
-                return this.div(divisor.neg()).neg();
-            res = Long.ZERO;
-        }
-        else {
-            if (!divisor.unsigned)
-                divisor = divisor.toUnsigned();
-            if (divisor.gt(this))
-                return Long.UZERO;
-            if (divisor.gt(this.shru(1)))
-                return Long.UONE;
-            res = Long.UZERO;
-        }
-        rem = this;
-        while (rem.gte(divisor)) {
-            approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));
-            const log2 = Math.ceil(Math.log(approx) / Math.LN2);
-            const delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48);
-            let approxRes = Long.fromNumber(approx);
-            let approxRem = approxRes.mul(divisor);
-            while (approxRem.isNegative() || approxRem.gt(rem)) {
-                approx -= delta;
-                approxRes = Long.fromNumber(approx, this.unsigned);
-                approxRem = approxRes.mul(divisor);
-            }
-            if (approxRes.isZero())
-                approxRes = Long.ONE;
-            res = res.add(approxRes);
-            rem = rem.sub(approxRem);
-        }
-        return res;
-    }
-    div(divisor) {
-        return this.divide(divisor);
-    }
-    equals(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1)
-            return false;
-        return this.high === other.high && this.low === other.low;
-    }
-    eq(other) {
-        return this.equals(other);
-    }
-    getHighBits() {
-        return this.high;
-    }
-    getHighBitsUnsigned() {
-        return this.high >>> 0;
-    }
-    getLowBits() {
-        return this.low;
-    }
-    getLowBitsUnsigned() {
-        return this.low >>> 0;
-    }
-    getNumBitsAbs() {
-        if (this.isNegative()) {
-            return this.eq(Long.MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();
-        }
-        const val = this.high !== 0 ? this.high : this.low;
-        let bit;
-        for (bit = 31; bit > 0; bit--)
-            if ((val & (1 << bit)) !== 0)
-                break;
-        return this.high !== 0 ? bit + 33 : bit + 1;
-    }
-    greaterThan(other) {
-        return this.comp(other) > 0;
-    }
-    gt(other) {
-        return this.greaterThan(other);
-    }
-    greaterThanOrEqual(other) {
-        return this.comp(other) >= 0;
-    }
-    gte(other) {
-        return this.greaterThanOrEqual(other);
-    }
-    ge(other) {
-        return this.greaterThanOrEqual(other);
-    }
-    isEven() {
-        return (this.low & 1) === 0;
-    }
-    isNegative() {
-        return !this.unsigned && this.high < 0;
-    }
-    isOdd() {
-        return (this.low & 1) === 1;
-    }
-    isPositive() {
-        return this.unsigned || this.high >= 0;
-    }
-    isZero() {
-        return this.high === 0 && this.low === 0;
-    }
-    lessThan(other) {
-        return this.comp(other) < 0;
-    }
-    lt(other) {
-        return this.lessThan(other);
-    }
-    lessThanOrEqual(other) {
-        return this.comp(other) <= 0;
-    }
-    lte(other) {
-        return this.lessThanOrEqual(other);
-    }
-    modulo(divisor) {
-        if (!Long.isLong(divisor))
-            divisor = Long.fromValue(divisor);
-        if (wasm) {
-            const low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(this.low, this.high, divisor.low, divisor.high);
-            return Long.fromBits(low, wasm.get_high(), this.unsigned);
-        }
-        return this.sub(this.div(divisor).mul(divisor));
-    }
-    mod(divisor) {
-        return this.modulo(divisor);
-    }
-    rem(divisor) {
-        return this.modulo(divisor);
-    }
-    multiply(multiplier) {
-        if (this.isZero())
-            return Long.ZERO;
-        if (!Long.isLong(multiplier))
-            multiplier = Long.fromValue(multiplier);
-        if (wasm) {
-            const low = wasm.mul(this.low, this.high, multiplier.low, multiplier.high);
-            return Long.fromBits(low, wasm.get_high(), this.unsigned);
-        }
-        if (multiplier.isZero())
-            return Long.ZERO;
-        if (this.eq(Long.MIN_VALUE))
-            return multiplier.isOdd() ? Long.MIN_VALUE : Long.ZERO;
-        if (multiplier.eq(Long.MIN_VALUE))
-            return this.isOdd() ? Long.MIN_VALUE : Long.ZERO;
-        if (this.isNegative()) {
-            if (multiplier.isNegative())
-                return this.neg().mul(multiplier.neg());
-            else
-                return this.neg().mul(multiplier).neg();
-        }
-        else if (multiplier.isNegative())
-            return this.mul(multiplier.neg()).neg();
-        if (this.lt(Long.TWO_PWR_24) && multiplier.lt(Long.TWO_PWR_24))
-            return Long.fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);
-        const a48 = this.high >>> 16;
-        const a32 = this.high & 0xffff;
-        const a16 = this.low >>> 16;
-        const a00 = this.low & 0xffff;
-        const b48 = multiplier.high >>> 16;
-        const b32 = multiplier.high & 0xffff;
-        const b16 = multiplier.low >>> 16;
-        const b00 = multiplier.low & 0xffff;
-        let c48 = 0, c32 = 0, c16 = 0, c00 = 0;
-        c00 += a00 * b00;
-        c16 += c00 >>> 16;
-        c00 &= 0xffff;
-        c16 += a16 * b00;
-        c32 += c16 >>> 16;
-        c16 &= 0xffff;
-        c16 += a00 * b16;
-        c32 += c16 >>> 16;
-        c16 &= 0xffff;
-        c32 += a32 * b00;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c32 += a16 * b16;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c32 += a00 * b32;
-        c48 += c32 >>> 16;
-        c32 &= 0xffff;
-        c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
-        c48 &= 0xffff;
-        return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
-    }
-    mul(multiplier) {
-        return this.multiply(multiplier);
-    }
-    negate() {
-        if (!this.unsigned && this.eq(Long.MIN_VALUE))
-            return Long.MIN_VALUE;
-        return this.not().add(Long.ONE);
-    }
-    neg() {
-        return this.negate();
-    }
-    not() {
-        return Long.fromBits(~this.low, ~this.high, this.unsigned);
-    }
-    notEquals(other) {
-        return !this.equals(other);
-    }
-    neq(other) {
-        return this.notEquals(other);
-    }
-    ne(other) {
-        return this.notEquals(other);
-    }
-    or(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        return Long.fromBits(this.low | other.low, this.high | other.high, this.unsigned);
-    }
-    shiftLeft(numBits) {
-        if (Long.isLong(numBits))
-            numBits = numBits.toInt();
-        if ((numBits &= 63) === 0)
-            return this;
-        else if (numBits < 32)
-            return Long.fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);
-        else
-            return Long.fromBits(0, this.low << (numBits - 32), this.unsigned);
-    }
-    shl(numBits) {
-        return this.shiftLeft(numBits);
-    }
-    shiftRight(numBits) {
-        if (Long.isLong(numBits))
-            numBits = numBits.toInt();
-        if ((numBits &= 63) === 0)
-            return this;
-        else if (numBits < 32)
-            return Long.fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);
-        else
-            return Long.fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);
-    }
-    shr(numBits) {
-        return this.shiftRight(numBits);
-    }
-    shiftRightUnsigned(numBits) {
-        if (Long.isLong(numBits))
-            numBits = numBits.toInt();
-        numBits &= 63;
-        if (numBits === 0)
-            return this;
-        else {
-            const high = this.high;
-            if (numBits < 32) {
-                const low = this.low;
-                return Long.fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);
-            }
-            else if (numBits === 32)
-                return Long.fromBits(high, 0, this.unsigned);
-            else
-                return Long.fromBits(high >>> (numBits - 32), 0, this.unsigned);
-        }
-    }
-    shr_u(numBits) {
-        return this.shiftRightUnsigned(numBits);
-    }
-    shru(numBits) {
-        return this.shiftRightUnsigned(numBits);
-    }
-    subtract(subtrahend) {
-        if (!Long.isLong(subtrahend))
-            subtrahend = Long.fromValue(subtrahend);
-        return this.add(subtrahend.neg());
-    }
-    sub(subtrahend) {
-        return this.subtract(subtrahend);
-    }
-    toInt() {
-        return this.unsigned ? this.low >>> 0 : this.low;
-    }
-    toNumber() {
-        if (this.unsigned)
-            return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);
-        return this.high * TWO_PWR_32_DBL + (this.low >>> 0);
-    }
-    toBigInt() {
-        return BigInt(this.toString());
-    }
-    toBytes(le) {
-        return le ? this.toBytesLE() : this.toBytesBE();
-    }
-    toBytesLE() {
-        const hi = this.high, lo = this.low;
-        return [
-            lo & 0xff,
-            (lo >>> 8) & 0xff,
-            (lo >>> 16) & 0xff,
-            lo >>> 24,
-            hi & 0xff,
-            (hi >>> 8) & 0xff,
-            (hi >>> 16) & 0xff,
-            hi >>> 24
-        ];
-    }
-    toBytesBE() {
-        const hi = this.high, lo = this.low;
-        return [
-            hi >>> 24,
-            (hi >>> 16) & 0xff,
-            (hi >>> 8) & 0xff,
-            hi & 0xff,
-            lo >>> 24,
-            (lo >>> 16) & 0xff,
-            (lo >>> 8) & 0xff,
-            lo & 0xff
-        ];
-    }
-    toSigned() {
-        if (!this.unsigned)
-            return this;
-        return Long.fromBits(this.low, this.high, false);
-    }
-    toString(radix) {
-        radix = radix || 10;
-        if (radix < 2 || 36 < radix)
-            throw new BSONError('radix');
-        if (this.isZero())
-            return '0';
-        if (this.isNegative()) {
-            if (this.eq(Long.MIN_VALUE)) {
-                const radixLong = Long.fromNumber(radix), div = this.div(radixLong), rem1 = div.mul(radixLong).sub(this);
-                return div.toString(radix) + rem1.toInt().toString(radix);
-            }
-            else
-                return '-' + this.neg().toString(radix);
-        }
-        const radixToPower = Long.fromNumber(Math.pow(radix, 6), this.unsigned);
-        let rem = this;
-        let result = '';
-        while (true) {
-            const remDiv = rem.div(radixToPower);
-            const intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0;
-            let digits = intval.toString(radix);
-            rem = remDiv;
-            if (rem.isZero()) {
-                return digits + result;
-            }
-            else {
-                while (digits.length < 6)
-                    digits = '0' + digits;
-                result = '' + digits + result;
-            }
-        }
-    }
-    toUnsigned() {
-        if (this.unsigned)
-            return this;
-        return Long.fromBits(this.low, this.high, true);
-    }
-    xor(other) {
-        if (!Long.isLong(other))
-            other = Long.fromValue(other);
-        return Long.fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);
-    }
-    eqz() {
-        return this.isZero();
-    }
-    le(other) {
-        return this.lessThanOrEqual(other);
-    }
-    toExtendedJSON(options) {
-        if (options && options.relaxed)
-            return this.toNumber();
-        return { $numberLong: this.toString() };
-    }
-    static fromExtendedJSON(doc, options) {
-        const { useBigInt64 = false, relaxed = true } = { ...options };
-        if (doc.$numberLong.length > MAX_INT64_STRING_LENGTH) {
-            throw new BSONError('$numberLong string is too long');
-        }
-        if (!DECIMAL_REG_EX.test(doc.$numberLong)) {
-            throw new BSONError(`$numberLong string "${doc.$numberLong}" is in an invalid format`);
-        }
-        if (useBigInt64) {
-            const bigIntResult = BigInt(doc.$numberLong);
-            return BigInt.asIntN(64, bigIntResult);
-        }
-        const longResult = Long.fromString(doc.$numberLong);
-        if (relaxed) {
-            return longResult.toNumber();
-        }
-        return longResult;
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const longVal = inspect(this.toString(), options);
-        const unsignedVal = this.unsigned ? `, ${inspect(this.unsigned, options)}` : '';
-        return `new Long(${longVal}${unsignedVal})`;
-    }
-}
-Long.TWO_PWR_24 = Long.fromInt(TWO_PWR_24_DBL);
-Long.MAX_UNSIGNED_VALUE = Long.fromBits(0xffffffff | 0, 0xffffffff | 0, true);
-Long.ZERO = Long.fromInt(0);
-Long.UZERO = Long.fromInt(0, true);
-Long.ONE = Long.fromInt(1);
-Long.UONE = Long.fromInt(1, true);
-Long.NEG_ONE = Long.fromInt(-1);
-Long.MAX_VALUE = Long.fromBits(0xffffffff | 0, 0x7fffffff | 0, false);
-Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0, false);
-
-const PARSE_STRING_REGEXP = /^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/;
-const PARSE_INF_REGEXP = /^(\+|-)?(Infinity|inf)$/i;
-const PARSE_NAN_REGEXP = /^(\+|-)?NaN$/i;
-const EXPONENT_MAX = 6111;
-const EXPONENT_MIN = -6176;
-const EXPONENT_BIAS = 6176;
-const MAX_DIGITS = 34;
-const NAN_BUFFER = ByteUtils.fromNumberArray([
-    0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-].reverse());
-const INF_NEGATIVE_BUFFER = ByteUtils.fromNumberArray([
-    0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-].reverse());
-const INF_POSITIVE_BUFFER = ByteUtils.fromNumberArray([
-    0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-].reverse());
-const EXPONENT_REGEX = /^([-+])?(\d+)?$/;
-const COMBINATION_MASK = 0x1f;
-const EXPONENT_MASK = 0x3fff;
-const COMBINATION_INFINITY = 30;
-const COMBINATION_NAN = 31;
-function isDigit(value) {
-    return !isNaN(parseInt(value, 10));
-}
-function divideu128(value) {
-    const DIVISOR = Long.fromNumber(1000 * 1000 * 1000);
-    let _rem = Long.fromNumber(0);
-    if (!value.parts[0] && !value.parts[1] && !value.parts[2] && !value.parts[3]) {
-        return { quotient: value, rem: _rem };
-    }
-    for (let i = 0; i <= 3; i++) {
-        _rem = _rem.shiftLeft(32);
-        _rem = _rem.add(new Long(value.parts[i], 0));
-        value.parts[i] = _rem.div(DIVISOR).low;
-        _rem = _rem.modulo(DIVISOR);
-    }
-    return { quotient: value, rem: _rem };
-}
-function multiply64x2(left, right) {
-    if (!left && !right) {
-        return { high: Long.fromNumber(0), low: Long.fromNumber(0) };
-    }
-    const leftHigh = left.shiftRightUnsigned(32);
-    const leftLow = new Long(left.getLowBits(), 0);
-    const rightHigh = right.shiftRightUnsigned(32);
-    const rightLow = new Long(right.getLowBits(), 0);
-    let productHigh = leftHigh.multiply(rightHigh);
-    let productMid = leftHigh.multiply(rightLow);
-    const productMid2 = leftLow.multiply(rightHigh);
-    let productLow = leftLow.multiply(rightLow);
-    productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
-    productMid = new Long(productMid.getLowBits(), 0)
-        .add(productMid2)
-        .add(productLow.shiftRightUnsigned(32));
-    productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
-    productLow = productMid.shiftLeft(32).add(new Long(productLow.getLowBits(), 0));
-    return { high: productHigh, low: productLow };
-}
-function lessThan(left, right) {
-    const uhleft = left.high >>> 0;
-    const uhright = right.high >>> 0;
-    if (uhleft < uhright) {
-        return true;
-    }
-    else if (uhleft === uhright) {
-        const ulleft = left.low >>> 0;
-        const ulright = right.low >>> 0;
-        if (ulleft < ulright)
-            return true;
-    }
-    return false;
-}
-function invalidErr(string, message) {
-    throw new BSONError(`"${string}" is not a valid Decimal128 string - ${message}`);
-}
-class Decimal128 extends BSONValue {
-    get _bsontype() {
-        return 'Decimal128';
-    }
-    constructor(bytes) {
-        super();
-        if (typeof bytes === 'string') {
-            this.bytes = Decimal128.fromString(bytes).bytes;
-        }
-        else if (isUint8Array(bytes)) {
-            if (bytes.byteLength !== 16) {
-                throw new BSONError('Decimal128 must take a Buffer of 16 bytes');
-            }
-            this.bytes = bytes;
-        }
-        else {
-            throw new BSONError('Decimal128 must take a Buffer or string');
-        }
-    }
-    static fromString(representation) {
-        return Decimal128._fromString(representation, { allowRounding: false });
-    }
-    static fromStringWithRounding(representation) {
-        return Decimal128._fromString(representation, { allowRounding: true });
-    }
-    static _fromString(representation, options) {
-        let isNegative = false;
-        let sawSign = false;
-        let sawRadix = false;
-        let foundNonZero = false;
-        let significantDigits = 0;
-        let nDigitsRead = 0;
-        let nDigits = 0;
-        let radixPosition = 0;
-        let firstNonZero = 0;
-        const digits = [0];
-        let nDigitsStored = 0;
-        let digitsInsert = 0;
-        let lastDigit = 0;
-        let exponent = 0;
-        let significandHigh = new Long(0, 0);
-        let significandLow = new Long(0, 0);
-        let biasedExponent = 0;
-        let index = 0;
-        if (representation.length >= 7000) {
-            throw new BSONError('' + representation + ' not a valid Decimal128 string');
-        }
-        const stringMatch = representation.match(PARSE_STRING_REGEXP);
-        const infMatch = representation.match(PARSE_INF_REGEXP);
-        const nanMatch = representation.match(PARSE_NAN_REGEXP);
-        if ((!stringMatch && !infMatch && !nanMatch) || representation.length === 0) {
-            throw new BSONError('' + representation + ' not a valid Decimal128 string');
-        }
-        if (stringMatch) {
-            const unsignedNumber = stringMatch[2];
-            const e = stringMatch[4];
-            const expSign = stringMatch[5];
-            const expNumber = stringMatch[6];
-            if (e && expNumber === undefined)
-                invalidErr(representation, 'missing exponent power');
-            if (e && unsignedNumber === undefined)
-                invalidErr(representation, 'missing exponent base');
-            if (e === undefined && (expSign || expNumber)) {
-                invalidErr(representation, 'missing e before exponent');
-            }
-        }
-        if (representation[index] === '+' || representation[index] === '-') {
-            sawSign = true;
-            isNegative = representation[index++] === '-';
-        }
-        if (!isDigit(representation[index]) && representation[index] !== '.') {
-            if (representation[index] === 'i' || representation[index] === 'I') {
-                return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
-            }
-            else if (representation[index] === 'N') {
-                return new Decimal128(NAN_BUFFER);
-            }
-        }
-        while (isDigit(representation[index]) || representation[index] === '.') {
-            if (representation[index] === '.') {
-                if (sawRadix)
-                    invalidErr(representation, 'contains multiple periods');
-                sawRadix = true;
-                index = index + 1;
-                continue;
-            }
-            if (nDigitsStored < MAX_DIGITS) {
-                if (representation[index] !== '0' || foundNonZero) {
-                    if (!foundNonZero) {
-                        firstNonZero = nDigitsRead;
-                    }
-                    foundNonZero = true;
-                    digits[digitsInsert++] = parseInt(representation[index], 10);
-                    nDigitsStored = nDigitsStored + 1;
-                }
-            }
-            if (foundNonZero)
-                nDigits = nDigits + 1;
-            if (sawRadix)
-                radixPosition = radixPosition + 1;
-            nDigitsRead = nDigitsRead + 1;
-            index = index + 1;
-        }
-        if (sawRadix && !nDigitsRead)
-            throw new BSONError('' + representation + ' not a valid Decimal128 string');
-        if (representation[index] === 'e' || representation[index] === 'E') {
-            const match = representation.substr(++index).match(EXPONENT_REGEX);
-            if (!match || !match[2])
-                return new Decimal128(NAN_BUFFER);
-            exponent = parseInt(match[0], 10);
-            index = index + match[0].length;
-        }
-        if (representation[index])
-            return new Decimal128(NAN_BUFFER);
-        if (!nDigitsStored) {
-            digits[0] = 0;
-            nDigits = 1;
-            nDigitsStored = 1;
-            significantDigits = 0;
-        }
-        else {
-            lastDigit = nDigitsStored - 1;
-            significantDigits = nDigits;
-            if (significantDigits !== 1) {
-                while (representation[firstNonZero + significantDigits - 1 + Number(sawSign) + Number(sawRadix)] === '0') {
-                    significantDigits = significantDigits - 1;
-                }
-            }
-        }
-        if (exponent <= radixPosition && radixPosition > exponent + (1 << 14)) {
-            exponent = EXPONENT_MIN;
-        }
-        else {
-            exponent = exponent - radixPosition;
-        }
-        while (exponent > EXPONENT_MAX) {
-            lastDigit = lastDigit + 1;
-            if (lastDigit >= MAX_DIGITS) {
-                if (significantDigits === 0) {
-                    exponent = EXPONENT_MAX;
-                    break;
-                }
-                invalidErr(representation, 'overflow');
-            }
-            exponent = exponent - 1;
-        }
-        if (options.allowRounding) {
-            while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
-                if (lastDigit === 0 && significantDigits < nDigitsStored) {
-                    exponent = EXPONENT_MIN;
-                    significantDigits = 0;
-                    break;
-                }
-                if (nDigitsStored < nDigits) {
-                    nDigits = nDigits - 1;
-                }
-                else {
-                    lastDigit = lastDigit - 1;
-                }
-                if (exponent < EXPONENT_MAX) {
-                    exponent = exponent + 1;
-                }
-                else {
-                    const digitsString = digits.join('');
-                    if (digitsString.match(/^0+$/)) {
-                        exponent = EXPONENT_MAX;
-                        break;
-                    }
-                    invalidErr(representation, 'overflow');
-                }
-            }
-            if (lastDigit + 1 < significantDigits) {
-                let endOfString = nDigitsRead;
-                if (sawRadix) {
-                    firstNonZero = firstNonZero + 1;
-                    endOfString = endOfString + 1;
-                }
-                if (sawSign) {
-                    firstNonZero = firstNonZero + 1;
-                    endOfString = endOfString + 1;
-                }
-                const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
-                let roundBit = 0;
-                if (roundDigit >= 5) {
-                    roundBit = 1;
-                    if (roundDigit === 5) {
-                        roundBit = digits[lastDigit] % 2 === 1 ? 1 : 0;
-                        for (let i = firstNonZero + lastDigit + 2; i < endOfString; i++) {
-                            if (parseInt(representation[i], 10)) {
-                                roundBit = 1;
-                                break;
-                            }
-                        }
-                    }
-                }
-                if (roundBit) {
-                    let dIdx = lastDigit;
-                    for (; dIdx >= 0; dIdx--) {
-                        if (++digits[dIdx] > 9) {
-                            digits[dIdx] = 0;
-                            if (dIdx === 0) {
-                                if (exponent < EXPONENT_MAX) {
-                                    exponent = exponent + 1;
-                                    digits[dIdx] = 1;
-                                }
-                                else {
-                                    return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
-                                }
-                            }
-                        }
-                        else {
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-        else {
-            while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
-                if (lastDigit === 0) {
-                    if (significantDigits === 0) {
-                        exponent = EXPONENT_MIN;
-                        break;
-                    }
-                    invalidErr(representation, 'exponent underflow');
-                }
-                if (nDigitsStored < nDigits) {
-                    if (representation[nDigits - 1 + Number(sawSign) + Number(sawRadix)] !== '0' &&
-                        significantDigits !== 0) {
-                        invalidErr(representation, 'inexact rounding');
-                    }
-                    nDigits = nDigits - 1;
-                }
-                else {
-                    if (digits[lastDigit] !== 0) {
-                        invalidErr(representation, 'inexact rounding');
-                    }
-                    lastDigit = lastDigit - 1;
-                }
-                if (exponent < EXPONENT_MAX) {
-                    exponent = exponent + 1;
-                }
-                else {
-                    invalidErr(representation, 'overflow');
-                }
-            }
-            if (lastDigit + 1 < significantDigits) {
-                if (sawRadix) {
-                    firstNonZero = firstNonZero + 1;
-                }
-                if (sawSign) {
-                    firstNonZero = firstNonZero + 1;
-                }
-                const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
-                if (roundDigit !== 0) {
-                    invalidErr(representation, 'inexact rounding');
-                }
-            }
-        }
-        significandHigh = Long.fromNumber(0);
-        significandLow = Long.fromNumber(0);
-        if (significantDigits === 0) {
-            significandHigh = Long.fromNumber(0);
-            significandLow = Long.fromNumber(0);
-        }
-        else if (lastDigit < 17) {
-            let dIdx = 0;
-            significandLow = Long.fromNumber(digits[dIdx++]);
-            significandHigh = new Long(0, 0);
-            for (; dIdx <= lastDigit; dIdx++) {
-                significandLow = significandLow.multiply(Long.fromNumber(10));
-                significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
-            }
-        }
-        else {
-            let dIdx = 0;
-            significandHigh = Long.fromNumber(digits[dIdx++]);
-            for (; dIdx <= lastDigit - 17; dIdx++) {
-                significandHigh = significandHigh.multiply(Long.fromNumber(10));
-                significandHigh = significandHigh.add(Long.fromNumber(digits[dIdx]));
-            }
-            significandLow = Long.fromNumber(digits[dIdx++]);
-            for (; dIdx <= lastDigit; dIdx++) {
-                significandLow = significandLow.multiply(Long.fromNumber(10));
-                significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
-            }
-        }
-        const significand = multiply64x2(significandHigh, Long.fromString('100000000000000000'));
-        significand.low = significand.low.add(significandLow);
-        if (lessThan(significand.low, significandLow)) {
-            significand.high = significand.high.add(Long.fromNumber(1));
-        }
-        biasedExponent = exponent + EXPONENT_BIAS;
-        const dec = { low: Long.fromNumber(0), high: Long.fromNumber(0) };
-        if (significand.high.shiftRightUnsigned(49).and(Long.fromNumber(1)).equals(Long.fromNumber(1))) {
-            dec.high = dec.high.or(Long.fromNumber(0x3).shiftLeft(61));
-            dec.high = dec.high.or(Long.fromNumber(biasedExponent).and(Long.fromNumber(0x3fff).shiftLeft(47)));
-            dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x7fffffffffff)));
-        }
-        else {
-            dec.high = dec.high.or(Long.fromNumber(biasedExponent & 0x3fff).shiftLeft(49));
-            dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x1ffffffffffff)));
-        }
-        dec.low = significand.low;
-        if (isNegative) {
-            dec.high = dec.high.or(Long.fromString('9223372036854775808'));
-        }
-        const buffer = ByteUtils.allocateUnsafe(16);
-        index = 0;
-        buffer[index++] = dec.low.low & 0xff;
-        buffer[index++] = (dec.low.low >> 8) & 0xff;
-        buffer[index++] = (dec.low.low >> 16) & 0xff;
-        buffer[index++] = (dec.low.low >> 24) & 0xff;
-        buffer[index++] = dec.low.high & 0xff;
-        buffer[index++] = (dec.low.high >> 8) & 0xff;
-        buffer[index++] = (dec.low.high >> 16) & 0xff;
-        buffer[index++] = (dec.low.high >> 24) & 0xff;
-        buffer[index++] = dec.high.low & 0xff;
-        buffer[index++] = (dec.high.low >> 8) & 0xff;
-        buffer[index++] = (dec.high.low >> 16) & 0xff;
-        buffer[index++] = (dec.high.low >> 24) & 0xff;
-        buffer[index++] = dec.high.high & 0xff;
-        buffer[index++] = (dec.high.high >> 8) & 0xff;
-        buffer[index++] = (dec.high.high >> 16) & 0xff;
-        buffer[index++] = (dec.high.high >> 24) & 0xff;
-        return new Decimal128(buffer);
-    }
-    toString() {
-        let biased_exponent;
-        let significand_digits = 0;
-        const significand = new Array(36);
-        for (let i = 0; i < significand.length; i++)
-            significand[i] = 0;
-        let index = 0;
-        let is_zero = false;
-        let significand_msb;
-        let significand128 = { parts: [0, 0, 0, 0] };
-        let j, k;
-        const string = [];
-        index = 0;
-        const buffer = this.bytes;
-        const low = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        const midl = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        const midh = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        const high = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-        index = 0;
-        const dec = {
-            low: new Long(low, midl),
-            high: new Long(midh, high)
-        };
-        if (dec.high.lessThan(Long.ZERO)) {
-            string.push('-');
-        }
-        const combination = (high >> 26) & COMBINATION_MASK;
-        if (combination >> 3 === 3) {
-            if (combination === COMBINATION_INFINITY) {
-                return string.join('') + 'Infinity';
-            }
-            else if (combination === COMBINATION_NAN) {
-                return 'NaN';
-            }
-            else {
-                biased_exponent = (high >> 15) & EXPONENT_MASK;
-                significand_msb = 0x08 + ((high >> 14) & 0x01);
-            }
-        }
-        else {
-            significand_msb = (high >> 14) & 0x07;
-            biased_exponent = (high >> 17) & EXPONENT_MASK;
-        }
-        const exponent = biased_exponent - EXPONENT_BIAS;
-        significand128.parts[0] = (high & 0x3fff) + ((significand_msb & 0xf) << 14);
-        significand128.parts[1] = midh;
-        significand128.parts[2] = midl;
-        significand128.parts[3] = low;
-        if (significand128.parts[0] === 0 &&
-            significand128.parts[1] === 0 &&
-            significand128.parts[2] === 0 &&
-            significand128.parts[3] === 0) {
-            is_zero = true;
-        }
-        else {
-            for (k = 3; k >= 0; k--) {
-                let least_digits = 0;
-                const result = divideu128(significand128);
-                significand128 = result.quotient;
-                least_digits = result.rem.low;
-                if (!least_digits)
-                    continue;
-                for (j = 8; j >= 0; j--) {
-                    significand[k * 9 + j] = least_digits % 10;
-                    least_digits = Math.floor(least_digits / 10);
-                }
-            }
-        }
-        if (is_zero) {
-            significand_digits = 1;
-            significand[index] = 0;
-        }
-        else {
-            significand_digits = 36;
-            while (!significand[index]) {
-                significand_digits = significand_digits - 1;
-                index = index + 1;
-            }
-        }
-        const scientific_exponent = significand_digits - 1 + exponent;
-        if (scientific_exponent >= 34 || scientific_exponent <= -7 || exponent > 0) {
-            if (significand_digits > 34) {
-                string.push(`${0}`);
-                if (exponent > 0)
-                    string.push(`E+${exponent}`);
-                else if (exponent < 0)
-                    string.push(`E${exponent}`);
-                return string.join('');
-            }
-            string.push(`${significand[index++]}`);
-            significand_digits = significand_digits - 1;
-            if (significand_digits) {
-                string.push('.');
-            }
-            for (let i = 0; i < significand_digits; i++) {
-                string.push(`${significand[index++]}`);
-            }
-            string.push('E');
-            if (scientific_exponent > 0) {
-                string.push(`+${scientific_exponent}`);
-            }
-            else {
-                string.push(`${scientific_exponent}`);
-            }
-        }
-        else {
-            if (exponent >= 0) {
-                for (let i = 0; i < significand_digits; i++) {
-                    string.push(`${significand[index++]}`);
-                }
-            }
-            else {
-                let radix_position = significand_digits + exponent;
-                if (radix_position > 0) {
-                    for (let i = 0; i < radix_position; i++) {
-                        string.push(`${significand[index++]}`);
-                    }
-                }
-                else {
-                    string.push('0');
-                }
-                string.push('.');
-                while (radix_position++ < 0) {
-                    string.push('0');
-                }
-                for (let i = 0; i < significand_digits - Math.max(radix_position - 1, 0); i++) {
-                    string.push(`${significand[index++]}`);
-                }
-            }
-        }
-        return string.join('');
-    }
-    toJSON() {
-        return { $numberDecimal: this.toString() };
-    }
-    toExtendedJSON() {
-        return { $numberDecimal: this.toString() };
-    }
-    static fromExtendedJSON(doc) {
-        return Decimal128.fromString(doc.$numberDecimal);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const d128string = inspect(this.toString(), options);
-        return `new Decimal128(${d128string})`;
-    }
-}
-
-class Double extends BSONValue {
-    get _bsontype() {
-        return 'Double';
-    }
-    constructor(value) {
-        super();
-        if (value instanceof Number) {
-            value = value.valueOf();
-        }
-        this.value = +value;
-    }
-    valueOf() {
-        return this.value;
-    }
-    toJSON() {
-        return this.value;
-    }
-    toString(radix) {
-        return this.value.toString(radix);
-    }
-    toExtendedJSON(options) {
-        if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) {
-            return this.value;
-        }
-        if (Object.is(Math.sign(this.value), -0)) {
-            return { $numberDouble: '-0.0' };
-        }
-        return {
-            $numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString()
-        };
-    }
-    static fromExtendedJSON(doc, options) {
-        const doubleValue = parseFloat(doc.$numberDouble);
-        return options && options.relaxed ? doubleValue : new Double(doubleValue);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new Double(${inspect(this.value, options)})`;
-    }
-}
-
-class Int32 extends BSONValue {
-    get _bsontype() {
-        return 'Int32';
-    }
-    constructor(value) {
-        super();
-        if (value instanceof Number) {
-            value = value.valueOf();
-        }
-        this.value = +value | 0;
-    }
-    valueOf() {
-        return this.value;
-    }
-    toString(radix) {
-        return this.value.toString(radix);
-    }
-    toJSON() {
-        return this.value;
-    }
-    toExtendedJSON(options) {
-        if (options && (options.relaxed || options.legacy))
-            return this.value;
-        return { $numberInt: this.value.toString() };
-    }
-    static fromExtendedJSON(doc, options) {
-        return options && options.relaxed ? parseInt(doc.$numberInt, 10) : new Int32(doc.$numberInt);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new Int32(${inspect(this.value, options)})`;
-    }
-}
-
-class MaxKey extends BSONValue {
-    get _bsontype() {
-        return 'MaxKey';
-    }
-    toExtendedJSON() {
-        return { $maxKey: 1 };
-    }
-    static fromExtendedJSON() {
-        return new MaxKey();
-    }
-    inspect() {
-        return 'new MaxKey()';
-    }
-}
-
-class MinKey extends BSONValue {
-    get _bsontype() {
-        return 'MinKey';
-    }
-    toExtendedJSON() {
-        return { $minKey: 1 };
-    }
-    static fromExtendedJSON() {
-        return new MinKey();
-    }
-    inspect() {
-        return 'new MinKey()';
-    }
-}
-
-const FLOAT = new Float64Array(1);
-const FLOAT_BYTES = new Uint8Array(FLOAT.buffer, 0, 8);
-const NumberUtils = {
-    getInt32LE(source, offset) {
-        return (source[offset] |
-            (source[offset + 1] << 8) |
-            (source[offset + 2] << 16) |
-            (source[offset + 3] << 24));
-    },
-    getUint32LE(source, offset) {
-        return (source[offset] +
-            source[offset + 1] * 256 +
-            source[offset + 2] * 65536 +
-            source[offset + 3] * 16777216);
-    },
-    getUint32BE(source, offset) {
-        return (source[offset + 3] +
-            source[offset + 2] * 256 +
-            source[offset + 1] * 65536 +
-            source[offset] * 16777216);
-    },
-    getBigInt64LE(source, offset) {
-        const lo = NumberUtils.getUint32LE(source, offset);
-        const hi = NumberUtils.getUint32LE(source, offset + 4);
-        return (BigInt(hi) << BigInt(32)) + BigInt(lo);
-    },
-    getFloat64LE(source, offset) {
-        FLOAT_BYTES[0] = source[offset];
-        FLOAT_BYTES[1] = source[offset + 1];
-        FLOAT_BYTES[2] = source[offset + 2];
-        FLOAT_BYTES[3] = source[offset + 3];
-        FLOAT_BYTES[4] = source[offset + 4];
-        FLOAT_BYTES[5] = source[offset + 5];
-        FLOAT_BYTES[6] = source[offset + 6];
-        FLOAT_BYTES[7] = source[offset + 7];
-        return FLOAT[0];
-    },
-    setInt32BE(destination, offset, value) {
-        destination[offset + 3] = value;
-        value >>>= 8;
-        destination[offset + 2] = value;
-        value >>>= 8;
-        destination[offset + 1] = value;
-        value >>>= 8;
-        destination[offset] = value;
-        return 4;
-    },
-    setInt32LE(destination, offset, value) {
-        destination[offset] = value;
-        value >>>= 8;
-        destination[offset + 1] = value;
-        value >>>= 8;
-        destination[offset + 2] = value;
-        value >>>= 8;
-        destination[offset + 3] = value;
-        return 4;
-    },
-    setBigInt64LE(destination, offset, value) {
-        const mask32bits = BigInt(4294967295);
-        let lo = Number(value & mask32bits);
-        destination[offset] = lo;
-        lo >>= 8;
-        destination[offset + 1] = lo;
-        lo >>= 8;
-        destination[offset + 2] = lo;
-        lo >>= 8;
-        destination[offset + 3] = lo;
-        let hi = Number((value >> BigInt(32)) & mask32bits);
-        destination[offset + 4] = hi;
-        hi >>= 8;
-        destination[offset + 5] = hi;
-        hi >>= 8;
-        destination[offset + 6] = hi;
-        hi >>= 8;
-        destination[offset + 7] = hi;
-        return 8;
-    },
-    setFloat64LE(destination, offset, value) {
-        FLOAT[0] = value;
-        destination[offset] = FLOAT_BYTES[0];
-        destination[offset + 1] = FLOAT_BYTES[1];
-        destination[offset + 2] = FLOAT_BYTES[2];
-        destination[offset + 3] = FLOAT_BYTES[3];
-        destination[offset + 4] = FLOAT_BYTES[4];
-        destination[offset + 5] = FLOAT_BYTES[5];
-        destination[offset + 6] = FLOAT_BYTES[6];
-        destination[offset + 7] = FLOAT_BYTES[7];
-        return 8;
-    }
-};
-
-const checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$');
-let PROCESS_UNIQUE = null;
-class ObjectId extends BSONValue {
-    get _bsontype() {
-        return 'ObjectId';
-    }
-    constructor(inputId) {
-        super();
-        let workingId;
-        if (typeof inputId === 'object' && inputId && 'id' in inputId) {
-            if (typeof inputId.id !== 'string' && !ArrayBuffer.isView(inputId.id)) {
-                throw new BSONError('Argument passed in must have an id that is of type string or Buffer');
-            }
-            if ('toHexString' in inputId && typeof inputId.toHexString === 'function') {
-                workingId = ByteUtils.fromHex(inputId.toHexString());
-            }
-            else {
-                workingId = inputId.id;
-            }
-        }
-        else {
-            workingId = inputId;
-        }
-        if (workingId == null || typeof workingId === 'number') {
-            this.buffer = ObjectId.generate(typeof workingId === 'number' ? workingId : undefined);
-        }
-        else if (ArrayBuffer.isView(workingId) && workingId.byteLength === 12) {
-            this.buffer = ByteUtils.toLocalBufferType(workingId);
-        }
-        else if (typeof workingId === 'string') {
-            if (workingId.length === 24 && checkForHexRegExp.test(workingId)) {
-                this.buffer = ByteUtils.fromHex(workingId);
-            }
-            else {
-                throw new BSONError('input must be a 24 character hex string, 12 byte Uint8Array, or an integer');
-            }
-        }
-        else {
-            throw new BSONError('Argument passed in does not match the accepted types');
-        }
-        if (ObjectId.cacheHexString) {
-            this.__id = ByteUtils.toHex(this.id);
-        }
-    }
-    get id() {
-        return this.buffer;
-    }
-    set id(value) {
-        this.buffer = value;
-        if (ObjectId.cacheHexString) {
-            this.__id = ByteUtils.toHex(value);
-        }
-    }
-    toHexString() {
-        if (ObjectId.cacheHexString && this.__id) {
-            return this.__id;
-        }
-        const hexString = ByteUtils.toHex(this.id);
-        if (ObjectId.cacheHexString && !this.__id) {
-            this.__id = hexString;
-        }
-        return hexString;
-    }
-    static getInc() {
-        return (ObjectId.index = (ObjectId.index + 1) % 0xffffff);
-    }
-    static generate(time) {
-        if ('number' !== typeof time) {
-            time = Math.floor(Date.now() / 1000);
-        }
-        const inc = ObjectId.getInc();
-        const buffer = ByteUtils.allocateUnsafe(12);
-        NumberUtils.setInt32BE(buffer, 0, time);
-        if (PROCESS_UNIQUE === null) {
-            PROCESS_UNIQUE = ByteUtils.randomBytes(5);
-        }
-        buffer[4] = PROCESS_UNIQUE[0];
-        buffer[5] = PROCESS_UNIQUE[1];
-        buffer[6] = PROCESS_UNIQUE[2];
-        buffer[7] = PROCESS_UNIQUE[3];
-        buffer[8] = PROCESS_UNIQUE[4];
-        buffer[11] = inc & 0xff;
-        buffer[10] = (inc >> 8) & 0xff;
-        buffer[9] = (inc >> 16) & 0xff;
-        return buffer;
-    }
-    toString(encoding) {
-        if (encoding === 'base64')
-            return ByteUtils.toBase64(this.id);
-        if (encoding === 'hex')
-            return this.toHexString();
-        return this.toHexString();
-    }
-    toJSON() {
-        return this.toHexString();
-    }
-    static is(variable) {
-        return (variable != null &&
-            typeof variable === 'object' &&
-            '_bsontype' in variable &&
-            variable._bsontype === 'ObjectId');
-    }
-    equals(otherId) {
-        if (otherId === undefined || otherId === null) {
-            return false;
-        }
-        if (ObjectId.is(otherId)) {
-            return (this.buffer[11] === otherId.buffer[11] && ByteUtils.equals(this.buffer, otherId.buffer));
-        }
-        if (typeof otherId === 'string') {
-            return otherId.toLowerCase() === this.toHexString();
-        }
-        if (typeof otherId === 'object' && typeof otherId.toHexString === 'function') {
-            const otherIdString = otherId.toHexString();
-            const thisIdString = this.toHexString();
-            return typeof otherIdString === 'string' && otherIdString.toLowerCase() === thisIdString;
-        }
-        return false;
-    }
-    getTimestamp() {
-        const timestamp = new Date();
-        const time = NumberUtils.getUint32BE(this.buffer, 0);
-        timestamp.setTime(Math.floor(time) * 1000);
-        return timestamp;
-    }
-    static createPk() {
-        return new ObjectId();
-    }
-    serializeInto(uint8array, index) {
-        uint8array[index] = this.buffer[0];
-        uint8array[index + 1] = this.buffer[1];
-        uint8array[index + 2] = this.buffer[2];
-        uint8array[index + 3] = this.buffer[3];
-        uint8array[index + 4] = this.buffer[4];
-        uint8array[index + 5] = this.buffer[5];
-        uint8array[index + 6] = this.buffer[6];
-        uint8array[index + 7] = this.buffer[7];
-        uint8array[index + 8] = this.buffer[8];
-        uint8array[index + 9] = this.buffer[9];
-        uint8array[index + 10] = this.buffer[10];
-        uint8array[index + 11] = this.buffer[11];
-        return 12;
-    }
-    static createFromTime(time) {
-        const buffer = ByteUtils.allocate(12);
-        for (let i = 11; i >= 4; i--)
-            buffer[i] = 0;
-        NumberUtils.setInt32BE(buffer, 0, time);
-        return new ObjectId(buffer);
-    }
-    static createFromHexString(hexString) {
-        if (hexString?.length !== 24) {
-            throw new BSONError('hex string must be 24 characters');
-        }
-        return new ObjectId(ByteUtils.fromHex(hexString));
-    }
-    static createFromBase64(base64) {
-        if (base64?.length !== 16) {
-            throw new BSONError('base64 string must be 16 characters');
-        }
-        return new ObjectId(ByteUtils.fromBase64(base64));
-    }
-    static isValid(id) {
-        if (id == null)
-            return false;
-        try {
-            new ObjectId(id);
-            return true;
-        }
-        catch {
-            return false;
-        }
-    }
-    toExtendedJSON() {
-        if (this.toHexString)
-            return { $oid: this.toHexString() };
-        return { $oid: this.toString('hex') };
-    }
-    static fromExtendedJSON(doc) {
-        return new ObjectId(doc.$oid);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new ObjectId(${inspect(this.toHexString(), options)})`;
-    }
-}
-ObjectId.index = Math.floor(Math.random() * 0xffffff);
-
-function internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined) {
-    let totalLength = 4 + 1;
-    if (Array.isArray(object)) {
-        for (let i = 0; i < object.length; i++) {
-            totalLength += calculateElement(i.toString(), object[i], serializeFunctions, true, ignoreUndefined);
-        }
-    }
-    else {
-        if (typeof object?.toBSON === 'function') {
-            object = object.toBSON();
-        }
-        for (const key of Object.keys(object)) {
-            totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined);
-        }
-    }
-    return totalLength;
-}
-function calculateElement(name, value, serializeFunctions = false, isArray = false, ignoreUndefined = false) {
-    if (typeof value?.toBSON === 'function') {
-        value = value.toBSON();
-    }
-    switch (typeof value) {
-        case 'string':
-            return 1 + ByteUtils.utf8ByteLength(name) + 1 + 4 + ByteUtils.utf8ByteLength(value) + 1;
-        case 'number':
-            if (Math.floor(value) === value &&
-                value >= JS_INT_MIN &&
-                value <= JS_INT_MAX) {
-                if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
-                    return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (4 + 1);
-                }
-                else {
-                    return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-                }
-            }
-            else {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-            }
-        case 'undefined':
-            if (isArray || !ignoreUndefined)
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
-            return 0;
-        case 'boolean':
-            return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 1);
-        case 'object':
-            if (value != null &&
-                typeof value._bsontype === 'string' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value == null || value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
-            }
-            else if (value._bsontype === 'ObjectId') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (12 + 1);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-            }
-            else if (ArrayBuffer.isView(value) ||
-                value instanceof ArrayBuffer ||
-                isAnyArrayBuffer(value)) {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 4 + 1) + value.byteLength);
-            }
-            else if (value._bsontype === 'Long' ||
-                value._bsontype === 'Double' ||
-                value._bsontype === 'Timestamp') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-            }
-            else if (value._bsontype === 'Decimal128') {
-                return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (16 + 1);
-            }
-            else if (value._bsontype === 'Code') {
-                if (value.scope != null && Object.keys(value.scope).length > 0) {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                        1 +
-                        4 +
-                        4 +
-                        ByteUtils.utf8ByteLength(value.code.toString()) +
-                        1 +
-                        internalCalculateObjectSize(value.scope, serializeFunctions, ignoreUndefined));
-                }
-                else {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                        1 +
-                        4 +
-                        ByteUtils.utf8ByteLength(value.code.toString()) +
-                        1);
-                }
-            }
-            else if (value._bsontype === 'Binary') {
-                const binary = value;
-                if (binary.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                        (binary.position + 1 + 4 + 1 + 4));
-                }
-                else {
-                    return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (binary.position + 1 + 4 + 1));
-                }
-            }
-            else if (value._bsontype === 'Symbol') {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    ByteUtils.utf8ByteLength(value.value) +
-                    4 +
-                    1 +
-                    1);
-            }
-            else if (value._bsontype === 'DBRef') {
-                const ordered_values = Object.assign({
-                    $ref: value.collection,
-                    $id: value.oid
-                }, value.fields);
-                if (value.db != null) {
-                    ordered_values['$db'] = value.db;
-                }
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    internalCalculateObjectSize(ordered_values, serializeFunctions, ignoreUndefined));
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    ByteUtils.utf8ByteLength(value.source) +
-                    1 +
-                    (value.global ? 1 : 0) +
-                    (value.ignoreCase ? 1 : 0) +
-                    (value.multiline ? 1 : 0) +
-                    1);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    ByteUtils.utf8ByteLength(value.pattern) +
-                    1 +
-                    ByteUtils.utf8ByteLength(value.options) +
-                    1);
-            }
-            else {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    internalCalculateObjectSize(value, serializeFunctions, ignoreUndefined) +
-                    1);
-            }
-        case 'function':
-            if (serializeFunctions) {
-                return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-                    1 +
-                    4 +
-                    ByteUtils.utf8ByteLength(value.toString()) +
-                    1);
-            }
-    }
-    return 0;
-}
-
-function alphabetize(str) {
-    return str.split('').sort().join('');
-}
-class BSONRegExp extends BSONValue {
-    get _bsontype() {
-        return 'BSONRegExp';
-    }
-    constructor(pattern, options) {
-        super();
-        this.pattern = pattern;
-        this.options = alphabetize(options ?? '');
-        if (this.pattern.indexOf('\x00') !== -1) {
-            throw new BSONError(`BSON Regex patterns cannot contain null bytes, found: ${JSON.stringify(this.pattern)}`);
-        }
-        if (this.options.indexOf('\x00') !== -1) {
-            throw new BSONError(`BSON Regex options cannot contain null bytes, found: ${JSON.stringify(this.options)}`);
-        }
-        for (let i = 0; i < this.options.length; i++) {
-            if (!(this.options[i] === 'i' ||
-                this.options[i] === 'm' ||
-                this.options[i] === 'x' ||
-                this.options[i] === 'l' ||
-                this.options[i] === 's' ||
-                this.options[i] === 'u')) {
-                throw new BSONError(`The regular expression option [${this.options[i]}] is not supported`);
-            }
-        }
-    }
-    static parseOptions(options) {
-        return options ? options.split('').sort().join('') : '';
-    }
-    toExtendedJSON(options) {
-        options = options || {};
-        if (options.legacy) {
-            return { $regex: this.pattern, $options: this.options };
-        }
-        return { $regularExpression: { pattern: this.pattern, options: this.options } };
-    }
-    static fromExtendedJSON(doc) {
-        if ('$regex' in doc) {
-            if (typeof doc.$regex !== 'string') {
-                if (doc.$regex._bsontype === 'BSONRegExp') {
-                    return doc;
-                }
-            }
-            else {
-                return new BSONRegExp(doc.$regex, BSONRegExp.parseOptions(doc.$options));
-            }
-        }
-        if ('$regularExpression' in doc) {
-            return new BSONRegExp(doc.$regularExpression.pattern, BSONRegExp.parseOptions(doc.$regularExpression.options));
-        }
-        throw new BSONError(`Unexpected BSONRegExp EJSON object form: ${JSON.stringify(doc)}`);
-    }
-    inspect(depth, options, inspect) {
-        const stylize = getStylizeFunction(options) ?? (v => v);
-        inspect ??= defaultInspect;
-        const pattern = stylize(inspect(this.pattern), 'regexp');
-        const flags = stylize(inspect(this.options), 'regexp');
-        return `new BSONRegExp(${pattern}, ${flags})`;
-    }
-}
-
-class BSONSymbol extends BSONValue {
-    get _bsontype() {
-        return 'BSONSymbol';
-    }
-    constructor(value) {
-        super();
-        this.value = value;
-    }
-    valueOf() {
-        return this.value;
-    }
-    toString() {
-        return this.value;
-    }
-    toJSON() {
-        return this.value;
-    }
-    toExtendedJSON() {
-        return { $symbol: this.value };
-    }
-    static fromExtendedJSON(doc) {
-        return new BSONSymbol(doc.$symbol);
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        return `new BSONSymbol(${inspect(this.value, options)})`;
-    }
-}
-
-const LongWithoutOverridesClass = Long;
-class Timestamp extends LongWithoutOverridesClass {
-    get _bsontype() {
-        return 'Timestamp';
-    }
-    constructor(low) {
-        if (low == null) {
-            super(0, 0, true);
-        }
-        else if (typeof low === 'bigint') {
-            super(low, true);
-        }
-        else if (Long.isLong(low)) {
-            super(low.low, low.high, true);
-        }
-        else if (typeof low === 'object' && 't' in low && 'i' in low) {
-            if (typeof low.t !== 'number' && (typeof low.t !== 'object' || low.t._bsontype !== 'Int32')) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide t as a number');
-            }
-            if (typeof low.i !== 'number' && (typeof low.i !== 'object' || low.i._bsontype !== 'Int32')) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide i as a number');
-            }
-            const t = Number(low.t);
-            const i = Number(low.i);
-            if (t < 0 || Number.isNaN(t)) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide a positive t');
-            }
-            if (i < 0 || Number.isNaN(i)) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide a positive i');
-            }
-            if (t > 4294967295) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide t equal or less than uint32 max');
-            }
-            if (i > 4294967295) {
-                throw new BSONError('Timestamp constructed from { t, i } must provide i equal or less than uint32 max');
-            }
-            super(i, t, true);
-        }
-        else {
-            throw new BSONError('A Timestamp can only be constructed with: bigint, Long, or { t: number; i: number }');
-        }
-    }
-    toJSON() {
-        return {
-            $timestamp: this.toString()
-        };
-    }
-    static fromInt(value) {
-        return new Timestamp(Long.fromInt(value, true));
-    }
-    static fromNumber(value) {
-        return new Timestamp(Long.fromNumber(value, true));
-    }
-    static fromBits(lowBits, highBits) {
-        return new Timestamp({ i: lowBits, t: highBits });
-    }
-    static fromString(str, optRadix) {
-        return new Timestamp(Long.fromString(str, true, optRadix));
-    }
-    toExtendedJSON() {
-        return { $timestamp: { t: this.high >>> 0, i: this.low >>> 0 } };
-    }
-    static fromExtendedJSON(doc) {
-        const i = Long.isLong(doc.$timestamp.i)
-            ? doc.$timestamp.i.getLowBitsUnsigned()
-            : doc.$timestamp.i;
-        const t = Long.isLong(doc.$timestamp.t)
-            ? doc.$timestamp.t.getLowBitsUnsigned()
-            : doc.$timestamp.t;
-        return new Timestamp({ t, i });
-    }
-    inspect(depth, options, inspect) {
-        inspect ??= defaultInspect;
-        const t = inspect(this.high >>> 0, options);
-        const i = inspect(this.low >>> 0, options);
-        return `new Timestamp({ t: ${t}, i: ${i} })`;
-    }
-}
-Timestamp.MAX_VALUE = Long.MAX_UNSIGNED_VALUE;
-
-const JS_INT_MAX_LONG = Long.fromNumber(JS_INT_MAX);
-const JS_INT_MIN_LONG = Long.fromNumber(JS_INT_MIN);
-function internalDeserialize(buffer, options, isArray) {
-    options = options == null ? {} : options;
-    const index = options && options.index ? options.index : 0;
-    const size = NumberUtils.getInt32LE(buffer, index);
-    if (size < 5) {
-        throw new BSONError(`bson size must be >= 5, is ${size}`);
-    }
-    if (options.allowObjectSmallerThanBufferSize && buffer.length < size) {
-        throw new BSONError(`buffer length ${buffer.length} must be >= bson size ${size}`);
-    }
-    if (!options.allowObjectSmallerThanBufferSize && buffer.length !== size) {
-        throw new BSONError(`buffer length ${buffer.length} must === bson size ${size}`);
-    }
-    if (size + index > buffer.byteLength) {
-        throw new BSONError(`(bson size ${size} + options.index ${index} must be <= buffer length ${buffer.byteLength})`);
-    }
-    if (buffer[index + size - 1] !== 0) {
-        throw new BSONError("One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00");
-    }
-    return deserializeObject(buffer, index, options, isArray);
-}
-const allowedDBRefKeys = /^\$ref$|^\$id$|^\$db$/;
-function deserializeObject(buffer, index, options, isArray = false) {
-    const fieldsAsRaw = options['fieldsAsRaw'] == null ? null : options['fieldsAsRaw'];
-    const raw = options['raw'] == null ? false : options['raw'];
-    const bsonRegExp = typeof options['bsonRegExp'] === 'boolean' ? options['bsonRegExp'] : false;
-    const promoteBuffers = options.promoteBuffers ?? false;
-    const promoteLongs = options.promoteLongs ?? true;
-    const promoteValues = options.promoteValues ?? true;
-    const useBigInt64 = options.useBigInt64 ?? false;
-    if (useBigInt64 && !promoteValues) {
-        throw new BSONError('Must either request bigint or Long for int64 deserialization');
-    }
-    if (useBigInt64 && !promoteLongs) {
-        throw new BSONError('Must either request bigint or Long for int64 deserialization');
-    }
-    const validation = options.validation == null ? { utf8: true } : options.validation;
-    let globalUTFValidation = true;
-    let validationSetting;
-    let utf8KeysSet;
-    const utf8ValidatedKeys = validation.utf8;
-    if (typeof utf8ValidatedKeys === 'boolean') {
-        validationSetting = utf8ValidatedKeys;
-    }
-    else {
-        globalUTFValidation = false;
-        const utf8ValidationValues = Object.keys(utf8ValidatedKeys).map(function (key) {
-            return utf8ValidatedKeys[key];
-        });
-        if (utf8ValidationValues.length === 0) {
-            throw new BSONError('UTF-8 validation setting cannot be empty');
-        }
-        if (typeof utf8ValidationValues[0] !== 'boolean') {
-            throw new BSONError('Invalid UTF-8 validation option, must specify boolean values');
-        }
-        validationSetting = utf8ValidationValues[0];
-        if (!utf8ValidationValues.every(item => item === validationSetting)) {
-            throw new BSONError('Invalid UTF-8 validation option - keys must be all true or all false');
-        }
-    }
-    if (!globalUTFValidation) {
-        utf8KeysSet = new Set();
-        for (const key of Object.keys(utf8ValidatedKeys)) {
-            utf8KeysSet.add(key);
-        }
-    }
-    const startIndex = index;
-    if (buffer.length < 5)
-        throw new BSONError('corrupt bson message < 5 bytes long');
-    const size = NumberUtils.getInt32LE(buffer, index);
-    index += 4;
-    if (size < 5 || size > buffer.length)
-        throw new BSONError('corrupt bson message');
-    const object = isArray ? [] : {};
-    let arrayIndex = 0;
-    const done = false;
-    let isPossibleDBRef = isArray ? false : null;
-    while (!done) {
-        const elementType = buffer[index++];
-        if (elementType === 0)
-            break;
-        let i = index;
-        while (buffer[i] !== 0x00 && i < buffer.length) {
-            i++;
-        }
-        if (i >= buffer.byteLength)
-            throw new BSONError('Bad BSON Document: illegal CString');
-        const name = isArray ? arrayIndex++ : ByteUtils.toUTF8(buffer, index, i, false);
-        let shouldValidateKey = true;
-        if (globalUTFValidation || utf8KeysSet?.has(name)) {
-            shouldValidateKey = validationSetting;
-        }
-        else {
-            shouldValidateKey = !validationSetting;
-        }
-        if (isPossibleDBRef !== false && name[0] === '$') {
-            isPossibleDBRef = allowedDBRefKeys.test(name);
-        }
-        let value;
-        index = i + 1;
-        if (elementType === BSON_DATA_STRING) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            value = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            index = index + stringSize;
-        }
-        else if (elementType === BSON_DATA_OID) {
-            const oid = ByteUtils.allocateUnsafe(12);
-            for (let i = 0; i < 12; i++)
-                oid[i] = buffer[index + i];
-            value = new ObjectId(oid);
-            index = index + 12;
-        }
-        else if (elementType === BSON_DATA_INT && promoteValues === false) {
-            value = new Int32(NumberUtils.getInt32LE(buffer, index));
-            index += 4;
-        }
-        else if (elementType === BSON_DATA_INT) {
-            value = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-        }
-        else if (elementType === BSON_DATA_NUMBER) {
-            value = NumberUtils.getFloat64LE(buffer, index);
-            index += 8;
-            if (promoteValues === false)
-                value = new Double(value);
-        }
-        else if (elementType === BSON_DATA_DATE) {
-            const lowBits = NumberUtils.getInt32LE(buffer, index);
-            const highBits = NumberUtils.getInt32LE(buffer, index + 4);
-            index += 8;
-            value = new Date(new Long(lowBits, highBits).toNumber());
-        }
-        else if (elementType === BSON_DATA_BOOLEAN) {
-            if (buffer[index] !== 0 && buffer[index] !== 1)
-                throw new BSONError('illegal boolean type value');
-            value = buffer[index++] === 1;
-        }
-        else if (elementType === BSON_DATA_OBJECT) {
-            const _index = index;
-            const objectSize = NumberUtils.getInt32LE(buffer, index);
-            if (objectSize <= 0 || objectSize > buffer.length - index)
-                throw new BSONError('bad embedded document length in bson');
-            if (raw) {
-                value = buffer.slice(index, index + objectSize);
-            }
-            else {
-                let objectOptions = options;
-                if (!globalUTFValidation) {
-                    objectOptions = { ...options, validation: { utf8: shouldValidateKey } };
-                }
-                value = deserializeObject(buffer, _index, objectOptions, false);
-            }
-            index = index + objectSize;
-        }
-        else if (elementType === BSON_DATA_ARRAY) {
-            const _index = index;
-            const objectSize = NumberUtils.getInt32LE(buffer, index);
-            let arrayOptions = options;
-            const stopIndex = index + objectSize;
-            if (fieldsAsRaw && fieldsAsRaw[name]) {
-                arrayOptions = { ...options, raw: true };
-            }
-            if (!globalUTFValidation) {
-                arrayOptions = { ...arrayOptions, validation: { utf8: shouldValidateKey } };
-            }
-            value = deserializeObject(buffer, _index, arrayOptions, true);
-            index = index + objectSize;
-            if (buffer[index - 1] !== 0)
-                throw new BSONError('invalid array terminator byte');
-            if (index !== stopIndex)
-                throw new BSONError('corrupted array bson');
-        }
-        else if (elementType === BSON_DATA_UNDEFINED) {
-            value = undefined;
-        }
-        else if (elementType === BSON_DATA_NULL) {
-            value = null;
-        }
-        else if (elementType === BSON_DATA_LONG) {
-            if (useBigInt64) {
-                value = NumberUtils.getBigInt64LE(buffer, index);
-                index += 8;
-            }
-            else {
-                const lowBits = NumberUtils.getInt32LE(buffer, index);
-                const highBits = NumberUtils.getInt32LE(buffer, index + 4);
-                index += 8;
-                const long = new Long(lowBits, highBits);
-                if (promoteLongs && promoteValues === true) {
-                    value =
-                        long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG)
-                            ? long.toNumber()
-                            : long;
-                }
-                else {
-                    value = long;
-                }
-            }
-        }
-        else if (elementType === BSON_DATA_DECIMAL128) {
-            const bytes = ByteUtils.allocateUnsafe(16);
-            for (let i = 0; i < 16; i++)
-                bytes[i] = buffer[index + i];
-            index = index + 16;
-            value = new Decimal128(bytes);
-        }
-        else if (elementType === BSON_DATA_BINARY) {
-            let binarySize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            const totalBinarySize = binarySize;
-            const subType = buffer[index++];
-            if (binarySize < 0)
-                throw new BSONError('Negative binary type element size found');
-            if (binarySize > buffer.byteLength)
-                throw new BSONError('Binary type size larger than document size');
-            if (buffer['slice'] != null) {
-                if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
-                    binarySize = NumberUtils.getInt32LE(buffer, index);
-                    index += 4;
-                    if (binarySize < 0)
-                        throw new BSONError('Negative binary type element size found for subtype 0x02');
-                    if (binarySize > totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
-                    if (binarySize < totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
-                }
-                if (promoteBuffers && promoteValues) {
-                    value = ByteUtils.toLocalBufferType(buffer.slice(index, index + binarySize));
-                }
-                else {
-                    value = new Binary(buffer.slice(index, index + binarySize), subType);
-                    if (subType === BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
-                        value = value.toUUID();
-                    }
-                }
-            }
-            else {
-                if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
-                    binarySize = NumberUtils.getInt32LE(buffer, index);
-                    index += 4;
-                    if (binarySize < 0)
-                        throw new BSONError('Negative binary type element size found for subtype 0x02');
-                    if (binarySize > totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
-                    if (binarySize < totalBinarySize - 4)
-                        throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
-                }
-                if (promoteBuffers && promoteValues) {
-                    value = ByteUtils.allocateUnsafe(binarySize);
-                    for (i = 0; i < binarySize; i++) {
-                        value[i] = buffer[index + i];
-                    }
-                }
-                else {
-                    value = new Binary(buffer.slice(index, index + binarySize), subType);
-                    if (subType === BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
-                        value = value.toUUID();
-                    }
-                }
-            }
-            index = index + binarySize;
-        }
-        else if (elementType === BSON_DATA_REGEXP && bsonRegExp === false) {
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const source = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            const optionsArray = new Array(regExpOptions.length);
-            for (i = 0; i < regExpOptions.length; i++) {
-                switch (regExpOptions[i]) {
-                    case 'm':
-                        optionsArray[i] = 'm';
-                        break;
-                    case 's':
-                        optionsArray[i] = 'g';
-                        break;
-                    case 'i':
-                        optionsArray[i] = 'i';
-                        break;
-                }
-            }
-            value = new RegExp(source, optionsArray.join(''));
-        }
-        else if (elementType === BSON_DATA_REGEXP && bsonRegExp === true) {
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const source = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            i = index;
-            while (buffer[i] !== 0x00 && i < buffer.length) {
-                i++;
-            }
-            if (i >= buffer.length)
-                throw new BSONError('Bad BSON Document: illegal CString');
-            const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
-            index = i + 1;
-            value = new BSONRegExp(source, regExpOptions);
-        }
-        else if (elementType === BSON_DATA_SYMBOL) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            const symbol = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            value = promoteValues ? symbol : new BSONSymbol(symbol);
-            index = index + stringSize;
-        }
-        else if (elementType === BSON_DATA_TIMESTAMP) {
-            value = new Timestamp({
-                i: NumberUtils.getUint32LE(buffer, index),
-                t: NumberUtils.getUint32LE(buffer, index + 4)
-            });
-            index += 8;
-        }
-        else if (elementType === BSON_DATA_MIN_KEY) {
-            value = new MinKey();
-        }
-        else if (elementType === BSON_DATA_MAX_KEY) {
-            value = new MaxKey();
-        }
-        else if (elementType === BSON_DATA_CODE) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            const functionString = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            value = new Code(functionString);
-            index = index + stringSize;
-        }
-        else if (elementType === BSON_DATA_CODE_W_SCOPE) {
-            const totalSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (totalSize < 4 + 4 + 4 + 1) {
-                throw new BSONError('code_w_scope total size shorter minimum expected length');
-            }
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0) {
-                throw new BSONError('bad string length in bson');
-            }
-            const functionString = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-            index = index + stringSize;
-            const _index = index;
-            const objectSize = NumberUtils.getInt32LE(buffer, index);
-            const scopeObject = deserializeObject(buffer, _index, options, false);
-            index = index + objectSize;
-            if (totalSize < 4 + 4 + objectSize + stringSize) {
-                throw new BSONError('code_w_scope total size is too short, truncating scope');
-            }
-            if (totalSize > 4 + 4 + objectSize + stringSize) {
-                throw new BSONError('code_w_scope total size is too long, clips outer document');
-            }
-            value = new Code(functionString, scopeObject);
-        }
-        else if (elementType === BSON_DATA_DBPOINTER) {
-            const stringSize = NumberUtils.getInt32LE(buffer, index);
-            index += 4;
-            if (stringSize <= 0 ||
-                stringSize > buffer.length - index ||
-                buffer[index + stringSize - 1] !== 0)
-                throw new BSONError('bad string length in bson');
-            if (validation != null && validation.utf8) {
-                if (!validateUtf8(buffer, index, index + stringSize - 1)) {
-                    throw new BSONError('Invalid UTF-8 string in BSON document');
-                }
-            }
-            const namespace = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, false);
-            index = index + stringSize;
-            const oidBuffer = ByteUtils.allocateUnsafe(12);
-            for (let i = 0; i < 12; i++)
-                oidBuffer[i] = buffer[index + i];
-            const oid = new ObjectId(oidBuffer);
-            index = index + 12;
-            value = new DBRef(namespace, oid);
-        }
-        else {
-            throw new BSONError(`Detected unknown BSON type ${elementType.toString(16)} for fieldname "${name}"`);
-        }
-        if (name === '__proto__') {
-            Object.defineProperty(object, name, {
-                value,
-                writable: true,
-                enumerable: true,
-                configurable: true
-            });
-        }
-        else {
-            object[name] = value;
-        }
-    }
-    if (size !== index - startIndex) {
-        if (isArray)
-            throw new BSONError('corrupt array bson');
-        throw new BSONError('corrupt object bson');
-    }
-    if (!isPossibleDBRef)
-        return object;
-    if (isDBRefLike(object)) {
-        const copy = Object.assign({}, object);
-        delete copy.$ref;
-        delete copy.$id;
-        delete copy.$db;
-        return new DBRef(object.$ref, object.$id, object.$db, copy);
-    }
-    return object;
-}
-
-const regexp = /\x00/;
-const ignoreKeys = new Set(['$db', '$ref', '$id', '$clusterTime']);
-function serializeString(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_STRING;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes + 1;
-    buffer[index - 1] = 0;
-    const size = ByteUtils.encodeUTF8Into(buffer, value, index + 4);
-    NumberUtils.setInt32LE(buffer, index, size + 1);
-    index = index + 4 + size;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeNumber(buffer, key, value, index) {
-    const isNegativeZero = Object.is(value, -0);
-    const type = !isNegativeZero &&
-        Number.isSafeInteger(value) &&
-        value <= BSON_INT32_MAX &&
-        value >= BSON_INT32_MIN
-        ? BSON_DATA_INT
-        : BSON_DATA_NUMBER;
-    buffer[index++] = type;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0x00;
-    if (type === BSON_DATA_INT) {
-        index += NumberUtils.setInt32LE(buffer, index, value);
-    }
-    else {
-        index += NumberUtils.setFloat64LE(buffer, index, value);
-    }
-    return index;
-}
-function serializeBigInt(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_LONG;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index += numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += NumberUtils.setBigInt64LE(buffer, index, value);
-    return index;
-}
-function serializeNull(buffer, key, _, index) {
-    buffer[index++] = BSON_DATA_NULL;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeBoolean(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_BOOLEAN;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    buffer[index++] = value ? 1 : 0;
-    return index;
-}
-function serializeDate(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_DATE;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const dateInMilis = Long.fromNumber(value.getTime());
-    const lowBits = dateInMilis.getLowBits();
-    const highBits = dateInMilis.getHighBits();
-    index += NumberUtils.setInt32LE(buffer, index, lowBits);
-    index += NumberUtils.setInt32LE(buffer, index, highBits);
-    return index;
-}
-function serializeRegExp(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_REGEXP;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    if (value.source && value.source.match(regexp) != null) {
-        throw new BSONError('value ' + value.source + ' must not contain null bytes');
-    }
-    index = index + ByteUtils.encodeUTF8Into(buffer, value.source, index);
-    buffer[index++] = 0x00;
-    if (value.ignoreCase)
-        buffer[index++] = 0x69;
-    if (value.global)
-        buffer[index++] = 0x73;
-    if (value.multiline)
-        buffer[index++] = 0x6d;
-    buffer[index++] = 0x00;
-    return index;
-}
-function serializeBSONRegExp(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_REGEXP;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    if (value.pattern.match(regexp) != null) {
-        throw new BSONError('pattern ' + value.pattern + ' must not contain null bytes');
-    }
-    index = index + ByteUtils.encodeUTF8Into(buffer, value.pattern, index);
-    buffer[index++] = 0x00;
-    const sortedOptions = value.options.split('').sort().join('');
-    index = index + ByteUtils.encodeUTF8Into(buffer, sortedOptions, index);
-    buffer[index++] = 0x00;
-    return index;
-}
-function serializeMinMax(buffer, key, value, index) {
-    if (value === null) {
-        buffer[index++] = BSON_DATA_NULL;
-    }
-    else if (value._bsontype === 'MinKey') {
-        buffer[index++] = BSON_DATA_MIN_KEY;
-    }
-    else {
-        buffer[index++] = BSON_DATA_MAX_KEY;
-    }
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeObjectId(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_OID;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += value.serializeInto(buffer, index);
-    return index;
-}
-function serializeBuffer(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_BINARY;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const size = value.length;
-    index += NumberUtils.setInt32LE(buffer, index, size);
-    buffer[index++] = BSON_BINARY_SUBTYPE_DEFAULT;
-    if (size <= 16) {
-        for (let i = 0; i < size; i++)
-            buffer[index + i] = value[i];
-    }
-    else {
-        buffer.set(value, index);
-    }
-    index = index + size;
-    return index;
-}
-function serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path) {
-    if (path.has(value)) {
-        throw new BSONError('Cannot convert circular structure to BSON');
-    }
-    path.add(value);
-    buffer[index++] = Array.isArray(value) ? BSON_DATA_ARRAY : BSON_DATA_OBJECT;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const endIndex = serializeInto(buffer, value, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path);
-    path.delete(value);
-    return endIndex;
-}
-function serializeDecimal128(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_DECIMAL128;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    for (let i = 0; i < 16; i++)
-        buffer[index + i] = value.bytes[i];
-    return index + 16;
-}
-function serializeLong(buffer, key, value, index) {
-    buffer[index++] =
-        value._bsontype === 'Long' ? BSON_DATA_LONG : BSON_DATA_TIMESTAMP;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const lowBits = value.getLowBits();
-    const highBits = value.getHighBits();
-    index += NumberUtils.setInt32LE(buffer, index, lowBits);
-    index += NumberUtils.setInt32LE(buffer, index, highBits);
-    return index;
-}
-function serializeInt32(buffer, key, value, index) {
-    value = value.valueOf();
-    buffer[index++] = BSON_DATA_INT;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += NumberUtils.setInt32LE(buffer, index, value);
-    return index;
-}
-function serializeDouble(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_NUMBER;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    index += NumberUtils.setFloat64LE(buffer, index, value.value);
-    return index;
-}
-function serializeFunction(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_CODE;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const functionString = value.toString();
-    const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-    NumberUtils.setInt32LE(buffer, index, size);
-    index = index + 4 + size - 1;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeCode(buffer, key, value, index, checkKeys = false, depth = 0, serializeFunctions = false, ignoreUndefined = true, path) {
-    if (value.scope && typeof value.scope === 'object') {
-        buffer[index++] = BSON_DATA_CODE_W_SCOPE;
-        const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-        index = index + numberOfWrittenBytes;
-        buffer[index++] = 0;
-        let startIndex = index;
-        const functionString = value.code;
-        index = index + 4;
-        const codeSize = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-        NumberUtils.setInt32LE(buffer, index, codeSize);
-        buffer[index + 4 + codeSize - 1] = 0;
-        index = index + codeSize + 4;
-        const endIndex = serializeInto(buffer, value.scope, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path);
-        index = endIndex - 1;
-        const totalSize = endIndex - startIndex;
-        startIndex += NumberUtils.setInt32LE(buffer, startIndex, totalSize);
-        buffer[index++] = 0;
-    }
-    else {
-        buffer[index++] = BSON_DATA_CODE;
-        const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-        index = index + numberOfWrittenBytes;
-        buffer[index++] = 0;
-        const functionString = value.code.toString();
-        const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-        NumberUtils.setInt32LE(buffer, index, size);
-        index = index + 4 + size - 1;
-        buffer[index++] = 0;
-    }
-    return index;
-}
-function serializeBinary(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_BINARY;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const data = value.buffer;
-    let size = value.position;
-    if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY)
-        size = size + 4;
-    index += NumberUtils.setInt32LE(buffer, index, size);
-    buffer[index++] = value.sub_type;
-    if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
-        size = size - 4;
-        index += NumberUtils.setInt32LE(buffer, index, size);
-    }
-    if (size <= 16) {
-        for (let i = 0; i < size; i++)
-            buffer[index + i] = data[i];
-    }
-    else {
-        buffer.set(data, index);
-    }
-    index = index + value.position;
-    return index;
-}
-function serializeSymbol(buffer, key, value, index) {
-    buffer[index++] = BSON_DATA_SYMBOL;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    const size = ByteUtils.encodeUTF8Into(buffer, value.value, index + 4) + 1;
-    NumberUtils.setInt32LE(buffer, index, size);
-    index = index + 4 + size - 1;
-    buffer[index++] = 0;
-    return index;
-}
-function serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path) {
-    buffer[index++] = BSON_DATA_OBJECT;
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    let startIndex = index;
-    let output = {
-        $ref: value.collection || value.namespace,
-        $id: value.oid
-    };
-    if (value.db != null) {
-        output.$db = value.db;
-    }
-    output = Object.assign(output, value.fields);
-    const endIndex = serializeInto(buffer, output, false, index, depth + 1, serializeFunctions, true, path);
-    const size = endIndex - startIndex;
-    startIndex += NumberUtils.setInt32LE(buffer, index, size);
-    return endIndex;
-}
-function serializeInto(buffer, object, checkKeys, startingIndex, depth, serializeFunctions, ignoreUndefined, path) {
-    if (path == null) {
-        if (object == null) {
-            buffer[0] = 0x05;
-            buffer[1] = 0x00;
-            buffer[2] = 0x00;
-            buffer[3] = 0x00;
-            buffer[4] = 0x00;
-            return 5;
-        }
-        if (Array.isArray(object)) {
-            throw new BSONError('serialize does not support an array as the root input');
-        }
-        if (typeof object !== 'object') {
-            throw new BSONError('serialize does not support non-object as the root input');
-        }
-        else if ('_bsontype' in object && typeof object._bsontype === 'string') {
-            throw new BSONError(`BSON types cannot be serialized as a document`);
-        }
-        else if (isDate(object) ||
-            isRegExp(object) ||
-            isUint8Array(object) ||
-            isAnyArrayBuffer(object)) {
-            throw new BSONError(`date, regexp, typedarray, and arraybuffer cannot be BSON documents`);
-        }
-        path = new Set();
-    }
-    path.add(object);
-    let index = startingIndex + 4;
-    if (Array.isArray(object)) {
-        for (let i = 0; i < object.length; i++) {
-            const key = `${i}`;
-            let value = object[i];
-            if (typeof value?.toBSON === 'function') {
-                value = value.toBSON();
-            }
-            if (typeof value === 'string') {
-                index = serializeString(buffer, key, value, index);
-            }
-            else if (typeof value === 'number') {
-                index = serializeNumber(buffer, key, value, index);
-            }
-            else if (typeof value === 'bigint') {
-                index = serializeBigInt(buffer, key, value, index);
-            }
-            else if (typeof value === 'boolean') {
-                index = serializeBoolean(buffer, key, value, index);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                index = serializeDate(buffer, key, value, index);
-            }
-            else if (value === undefined) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (value === null) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (isUint8Array(value)) {
-                index = serializeBuffer(buffer, key, value, index);
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                index = serializeRegExp(buffer, key, value, index);
-            }
-            else if (typeof value === 'object' && value._bsontype == null) {
-                index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'object' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value._bsontype === 'ObjectId') {
-                index = serializeObjectId(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Decimal128') {
-                index = serializeDecimal128(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-                index = serializeLong(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Double') {
-                index = serializeDouble(buffer, key, value, index);
-            }
-            else if (typeof value === 'function' && serializeFunctions) {
-                index = serializeFunction(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Code') {
-                index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (value._bsontype === 'Binary') {
-                index = serializeBinary(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'BSONSymbol') {
-                index = serializeSymbol(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'DBRef') {
-                index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                index = serializeBSONRegExp(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Int32') {
-                index = serializeInt32(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                index = serializeMinMax(buffer, key, value, index);
-            }
-            else if (typeof value._bsontype !== 'undefined') {
-                throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-            }
-        }
-    }
-    else if (object instanceof Map || isMap(object)) {
-        const iterator = object.entries();
-        let done = false;
-        while (!done) {
-            const entry = iterator.next();
-            done = !!entry.done;
-            if (done)
-                continue;
-            const key = entry.value[0];
-            let value = entry.value[1];
-            if (typeof value?.toBSON === 'function') {
-                value = value.toBSON();
-            }
-            const type = typeof value;
-            if (typeof key === 'string' && !ignoreKeys.has(key)) {
-                if (key.match(regexp) != null) {
-                    throw new BSONError('key ' + key + ' must not contain null bytes');
-                }
-                if (checkKeys) {
-                    if ('$' === key[0]) {
-                        throw new BSONError('key ' + key + " must not start with '$'");
-                    }
-                    else if (key.includes('.')) {
-                        throw new BSONError('key ' + key + " must not contain '.'");
-                    }
-                }
-            }
-            if (type === 'string') {
-                index = serializeString(buffer, key, value, index);
-            }
-            else if (type === 'number') {
-                index = serializeNumber(buffer, key, value, index);
-            }
-            else if (type === 'bigint') {
-                index = serializeBigInt(buffer, key, value, index);
-            }
-            else if (type === 'boolean') {
-                index = serializeBoolean(buffer, key, value, index);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                index = serializeDate(buffer, key, value, index);
-            }
-            else if (value === null || (value === undefined && ignoreUndefined === false)) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (isUint8Array(value)) {
-                index = serializeBuffer(buffer, key, value, index);
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                index = serializeRegExp(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype == null) {
-                index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'object' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value._bsontype === 'ObjectId') {
-                index = serializeObjectId(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype === 'Decimal128') {
-                index = serializeDecimal128(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-                index = serializeLong(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Double') {
-                index = serializeDouble(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Code') {
-                index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'function' && serializeFunctions) {
-                index = serializeFunction(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Binary') {
-                index = serializeBinary(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'BSONSymbol') {
-                index = serializeSymbol(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'DBRef') {
-                index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                index = serializeBSONRegExp(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Int32') {
-                index = serializeInt32(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                index = serializeMinMax(buffer, key, value, index);
-            }
-            else if (typeof value._bsontype !== 'undefined') {
-                throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-            }
-        }
-    }
-    else {
-        if (typeof object?.toBSON === 'function') {
-            object = object.toBSON();
-            if (object != null && typeof object !== 'object') {
-                throw new BSONError('toBSON function did not return an object');
-            }
-        }
-        for (const key of Object.keys(object)) {
-            let value = object[key];
-            if (typeof value?.toBSON === 'function') {
-                value = value.toBSON();
-            }
-            const type = typeof value;
-            if (typeof key === 'string' && !ignoreKeys.has(key)) {
-                if (key.match(regexp) != null) {
-                    throw new BSONError('key ' + key + ' must not contain null bytes');
-                }
-                if (checkKeys) {
-                    if ('$' === key[0]) {
-                        throw new BSONError('key ' + key + " must not start with '$'");
-                    }
-                    else if (key.includes('.')) {
-                        throw new BSONError('key ' + key + " must not contain '.'");
-                    }
-                }
-            }
-            if (type === 'string') {
-                index = serializeString(buffer, key, value, index);
-            }
-            else if (type === 'number') {
-                index = serializeNumber(buffer, key, value, index);
-            }
-            else if (type === 'bigint') {
-                index = serializeBigInt(buffer, key, value, index);
-            }
-            else if (type === 'boolean') {
-                index = serializeBoolean(buffer, key, value, index);
-            }
-            else if (value instanceof Date || isDate(value)) {
-                index = serializeDate(buffer, key, value, index);
-            }
-            else if (value === undefined) {
-                if (ignoreUndefined === false)
-                    index = serializeNull(buffer, key, value, index);
-            }
-            else if (value === null) {
-                index = serializeNull(buffer, key, value, index);
-            }
-            else if (isUint8Array(value)) {
-                index = serializeBuffer(buffer, key, value, index);
-            }
-            else if (value instanceof RegExp || isRegExp(value)) {
-                index = serializeRegExp(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype == null) {
-                index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'object' &&
-                value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-                throw new BSONVersionError();
-            }
-            else if (value._bsontype === 'ObjectId') {
-                index = serializeObjectId(buffer, key, value, index);
-            }
-            else if (type === 'object' && value._bsontype === 'Decimal128') {
-                index = serializeDecimal128(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-                index = serializeLong(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Double') {
-                index = serializeDouble(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Code') {
-                index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
-            }
-            else if (typeof value === 'function' && serializeFunctions) {
-                index = serializeFunction(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Binary') {
-                index = serializeBinary(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'BSONSymbol') {
-                index = serializeSymbol(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'DBRef') {
-                index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-            }
-            else if (value._bsontype === 'BSONRegExp') {
-                index = serializeBSONRegExp(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'Int32') {
-                index = serializeInt32(buffer, key, value, index);
-            }
-            else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-                index = serializeMinMax(buffer, key, value, index);
-            }
-            else if (typeof value._bsontype !== 'undefined') {
-                throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-            }
-        }
-    }
-    path.delete(object);
-    buffer[index++] = 0x00;
-    const size = index - startingIndex;
-    startingIndex += NumberUtils.setInt32LE(buffer, startingIndex, size);
-    return index;
-}
-
-function isBSONType(value) {
-    return (value != null &&
-        typeof value === 'object' &&
-        '_bsontype' in value &&
-        typeof value._bsontype === 'string');
-}
-const keysToCodecs = {
-    $oid: ObjectId,
-    $binary: Binary,
-    $uuid: Binary,
-    $symbol: BSONSymbol,
-    $numberInt: Int32,
-    $numberDecimal: Decimal128,
-    $numberDouble: Double,
-    $numberLong: Long,
-    $minKey: MinKey,
-    $maxKey: MaxKey,
-    $regex: BSONRegExp,
-    $regularExpression: BSONRegExp,
-    $timestamp: Timestamp
-};
-function deserializeValue(value, options = {}) {
-    if (typeof value === 'number') {
-        const in32BitRange = value <= BSON_INT32_MAX && value >= BSON_INT32_MIN;
-        const in64BitRange = value <= BSON_INT64_MAX && value >= BSON_INT64_MIN;
-        if (options.relaxed || options.legacy) {
-            return value;
-        }
-        if (Number.isInteger(value) && !Object.is(value, -0)) {
-            if (in32BitRange) {
-                return new Int32(value);
-            }
-            if (in64BitRange) {
-                if (options.useBigInt64) {
-                    return BigInt(value);
-                }
-                return Long.fromNumber(value);
-            }
-        }
-        return new Double(value);
-    }
-    if (value == null || typeof value !== 'object')
-        return value;
-    if (value.$undefined)
-        return null;
-    const keys = Object.keys(value).filter(k => k.startsWith('$') && value[k] != null);
-    for (let i = 0; i < keys.length; i++) {
-        const c = keysToCodecs[keys[i]];
-        if (c)
-            return c.fromExtendedJSON(value, options);
-    }
-    if (value.$date != null) {
-        const d = value.$date;
-        const date = new Date();
-        if (options.legacy) {
-            if (typeof d === 'number')
-                date.setTime(d);
-            else if (typeof d === 'string')
-                date.setTime(Date.parse(d));
-            else if (typeof d === 'bigint')
-                date.setTime(Number(d));
-            else
-                throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
-        }
-        else {
-            if (typeof d === 'string')
-                date.setTime(Date.parse(d));
-            else if (Long.isLong(d))
-                date.setTime(d.toNumber());
-            else if (typeof d === 'number' && options.relaxed)
-                date.setTime(d);
-            else if (typeof d === 'bigint')
-                date.setTime(Number(d));
-            else
-                throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
-        }
-        return date;
-    }
-    if (value.$code != null) {
-        const copy = Object.assign({}, value);
-        if (value.$scope) {
-            copy.$scope = deserializeValue(value.$scope);
-        }
-        return Code.fromExtendedJSON(value);
-    }
-    if (isDBRefLike(value) || value.$dbPointer) {
-        const v = value.$ref ? value : value.$dbPointer;
-        if (v instanceof DBRef)
-            return v;
-        const dollarKeys = Object.keys(v).filter(k => k.startsWith('$'));
-        let valid = true;
-        dollarKeys.forEach(k => {
-            if (['$ref', '$id', '$db'].indexOf(k) === -1)
-                valid = false;
-        });
-        if (valid)
-            return DBRef.fromExtendedJSON(v);
-    }
-    return value;
-}
-function serializeArray(array, options) {
-    return array.map((v, index) => {
-        options.seenObjects.push({ propertyName: `index ${index}`, obj: null });
-        try {
-            return serializeValue(v, options);
-        }
-        finally {
-            options.seenObjects.pop();
-        }
-    });
-}
-function getISOString(date) {
-    const isoStr = date.toISOString();
-    return date.getUTCMilliseconds() !== 0 ? isoStr : isoStr.slice(0, -5) + 'Z';
-}
-function serializeValue(value, options) {
-    if (value instanceof Map || isMap(value)) {
-        const obj = Object.create(null);
-        for (const [k, v] of value) {
-            if (typeof k !== 'string') {
-                throw new BSONError('Can only serialize maps with string keys');
-            }
-            obj[k] = v;
-        }
-        return serializeValue(obj, options);
-    }
-    if ((typeof value === 'object' || typeof value === 'function') && value !== null) {
-        const index = options.seenObjects.findIndex(entry => entry.obj === value);
-        if (index !== -1) {
-            const props = options.seenObjects.map(entry => entry.propertyName);
-            const leadingPart = props
-                .slice(0, index)
-                .map(prop => `${prop} -> `)
-                .join('');
-            const alreadySeen = props[index];
-            const circularPart = ' -> ' +
-                props
-                    .slice(index + 1, props.length - 1)
-                    .map(prop => `${prop} -> `)
-                    .join('');
-            const current = props[props.length - 1];
-            const leadingSpace = ' '.repeat(leadingPart.length + alreadySeen.length / 2);
-            const dashes = '-'.repeat(circularPart.length + (alreadySeen.length + current.length) / 2 - 1);
-            throw new BSONError('Converting circular structure to EJSON:\n' +
-                `    ${leadingPart}${alreadySeen}${circularPart}${current}\n` +
-                `    ${leadingSpace}\\${dashes}/`);
-        }
-        options.seenObjects[options.seenObjects.length - 1].obj = value;
-    }
-    if (Array.isArray(value))
-        return serializeArray(value, options);
-    if (value === undefined)
-        return null;
-    if (value instanceof Date || isDate(value)) {
-        const dateNum = value.getTime(), inRange = dateNum > -1 && dateNum < 253402318800000;
-        if (options.legacy) {
-            return options.relaxed && inRange
-                ? { $date: value.getTime() }
-                : { $date: getISOString(value) };
-        }
-        return options.relaxed && inRange
-            ? { $date: getISOString(value) }
-            : { $date: { $numberLong: value.getTime().toString() } };
-    }
-    if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) {
-        if (Number.isInteger(value) && !Object.is(value, -0)) {
-            if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
-                return { $numberInt: value.toString() };
-            }
-            if (value >= BSON_INT64_MIN && value <= BSON_INT64_MAX) {
-                return { $numberLong: value.toString() };
-            }
-        }
-        return { $numberDouble: Object.is(value, -0) ? '-0.0' : value.toString() };
-    }
-    if (typeof value === 'bigint') {
-        if (!options.relaxed) {
-            return { $numberLong: BigInt.asIntN(64, value).toString() };
-        }
-        return Number(BigInt.asIntN(64, value));
-    }
-    if (value instanceof RegExp || isRegExp(value)) {
-        let flags = value.flags;
-        if (flags === undefined) {
-            const match = value.toString().match(/[gimuy]*$/);
-            if (match) {
-                flags = match[0];
-            }
-        }
-        const rx = new BSONRegExp(value.source, flags);
-        return rx.toExtendedJSON(options);
-    }
-    if (value != null && typeof value === 'object')
-        return serializeDocument(value, options);
-    return value;
-}
-const BSON_TYPE_MAPPINGS = {
-    Binary: (o) => new Binary(o.value(), o.sub_type),
-    Code: (o) => new Code(o.code, o.scope),
-    DBRef: (o) => new DBRef(o.collection || o.namespace, o.oid, o.db, o.fields),
-    Decimal128: (o) => new Decimal128(o.bytes),
-    Double: (o) => new Double(o.value),
-    Int32: (o) => new Int32(o.value),
-    Long: (o) => Long.fromBits(o.low != null ? o.low : o.low_, o.low != null ? o.high : o.high_, o.low != null ? o.unsigned : o.unsigned_),
-    MaxKey: () => new MaxKey(),
-    MinKey: () => new MinKey(),
-    ObjectId: (o) => new ObjectId(o),
-    BSONRegExp: (o) => new BSONRegExp(o.pattern, o.options),
-    BSONSymbol: (o) => new BSONSymbol(o.value),
-    Timestamp: (o) => Timestamp.fromBits(o.low, o.high)
-};
-function serializeDocument(doc, options) {
-    if (doc == null || typeof doc !== 'object')
-        throw new BSONError('not an object instance');
-    const bsontype = doc._bsontype;
-    if (typeof bsontype === 'undefined') {
-        const _doc = {};
-        for (const name of Object.keys(doc)) {
-            options.seenObjects.push({ propertyName: name, obj: null });
-            try {
-                const value = serializeValue(doc[name], options);
-                if (name === '__proto__') {
-                    Object.defineProperty(_doc, name, {
-                        value,
-                        writable: true,
-                        enumerable: true,
-                        configurable: true
-                    });
-                }
-                else {
-                    _doc[name] = value;
-                }
-            }
-            finally {
-                options.seenObjects.pop();
-            }
-        }
-        return _doc;
-    }
-    else if (doc != null &&
-        typeof doc === 'object' &&
-        typeof doc._bsontype === 'string' &&
-        doc[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
-        throw new BSONVersionError();
-    }
-    else if (isBSONType(doc)) {
-        let outDoc = doc;
-        if (typeof outDoc.toExtendedJSON !== 'function') {
-            const mapper = BSON_TYPE_MAPPINGS[doc._bsontype];
-            if (!mapper) {
-                throw new BSONError('Unrecognized or invalid _bsontype: ' + doc._bsontype);
-            }
-            outDoc = mapper(outDoc);
-        }
-        if (bsontype === 'Code' && outDoc.scope) {
-            outDoc = new Code(outDoc.code, serializeValue(outDoc.scope, options));
-        }
-        else if (bsontype === 'DBRef' && outDoc.oid) {
-            outDoc = new DBRef(serializeValue(outDoc.collection, options), serializeValue(outDoc.oid, options), serializeValue(outDoc.db, options), serializeValue(outDoc.fields, options));
-        }
-        return outDoc.toExtendedJSON(options);
-    }
-    else {
-        throw new BSONError('_bsontype must be a string, but was: ' + typeof bsontype);
-    }
-}
-function parse(text, options) {
-    const ejsonOptions = {
-        useBigInt64: options?.useBigInt64 ?? false,
-        relaxed: options?.relaxed ?? true,
-        legacy: options?.legacy ?? false
-    };
-    return JSON.parse(text, (key, value) => {
-        if (key.indexOf('\x00') !== -1) {
-            throw new BSONError(`BSON Document field names cannot contain null bytes, found: ${JSON.stringify(key)}`);
-        }
-        return deserializeValue(value, ejsonOptions);
-    });
-}
-function stringify(value, replacer, space, options) {
-    if (space != null && typeof space === 'object') {
-        options = space;
-        space = 0;
-    }
-    if (replacer != null && typeof replacer === 'object' && !Array.isArray(replacer)) {
-        options = replacer;
-        replacer = undefined;
-        space = 0;
-    }
-    const serializeOptions = Object.assign({ relaxed: true, legacy: false }, options, {
-        seenObjects: [{ propertyName: '(root)', obj: null }]
-    });
-    const doc = serializeValue(value, serializeOptions);
-    return JSON.stringify(doc, replacer, space);
-}
-function EJSONserialize(value, options) {
-    options = options || {};
-    return JSON.parse(stringify(value, options));
-}
-function EJSONdeserialize(ejson, options) {
-    options = options || {};
-    return parse(JSON.stringify(ejson), options);
-}
-const EJSON = Object.create(null);
-EJSON.parse = parse;
-EJSON.stringify = stringify;
-EJSON.serialize = EJSONserialize;
-EJSON.deserialize = EJSONdeserialize;
-Object.freeze(EJSON);
-
-const MAXSIZE = 1024 * 1024 * 17;
-let buffer = ByteUtils.allocate(MAXSIZE);
-function setInternalBufferSize(size) {
-    if (buffer.length < size) {
-        buffer = ByteUtils.allocate(size);
-    }
-}
-function serialize(object, options = {}) {
-    const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-    const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-    const minInternalBufferSize = typeof options.minInternalBufferSize === 'number' ? options.minInternalBufferSize : MAXSIZE;
-    if (buffer.length < minInternalBufferSize) {
-        buffer = ByteUtils.allocate(minInternalBufferSize);
-    }
-    const serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, null);
-    const finishedBuffer = ByteUtils.allocateUnsafe(serializationIndex);
-    finishedBuffer.set(buffer.subarray(0, serializationIndex), 0);
-    return finishedBuffer;
-}
-function serializeWithBufferAndIndex(object, finalBuffer, options = {}) {
-    const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-    const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-    const startIndex = typeof options.index === 'number' ? options.index : 0;
-    const serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, null);
-    finalBuffer.set(buffer.subarray(0, serializationIndex), startIndex);
-    return startIndex + serializationIndex - 1;
-}
-function deserialize(buffer, options = {}) {
-    return internalDeserialize(ByteUtils.toLocalBufferType(buffer), options);
-}
-function calculateObjectSize(object, options = {}) {
-    options = options || {};
-    const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-    return internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined);
-}
-function deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options) {
-    const internalOptions = Object.assign({ allowObjectSmallerThanBufferSize: true, index: 0 }, options);
-    const bufferData = ByteUtils.toLocalBufferType(data);
-    let index = startIndex;
-    for (let i = 0; i < numberOfDocuments; i++) {
-        const size = NumberUtils.getInt32LE(bufferData, index);
-        internalOptions.index = index;
-        documents[docStartIndex + i] = internalDeserialize(bufferData, internalOptions);
-        index = index + size;
-    }
-    return index;
-}
-
-var bson = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    BSONError: BSONError,
-    BSONRegExp: BSONRegExp,
-    BSONRuntimeError: BSONRuntimeError,
-    BSONSymbol: BSONSymbol,
-    BSONType: BSONType,
-    BSONValue: BSONValue,
-    BSONVersionError: BSONVersionError,
-    Binary: Binary,
-    Code: Code,
-    DBRef: DBRef,
-    Decimal128: Decimal128,
-    Double: Double,
-    EJSON: EJSON,
-    Int32: Int32,
-    Long: Long,
-    MaxKey: MaxKey,
-    MinKey: MinKey,
-    ObjectId: ObjectId,
-    Timestamp: Timestamp,
-    UUID: UUID,
-    calculateObjectSize: calculateObjectSize,
-    deserialize: deserialize,
-    deserializeStream: deserializeStream,
-    serialize: serialize,
-    serializeWithBufferAndIndex: serializeWithBufferAndIndex,
-    setInternalBufferSize: setInternalBufferSize
-});
-
-exports.BSON = bson;
-exports.BSONError = BSONError;
-exports.BSONRegExp = BSONRegExp;
-exports.BSONRuntimeError = BSONRuntimeError;
-exports.BSONSymbol = BSONSymbol;
-exports.BSONType = BSONType;
-exports.BSONValue = BSONValue;
-exports.BSONVersionError = BSONVersionError;
-exports.Binary = Binary;
-exports.Code = Code;
-exports.DBRef = DBRef;
-exports.Decimal128 = Decimal128;
-exports.Double = Double;
-exports.EJSON = EJSON;
-exports.Int32 = Int32;
-exports.Long = Long;
-exports.MaxKey = MaxKey;
-exports.MinKey = MinKey;
-exports.ObjectId = ObjectId;
-exports.Timestamp = Timestamp;
-exports.UUID = UUID;
-exports.calculateObjectSize = calculateObjectSize;
-exports.deserialize = deserialize;
-exports.deserializeStream = deserializeStream;
-exports.serialize = serialize;
-exports.serializeWithBufferAndIndex = serializeWithBufferAndIndex;
-exports.setInternalBufferSize = setInternalBufferSize;
-//# sourceMappingURL=bson.rn.cjs.map
diff --git a/server/data-import/node_modules/bson/lib/bson.rn.cjs.map b/server/data-import/node_modules/bson/lib/bson.rn.cjs.map
deleted file mode 100644
index 37ee6e0f41f488c3e98b6ba10c0f8444be46d708..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/lib/bson.rn.cjs.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"bson.rn.cjs","sources":["../src/parser/utils.ts","../src/constants.ts","../src/error.ts","../src/validate_utf8.ts","../src/utils/latin.ts","../src/utils/node_byte_utils.ts","../src/utils/web_byte_utils.ts","../src/utils/byte_utils.ts","../src/bson_value.ts","../src/binary.ts","../src/code.ts","../src/db_ref.ts","../src/long.ts","../src/decimal128.ts","../src/double.ts","../src/int_32.ts","../src/max_key.ts","../src/min_key.ts","../src/utils/number_utils.ts","../src/objectid.ts","../src/parser/calculate_size.ts","../src/regexp.ts","../src/symbol.ts","../src/timestamp.ts","../src/parser/deserializer.ts","../src/parser/serializer.ts","../src/extended_json.ts","../src/bson.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["constants.JS_INT_MIN","constants.JS_INT_MAX","constants.BSON_INT32_MIN","constants.BSON_INT32_MAX","constants.BSON_MAJOR_VERSION","constants.BSON_DATA_STRING","constants.BSON_DATA_OID","constants.BSON_DATA_INT","constants.BSON_DATA_NUMBER","constants.BSON_DATA_DATE","constants.BSON_DATA_BOOLEAN","constants.BSON_DATA_OBJECT","constants.BSON_DATA_ARRAY","constants.BSON_DATA_UNDEFINED","constants.BSON_DATA_NULL","constants.BSON_DATA_LONG","constants.BSON_DATA_DECIMAL128","constants.BSON_DATA_BINARY","constants.BSON_BINARY_SUBTYPE_UUID_NEW","constants.BSON_DATA_REGEXP","constants.BSON_DATA_SYMBOL","constants.BSON_DATA_TIMESTAMP","constants.BSON_DATA_MIN_KEY","constants.BSON_DATA_MAX_KEY","constants.BSON_DATA_CODE","constants.BSON_DATA_CODE_W_SCOPE","constants.BSON_DATA_DBPOINTER","constants.BSON_BINARY_SUBTYPE_DEFAULT"],"mappings":"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GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/bson/package.json b/server/data-import/node_modules/bson/package.json
deleted file mode 100644
index 97bff57538273af7fd5bf690c08ab16177b76ccf..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/package.json
+++ /dev/null
@@ -1,120 +0,0 @@
-{
-  "name": "bson",
-  "description": "A bson parser for node.js and the browser",
-  "keywords": [
-    "mongodb",
-    "bson",
-    "parser"
-  ],
-  "files": [
-    "lib",
-    "src",
-    "bson.d.ts",
-    "etc/prepare.js",
-    "vendor"
-  ],
-  "types": "bson.d.ts",
-  "version": "6.4.0",
-  "author": {
-    "name": "The MongoDB NodeJS Team",
-    "email": "dbx-node@mongodb.com"
-  },
-  "license": "Apache-2.0",
-  "contributors": [],
-  "repository": "mongodb/js-bson",
-  "bugs": {
-    "url": "https://jira.mongodb.org/projects/NODE/issues/"
-  },
-  "devDependencies": {
-    "@istanbuljs/nyc-config-typescript": "^1.0.2",
-    "@microsoft/api-extractor": "^7.40.5",
-    "@octokit/core": "^5.1.0",
-    "@rollup/plugin-node-resolve": "^15.2.3",
-    "@rollup/plugin-typescript": "^11.1.6",
-    "@types/chai": "^4.3.11",
-    "@types/mocha": "^10.0.6",
-    "@types/node": "^20.11.19",
-    "@types/sinon": "^17.0.3",
-    "@types/sinon-chai": "^3.2.12",
-    "@typescript-eslint/eslint-plugin": "^7.0.2",
-    "@typescript-eslint/parser": "^7.0.2",
-    "benchmark": "^2.1.4",
-    "chai": "^4.3.10",
-    "chalk": "^5.3.0",
-    "dbx-js-tools": "github:mongodb-js/dbx-js-tools",
-    "eslint": "^8.56.0",
-    "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-no-bigint-usage": "file:etc/eslint/no-bigint-usage",
-    "eslint-plugin-prettier": "^5.1.3",
-    "eslint-plugin-tsdoc": "^0.2.17",
-    "magic-string": "^0.30.7",
-    "mocha": "10.3.0",
-    "node-fetch": "^3.3.2",
-    "nyc": "^15.1.0",
-    "prettier": "^3.2.5",
-    "rollup": "^4.12.0",
-    "sinon": "^17.0.1",
-    "sinon-chai": "^3.7.0",
-    "source-map-support": "^0.5.21",
-    "standard-version": "^9.5.0",
-    "tar": "^6.2.0",
-    "ts-node": "^10.9.2",
-    "tsd": "^0.30.5",
-    "typescript": "^5.0.4",
-    "typescript-cached-transpile": "0.0.6",
-    "uuid": "^9.0.1"
-  },
-  "tsd": {
-    "directory": "test/types",
-    "compilerOptions": {
-      "strict": true,
-      "target": "esnext",
-      "module": "commonjs",
-      "moduleResolution": "node"
-    }
-  },
-  "config": {
-    "native": false
-  },
-  "main": "./lib/bson.cjs",
-  "module": "./lib/bson.mjs",
-  "exports": {
-    "import": {
-      "types": "./bson.d.ts",
-      "default": "./lib/bson.mjs"
-    },
-    "require": {
-      "types": "./bson.d.ts",
-      "default": "./lib/bson.cjs"
-    },
-    "react-native": "./lib/bson.rn.cjs",
-    "browser": "./lib/bson.mjs"
-  },
-  "compass:exports": {
-    "import": "./lib/bson.cjs",
-    "require": "./lib/bson.cjs"
-  },
-  "engines": {
-    "node": ">=16.20.1"
-  },
-  "scripts": {
-    "pretest": "npm run build",
-    "test": "npm run check:node && npm run check:web && npm run check:web-no-bigint",
-    "check:node": "WEB=false mocha test/node",
-    "check:tsd": "npm run build:dts && tsd",
-    "check:web": "WEB=true mocha test/node",
-    "check:web-no-bigint": "WEB=true NO_BIGINT=true mocha test/node",
-    "check:granular-bench": "npm run build:bench && node ./test/bench/etc/run_granular_benchmarks.js",
-    "check:spec-bench": "npm run build:bench && node ./test/bench/lib/spec/bsonBench.js",
-    "build:bench": "cd test/bench && npx tsc",
-    "build:ts": "node ./node_modules/typescript/bin/tsc",
-    "build:dts": "npm run build:ts && api-extractor run --typescript-compiler-folder node_modules/typescript --local && node etc/clean_definition_files.cjs",
-    "build:bundle": "rollup -c rollup.config.mjs",
-    "build": "npm run build:dts && npm run build:bundle",
-    "check:lint": "eslint -v && eslint --ext '.js,.ts' --max-warnings=0 src test && npm run build:dts && npm run check:tsd",
-    "format": "eslint --ext '.js,.ts' src test --fix",
-    "check:coverage": "nyc --check-coverage npm run check:node",
-    "prepare": "node etc/prepare.js",
-    "release": "standard-version -i HISTORY.md"
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/binary.ts b/server/data-import/node_modules/bson/src/binary.ts
deleted file mode 100644
index 6c4d54fc62a7590651fc80cf8b9c6afb1c7a53df..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/binary.ts
+++ /dev/null
@@ -1,470 +0,0 @@
-import { type InspectFn, defaultInspect, isAnyArrayBuffer, isUint8Array } from './parser/utils';
-import type { EJSONOptions } from './extended_json';
-import { BSONError } from './error';
-import { BSON_BINARY_SUBTYPE_UUID_NEW } from './constants';
-import { ByteUtils } from './utils/byte_utils';
-import { BSONValue } from './bson_value';
-
-/** @public */
-export type BinarySequence = Uint8Array | number[];
-
-/** @public */
-export interface BinaryExtendedLegacy {
-  $type: string;
-  $binary: string;
-}
-
-/** @public */
-export interface BinaryExtended {
-  $binary: {
-    subType: string;
-    base64: string;
-  };
-}
-
-/**
- * A class representation of the BSON Binary type.
- * @public
- * @category BSONType
- */
-export class Binary extends BSONValue {
-  get _bsontype(): 'Binary' {
-    return 'Binary';
-  }
-
-  /**
-   * Binary default subtype
-   * @internal
-   */
-  private static readonly BSON_BINARY_SUBTYPE_DEFAULT = 0;
-
-  /** Initial buffer default size */
-  static readonly BUFFER_SIZE = 256;
-  /** Default BSON type */
-  static readonly SUBTYPE_DEFAULT = 0;
-  /** Function BSON type */
-  static readonly SUBTYPE_FUNCTION = 1;
-  /** Byte Array BSON type */
-  static readonly SUBTYPE_BYTE_ARRAY = 2;
-  /** Deprecated UUID BSON type @deprecated Please use SUBTYPE_UUID */
-  static readonly SUBTYPE_UUID_OLD = 3;
-  /** UUID BSON type */
-  static readonly SUBTYPE_UUID = 4;
-  /** MD5 BSON type */
-  static readonly SUBTYPE_MD5 = 5;
-  /** Encrypted BSON type */
-  static readonly SUBTYPE_ENCRYPTED = 6;
-  /** Column BSON type */
-  static readonly SUBTYPE_COLUMN = 7;
-  /** User BSON type */
-  static readonly SUBTYPE_USER_DEFINED = 128;
-
-  buffer!: Uint8Array;
-  sub_type!: number;
-  position!: number;
-
-  /**
-   * Create a new Binary instance.
-   * @param buffer - a buffer object containing the binary data.
-   * @param subType - the option binary type.
-   */
-  constructor(buffer?: BinarySequence, subType?: number) {
-    super();
-    if (
-      !(buffer == null) &&
-      typeof buffer === 'string' &&
-      !ArrayBuffer.isView(buffer) &&
-      !isAnyArrayBuffer(buffer) &&
-      !Array.isArray(buffer)
-    ) {
-      throw new BSONError('Binary can only be constructed from Uint8Array or number[]');
-    }
-
-    this.sub_type = subType ?? Binary.BSON_BINARY_SUBTYPE_DEFAULT;
-
-    if (buffer == null) {
-      // create an empty binary buffer
-      this.buffer = ByteUtils.allocate(Binary.BUFFER_SIZE);
-      this.position = 0;
-    } else {
-      this.buffer = Array.isArray(buffer)
-        ? ByteUtils.fromNumberArray(buffer)
-        : ByteUtils.toLocalBufferType(buffer);
-      this.position = this.buffer.byteLength;
-    }
-  }
-
-  /**
-   * Updates this binary with byte_value.
-   *
-   * @param byteValue - a single byte we wish to write.
-   */
-  put(byteValue: string | number | Uint8Array | number[]): void {
-    // If it's a string and a has more than one character throw an error
-    if (typeof byteValue === 'string' && byteValue.length !== 1) {
-      throw new BSONError('only accepts single character String');
-    } else if (typeof byteValue !== 'number' && byteValue.length !== 1)
-      throw new BSONError('only accepts single character Uint8Array or Array');
-
-    // Decode the byte value once
-    let decodedByte: number;
-    if (typeof byteValue === 'string') {
-      decodedByte = byteValue.charCodeAt(0);
-    } else if (typeof byteValue === 'number') {
-      decodedByte = byteValue;
-    } else {
-      decodedByte = byteValue[0];
-    }
-
-    if (decodedByte < 0 || decodedByte > 255) {
-      throw new BSONError('only accepts number in a valid unsigned byte range 0-255');
-    }
-
-    if (this.buffer.byteLength > this.position) {
-      this.buffer[this.position++] = decodedByte;
-    } else {
-      const newSpace = ByteUtils.allocate(Binary.BUFFER_SIZE + this.buffer.length);
-      newSpace.set(this.buffer, 0);
-      this.buffer = newSpace;
-      this.buffer[this.position++] = decodedByte;
-    }
-  }
-
-  /**
-   * Writes a buffer to the binary.
-   *
-   * @param sequence - a string or buffer to be written to the Binary BSON object.
-   * @param offset - specify the binary of where to write the content.
-   */
-  write(sequence: BinarySequence, offset: number): void {
-    offset = typeof offset === 'number' ? offset : this.position;
-
-    // If the buffer is to small let's extend the buffer
-    if (this.buffer.byteLength < offset + sequence.length) {
-      const newSpace = ByteUtils.allocate(this.buffer.byteLength + sequence.length);
-      newSpace.set(this.buffer, 0);
-
-      // Assign the new buffer
-      this.buffer = newSpace;
-    }
-
-    if (ArrayBuffer.isView(sequence)) {
-      this.buffer.set(ByteUtils.toLocalBufferType(sequence), offset);
-      this.position =
-        offset + sequence.byteLength > this.position ? offset + sequence.length : this.position;
-    } else if (typeof sequence === 'string') {
-      throw new BSONError('input cannot be string');
-    }
-  }
-
-  /**
-   * Reads **length** bytes starting at **position**.
-   *
-   * @param position - read from the given position in the Binary.
-   * @param length - the number of bytes to read.
-   */
-  read(position: number, length: number): BinarySequence {
-    length = length && length > 0 ? length : this.position;
-
-    // Let's return the data based on the type we have
-    return this.buffer.slice(position, position + length);
-  }
-
-  /** returns a view of the binary value as a Uint8Array */
-  value(): Uint8Array {
-    // Optimize to serialize for the situation where the data == size of buffer
-    return this.buffer.length === this.position
-      ? this.buffer
-      : this.buffer.subarray(0, this.position);
-  }
-
-  /** the length of the binary sequence */
-  length(): number {
-    return this.position;
-  }
-
-  toJSON(): string {
-    return ByteUtils.toBase64(this.buffer);
-  }
-
-  toString(encoding?: 'hex' | 'base64' | 'utf8' | 'utf-8'): string {
-    if (encoding === 'hex') return ByteUtils.toHex(this.buffer);
-    if (encoding === 'base64') return ByteUtils.toBase64(this.buffer);
-    if (encoding === 'utf8' || encoding === 'utf-8')
-      return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
-    return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
-  }
-
-  /** @internal */
-  toExtendedJSON(options?: EJSONOptions): BinaryExtendedLegacy | BinaryExtended {
-    options = options || {};
-    const base64String = ByteUtils.toBase64(this.buffer);
-
-    const subType = Number(this.sub_type).toString(16);
-    if (options.legacy) {
-      return {
-        $binary: base64String,
-        $type: subType.length === 1 ? '0' + subType : subType
-      };
-    }
-    return {
-      $binary: {
-        base64: base64String,
-        subType: subType.length === 1 ? '0' + subType : subType
-      }
-    };
-  }
-
-  toUUID(): UUID {
-    if (this.sub_type === Binary.SUBTYPE_UUID) {
-      return new UUID(this.buffer.slice(0, this.position));
-    }
-
-    throw new BSONError(
-      `Binary sub_type "${this.sub_type}" is not supported for converting to UUID. Only "${Binary.SUBTYPE_UUID}" is currently supported.`
-    );
-  }
-
-  /** Creates an Binary instance from a hex digit string */
-  static createFromHexString(hex: string, subType?: number): Binary {
-    return new Binary(ByteUtils.fromHex(hex), subType);
-  }
-
-  /** Creates an Binary instance from a base64 string */
-  static createFromBase64(base64: string, subType?: number): Binary {
-    return new Binary(ByteUtils.fromBase64(base64), subType);
-  }
-
-  /** @internal */
-  static fromExtendedJSON(
-    doc: BinaryExtendedLegacy | BinaryExtended | UUIDExtended,
-    options?: EJSONOptions
-  ): Binary {
-    options = options || {};
-    let data: Uint8Array | undefined;
-    let type;
-    if ('$binary' in doc) {
-      if (options.legacy && typeof doc.$binary === 'string' && '$type' in doc) {
-        type = doc.$type ? parseInt(doc.$type, 16) : 0;
-        data = ByteUtils.fromBase64(doc.$binary);
-      } else {
-        if (typeof doc.$binary !== 'string') {
-          type = doc.$binary.subType ? parseInt(doc.$binary.subType, 16) : 0;
-          data = ByteUtils.fromBase64(doc.$binary.base64);
-        }
-      }
-    } else if ('$uuid' in doc) {
-      type = 4;
-      data = UUID.bytesFromString(doc.$uuid);
-    }
-    if (!data) {
-      throw new BSONError(`Unexpected Binary Extended JSON format ${JSON.stringify(doc)}`);
-    }
-    return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type);
-  }
-
-  inspect(depth?: number, options?: unknown, inspect?: InspectFn): string {
-    inspect ??= defaultInspect;
-    const base64 = ByteUtils.toBase64(this.buffer.subarray(0, this.position));
-    const base64Arg = inspect(base64, options);
-    const subTypeArg = inspect(this.sub_type, options);
-    return `Binary.createFromBase64(${base64Arg}, ${subTypeArg})`;
-  }
-}
-
-/** @public */
-export type UUIDExtended = {
-  $uuid: string;
-};
-
-const UUID_BYTE_LENGTH = 16;
-const UUID_WITHOUT_DASHES = /^[0-9A-F]{32}$/i;
-const UUID_WITH_DASHES = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
-
-/**
- * A class representation of the BSON UUID type.
- * @public
- */
-export class UUID extends Binary {
-  /**
-   * Create a UUID type
-   *
-   * When the argument to the constructor is omitted a random v4 UUID will be generated.
-   *
-   * @param input - Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer.
-   */
-  constructor(input?: string | Uint8Array | UUID) {
-    let bytes: Uint8Array;
-    if (input == null) {
-      bytes = UUID.generate();
-    } else if (input instanceof UUID) {
-      bytes = ByteUtils.toLocalBufferType(new Uint8Array(input.buffer));
-    } else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) {
-      bytes = ByteUtils.toLocalBufferType(input);
-    } else if (typeof input === 'string') {
-      bytes = UUID.bytesFromString(input);
-    } else {
-      throw new BSONError(
-        'Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'
-      );
-    }
-    super(bytes, BSON_BINARY_SUBTYPE_UUID_NEW);
-  }
-
-  /**
-   * The UUID bytes
-   * @readonly
-   */
-  get id(): Uint8Array {
-    return this.buffer;
-  }
-
-  set id(value: Uint8Array) {
-    this.buffer = value;
-  }
-
-  /**
-   * Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated)
-   * @param includeDashes - should the string exclude dash-separators.
-   */
-  toHexString(includeDashes = true): string {
-    if (includeDashes) {
-      return [
-        ByteUtils.toHex(this.buffer.subarray(0, 4)),
-        ByteUtils.toHex(this.buffer.subarray(4, 6)),
-        ByteUtils.toHex(this.buffer.subarray(6, 8)),
-        ByteUtils.toHex(this.buffer.subarray(8, 10)),
-        ByteUtils.toHex(this.buffer.subarray(10, 16))
-      ].join('-');
-    }
-    return ByteUtils.toHex(this.buffer);
-  }
-
-  /**
-   * Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified.
-   */
-  toString(encoding?: 'hex' | 'base64'): string {
-    if (encoding === 'hex') return ByteUtils.toHex(this.id);
-    if (encoding === 'base64') return ByteUtils.toBase64(this.id);
-    return this.toHexString();
-  }
-
-  /**
-   * Converts the id into its JSON string representation.
-   * A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
-   */
-  toJSON(): string {
-    return this.toHexString();
-  }
-
-  /**
-   * Compares the equality of this UUID with `otherID`.
-   *
-   * @param otherId - UUID instance to compare against.
-   */
-  equals(otherId: string | Uint8Array | UUID): boolean {
-    if (!otherId) {
-      return false;
-    }
-
-    if (otherId instanceof UUID) {
-      return ByteUtils.equals(otherId.id, this.id);
-    }
-
-    try {
-      return ByteUtils.equals(new UUID(otherId).id, this.id);
-    } catch {
-      return false;
-    }
-  }
-
-  /**
-   * Creates a Binary instance from the current UUID.
-   */
-  toBinary(): Binary {
-    return new Binary(this.id, Binary.SUBTYPE_UUID);
-  }
-
-  /**
-   * Generates a populated buffer containing a v4 uuid
-   */
-  static generate(): Uint8Array {
-    const bytes = ByteUtils.randomBytes(UUID_BYTE_LENGTH);
-
-    // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
-    // Kindly borrowed from https://github.com/uuidjs/uuid/blob/master/src/v4.js
-    bytes[6] = (bytes[6] & 0x0f) | 0x40;
-    bytes[8] = (bytes[8] & 0x3f) | 0x80;
-
-    return bytes;
-  }
-
-  /**
-   * Checks if a value is a valid bson UUID
-   * @param input - UUID, string or Buffer to validate.
-   */
-  static isValid(input: string | Uint8Array | UUID | Binary): boolean {
-    if (!input) {
-      return false;
-    }
-
-    if (typeof input === 'string') {
-      return UUID.isValidUUIDString(input);
-    }
-
-    if (isUint8Array(input)) {
-      return input.byteLength === UUID_BYTE_LENGTH;
-    }
-
-    return (
-      input._bsontype === 'Binary' &&
-      input.sub_type === this.SUBTYPE_UUID &&
-      input.buffer.byteLength === 16
-    );
-  }
-
-  /**
-   * Creates an UUID from a hex string representation of an UUID.
-   * @param hexString - 32 or 36 character hex string (dashes excluded/included).
-   */
-  static override createFromHexString(hexString: string): UUID {
-    const buffer = UUID.bytesFromString(hexString);
-    return new UUID(buffer);
-  }
-
-  /** Creates an UUID from a base64 string representation of an UUID. */
-  static override createFromBase64(base64: string): UUID {
-    return new UUID(ByteUtils.fromBase64(base64));
-  }
-
-  /** @internal */
-  static bytesFromString(representation: string) {
-    if (!UUID.isValidUUIDString(representation)) {
-      throw new BSONError(
-        'UUID string representation must be 32 hex digits or canonical hyphenated representation'
-      );
-    }
-    return ByteUtils.fromHex(representation.replace(/-/g, ''));
-  }
-
-  /**
-   * @internal
-   *
-   * Validates a string to be a hex digit sequence with or without dashes.
-   * The canonical hyphenated representation of a uuid is hex in 8-4-4-4-12 groups.
-   */
-  static isValidUUIDString(representation: string) {
-    return UUID_WITHOUT_DASHES.test(representation) || UUID_WITH_DASHES.test(representation);
-  }
-
-  /**
-   * Converts to a string representation of this Id.
-   *
-   * @returns return the 36 character hex string representation.
-   *
-   */
-  inspect(depth?: number, options?: unknown, inspect?: InspectFn): string {
-    inspect ??= defaultInspect;
-    return `new UUID(${inspect(this.toHexString(), options)})`;
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/bson.ts b/server/data-import/node_modules/bson/src/bson.ts
deleted file mode 100644
index 5b079291cadca4700bd497ebe54c67408ba89448..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/bson.ts
+++ /dev/null
@@ -1,247 +0,0 @@
-import { Binary, UUID } from './binary';
-import { Code } from './code';
-import { DBRef } from './db_ref';
-import { Decimal128 } from './decimal128';
-import { Double } from './double';
-import { Int32 } from './int_32';
-import { Long } from './long';
-import { MaxKey } from './max_key';
-import { MinKey } from './min_key';
-import { ObjectId } from './objectid';
-import { internalCalculateObjectSize } from './parser/calculate_size';
-// Parts of the parser
-import { internalDeserialize, type DeserializeOptions } from './parser/deserializer';
-import { serializeInto, type SerializeOptions } from './parser/serializer';
-import { BSONRegExp } from './regexp';
-import { BSONSymbol } from './symbol';
-import { Timestamp } from './timestamp';
-import { ByteUtils } from './utils/byte_utils';
-import { NumberUtils } from './utils/number_utils';
-export type { UUIDExtended, BinaryExtended, BinaryExtendedLegacy, BinarySequence } from './binary';
-export type { CodeExtended } from './code';
-export type { DBRefLike } from './db_ref';
-export type { Decimal128Extended } from './decimal128';
-export type { DoubleExtended } from './double';
-export type { EJSONOptions } from './extended_json';
-export type { Int32Extended } from './int_32';
-export type { LongExtended } from './long';
-export type { MaxKeyExtended } from './max_key';
-export type { MinKeyExtended } from './min_key';
-export type { ObjectIdExtended, ObjectIdLike } from './objectid';
-export type { BSONRegExpExtended, BSONRegExpExtendedLegacy } from './regexp';
-export type { BSONSymbolExtended } from './symbol';
-export type { LongWithoutOverrides, TimestampExtended, TimestampOverrides } from './timestamp';
-export type { LongWithoutOverridesClass } from './timestamp';
-export type { SerializeOptions, DeserializeOptions };
-
-export {
-  Code,
-  BSONSymbol,
-  DBRef,
-  Binary,
-  ObjectId,
-  UUID,
-  Long,
-  Timestamp,
-  Double,
-  Int32,
-  MinKey,
-  MaxKey,
-  BSONRegExp,
-  Decimal128
-};
-export { BSONValue } from './bson_value';
-export { BSONError, BSONVersionError, BSONRuntimeError } from './error';
-export { BSONType } from './constants';
-export { EJSON } from './extended_json';
-
-/** @public */
-export interface Document {
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  [key: string]: any;
-}
-
-/** @internal */
-// Default Max Size
-const MAXSIZE = 1024 * 1024 * 17;
-
-// Current Internal Temporary Serialization Buffer
-let buffer = ByteUtils.allocate(MAXSIZE);
-
-/**
- * Sets the size of the internal serialization buffer.
- *
- * @param size - The desired size for the internal serialization buffer in bytes
- * @public
- */
-export function setInternalBufferSize(size: number): void {
-  // Resize the internal serialization buffer if needed
-  if (buffer.length < size) {
-    buffer = ByteUtils.allocate(size);
-  }
-}
-
-/**
- * Serialize a Javascript object.
- *
- * @param object - the Javascript object to serialize.
- * @returns Buffer object containing the serialized object.
- * @public
- */
-export function serialize(object: Document, options: SerializeOptions = {}): Uint8Array {
-  // Unpack the options
-  const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-  const serializeFunctions =
-    typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-  const ignoreUndefined =
-    typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-  const minInternalBufferSize =
-    typeof options.minInternalBufferSize === 'number' ? options.minInternalBufferSize : MAXSIZE;
-
-  // Resize the internal serialization buffer if needed
-  if (buffer.length < minInternalBufferSize) {
-    buffer = ByteUtils.allocate(minInternalBufferSize);
-  }
-
-  // Attempt to serialize
-  const serializationIndex = serializeInto(
-    buffer,
-    object,
-    checkKeys,
-    0,
-    0,
-    serializeFunctions,
-    ignoreUndefined,
-    null
-  );
-
-  // Create the final buffer
-  const finishedBuffer = ByteUtils.allocateUnsafe(serializationIndex);
-
-  // Copy into the finished buffer
-  finishedBuffer.set(buffer.subarray(0, serializationIndex), 0);
-
-  // Return the buffer
-  return finishedBuffer;
-}
-
-/**
- * Serialize a Javascript object using a predefined Buffer and index into the buffer,
- * useful when pre-allocating the space for serialization.
- *
- * @param object - the Javascript object to serialize.
- * @param finalBuffer - the Buffer you pre-allocated to store the serialized BSON object.
- * @returns the index pointing to the last written byte in the buffer.
- * @public
- */
-export function serializeWithBufferAndIndex(
-  object: Document,
-  finalBuffer: Uint8Array,
-  options: SerializeOptions = {}
-): number {
-  // Unpack the options
-  const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-  const serializeFunctions =
-    typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-  const ignoreUndefined =
-    typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-  const startIndex = typeof options.index === 'number' ? options.index : 0;
-
-  // Attempt to serialize
-  const serializationIndex = serializeInto(
-    buffer,
-    object,
-    checkKeys,
-    0,
-    0,
-    serializeFunctions,
-    ignoreUndefined,
-    null
-  );
-
-  finalBuffer.set(buffer.subarray(0, serializationIndex), startIndex);
-
-  // Return the index
-  return startIndex + serializationIndex - 1;
-}
-
-/**
- * Deserialize data as BSON.
- *
- * @param buffer - the buffer containing the serialized set of BSON documents.
- * @returns returns the deserialized Javascript Object.
- * @public
- */
-export function deserialize(buffer: Uint8Array, options: DeserializeOptions = {}): Document {
-  return internalDeserialize(ByteUtils.toLocalBufferType(buffer), options);
-}
-
-/** @public */
-export type CalculateObjectSizeOptions = Pick<
-  SerializeOptions,
-  'serializeFunctions' | 'ignoreUndefined'
->;
-
-/**
- * Calculate the bson size for a passed in Javascript object.
- *
- * @param object - the Javascript object to calculate the BSON byte size for
- * @returns size of BSON object in bytes
- * @public
- */
-export function calculateObjectSize(
-  object: Document,
-  options: CalculateObjectSizeOptions = {}
-): number {
-  options = options || {};
-
-  const serializeFunctions =
-    typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-  const ignoreUndefined =
-    typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
-
-  return internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined);
-}
-
-/**
- * Deserialize stream data as BSON documents.
- *
- * @param data - the buffer containing the serialized set of BSON documents.
- * @param startIndex - the start index in the data Buffer where the deserialization is to start.
- * @param numberOfDocuments - number of documents to deserialize.
- * @param documents - an array where to store the deserialized documents.
- * @param docStartIndex - the index in the documents array from where to start inserting documents.
- * @param options - additional options used for the deserialization.
- * @returns next index in the buffer after deserialization **x** numbers of documents.
- * @public
- */
-export function deserializeStream(
-  data: Uint8Array | ArrayBuffer,
-  startIndex: number,
-  numberOfDocuments: number,
-  documents: Document[],
-  docStartIndex: number,
-  options: DeserializeOptions
-): number {
-  const internalOptions = Object.assign(
-    { allowObjectSmallerThanBufferSize: true, index: 0 },
-    options
-  );
-  const bufferData = ByteUtils.toLocalBufferType(data);
-
-  let index = startIndex;
-  // Loop over all documents
-  for (let i = 0; i < numberOfDocuments; i++) {
-    // Find size of the document
-    const size = NumberUtils.getInt32LE(bufferData, index);
-    // Update options with index
-    internalOptions.index = index;
-    // Parse the document at this point
-    documents[docStartIndex + i] = internalDeserialize(bufferData, internalOptions);
-    // Adjust index by the document size
-    index = index + size;
-  }
-
-  // Return object containing end index of parsing and list of documents
-  return index;
-}
diff --git a/server/data-import/node_modules/bson/src/bson_value.ts b/server/data-import/node_modules/bson/src/bson_value.ts
deleted file mode 100644
index 069764d8c66c2510fedefaa85f9f4a0959a5131a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/bson_value.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { BSON_MAJOR_VERSION } from './constants';
-import { type InspectFn } from './parser/utils';
-
-/** @public */
-export abstract class BSONValue {
-  /** @public */
-  public abstract get _bsontype(): string;
-
-  /** @internal */
-  get [Symbol.for('@@mdb.bson.version')](): typeof BSON_MAJOR_VERSION {
-    return BSON_MAJOR_VERSION;
-  }
-
-  [Symbol.for('nodejs.util.inspect.custom')](
-    depth?: number,
-    options?: unknown,
-    inspect?: InspectFn
-  ): string {
-    return this.inspect(depth, options, inspect);
-  }
-
-  /**
-   * @public
-   * Prints a human-readable string of BSON value information
-   * If invoked manually without node.js.inspect function, this will default to a modified JSON.stringify
-   */
-  public abstract inspect(depth?: number, options?: unknown, inspect?: InspectFn): string;
-
-  /** @internal */
-  abstract toExtendedJSON(): unknown;
-}
diff --git a/server/data-import/node_modules/bson/src/code.ts b/server/data-import/node_modules/bson/src/code.ts
deleted file mode 100644
index 98b1ede9a66bc9b3f494b2921f1a712b71b55341..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/code.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import type { Document } from './bson';
-import { BSONValue } from './bson_value';
-import { type InspectFn, defaultInspect } from './parser/utils';
-
-/** @public */
-export interface CodeExtended {
-  $code: string;
-  $scope?: Document;
-}
-
-/**
- * A class representation of the BSON Code type.
- * @public
- * @category BSONType
- */
-export class Code extends BSONValue {
-  get _bsontype(): 'Code' {
-    return 'Code';
-  }
-
-  code: string;
-
-  // a code instance having a null scope is what determines whether
-  // it is BSONType 0x0D (just code) / 0x0F (code with scope)
-  scope: Document | null;
-
-  /**
-   * @param code - a string or function.
-   * @param scope - an optional scope for the function.
-   */
-  constructor(code: string | Function, scope?: Document | null) {
-    super();
-    this.code = code.toString();
-    this.scope = scope ?? null;
-  }
-
-  toJSON(): { code: string; scope?: Document } {
-    if (this.scope != null) {
-      return { code: this.code, scope: this.scope };
-    }
-
-    return { code: this.code };
-  }
-
-  /** @internal */
-  toExtendedJSON(): CodeExtended {
-    if (this.scope) {
-      return { $code: this.code, $scope: this.scope };
-    }
-
-    return { $code: this.code };
-  }
-
-  /** @internal */
-  static fromExtendedJSON(doc: CodeExtended): Code {
-    return new Code(doc.$code, doc.$scope);
-  }
-
-  inspect(depth?: number, options?: unknown, inspect?: InspectFn): string {
-    inspect ??= defaultInspect;
-    let parametersString = inspect(this.code, options);
-    const multiLineFn = parametersString.includes('\n');
-    if (this.scope != null) {
-      parametersString += `,${multiLineFn ? '\n' : ' '}${inspect(this.scope, options)}`;
-    }
-    const endingNewline = multiLineFn && this.scope === null;
-    return `new Code(${multiLineFn ? '\n' : ''}${parametersString}${endingNewline ? '\n' : ''})`;
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/constants.ts b/server/data-import/node_modules/bson/src/constants.ts
deleted file mode 100644
index 1311ef064674e80655f7b1fc1376c96f0bb57a4e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/constants.ts
+++ /dev/null
@@ -1,141 +0,0 @@
-/** @internal */
-export const BSON_MAJOR_VERSION = 6 as const;
-
-/** @internal */
-export const BSON_INT32_MAX = 0x7fffffff;
-/** @internal */
-export const BSON_INT32_MIN = -0x80000000;
-/** @internal */
-export const BSON_INT64_MAX = Math.pow(2, 63) - 1;
-/** @internal */
-export const BSON_INT64_MIN = -Math.pow(2, 63);
-
-/**
- * Any integer up to 2^53 can be precisely represented by a double.
- * @internal
- */
-export const JS_INT_MAX = Math.pow(2, 53);
-
-/**
- * Any integer down to -2^53 can be precisely represented by a double.
- * @internal
- */
-export const JS_INT_MIN = -Math.pow(2, 53);
-
-/** Number BSON Type @internal */
-export const BSON_DATA_NUMBER = 1;
-
-/** String BSON Type @internal */
-export const BSON_DATA_STRING = 2;
-
-/** Object BSON Type @internal */
-export const BSON_DATA_OBJECT = 3;
-
-/** Array BSON Type @internal */
-export const BSON_DATA_ARRAY = 4;
-
-/** Binary BSON Type @internal */
-export const BSON_DATA_BINARY = 5;
-
-/** Binary BSON Type @internal */
-export const BSON_DATA_UNDEFINED = 6;
-
-/** ObjectId BSON Type @internal */
-export const BSON_DATA_OID = 7;
-
-/** Boolean BSON Type @internal */
-export const BSON_DATA_BOOLEAN = 8;
-
-/** Date BSON Type @internal */
-export const BSON_DATA_DATE = 9;
-
-/** null BSON Type @internal */
-export const BSON_DATA_NULL = 10;
-
-/** RegExp BSON Type @internal */
-export const BSON_DATA_REGEXP = 11;
-
-/** Code BSON Type @internal */
-export const BSON_DATA_DBPOINTER = 12;
-
-/** Code BSON Type @internal */
-export const BSON_DATA_CODE = 13;
-
-/** Symbol BSON Type @internal */
-export const BSON_DATA_SYMBOL = 14;
-
-/** Code with Scope BSON Type @internal */
-export const BSON_DATA_CODE_W_SCOPE = 15;
-
-/** 32 bit Integer BSON Type @internal */
-export const BSON_DATA_INT = 16;
-
-/** Timestamp BSON Type @internal */
-export const BSON_DATA_TIMESTAMP = 17;
-
-/** Long BSON Type @internal */
-export const BSON_DATA_LONG = 18;
-
-/** Decimal128 BSON Type @internal */
-export const BSON_DATA_DECIMAL128 = 19;
-
-/** MinKey BSON Type @internal */
-export const BSON_DATA_MIN_KEY = 0xff;
-
-/** MaxKey BSON Type @internal */
-export const BSON_DATA_MAX_KEY = 0x7f;
-
-/** Binary Default Type @internal */
-export const BSON_BINARY_SUBTYPE_DEFAULT = 0;
-
-/** Binary Function Type @internal */
-export const BSON_BINARY_SUBTYPE_FUNCTION = 1;
-
-/** Binary Byte Array Type @internal */
-export const BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2;
-
-/** Binary Deprecated UUID Type @deprecated Please use BSON_BINARY_SUBTYPE_UUID_NEW @internal */
-export const BSON_BINARY_SUBTYPE_UUID = 3;
-
-/** Binary UUID Type @internal */
-export const BSON_BINARY_SUBTYPE_UUID_NEW = 4;
-
-/** Binary MD5 Type @internal */
-export const BSON_BINARY_SUBTYPE_MD5 = 5;
-
-/** Encrypted BSON type @internal */
-export const BSON_BINARY_SUBTYPE_ENCRYPTED = 6;
-
-/** Column BSON type @internal */
-export const BSON_BINARY_SUBTYPE_COLUMN = 7;
-
-/** Binary User Defined Type @internal */
-export const BSON_BINARY_SUBTYPE_USER_DEFINED = 128;
-
-/** @public */
-export const BSONType = Object.freeze({
-  double: 1,
-  string: 2,
-  object: 3,
-  array: 4,
-  binData: 5,
-  undefined: 6,
-  objectId: 7,
-  bool: 8,
-  date: 9,
-  null: 10,
-  regex: 11,
-  dbPointer: 12,
-  javascript: 13,
-  symbol: 14,
-  javascriptWithScope: 15,
-  int: 16,
-  timestamp: 17,
-  long: 18,
-  decimal: 19,
-  minKey: -1,
-  maxKey: 127
-} as const);
-
-/** @public */
-export type BSONType = (typeof BSONType)[keyof typeof BSONType];
diff --git a/server/data-import/node_modules/bson/src/db_ref.ts b/server/data-import/node_modules/bson/src/db_ref.ts
deleted file mode 100644
index fbb751f8aa13807001e2b051ab411add006d88f2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/db_ref.ts
+++ /dev/null
@@ -1,128 +0,0 @@
-import type { Document } from './bson';
-import { BSONValue } from './bson_value';
-import type { EJSONOptions } from './extended_json';
-import type { ObjectId } from './objectid';
-import { type InspectFn, defaultInspect } from './parser/utils';
-
-/** @public */
-export interface DBRefLike {
-  $ref: string;
-  $id: ObjectId;
-  $db?: string;
-}
-
-/** @internal */
-export function isDBRefLike(value: unknown): value is DBRefLike {
-  return (
-    value != null &&
-    typeof value === 'object' &&
-    '$id' in value &&
-    value.$id != null &&
-    '$ref' in value &&
-    typeof value.$ref === 'string' &&
-    // If '$db' is defined it MUST be a string, otherwise it should be absent
-    (!('$db' in value) || ('$db' in value && typeof value.$db === 'string'))
-  );
-}
-
-/**
- * A class representation of the BSON DBRef type.
- * @public
- * @category BSONType
- */
-export class DBRef extends BSONValue {
-  get _bsontype(): 'DBRef' {
-    return 'DBRef';
-  }
-
-  collection!: string;
-  oid!: ObjectId;
-  db?: string;
-  fields!: Document;
-
-  /**
-   * @param collection - the collection name.
-   * @param oid - the reference ObjectId.
-   * @param db - optional db name, if omitted the reference is local to the current db.
-   */
-  constructor(collection: string, oid: ObjectId, db?: string, fields?: Document) {
-    super();
-    // check if namespace has been provided
-    const parts = collection.split('.');
-    if (parts.length === 2) {
-      db = parts.shift();
-      collection = parts.shift()!;
-    }
-
-    this.collection = collection;
-    this.oid = oid;
-    this.db = db;
-    this.fields = fields || {};
-  }
-
-  // Property provided for compatibility with the 1.x parser
-  // the 1.x parser used a "namespace" property, while 4.x uses "collection"
-
-  /** @internal */
-  get namespace(): string {
-    return this.collection;
-  }
-
-  set namespace(value: string) {
-    this.collection = value;
-  }
-
-  toJSON(): DBRefLike & Document {
-    const o = Object.assign(
-      {
-        $ref: this.collection,
-        $id: this.oid
-      },
-      this.fields
-    );
-
-    if (this.db != null) o.$db = this.db;
-    return o;
-  }
-
-  /** @internal */
-  toExtendedJSON(options?: EJSONOptions): DBRefLike {
-    options = options || {};
-    let o: DBRefLike = {
-      $ref: this.collection,
-      $id: this.oid
-    };
-
-    if (options.legacy) {
-      return o;
-    }
-
-    if (this.db) o.$db = this.db;
-    o = Object.assign(o, this.fields);
-    return o;
-  }
-
-  /** @internal */
-  static fromExtendedJSON(doc: DBRefLike): DBRef {
-    const copy = Object.assign({}, doc) as Partial<DBRefLike>;
-    delete copy.$ref;
-    delete copy.$id;
-    delete copy.$db;
-    return new DBRef(doc.$ref, doc.$id, doc.$db, copy);
-  }
-
-  inspect(depth?: number, options?: unknown, inspect?: InspectFn): string {
-    inspect ??= defaultInspect;
-
-    const args = [
-      inspect(this.namespace, options),
-      inspect(this.oid, options),
-      ...(this.db ? [inspect(this.db, options)] : []),
-      ...(Object.keys(this.fields).length > 0 ? [inspect(this.fields, options)] : [])
-    ];
-
-    args[1] = inspect === defaultInspect ? `new ObjectId(${args[1]})` : args[1];
-
-    return `new DBRef(${args.join(', ')})`;
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/decimal128.ts b/server/data-import/node_modules/bson/src/decimal128.ts
deleted file mode 100644
index 806938e30e2f5bb49b3722e42888833948974ffc..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/decimal128.ts
+++ /dev/null
@@ -1,855 +0,0 @@
-import { BSONValue } from './bson_value';
-import { BSONError } from './error';
-import { Long } from './long';
-import { type InspectFn, defaultInspect, isUint8Array } from './parser/utils';
-import { ByteUtils } from './utils/byte_utils';
-
-const PARSE_STRING_REGEXP = /^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/;
-const PARSE_INF_REGEXP = /^(\+|-)?(Infinity|inf)$/i;
-const PARSE_NAN_REGEXP = /^(\+|-)?NaN$/i;
-
-const EXPONENT_MAX = 6111;
-const EXPONENT_MIN = -6176;
-const EXPONENT_BIAS = 6176;
-const MAX_DIGITS = 34;
-
-// Nan value bits as 32 bit values (due to lack of longs)
-const NAN_BUFFER = ByteUtils.fromNumberArray(
-  [
-    0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-  ].reverse()
-);
-// Infinity value bits 32 bit values (due to lack of longs)
-const INF_NEGATIVE_BUFFER = ByteUtils.fromNumberArray(
-  [
-    0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-  ].reverse()
-);
-const INF_POSITIVE_BUFFER = ByteUtils.fromNumberArray(
-  [
-    0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-  ].reverse()
-);
-
-const EXPONENT_REGEX = /^([-+])?(\d+)?$/;
-
-// Extract least significant 5 bits
-const COMBINATION_MASK = 0x1f;
-// Extract least significant 14 bits
-const EXPONENT_MASK = 0x3fff;
-// Value of combination field for Inf
-const COMBINATION_INFINITY = 30;
-// Value of combination field for NaN
-const COMBINATION_NAN = 31;
-
-// Detect if the value is a digit
-function isDigit(value: string): boolean {
-  return !isNaN(parseInt(value, 10));
-}
-
-// Divide two uint128 values
-function divideu128(value: { parts: [number, number, number, number] }) {
-  const DIVISOR = Long.fromNumber(1000 * 1000 * 1000);
-  let _rem = Long.fromNumber(0);
-
-  if (!value.parts[0] && !value.parts[1] && !value.parts[2] && !value.parts[3]) {
-    return { quotient: value, rem: _rem };
-  }
-
-  for (let i = 0; i <= 3; i++) {
-    // Adjust remainder to match value of next dividend
-    _rem = _rem.shiftLeft(32);
-    // Add the divided to _rem
-    _rem = _rem.add(new Long(value.parts[i], 0));
-    value.parts[i] = _rem.div(DIVISOR).low;
-    _rem = _rem.modulo(DIVISOR);
-  }
-
-  return { quotient: value, rem: _rem };
-}
-
-// Multiply two Long values and return the 128 bit value
-function multiply64x2(left: Long, right: Long): { high: Long; low: Long } {
-  if (!left && !right) {
-    return { high: Long.fromNumber(0), low: Long.fromNumber(0) };
-  }
-
-  const leftHigh = left.shiftRightUnsigned(32);
-  const leftLow = new Long(left.getLowBits(), 0);
-  const rightHigh = right.shiftRightUnsigned(32);
-  const rightLow = new Long(right.getLowBits(), 0);
-
-  let productHigh = leftHigh.multiply(rightHigh);
-  let productMid = leftHigh.multiply(rightLow);
-  const productMid2 = leftLow.multiply(rightHigh);
-  let productLow = leftLow.multiply(rightLow);
-
-  productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
-  productMid = new Long(productMid.getLowBits(), 0)
-    .add(productMid2)
-    .add(productLow.shiftRightUnsigned(32));
-
-  productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
-  productLow = productMid.shiftLeft(32).add(new Long(productLow.getLowBits(), 0));
-
-  // Return the 128 bit result
-  return { high: productHigh, low: productLow };
-}
-
-function lessThan(left: Long, right: Long): boolean {
-  // Make values unsigned
-  const uhleft = left.high >>> 0;
-  const uhright = right.high >>> 0;
-
-  // Compare high bits first
-  if (uhleft < uhright) {
-    return true;
-  } else if (uhleft === uhright) {
-    const ulleft = left.low >>> 0;
-    const ulright = right.low >>> 0;
-    if (ulleft < ulright) return true;
-  }
-
-  return false;
-}
-
-function invalidErr(string: string, message: string) {
-  throw new BSONError(`"${string}" is not a valid Decimal128 string - ${message}`);
-}
-
-/** @public */
-export interface Decimal128Extended {
-  $numberDecimal: string;
-}
-
-/**
- * A class representation of the BSON Decimal128 type.
- * @public
- * @category BSONType
- */
-export class Decimal128 extends BSONValue {
-  get _bsontype(): 'Decimal128' {
-    return 'Decimal128';
-  }
-
-  readonly bytes!: Uint8Array;
-
-  /**
-   * @param bytes - a buffer containing the raw Decimal128 bytes in little endian order,
-   *                or a string representation as returned by .toString()
-   */
-  constructor(bytes: Uint8Array | string) {
-    super();
-    if (typeof bytes === 'string') {
-      this.bytes = Decimal128.fromString(bytes).bytes;
-    } else if (isUint8Array(bytes)) {
-      if (bytes.byteLength !== 16) {
-        throw new BSONError('Decimal128 must take a Buffer of 16 bytes');
-      }
-      this.bytes = bytes;
-    } else {
-      throw new BSONError('Decimal128 must take a Buffer or string');
-    }
-  }
-
-  /**
-   * Create a Decimal128 instance from a string representation
-   *
-   * @param representation - a numeric string representation.
-   */
-  static fromString(representation: string): Decimal128 {
-    return Decimal128._fromString(representation, { allowRounding: false });
-  }
-
-  /**
-   * Create a Decimal128 instance from a string representation, allowing for rounding to 34
-   * significant digits
-   *
-   * @example Example of a number that will be rounded
-   * ```ts
-   * > let d = Decimal128.fromString('37.499999999999999196428571428571375')
-   * Uncaught:
-   * BSONError: "37.499999999999999196428571428571375" is not a valid Decimal128 string - inexact rounding
-   * at invalidErr (/home/wajames/js-bson/lib/bson.cjs:1402:11)
-   * at Decimal128.fromStringInternal (/home/wajames/js-bson/lib/bson.cjs:1633:25)
-   * at Decimal128.fromString (/home/wajames/js-bson/lib/bson.cjs:1424:27)
-   *
-   * > d = Decimal128.fromStringWithRounding('37.499999999999999196428571428571375')
-   * new Decimal128("37.49999999999999919642857142857138")
-   * ```
-   * @param representation - a numeric string representation.
-   */
-  static fromStringWithRounding(representation: string): Decimal128 {
-    return Decimal128._fromString(representation, { allowRounding: true });
-  }
-
-  private static _fromString(representation: string, options: { allowRounding: boolean }) {
-    // Parse state tracking
-    let isNegative = false;
-    let sawSign = false;
-    let sawRadix = false;
-    let foundNonZero = false;
-
-    // Total number of significant digits (no leading or trailing zero)
-    let significantDigits = 0;
-    // Total number of significand digits read
-    let nDigitsRead = 0;
-    // Total number of digits (no leading zeros)
-    let nDigits = 0;
-    // The number of the digits after radix
-    let radixPosition = 0;
-    // The index of the first non-zero in *str*
-    let firstNonZero = 0;
-
-    // Digits Array
-    const digits = [0];
-    // The number of digits in digits
-    let nDigitsStored = 0;
-    // Insertion pointer for digits
-    let digitsInsert = 0;
-    // The index of the last digit
-    let lastDigit = 0;
-
-    // Exponent
-    let exponent = 0;
-    // The high 17 digits of the significand
-    let significandHigh = new Long(0, 0);
-    // The low 17 digits of the significand
-    let significandLow = new Long(0, 0);
-    // The biased exponent
-    let biasedExponent = 0;
-
-    // Read index
-    let index = 0;
-
-    // Naively prevent against REDOS attacks.
-    // TODO: implementing a custom parsing for this, or refactoring the regex would yield
-    //       further gains.
-    if (representation.length >= 7000) {
-      throw new BSONError('' + representation + ' not a valid Decimal128 string');
-    }
-
-    // Results
-    const stringMatch = representation.match(PARSE_STRING_REGEXP);
-    const infMatch = representation.match(PARSE_INF_REGEXP);
-    const nanMatch = representation.match(PARSE_NAN_REGEXP);
-
-    // Validate the string
-    if ((!stringMatch && !infMatch && !nanMatch) || representation.length === 0) {
-      throw new BSONError('' + representation + ' not a valid Decimal128 string');
-    }
-
-    if (stringMatch) {
-      // full_match = stringMatch[0]
-      // sign = stringMatch[1]
-
-      const unsignedNumber = stringMatch[2];
-      // stringMatch[3] is undefined if a whole number (ex "1", 12")
-      // but defined if a number w/ decimal in it (ex "1.0, 12.2")
-
-      const e = stringMatch[4];
-      const expSign = stringMatch[5];
-      const expNumber = stringMatch[6];
-
-      // they provided e, but didn't give an exponent number. for ex "1e"
-      if (e && expNumber === undefined) invalidErr(representation, 'missing exponent power');
-
-      // they provided e, but didn't give a number before it. for ex "e1"
-      if (e && unsignedNumber === undefined) invalidErr(representation, 'missing exponent base');
-
-      if (e === undefined && (expSign || expNumber)) {
-        invalidErr(representation, 'missing e before exponent');
-      }
-    }
-
-    // Get the negative or positive sign
-    if (representation[index] === '+' || representation[index] === '-') {
-      sawSign = true;
-      isNegative = representation[index++] === '-';
-    }
-
-    // Check if user passed Infinity or NaN
-    if (!isDigit(representation[index]) && representation[index] !== '.') {
-      if (representation[index] === 'i' || representation[index] === 'I') {
-        return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
-      } else if (representation[index] === 'N') {
-        return new Decimal128(NAN_BUFFER);
-      }
-    }
-
-    // Read all the digits
-    while (isDigit(representation[index]) || representation[index] === '.') {
-      if (representation[index] === '.') {
-        if (sawRadix) invalidErr(representation, 'contains multiple periods');
-
-        sawRadix = true;
-        index = index + 1;
-        continue;
-      }
-
-      if (nDigitsStored < MAX_DIGITS) {
-        if (representation[index] !== '0' || foundNonZero) {
-          if (!foundNonZero) {
-            firstNonZero = nDigitsRead;
-          }
-
-          foundNonZero = true;
-
-          // Only store 34 digits
-          digits[digitsInsert++] = parseInt(representation[index], 10);
-          nDigitsStored = nDigitsStored + 1;
-        }
-      }
-
-      if (foundNonZero) nDigits = nDigits + 1;
-      if (sawRadix) radixPosition = radixPosition + 1;
-
-      nDigitsRead = nDigitsRead + 1;
-      index = index + 1;
-    }
-
-    if (sawRadix && !nDigitsRead)
-      throw new BSONError('' + representation + ' not a valid Decimal128 string');
-
-    // Read exponent if exists
-    if (representation[index] === 'e' || representation[index] === 'E') {
-      // Read exponent digits
-      const match = representation.substr(++index).match(EXPONENT_REGEX);
-
-      // No digits read
-      if (!match || !match[2]) return new Decimal128(NAN_BUFFER);
-
-      // Get exponent
-      exponent = parseInt(match[0], 10);
-
-      // Adjust the index
-      index = index + match[0].length;
-    }
-
-    // Return not a number
-    if (representation[index]) return new Decimal128(NAN_BUFFER);
-
-    // Done reading input
-    // Find first non-zero digit in digits
-    if (!nDigitsStored) {
-      digits[0] = 0;
-      nDigits = 1;
-      nDigitsStored = 1;
-      significantDigits = 0;
-    } else {
-      lastDigit = nDigitsStored - 1;
-      significantDigits = nDigits;
-      if (significantDigits !== 1) {
-        while (
-          representation[
-            firstNonZero + significantDigits - 1 + Number(sawSign) + Number(sawRadix)
-          ] === '0'
-        ) {
-          significantDigits = significantDigits - 1;
-        }
-      }
-    }
-
-    // Normalization of exponent
-    // Correct exponent based on radix position, and shift significand as needed
-    // to represent user input
-
-    // Overflow prevention
-    if (exponent <= radixPosition && radixPosition > exponent + (1 << 14)) {
-      exponent = EXPONENT_MIN;
-    } else {
-      exponent = exponent - radixPosition;
-    }
-
-    // Attempt to normalize the exponent
-    while (exponent > EXPONENT_MAX) {
-      // Shift exponent to significand and decrease
-      lastDigit = lastDigit + 1;
-      if (lastDigit >= MAX_DIGITS) {
-        // Check if we have a zero then just hard clamp, otherwise fail
-        if (significantDigits === 0) {
-          exponent = EXPONENT_MAX;
-          break;
-        }
-
-        invalidErr(representation, 'overflow');
-      }
-      exponent = exponent - 1;
-    }
-
-    if (options.allowRounding) {
-      while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
-        // Shift last digit. can only do this if < significant digits than # stored.
-        if (lastDigit === 0 && significantDigits < nDigitsStored) {
-          exponent = EXPONENT_MIN;
-          significantDigits = 0;
-          break;
-        }
-
-        if (nDigitsStored < nDigits) {
-          // adjust to match digits not stored
-          nDigits = nDigits - 1;
-        } else {
-          // adjust to round
-          lastDigit = lastDigit - 1;
-        }
-
-        if (exponent < EXPONENT_MAX) {
-          exponent = exponent + 1;
-        } else {
-          // Check if we have a zero then just hard clamp, otherwise fail
-          const digitsString = digits.join('');
-          if (digitsString.match(/^0+$/)) {
-            exponent = EXPONENT_MAX;
-            break;
-          }
-          invalidErr(representation, 'overflow');
-        }
-      }
-
-      // Round
-      // We've normalized the exponent, but might still need to round.
-      if (lastDigit + 1 < significantDigits) {
-        let endOfString = nDigitsRead;
-
-        // If we have seen a radix point, 'string' is 1 longer than we have
-        // documented with ndigits_read, so inc the position of the first nonzero
-        // digit and the position that digits are read to.
-        if (sawRadix) {
-          firstNonZero = firstNonZero + 1;
-          endOfString = endOfString + 1;
-        }
-        // if negative, we need to increment again to account for - sign at start.
-        if (sawSign) {
-          firstNonZero = firstNonZero + 1;
-          endOfString = endOfString + 1;
-        }
-
-        const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
-        let roundBit = 0;
-
-        if (roundDigit >= 5) {
-          roundBit = 1;
-          if (roundDigit === 5) {
-            roundBit = digits[lastDigit] % 2 === 1 ? 1 : 0;
-            for (let i = firstNonZero + lastDigit + 2; i < endOfString; i++) {
-              if (parseInt(representation[i], 10)) {
-                roundBit = 1;
-                break;
-              }
-            }
-          }
-        }
-
-        if (roundBit) {
-          let dIdx = lastDigit;
-
-          for (; dIdx >= 0; dIdx--) {
-            if (++digits[dIdx] > 9) {
-              digits[dIdx] = 0;
-
-              // overflowed most significant digit
-              if (dIdx === 0) {
-                if (exponent < EXPONENT_MAX) {
-                  exponent = exponent + 1;
-                  digits[dIdx] = 1;
-                } else {
-                  return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
-                }
-              }
-            } else {
-              break;
-            }
-          }
-        }
-      }
-    } else {
-      while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
-        // Shift last digit. can only do this if < significant digits than # stored.
-        if (lastDigit === 0) {
-          if (significantDigits === 0) {
-            exponent = EXPONENT_MIN;
-            break;
-          }
-
-          invalidErr(representation, 'exponent underflow');
-        }
-
-        if (nDigitsStored < nDigits) {
-          if (
-            representation[nDigits - 1 + Number(sawSign) + Number(sawRadix)] !== '0' &&
-            significantDigits !== 0
-          ) {
-            invalidErr(representation, 'inexact rounding');
-          }
-          // adjust to match digits not stored
-          nDigits = nDigits - 1;
-        } else {
-          if (digits[lastDigit] !== 0) {
-            invalidErr(representation, 'inexact rounding');
-          }
-          // adjust to round
-          lastDigit = lastDigit - 1;
-        }
-
-        if (exponent < EXPONENT_MAX) {
-          exponent = exponent + 1;
-        } else {
-          invalidErr(representation, 'overflow');
-        }
-      }
-
-      // Round
-      // We've normalized the exponent, but might still need to round.
-      if (lastDigit + 1 < significantDigits) {
-        // If we have seen a radix point, 'string' is 1 longer than we have
-        // documented with ndigits_read, so inc the position of the first nonzero
-        // digit and the position that digits are read to.
-        if (sawRadix) {
-          firstNonZero = firstNonZero + 1;
-        }
-        // if saw sign, we need to increment again to account for - or + sign at start.
-        if (sawSign) {
-          firstNonZero = firstNonZero + 1;
-        }
-
-        const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
-
-        if (roundDigit !== 0) {
-          invalidErr(representation, 'inexact rounding');
-        }
-      }
-    }
-
-    // Encode significand
-    // The high 17 digits of the significand
-    significandHigh = Long.fromNumber(0);
-    // The low 17 digits of the significand
-    significandLow = Long.fromNumber(0);
-
-    // read a zero
-    if (significantDigits === 0) {
-      significandHigh = Long.fromNumber(0);
-      significandLow = Long.fromNumber(0);
-    } else if (lastDigit < 17) {
-      let dIdx = 0;
-      significandLow = Long.fromNumber(digits[dIdx++]);
-      significandHigh = new Long(0, 0);
-
-      for (; dIdx <= lastDigit; dIdx++) {
-        significandLow = significandLow.multiply(Long.fromNumber(10));
-        significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
-      }
-    } else {
-      let dIdx = 0;
-      significandHigh = Long.fromNumber(digits[dIdx++]);
-
-      for (; dIdx <= lastDigit - 17; dIdx++) {
-        significandHigh = significandHigh.multiply(Long.fromNumber(10));
-        significandHigh = significandHigh.add(Long.fromNumber(digits[dIdx]));
-      }
-
-      significandLow = Long.fromNumber(digits[dIdx++]);
-
-      for (; dIdx <= lastDigit; dIdx++) {
-        significandLow = significandLow.multiply(Long.fromNumber(10));
-        significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
-      }
-    }
-
-    const significand = multiply64x2(significandHigh, Long.fromString('100000000000000000'));
-    significand.low = significand.low.add(significandLow);
-
-    if (lessThan(significand.low, significandLow)) {
-      significand.high = significand.high.add(Long.fromNumber(1));
-    }
-
-    // Biased exponent
-    biasedExponent = exponent + EXPONENT_BIAS;
-    const dec = { low: Long.fromNumber(0), high: Long.fromNumber(0) };
-
-    // Encode combination, exponent, and significand.
-    if (
-      significand.high.shiftRightUnsigned(49).and(Long.fromNumber(1)).equals(Long.fromNumber(1))
-    ) {
-      // Encode '11' into bits 1 to 3
-      dec.high = dec.high.or(Long.fromNumber(0x3).shiftLeft(61));
-      dec.high = dec.high.or(
-        Long.fromNumber(biasedExponent).and(Long.fromNumber(0x3fff).shiftLeft(47))
-      );
-      dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x7fffffffffff)));
-    } else {
-      dec.high = dec.high.or(Long.fromNumber(biasedExponent & 0x3fff).shiftLeft(49));
-      dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x1ffffffffffff)));
-    }
-
-    dec.low = significand.low;
-
-    // Encode sign
-    if (isNegative) {
-      dec.high = dec.high.or(Long.fromString('9223372036854775808'));
-    }
-
-    // Encode into a buffer
-    const buffer = ByteUtils.allocateUnsafe(16);
-    index = 0;
-
-    // Encode the low 64 bits of the decimal
-    // Encode low bits
-    buffer[index++] = dec.low.low & 0xff;
-    buffer[index++] = (dec.low.low >> 8) & 0xff;
-    buffer[index++] = (dec.low.low >> 16) & 0xff;
-    buffer[index++] = (dec.low.low >> 24) & 0xff;
-    // Encode high bits
-    buffer[index++] = dec.low.high & 0xff;
-    buffer[index++] = (dec.low.high >> 8) & 0xff;
-    buffer[index++] = (dec.low.high >> 16) & 0xff;
-    buffer[index++] = (dec.low.high >> 24) & 0xff;
-
-    // Encode the high 64 bits of the decimal
-    // Encode low bits
-    buffer[index++] = dec.high.low & 0xff;
-    buffer[index++] = (dec.high.low >> 8) & 0xff;
-    buffer[index++] = (dec.high.low >> 16) & 0xff;
-    buffer[index++] = (dec.high.low >> 24) & 0xff;
-    // Encode high bits
-    buffer[index++] = dec.high.high & 0xff;
-    buffer[index++] = (dec.high.high >> 8) & 0xff;
-    buffer[index++] = (dec.high.high >> 16) & 0xff;
-    buffer[index++] = (dec.high.high >> 24) & 0xff;
-
-    // Return the new Decimal128
-    return new Decimal128(buffer);
-  }
-  /** Create a string representation of the raw Decimal128 value */
-  toString(): string {
-    // Note: bits in this routine are referred to starting at 0,
-    // from the sign bit, towards the coefficient.
-
-    // decoded biased exponent (14 bits)
-    let biased_exponent;
-    // the number of significand digits
-    let significand_digits = 0;
-    // the base-10 digits in the significand
-    const significand = new Array<number>(36);
-    for (let i = 0; i < significand.length; i++) significand[i] = 0;
-    // read pointer into significand
-    let index = 0;
-
-    // true if the number is zero
-    let is_zero = false;
-
-    // the most significant significand bits (50-46)
-    let significand_msb;
-    // temporary storage for significand decoding
-    let significand128: { parts: [number, number, number, number] } = { parts: [0, 0, 0, 0] };
-    // indexing variables
-    let j, k;
-
-    // Output string
-    const string: string[] = [];
-
-    // Unpack index
-    index = 0;
-
-    // Buffer reference
-    const buffer = this.bytes;
-
-    // Unpack the low 64bits into a long
-    // bits 96 - 127
-    const low =
-      buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-    // bits 64 - 95
-    const midl =
-      buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-
-    // Unpack the high 64bits into a long
-    // bits 32 - 63
-    const midh =
-      buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-    // bits 0 - 31
-    const high =
-      buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
-
-    // Unpack index
-    index = 0;
-
-    // Create the state of the decimal
-    const dec = {
-      low: new Long(low, midl),
-      high: new Long(midh, high)
-    };
-
-    if (dec.high.lessThan(Long.ZERO)) {
-      string.push('-');
-    }
-
-    // Decode combination field and exponent
-    // bits 1 - 5
-    const combination = (high >> 26) & COMBINATION_MASK;
-
-    if (combination >> 3 === 3) {
-      // Check for 'special' values
-      if (combination === COMBINATION_INFINITY) {
-        return string.join('') + 'Infinity';
-      } else if (combination === COMBINATION_NAN) {
-        return 'NaN';
-      } else {
-        biased_exponent = (high >> 15) & EXPONENT_MASK;
-        significand_msb = 0x08 + ((high >> 14) & 0x01);
-      }
-    } else {
-      significand_msb = (high >> 14) & 0x07;
-      biased_exponent = (high >> 17) & EXPONENT_MASK;
-    }
-
-    // unbiased exponent
-    const exponent = biased_exponent - EXPONENT_BIAS;
-
-    // Create string of significand digits
-
-    // Convert the 114-bit binary number represented by
-    // (significand_high, significand_low) to at most 34 decimal
-    // digits through modulo and division.
-    significand128.parts[0] = (high & 0x3fff) + ((significand_msb & 0xf) << 14);
-    significand128.parts[1] = midh;
-    significand128.parts[2] = midl;
-    significand128.parts[3] = low;
-
-    if (
-      significand128.parts[0] === 0 &&
-      significand128.parts[1] === 0 &&
-      significand128.parts[2] === 0 &&
-      significand128.parts[3] === 0
-    ) {
-      is_zero = true;
-    } else {
-      for (k = 3; k >= 0; k--) {
-        let least_digits = 0;
-        // Perform the divide
-        const result = divideu128(significand128);
-        significand128 = result.quotient;
-        least_digits = result.rem.low;
-
-        // We now have the 9 least significant digits (in base 2).
-        // Convert and output to string.
-        if (!least_digits) continue;
-
-        for (j = 8; j >= 0; j--) {
-          // significand[k * 9 + j] = Math.round(least_digits % 10);
-          significand[k * 9 + j] = least_digits % 10;
-          // least_digits = Math.round(least_digits / 10);
-          least_digits = Math.floor(least_digits / 10);
-        }
-      }
-    }
-
-    // Output format options:
-    // Scientific - [-]d.dddE(+/-)dd or [-]dE(+/-)dd
-    // Regular    - ddd.ddd
-
-    if (is_zero) {
-      significand_digits = 1;
-      significand[index] = 0;
-    } else {
-      significand_digits = 36;
-      while (!significand[index]) {
-        significand_digits = significand_digits - 1;
-        index = index + 1;
-      }
-    }
-
-    // the exponent if scientific notation is used
-    const scientific_exponent = significand_digits - 1 + exponent;
-
-    // The scientific exponent checks are dictated by the string conversion
-    // specification and are somewhat arbitrary cutoffs.
-    //
-    // We must check exponent > 0, because if this is the case, the number
-    // has trailing zeros.  However, we *cannot* output these trailing zeros,
-    // because doing so would change the precision of the value, and would
-    // change stored data if the string converted number is round tripped.
-    if (scientific_exponent >= 34 || scientific_exponent <= -7 || exponent > 0) {
-      // Scientific format
-
-      // if there are too many significant digits, we should just be treating numbers
-      // as + or - 0 and using the non-scientific exponent (this is for the "invalid
-      // representation should be treated as 0/-0" spec cases in decimal128-1.json)
-      if (significand_digits > 34) {
-        string.push(`${0}`);
-        if (exponent > 0) string.push(`E+${exponent}`);
-        else if (exponent < 0) string.push(`E${exponent}`);
-        return string.join('');
-      }
-
-      string.push(`${significand[index++]}`);
-      significand_digits = significand_digits - 1;
-
-      if (significand_digits) {
-        string.push('.');
-      }
-
-      for (let i = 0; i < significand_digits; i++) {
-        string.push(`${significand[index++]}`);
-      }
-
-      // Exponent
-      string.push('E');
-      if (scientific_exponent > 0) {
-        string.push(`+${scientific_exponent}`);
-      } else {
-        string.push(`${scientific_exponent}`);
-      }
-    } else {
-      // Regular format with no decimal place
-      if (exponent >= 0) {
-        for (let i = 0; i < significand_digits; i++) {
-          string.push(`${significand[index++]}`);
-        }
-      } else {
-        let radix_position = significand_digits + exponent;
-
-        // non-zero digits before radix
-        if (radix_position > 0) {
-          for (let i = 0; i < radix_position; i++) {
-            string.push(`${significand[index++]}`);
-          }
-        } else {
-          string.push('0');
-        }
-
-        string.push('.');
-        // add leading zeros after radix
-        while (radix_position++ < 0) {
-          string.push('0');
-        }
-
-        for (let i = 0; i < significand_digits - Math.max(radix_position - 1, 0); i++) {
-          string.push(`${significand[index++]}`);
-        }
-      }
-    }
-
-    return string.join('');
-  }
-
-  toJSON(): Decimal128Extended {
-    return { $numberDecimal: this.toString() };
-  }
-
-  /** @internal */
-  toExtendedJSON(): Decimal128Extended {
-    return { $numberDecimal: this.toString() };
-  }
-
-  /** @internal */
-  static fromExtendedJSON(doc: Decimal128Extended): Decimal128 {
-    return Decimal128.fromString(doc.$numberDecimal);
-  }
-
-  inspect(depth?: number, options?: unknown, inspect?: InspectFn): string {
-    inspect ??= defaultInspect;
-    const d128string = inspect(this.toString(), options);
-    return `new Decimal128(${d128string})`;
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/double.ts b/server/data-import/node_modules/bson/src/double.ts
deleted file mode 100644
index 6dcec2e9037a7106d5133daab64a07762fd1e840..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/double.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-import { BSONValue } from './bson_value';
-import type { EJSONOptions } from './extended_json';
-import { type InspectFn, defaultInspect } from './parser/utils';
-
-/** @public */
-export interface DoubleExtended {
-  $numberDouble: string;
-}
-
-/**
- * A class representation of the BSON Double type.
- * @public
- * @category BSONType
- */
-export class Double extends BSONValue {
-  get _bsontype(): 'Double' {
-    return 'Double';
-  }
-
-  value!: number;
-  /**
-   * Create a Double type
-   *
-   * @param value - the number we want to represent as a double.
-   */
-  constructor(value: number) {
-    super();
-    if ((value as unknown) instanceof Number) {
-      value = value.valueOf();
-    }
-
-    this.value = +value;
-  }
-
-  /**
-   * Access the number value.
-   *
-   * @returns returns the wrapped double number.
-   */
-  valueOf(): number {
-    return this.value;
-  }
-
-  toJSON(): number {
-    return this.value;
-  }
-
-  toString(radix?: number): string {
-    return this.value.toString(radix);
-  }
-
-  /** @internal */
-  toExtendedJSON(options?: EJSONOptions): number | DoubleExtended {
-    if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) {
-      return this.value;
-    }
-
-    if (Object.is(Math.sign(this.value), -0)) {
-      // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user
-      // explicitly provided `-0` then we need to ensure the sign makes it into the output
-      return { $numberDouble: '-0.0' };
-    }
-
-    return {
-      $numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString()
-    };
-  }
-
-  /** @internal */
-  static fromExtendedJSON(doc: DoubleExtended, options?: EJSONOptions): number | Double {
-    const doubleValue = parseFloat(doc.$numberDouble);
-    return options && options.relaxed ? doubleValue : new Double(doubleValue);
-  }
-
-  inspect(depth?: number, options?: unknown, inspect?: InspectFn): string {
-    inspect ??= defaultInspect;
-    return `new Double(${inspect(this.value, options)})`;
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/error.ts b/server/data-import/node_modules/bson/src/error.ts
deleted file mode 100644
index 3f2711e9f670da911c502202af5697622c77647a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/error.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-import { BSON_MAJOR_VERSION } from './constants';
-
-/**
- * @public
- * @category Error
- *
- * `BSONError` objects are thrown when BSON encounters an error.
- *
- * This is the parent class for all the other errors thrown by this library.
- */
-export class BSONError extends Error {
-  /**
-   * @internal
-   * The underlying algorithm for isBSONError may change to improve how strict it is
-   * about determining if an input is a BSONError. But it must remain backwards compatible
-   * with previous minors & patches of the current major version.
-   */
-  protected get bsonError(): true {
-    return true;
-  }
-
-  override get name(): string {
-    return 'BSONError';
-  }
-
-  constructor(message: string, options?: { cause?: unknown }) {
-    super(message, options);
-  }
-
-  /**
-   * @public
-   *
-   * All errors thrown from the BSON library inherit from `BSONError`.
-   * This method can assist with determining if an error originates from the BSON library
-   * even if it does not pass an `instanceof` check against this class' constructor.
-   *
-   * @param value - any javascript value that needs type checking
-   */
-  public static isBSONError(value: unknown): value is BSONError {
-    return (
-      value != null &&
-      typeof value === 'object' &&
-      'bsonError' in value &&
-      value.bsonError === true &&
-      // Do not access the following properties, just check existence
-      'name' in value &&
-      'message' in value &&
-      'stack' in value
-    );
-  }
-}
-
-/**
- * @public
- * @category Error
- */
-export class BSONVersionError extends BSONError {
-  get name(): 'BSONVersionError' {
-    return 'BSONVersionError';
-  }
-
-  constructor() {
-    super(`Unsupported BSON version, bson types must be from bson ${BSON_MAJOR_VERSION}.x.x`);
-  }
-}
-
-/**
- * @public
- * @category Error
- *
- * An error generated when BSON functions encounter an unexpected input
- * or reaches an unexpected/invalid internal state
- *
- */
-export class BSONRuntimeError extends BSONError {
-  get name(): 'BSONRuntimeError' {
-    return 'BSONRuntimeError';
-  }
-
-  constructor(message: string) {
-    super(message);
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/extended_json.ts b/server/data-import/node_modules/bson/src/extended_json.ts
deleted file mode 100644
index eb08b3c1f0091dd57fca5ac51aa28896c3d5186e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/extended_json.ts
+++ /dev/null
@@ -1,515 +0,0 @@
-import { Binary } from './binary';
-import type { Document } from './bson';
-import { Code } from './code';
-import {
-  BSON_INT32_MAX,
-  BSON_INT32_MIN,
-  BSON_INT64_MAX,
-  BSON_INT64_MIN,
-  BSON_MAJOR_VERSION
-} from './constants';
-import { DBRef, isDBRefLike } from './db_ref';
-import { Decimal128 } from './decimal128';
-import { Double } from './double';
-import { BSONError, BSONRuntimeError, BSONVersionError } from './error';
-import { Int32 } from './int_32';
-import { Long } from './long';
-import { MaxKey } from './max_key';
-import { MinKey } from './min_key';
-import { ObjectId } from './objectid';
-import { isDate, isRegExp, isMap } from './parser/utils';
-import { BSONRegExp } from './regexp';
-import { BSONSymbol } from './symbol';
-import { Timestamp } from './timestamp';
-
-/** @public */
-export type EJSONOptions = {
-  /**
-   * Output using the Extended JSON v1 spec
-   * @defaultValue `false`
-   */
-  legacy?: boolean;
-  /**
-   * Enable Extended JSON's `relaxed` mode, which attempts to return native JS types where possible, rather than BSON types
-   * @defaultValue `false` */
-  relaxed?: boolean;
-  /**
-   * Enable native bigint support
-   * @defaultValue `false`
-   */
-  useBigInt64?: boolean;
-};
-
-/** @internal */
-type BSONType =
-  | Binary
-  | Code
-  | DBRef
-  | Decimal128
-  | Double
-  | Int32
-  | Long
-  | MaxKey
-  | MinKey
-  | ObjectId
-  | BSONRegExp
-  | BSONSymbol
-  | Timestamp;
-
-function isBSONType(value: unknown): value is BSONType {
-  return (
-    value != null &&
-    typeof value === 'object' &&
-    '_bsontype' in value &&
-    typeof value._bsontype === 'string'
-  );
-}
-
-// all the types where we don't need to do any special processing and can just pass the EJSON
-//straight to type.fromExtendedJSON
-const keysToCodecs = {
-  $oid: ObjectId,
-  $binary: Binary,
-  $uuid: Binary,
-  $symbol: BSONSymbol,
-  $numberInt: Int32,
-  $numberDecimal: Decimal128,
-  $numberDouble: Double,
-  $numberLong: Long,
-  $minKey: MinKey,
-  $maxKey: MaxKey,
-  $regex: BSONRegExp,
-  $regularExpression: BSONRegExp,
-  $timestamp: Timestamp
-} as const;
-
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function deserializeValue(value: any, options: EJSONOptions = {}) {
-  if (typeof value === 'number') {
-    // TODO(NODE-4377): EJSON js number handling diverges from BSON
-    const in32BitRange = value <= BSON_INT32_MAX && value >= BSON_INT32_MIN;
-    const in64BitRange = value <= BSON_INT64_MAX && value >= BSON_INT64_MIN;
-
-    if (options.relaxed || options.legacy) {
-      return value;
-    }
-
-    if (Number.isInteger(value) && !Object.is(value, -0)) {
-      // interpret as being of the smallest BSON integer type that can represent the number exactly
-      if (in32BitRange) {
-        return new Int32(value);
-      }
-      if (in64BitRange) {
-        if (options.useBigInt64) {
-          // eslint-disable-next-line no-restricted-globals -- This is allowed here as useBigInt64=true
-          return BigInt(value);
-        }
-        return Long.fromNumber(value);
-      }
-    }
-
-    // If the number is a non-integer or out of integer range, should interpret as BSON Double.
-    return new Double(value);
-  }
-
-  // from here on out we're looking for bson types, so bail if its not an object
-  if (value == null || typeof value !== 'object') return value;
-
-  // upgrade deprecated undefined to null
-  if (value.$undefined) return null;
-
-  const keys = Object.keys(value).filter(
-    k => k.startsWith('$') && value[k] != null
-  ) as (keyof typeof keysToCodecs)[];
-  for (let i = 0; i < keys.length; i++) {
-    const c = keysToCodecs[keys[i]];
-    if (c) return c.fromExtendedJSON(value, options);
-  }
-
-  if (value.$date != null) {
-    const d = value.$date;
-    const date = new Date();
-
-    if (options.legacy) {
-      if (typeof d === 'number') date.setTime(d);
-      else if (typeof d === 'string') date.setTime(Date.parse(d));
-      else if (typeof d === 'bigint') date.setTime(Number(d));
-      else throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
-    } else {
-      if (typeof d === 'string') date.setTime(Date.parse(d));
-      else if (Long.isLong(d)) date.setTime(d.toNumber());
-      else if (typeof d === 'number' && options.relaxed) date.setTime(d);
-      else if (typeof d === 'bigint') date.setTime(Number(d));
-      else throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
-    }
-    return date;
-  }
-
-  if (value.$code != null) {
-    const copy = Object.assign({}, value);
-    if (value.$scope) {
-      copy.$scope = deserializeValue(value.$scope);
-    }
-
-    return Code.fromExtendedJSON(value);
-  }
-
-  if (isDBRefLike(value) || value.$dbPointer) {
-    const v = value.$ref ? value : value.$dbPointer;
-
-    // we run into this in a "degenerate EJSON" case (with $id and $ref order flipped)
-    // because of the order JSON.parse goes through the document
-    if (v instanceof DBRef) return v;
-
-    const dollarKeys = Object.keys(v).filter(k => k.startsWith('$'));
-    let valid = true;
-    dollarKeys.forEach(k => {
-      if (['$ref', '$id', '$db'].indexOf(k) === -1) valid = false;
-    });
-
-    // only make DBRef if $ keys are all valid
-    if (valid) return DBRef.fromExtendedJSON(v);
-  }
-
-  return value;
-}
-
-type EJSONSerializeOptions = EJSONOptions & {
-  seenObjects: { obj: unknown; propertyName: string }[];
-};
-
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function serializeArray(array: any[], options: EJSONSerializeOptions): any[] {
-  return array.map((v: unknown, index: number) => {
-    options.seenObjects.push({ propertyName: `index ${index}`, obj: null });
-    try {
-      return serializeValue(v, options);
-    } finally {
-      options.seenObjects.pop();
-    }
-  });
-}
-
-function getISOString(date: Date) {
-  const isoStr = date.toISOString();
-  // we should only show milliseconds in timestamp if they're non-zero
-  return date.getUTCMilliseconds() !== 0 ? isoStr : isoStr.slice(0, -5) + 'Z';
-}
-
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function serializeValue(value: any, options: EJSONSerializeOptions): any {
-  if (value instanceof Map || isMap(value)) {
-    const obj: Record<string, unknown> = Object.create(null);
-    for (const [k, v] of value) {
-      if (typeof k !== 'string') {
-        throw new BSONError('Can only serialize maps with string keys');
-      }
-      obj[k] = v;
-    }
-
-    return serializeValue(obj, options);
-  }
-
-  if ((typeof value === 'object' || typeof value === 'function') && value !== null) {
-    const index = options.seenObjects.findIndex(entry => entry.obj === value);
-    if (index !== -1) {
-      const props = options.seenObjects.map(entry => entry.propertyName);
-      const leadingPart = props
-        .slice(0, index)
-        .map(prop => `${prop} -> `)
-        .join('');
-      const alreadySeen = props[index];
-      const circularPart =
-        ' -> ' +
-        props
-          .slice(index + 1, props.length - 1)
-          .map(prop => `${prop} -> `)
-          .join('');
-      const current = props[props.length - 1];
-      const leadingSpace = ' '.repeat(leadingPart.length + alreadySeen.length / 2);
-      const dashes = '-'.repeat(
-        circularPart.length + (alreadySeen.length + current.length) / 2 - 1
-      );
-
-      throw new BSONError(
-        'Converting circular structure to EJSON:\n' +
-          `    ${leadingPart}${alreadySeen}${circularPart}${current}\n` +
-          `    ${leadingSpace}\\${dashes}/`
-      );
-    }
-    options.seenObjects[options.seenObjects.length - 1].obj = value;
-  }
-
-  if (Array.isArray(value)) return serializeArray(value, options);
-
-  if (value === undefined) return null;
-
-  if (value instanceof Date || isDate(value)) {
-    const dateNum = value.getTime(),
-      // is it in year range 1970-9999?
-      inRange = dateNum > -1 && dateNum < 253402318800000;
-
-    if (options.legacy) {
-      return options.relaxed && inRange
-        ? { $date: value.getTime() }
-        : { $date: getISOString(value) };
-    }
-    return options.relaxed && inRange
-      ? { $date: getISOString(value) }
-      : { $date: { $numberLong: value.getTime().toString() } };
-  }
-
-  if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) {
-    if (Number.isInteger(value) && !Object.is(value, -0)) {
-      // interpret as being of the smallest BSON integer type that can represent the number exactly
-      if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
-        return { $numberInt: value.toString() };
-      }
-      if (value >= BSON_INT64_MIN && value <= BSON_INT64_MAX) {
-        // TODO(NODE-4377): EJSON js number handling diverges from BSON
-        return { $numberLong: value.toString() };
-      }
-    }
-    return { $numberDouble: Object.is(value, -0) ? '-0.0' : value.toString() };
-  }
-
-  if (typeof value === 'bigint') {
-    /* eslint-disable no-restricted-globals -- This is allowed as we are accepting a bigint as input */
-    if (!options.relaxed) {
-      return { $numberLong: BigInt.asIntN(64, value).toString() };
-    }
-    return Number(BigInt.asIntN(64, value));
-    /* eslint-enable */
-  }
-
-  if (value instanceof RegExp || isRegExp(value)) {
-    let flags = value.flags;
-    if (flags === undefined) {
-      const match = value.toString().match(/[gimuy]*$/);
-      if (match) {
-        flags = match[0];
-      }
-    }
-
-    const rx = new BSONRegExp(value.source, flags);
-    return rx.toExtendedJSON(options);
-  }
-
-  if (value != null && typeof value === 'object') return serializeDocument(value, options);
-  return value;
-}
-
-const BSON_TYPE_MAPPINGS = {
-  Binary: (o: Binary) => new Binary(o.value(), o.sub_type),
-  Code: (o: Code) => new Code(o.code, o.scope),
-  DBRef: (o: DBRef) => new DBRef(o.collection || o.namespace, o.oid, o.db, o.fields), // "namespace" for 1.x library backwards compat
-  Decimal128: (o: Decimal128) => new Decimal128(o.bytes),
-  Double: (o: Double) => new Double(o.value),
-  Int32: (o: Int32) => new Int32(o.value),
-  Long: (
-    o: Long & {
-      low_: number;
-      high_: number;
-      unsigned_: boolean | undefined;
-    }
-  ) =>
-    Long.fromBits(
-      // underscore variants for 1.x backwards compatibility
-      o.low != null ? o.low : o.low_,
-      o.low != null ? o.high : o.high_,
-      o.low != null ? o.unsigned : o.unsigned_
-    ),
-  MaxKey: () => new MaxKey(),
-  MinKey: () => new MinKey(),
-  ObjectId: (o: ObjectId) => new ObjectId(o),
-  BSONRegExp: (o: BSONRegExp) => new BSONRegExp(o.pattern, o.options),
-  BSONSymbol: (o: BSONSymbol) => new BSONSymbol(o.value),
-  Timestamp: (o: Timestamp) => Timestamp.fromBits(o.low, o.high)
-} as const;
-
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function serializeDocument(doc: any, options: EJSONSerializeOptions) {
-  if (doc == null || typeof doc !== 'object') throw new BSONError('not an object instance');
-
-  const bsontype: BSONType['_bsontype'] = doc._bsontype;
-  if (typeof bsontype === 'undefined') {
-    // It's a regular object. Recursively serialize its property values.
-    const _doc: Document = {};
-    for (const name of Object.keys(doc)) {
-      options.seenObjects.push({ propertyName: name, obj: null });
-      try {
-        const value = serializeValue(doc[name], options);
-        if (name === '__proto__') {
-          Object.defineProperty(_doc, name, {
-            value,
-            writable: true,
-            enumerable: true,
-            configurable: true
-          });
-        } else {
-          _doc[name] = value;
-        }
-      } finally {
-        options.seenObjects.pop();
-      }
-    }
-    return _doc;
-  } else if (
-    doc != null &&
-    typeof doc === 'object' &&
-    typeof doc._bsontype === 'string' &&
-    doc[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION
-  ) {
-    throw new BSONVersionError();
-  } else if (isBSONType(doc)) {
-    // the "document" is really just a BSON type object
-    // eslint-disable-next-line @typescript-eslint/no-explicit-any
-    let outDoc: any = doc;
-    if (typeof outDoc.toExtendedJSON !== 'function') {
-      // There's no EJSON serialization function on the object. It's probably an
-      // object created by a previous version of this library (or another library)
-      // that's duck-typing objects to look like they were generated by this library).
-      // Copy the object into this library's version of that type.
-      const mapper = BSON_TYPE_MAPPINGS[doc._bsontype];
-      if (!mapper) {
-        throw new BSONError('Unrecognized or invalid _bsontype: ' + doc._bsontype);
-      }
-      outDoc = mapper(outDoc);
-    }
-
-    // Two BSON types may have nested objects that may need to be serialized too
-    if (bsontype === 'Code' && outDoc.scope) {
-      outDoc = new Code(outDoc.code, serializeValue(outDoc.scope, options));
-    } else if (bsontype === 'DBRef' && outDoc.oid) {
-      outDoc = new DBRef(
-        serializeValue(outDoc.collection, options),
-        serializeValue(outDoc.oid, options),
-        serializeValue(outDoc.db, options),
-        serializeValue(outDoc.fields, options)
-      );
-    }
-
-    return outDoc.toExtendedJSON(options);
-  } else {
-    throw new BSONError('_bsontype must be a string, but was: ' + typeof bsontype);
-  }
-}
-
-/**
- * Parse an Extended JSON string, constructing the JavaScript value or object described by that
- * string.
- *
- * @example
- * ```js
- * const { EJSON } = require('bson');
- * const text = '{ "int32": { "$numberInt": "10" } }';
- *
- * // prints { int32: { [String: '10'] _bsontype: 'Int32', value: '10' } }
- * console.log(EJSON.parse(text, { relaxed: false }));
- *
- * // prints { int32: 10 }
- * console.log(EJSON.parse(text));
- * ```
- */
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function parse(text: string, options?: EJSONOptions): any {
-  const ejsonOptions = {
-    useBigInt64: options?.useBigInt64 ?? false,
-    relaxed: options?.relaxed ?? true,
-    legacy: options?.legacy ?? false
-  };
-  return JSON.parse(text, (key, value) => {
-    if (key.indexOf('\x00') !== -1) {
-      throw new BSONError(
-        `BSON Document field names cannot contain null bytes, found: ${JSON.stringify(key)}`
-      );
-    }
-    return deserializeValue(value, ejsonOptions);
-  });
-}
-
-/**
- * Converts a BSON document to an Extended JSON string, optionally replacing values if a replacer
- * function is specified or optionally including only the specified properties if a replacer array
- * is specified.
- *
- * @param value - The value to convert to extended JSON
- * @param replacer - A function that alters the behavior of the stringification process, or an array of String and Number objects that serve as a whitelist for selecting/filtering the properties of the value object to be included in the JSON string. If this value is null or not provided, all properties of the object are included in the resulting JSON string
- * @param space - A String or Number object that's used to insert white space into the output JSON string for readability purposes.
- * @param options - Optional settings
- *
- * @example
- * ```js
- * const { EJSON } = require('bson');
- * const Int32 = require('mongodb').Int32;
- * const doc = { int32: new Int32(10) };
- *
- * // prints '{"int32":{"$numberInt":"10"}}'
- * console.log(EJSON.stringify(doc, { relaxed: false }));
- *
- * // prints '{"int32":10}'
- * console.log(EJSON.stringify(doc));
- * ```
- */
-function stringify(
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  value: any,
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  replacer?: (number | string)[] | ((this: any, key: string, value: any) => any) | EJSONOptions,
-  space?: string | number,
-  options?: EJSONOptions
-): string {
-  if (space != null && typeof space === 'object') {
-    options = space;
-    space = 0;
-  }
-  if (replacer != null && typeof replacer === 'object' && !Array.isArray(replacer)) {
-    options = replacer;
-    replacer = undefined;
-    space = 0;
-  }
-  const serializeOptions = Object.assign({ relaxed: true, legacy: false }, options, {
-    seenObjects: [{ propertyName: '(root)', obj: null }]
-  });
-
-  const doc = serializeValue(value, serializeOptions);
-  return JSON.stringify(doc, replacer as Parameters<JSON['stringify']>[1], space);
-}
-
-/**
- * Serializes an object to an Extended JSON string, and reparse it as a JavaScript object.
- *
- * @param value - The object to serialize
- * @param options - Optional settings passed to the `stringify` function
- */
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function EJSONserialize(value: any, options?: EJSONOptions): Document {
-  options = options || {};
-  return JSON.parse(stringify(value, options));
-}
-
-/**
- * Deserializes an Extended JSON object into a plain JavaScript object with native/BSON types
- *
- * @param ejson - The Extended JSON object to deserialize
- * @param options - Optional settings passed to the parse method
- */
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function EJSONdeserialize(ejson: Document, options?: EJSONOptions): any {
-  options = options || {};
-  return parse(JSON.stringify(ejson), options);
-}
-
-/** @public */
-const EJSON: {
-  parse: typeof parse;
-  stringify: typeof stringify;
-  serialize: typeof EJSONserialize;
-  deserialize: typeof EJSONdeserialize;
-} = Object.create(null);
-EJSON.parse = parse;
-EJSON.stringify = stringify;
-EJSON.serialize = EJSONserialize;
-EJSON.deserialize = EJSONdeserialize;
-Object.freeze(EJSON);
-export { EJSON };
diff --git a/server/data-import/node_modules/bson/src/index.ts b/server/data-import/node_modules/bson/src/index.ts
deleted file mode 100644
index 5ef415756a33b0f21dd9a5cb3540358978502ad0..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/index.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import * as BSON from './bson';
-
-// Export all named properties from BSON to support
-// import { ObjectId, serialize } from 'bson';
-// const { ObjectId, serialize } = require('bson');
-export * from './bson';
-
-// Export BSON as a namespace to support:
-// import { BSON } from 'bson';
-// const { BSON } = require('bson');
-export { BSON };
-
-// BSON does **NOT** have a default export
-
-// The following will crash in es module environments
-// import BSON from 'bson';
-
-// The following will work as expected, BSON as a namespace of all the APIs (BSON.ObjectId, BSON.serialize)
-// const BSON = require('bson');
diff --git a/server/data-import/node_modules/bson/src/int_32.ts b/server/data-import/node_modules/bson/src/int_32.ts
deleted file mode 100644
index 31b13c15a6ca60963d530af84fd111a7b123bad8..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/int_32.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import { BSONValue } from './bson_value';
-import type { EJSONOptions } from './extended_json';
-import { type InspectFn, defaultInspect } from './parser/utils';
-
-/** @public */
-export interface Int32Extended {
-  $numberInt: string;
-}
-
-/**
- * A class representation of a BSON Int32 type.
- * @public
- * @category BSONType
- */
-export class Int32 extends BSONValue {
-  get _bsontype(): 'Int32' {
-    return 'Int32';
-  }
-
-  value!: number;
-  /**
-   * Create an Int32 type
-   *
-   * @param value - the number we want to represent as an int32.
-   */
-  constructor(value: number | string) {
-    super();
-    if ((value as unknown) instanceof Number) {
-      value = value.valueOf();
-    }
-
-    this.value = +value | 0;
-  }
-
-  /**
-   * Access the number value.
-   *
-   * @returns returns the wrapped int32 number.
-   */
-  valueOf(): number {
-    return this.value;
-  }
-
-  toString(radix?: number): string {
-    return this.value.toString(radix);
-  }
-
-  toJSON(): number {
-    return this.value;
-  }
-
-  /** @internal */
-  toExtendedJSON(options?: EJSONOptions): number | Int32Extended {
-    if (options && (options.relaxed || options.legacy)) return this.value;
-    return { $numberInt: this.value.toString() };
-  }
-
-  /** @internal */
-  static fromExtendedJSON(doc: Int32Extended, options?: EJSONOptions): number | Int32 {
-    return options && options.relaxed ? parseInt(doc.$numberInt, 10) : new Int32(doc.$numberInt);
-  }
-
-  inspect(depth?: number, options?: unknown, inspect?: InspectFn): string {
-    inspect ??= defaultInspect;
-    return `new Int32(${inspect(this.value, options)})`;
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/long.ts b/server/data-import/node_modules/bson/src/long.ts
deleted file mode 100644
index f05f71e6b812eb3207e400f7c9a737d3383fdfb9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/long.ts
+++ /dev/null
@@ -1,1066 +0,0 @@
-import { BSONValue } from './bson_value';
-import { BSONError } from './error';
-import type { EJSONOptions } from './extended_json';
-import { type InspectFn, defaultInspect } from './parser/utils';
-import type { Timestamp } from './timestamp';
-
-interface LongWASMHelpers {
-  /** Gets the high bits of the last operation performed */
-  get_high(this: void): number;
-  div_u(
-    this: void,
-    lowBits: number,
-    highBits: number,
-    lowBitsDivisor: number,
-    highBitsDivisor: number
-  ): number;
-  div_s(
-    this: void,
-    lowBits: number,
-    highBits: number,
-    lowBitsDivisor: number,
-    highBitsDivisor: number
-  ): number;
-  rem_u(
-    this: void,
-    lowBits: number,
-    highBits: number,
-    lowBitsDivisor: number,
-    highBitsDivisor: number
-  ): number;
-  rem_s(
-    this: void,
-    lowBits: number,
-    highBits: number,
-    lowBitsDivisor: number,
-    highBitsDivisor: number
-  ): number;
-  mul(
-    this: void,
-    lowBits: number,
-    highBits: number,
-    lowBitsMultiplier: number,
-    highBitsMultiplier: number
-  ): number;
-}
-
-/**
- * wasm optimizations, to do native i64 multiplication and divide
- */
-let wasm: LongWASMHelpers | undefined = undefined;
-
-/* We do not want to have to include DOM types just for this check */
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-declare const WebAssembly: any;
-
-try {
-  wasm = new WebAssembly.Instance(
-    new WebAssembly.Module(
-      // prettier-ignore
-      new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])
-    ),
-    {}
-  ).exports as unknown as LongWASMHelpers;
-} catch {
-  // no wasm support
-}
-
-const TWO_PWR_16_DBL = 1 << 16;
-const TWO_PWR_24_DBL = 1 << 24;
-const TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;
-const TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;
-const TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;
-
-/** A cache of the Long representations of small integer values. */
-const INT_CACHE: { [key: number]: Long } = {};
-
-/** A cache of the Long representations of small unsigned integer values. */
-const UINT_CACHE: { [key: number]: Long } = {};
-
-const MAX_INT64_STRING_LENGTH = 20;
-
-const DECIMAL_REG_EX = /^(\+?0|(\+|-)?[1-9][0-9]*)$/;
-
-/** @public */
-export interface LongExtended {
-  $numberLong: string;
-}
-
-/**
- * A class representing a 64-bit integer
- * @public
- * @category BSONType
- * @remarks
- * The internal representation of a long is the two given signed, 32-bit values.
- * We use 32-bit pieces because these are the size of integers on which
- * Javascript performs bit-operations.  For operations like addition and
- * multiplication, we split each number into 16 bit pieces, which can easily be
- * multiplied within Javascript's floating-point representation without overflow
- * or change in sign.
- * In the algorithms below, we frequently reduce the negative case to the
- * positive case by negating the input(s) and then post-processing the result.
- * Note that we must ALWAYS check specially whether those values are MIN_VALUE
- * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as
- * a positive number, it overflows back into a negative).  Not handling this
- * case would often result in infinite recursion.
- * Common constant values ZERO, ONE, NEG_ONE, etc. are found as static properties on this class.
- */
-export class Long extends BSONValue {
-  get _bsontype(): 'Long' {
-    return 'Long';
-  }
-
-  /** An indicator used to reliably determine if an object is a Long or not. */
-  get __isLong__(): boolean {
-    return true;
-  }
-
-  /**
-   * The high 32 bits as a signed value.
-   */
-  high!: number;
-
-  /**
-   * The low 32 bits as a signed value.
-   */
-  low!: number;
-
-  /**
-   * Whether unsigned or not.
-   */
-  unsigned!: boolean;
-
-  /**
-   * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.
-   *  See the from* functions below for more convenient ways of constructing Longs.
-   *
-   * Acceptable signatures are:
-   * - Long(low, high, unsigned?)
-   * - Long(bigint, unsigned?)
-   * - Long(string, unsigned?)
-   *
-   * @param low - The low (signed) 32 bits of the long
-   * @param high - The high (signed) 32 bits of the long
-   * @param unsigned - Whether unsigned or not, defaults to signed
-   */
-  constructor(low: number | bigint | string = 0, high?: number | boolean, unsigned?: boolean) {
-    super();
-    if (typeof low === 'bigint') {
-      Object.assign(this, Long.fromBigInt(low, !!high));
-    } else if (typeof low === 'string') {
-      Object.assign(this, Long.fromString(low, !!high));
-    } else {
-      this.low = low | 0;
-      this.high = (high as number) | 0;
-      this.unsigned = !!unsigned;
-    }
-  }
-
-  static TWO_PWR_24 = Long.fromInt(TWO_PWR_24_DBL);
-
-  /** Maximum unsigned value. */
-  static MAX_UNSIGNED_VALUE = Long.fromBits(0xffffffff | 0, 0xffffffff | 0, true);
-  /** Signed zero */
-  static ZERO = Long.fromInt(0);
-  /** Unsigned zero. */
-  static UZERO = Long.fromInt(0, true);
-  /** Signed one. */
-  static ONE = Long.fromInt(1);
-  /** Unsigned one. */
-  static UONE = Long.fromInt(1, true);
-  /** Signed negative one. */
-  static NEG_ONE = Long.fromInt(-1);
-  /** Maximum signed value. */
-  static MAX_VALUE = Long.fromBits(0xffffffff | 0, 0x7fffffff | 0, false);
-  /** Minimum signed value. */
-  static MIN_VALUE = Long.fromBits(0, 0x80000000 | 0, false);
-
-  /**
-   * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits.
-   * Each is assumed to use 32 bits.
-   * @param lowBits - The low 32 bits
-   * @param highBits - The high 32 bits
-   * @param unsigned - Whether unsigned or not, defaults to signed
-   * @returns The corresponding Long value
-   */
-  static fromBits(lowBits: number, highBits: number, unsigned?: boolean): Long {
-    return new Long(lowBits, highBits, unsigned);
-  }
-
-  /**
-   * Returns a Long representing the given 32 bit integer value.
-   * @param value - The 32 bit integer in question
-   * @param unsigned - Whether unsigned or not, defaults to signed
-   * @returns The corresponding Long value
-   */
-  static fromInt(value: number, unsigned?: boolean): Long {
-    let obj, cachedObj, cache;
-    if (unsigned) {
-      value >>>= 0;
-      if ((cache = 0 <= value && value < 256)) {
-        cachedObj = UINT_CACHE[value];
-        if (cachedObj) return cachedObj;
-      }
-      obj = Long.fromBits(value, (value | 0) < 0 ? -1 : 0, true);
-      if (cache) UINT_CACHE[value] = obj;
-      return obj;
-    } else {
-      value |= 0;
-      if ((cache = -128 <= value && value < 128)) {
-        cachedObj = INT_CACHE[value];
-        if (cachedObj) return cachedObj;
-      }
-      obj = Long.fromBits(value, value < 0 ? -1 : 0, false);
-      if (cache) INT_CACHE[value] = obj;
-      return obj;
-    }
-  }
-
-  /**
-   * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.
-   * @param value - The number in question
-   * @param unsigned - Whether unsigned or not, defaults to signed
-   * @returns The corresponding Long value
-   */
-  static fromNumber(value: number, unsigned?: boolean): Long {
-    if (isNaN(value)) return unsigned ? Long.UZERO : Long.ZERO;
-    if (unsigned) {
-      if (value < 0) return Long.UZERO;
-      if (value >= TWO_PWR_64_DBL) return Long.MAX_UNSIGNED_VALUE;
-    } else {
-      if (value <= -TWO_PWR_63_DBL) return Long.MIN_VALUE;
-      if (value + 1 >= TWO_PWR_63_DBL) return Long.MAX_VALUE;
-    }
-    if (value < 0) return Long.fromNumber(-value, unsigned).neg();
-    return Long.fromBits(value % TWO_PWR_32_DBL | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);
-  }
-
-  /**
-   * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.
-   * @param value - The number in question
-   * @param unsigned - Whether unsigned or not, defaults to signed
-   * @returns The corresponding Long value
-   */
-  static fromBigInt(value: bigint, unsigned?: boolean): Long {
-    return Long.fromString(value.toString(), unsigned);
-  }
-
-  /**
-   * Returns a Long representation of the given string, written using the specified radix.
-   * @param str - The textual representation of the Long
-   * @param unsigned - Whether unsigned or not, defaults to signed
-   * @param radix - The radix in which the text is written (2-36), defaults to 10
-   * @returns The corresponding Long value
-   */
-  static fromString(str: string, unsigned?: boolean, radix?: number): Long {
-    if (str.length === 0) throw new BSONError('empty string');
-    if (str === 'NaN' || str === 'Infinity' || str === '+Infinity' || str === '-Infinity')
-      return Long.ZERO;
-    if (typeof unsigned === 'number') {
-      // For goog.math.long compatibility
-      (radix = unsigned), (unsigned = false);
-    } else {
-      unsigned = !!unsigned;
-    }
-    radix = radix || 10;
-    if (radix < 2 || 36 < radix) throw new BSONError('radix');
-
-    let p;
-    if ((p = str.indexOf('-')) > 0) throw new BSONError('interior hyphen');
-    else if (p === 0) {
-      return Long.fromString(str.substring(1), unsigned, radix).neg();
-    }
-
-    // Do several (8) digits each time through the loop, so as to
-    // minimize the calls to the very expensive emulated div.
-    const radixToPower = Long.fromNumber(Math.pow(radix, 8));
-
-    let result = Long.ZERO;
-    for (let i = 0; i < str.length; i += 8) {
-      const size = Math.min(8, str.length - i),
-        value = parseInt(str.substring(i, i + size), radix);
-      if (size < 8) {
-        const power = Long.fromNumber(Math.pow(radix, size));
-        result = result.mul(power).add(Long.fromNumber(value));
-      } else {
-        result = result.mul(radixToPower);
-        result = result.add(Long.fromNumber(value));
-      }
-    }
-    result.unsigned = unsigned;
-    return result;
-  }
-
-  /**
-   * Creates a Long from its byte representation.
-   * @param bytes - Byte representation
-   * @param unsigned - Whether unsigned or not, defaults to signed
-   * @param le - Whether little or big endian, defaults to big endian
-   * @returns The corresponding Long value
-   */
-  static fromBytes(bytes: number[], unsigned?: boolean, le?: boolean): Long {
-    return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);
-  }
-
-  /**
-   * Creates a Long from its little endian byte representation.
-   * @param bytes - Little endian byte representation
-   * @param unsigned - Whether unsigned or not, defaults to signed
-   * @returns The corresponding Long value
-   */
-  static fromBytesLE(bytes: number[], unsigned?: boolean): Long {
-    return new Long(
-      bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24),
-      bytes[4] | (bytes[5] << 8) | (bytes[6] << 16) | (bytes[7] << 24),
-      unsigned
-    );
-  }
-
-  /**
-   * Creates a Long from its big endian byte representation.
-   * @param bytes - Big endian byte representation
-   * @param unsigned - Whether unsigned or not, defaults to signed
-   * @returns The corresponding Long value
-   */
-  static fromBytesBE(bytes: number[], unsigned?: boolean): Long {
-    return new Long(
-      (bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7],
-      (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3],
-      unsigned
-    );
-  }
-
-  /**
-   * Tests if the specified object is a Long.
-   */
-  static isLong(value: unknown): value is Long {
-    return (
-      value != null &&
-      typeof value === 'object' &&
-      '__isLong__' in value &&
-      value.__isLong__ === true
-    );
-  }
-
-  /**
-   * Converts the specified value to a Long.
-   * @param unsigned - Whether unsigned or not, defaults to signed
-   */
-  static fromValue(
-    val: number | string | { low: number; high: number; unsigned?: boolean },
-    unsigned?: boolean
-  ): Long {
-    if (typeof val === 'number') return Long.fromNumber(val, unsigned);
-    if (typeof val === 'string') return Long.fromString(val, unsigned);
-    // Throws for non-objects, converts non-instanceof Long:
-    return Long.fromBits(
-      val.low,
-      val.high,
-      typeof unsigned === 'boolean' ? unsigned : val.unsigned
-    );
-  }
-
-  /** Returns the sum of this and the specified Long. */
-  add(addend: string | number | Long | Timestamp): Long {
-    if (!Long.isLong(addend)) addend = Long.fromValue(addend);
-
-    // Divide each number into 4 chunks of 16 bits, and then sum the chunks.
-
-    const a48 = this.high >>> 16;
-    const a32 = this.high & 0xffff;
-    const a16 = this.low >>> 16;
-    const a00 = this.low & 0xffff;
-
-    const b48 = addend.high >>> 16;
-    const b32 = addend.high & 0xffff;
-    const b16 = addend.low >>> 16;
-    const b00 = addend.low & 0xffff;
-
-    let c48 = 0,
-      c32 = 0,
-      c16 = 0,
-      c00 = 0;
-    c00 += a00 + b00;
-    c16 += c00 >>> 16;
-    c00 &= 0xffff;
-    c16 += a16 + b16;
-    c32 += c16 >>> 16;
-    c16 &= 0xffff;
-    c32 += a32 + b32;
-    c48 += c32 >>> 16;
-    c32 &= 0xffff;
-    c48 += a48 + b48;
-    c48 &= 0xffff;
-    return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
-  }
-
-  /**
-   * Returns the sum of this and the specified Long.
-   * @returns Sum
-   */
-  and(other: string | number | Long | Timestamp): Long {
-    if (!Long.isLong(other)) other = Long.fromValue(other);
-    return Long.fromBits(this.low & other.low, this.high & other.high, this.unsigned);
-  }
-
-  /**
-   * Compares this Long's value with the specified's.
-   * @returns 0 if they are the same, 1 if the this is greater and -1 if the given one is greater
-   */
-  compare(other: string | number | Long | Timestamp): 0 | 1 | -1 {
-    if (!Long.isLong(other)) other = Long.fromValue(other);
-    if (this.eq(other)) return 0;
-    const thisNeg = this.isNegative(),
-      otherNeg = other.isNegative();
-    if (thisNeg && !otherNeg) return -1;
-    if (!thisNeg && otherNeg) return 1;
-    // At this point the sign bits are the same
-    if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1;
-    // Both are positive if at least one is unsigned
-    return other.high >>> 0 > this.high >>> 0 ||
-      (other.high === this.high && other.low >>> 0 > this.low >>> 0)
-      ? -1
-      : 1;
-  }
-
-  /** This is an alias of {@link Long.compare} */
-  comp(other: string | number | Long | Timestamp): 0 | 1 | -1 {
-    return this.compare(other);
-  }
-
-  /**
-   * Returns this Long divided by the specified. The result is signed if this Long is signed or unsigned if this Long is unsigned.
-   * @returns Quotient
-   */
-  divide(divisor: string | number | Long | Timestamp): Long {
-    if (!Long.isLong(divisor)) divisor = Long.fromValue(divisor);
-    if (divisor.isZero()) throw new BSONError('division by zero');
-
-    // use wasm support if present
-    if (wasm) {
-      // guard against signed division overflow: the largest
-      // negative number / -1 would be 1 larger than the largest
-      // positive number, due to two's complement.
-      if (
-        !this.unsigned &&
-        this.high === -0x80000000 &&
-        divisor.low === -1 &&
-        divisor.high === -1
-      ) {
-        // be consistent with non-wasm code path
-        return this;
-      }
-      const low = (this.unsigned ? wasm.div_u : wasm.div_s)(
-        this.low,
-        this.high,
-        divisor.low,
-        divisor.high
-      );
-      return Long.fromBits(low, wasm.get_high(), this.unsigned);
-    }
-
-    if (this.isZero()) return this.unsigned ? Long.UZERO : Long.ZERO;
-    let approx, rem, res;
-    if (!this.unsigned) {
-      // This section is only relevant for signed longs and is derived from the
-      // closure library as a whole.
-      if (this.eq(Long.MIN_VALUE)) {
-        if (divisor.eq(Long.ONE) || divisor.eq(Long.NEG_ONE)) return Long.MIN_VALUE;
-        // recall that -MIN_VALUE == MIN_VALUE
-        else if (divisor.eq(Long.MIN_VALUE)) return Long.ONE;
-        else {
-          // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.
-          const halfThis = this.shr(1);
-          approx = halfThis.div(divisor).shl(1);
-          if (approx.eq(Long.ZERO)) {
-            return divisor.isNegative() ? Long.ONE : Long.NEG_ONE;
-          } else {
-            rem = this.sub(divisor.mul(approx));
-            res = approx.add(rem.div(divisor));
-            return res;
-          }
-        }
-      } else if (divisor.eq(Long.MIN_VALUE)) return this.unsigned ? Long.UZERO : Long.ZERO;
-      if (this.isNegative()) {
-        if (divisor.isNegative()) return this.neg().div(divisor.neg());
-        return this.neg().div(divisor).neg();
-      } else if (divisor.isNegative()) return this.div(divisor.neg()).neg();
-      res = Long.ZERO;
-    } else {
-      // The algorithm below has not been made for unsigned longs. It's therefore
-      // required to take special care of the MSB prior to running it.
-      if (!divisor.unsigned) divisor = divisor.toUnsigned();
-      if (divisor.gt(this)) return Long.UZERO;
-      if (divisor.gt(this.shru(1)))
-        // 15 >>> 1 = 7 ; with divisor = 8 ; true
-        return Long.UONE;
-      res = Long.UZERO;
-    }
-
-    // Repeat the following until the remainder is less than other:  find a
-    // floating-point that approximates remainder / other *from below*, add this
-    // into the result, and subtract it from the remainder.  It is critical that
-    // the approximate value is less than or equal to the real value so that the
-    // remainder never becomes negative.
-    // eslint-disable-next-line @typescript-eslint/no-this-alias
-    rem = this;
-    while (rem.gte(divisor)) {
-      // Approximate the result of division. This may be a little greater or
-      // smaller than the actual value.
-      approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));
-
-      // We will tweak the approximate result by changing it in the 48-th digit or
-      // the smallest non-fractional digit, whichever is larger.
-      const log2 = Math.ceil(Math.log(approx) / Math.LN2);
-      const delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48);
-      // Decrease the approximation until it is smaller than the remainder.  Note
-      // that if it is too large, the product overflows and is negative.
-      let approxRes = Long.fromNumber(approx);
-      let approxRem = approxRes.mul(divisor);
-      while (approxRem.isNegative() || approxRem.gt(rem)) {
-        approx -= delta;
-        approxRes = Long.fromNumber(approx, this.unsigned);
-        approxRem = approxRes.mul(divisor);
-      }
-
-      // We know the answer can't be zero... and actually, zero would cause
-      // infinite recursion since we would make no progress.
-      if (approxRes.isZero()) approxRes = Long.ONE;
-
-      res = res.add(approxRes);
-      rem = rem.sub(approxRem);
-    }
-    return res;
-  }
-
-  /**This is an alias of {@link Long.divide} */
-  div(divisor: string | number | Long | Timestamp): Long {
-    return this.divide(divisor);
-  }
-
-  /**
-   * Tests if this Long's value equals the specified's.
-   * @param other - Other value
-   */
-  equals(other: string | number | Long | Timestamp): boolean {
-    if (!Long.isLong(other)) other = Long.fromValue(other);
-    if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1)
-      return false;
-    return this.high === other.high && this.low === other.low;
-  }
-
-  /** This is an alias of {@link Long.equals} */
-  eq(other: string | number | Long | Timestamp): boolean {
-    return this.equals(other);
-  }
-
-  /** Gets the high 32 bits as a signed integer. */
-  getHighBits(): number {
-    return this.high;
-  }
-
-  /** Gets the high 32 bits as an unsigned integer. */
-  getHighBitsUnsigned(): number {
-    return this.high >>> 0;
-  }
-
-  /** Gets the low 32 bits as a signed integer. */
-  getLowBits(): number {
-    return this.low;
-  }
-
-  /** Gets the low 32 bits as an unsigned integer. */
-  getLowBitsUnsigned(): number {
-    return this.low >>> 0;
-  }
-
-  /** Gets the number of bits needed to represent the absolute value of this Long. */
-  getNumBitsAbs(): number {
-    if (this.isNegative()) {
-      // Unsigned Longs are never negative
-      return this.eq(Long.MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();
-    }
-    const val = this.high !== 0 ? this.high : this.low;
-    let bit: number;
-    for (bit = 31; bit > 0; bit--) if ((val & (1 << bit)) !== 0) break;
-    return this.high !== 0 ? bit + 33 : bit + 1;
-  }
-
-  /** Tests if this Long's value is greater than the specified's. */
-  greaterThan(other: string | number | Long | Timestamp): boolean {
-    return this.comp(other) > 0;
-  }
-
-  /** This is an alias of {@link Long.greaterThan} */
-  gt(other: string | number | Long | Timestamp): boolean {
-    return this.greaterThan(other);
-  }
-
-  /** Tests if this Long's value is greater than or equal the specified's. */
-  greaterThanOrEqual(other: string | number | Long | Timestamp): boolean {
-    return this.comp(other) >= 0;
-  }
-
-  /** This is an alias of {@link Long.greaterThanOrEqual} */
-  gte(other: string | number | Long | Timestamp): boolean {
-    return this.greaterThanOrEqual(other);
-  }
-  /** This is an alias of {@link Long.greaterThanOrEqual} */
-  ge(other: string | number | Long | Timestamp): boolean {
-    return this.greaterThanOrEqual(other);
-  }
-
-  /** Tests if this Long's value is even. */
-  isEven(): boolean {
-    return (this.low & 1) === 0;
-  }
-
-  /** Tests if this Long's value is negative. */
-  isNegative(): boolean {
-    return !this.unsigned && this.high < 0;
-  }
-
-  /** Tests if this Long's value is odd. */
-  isOdd(): boolean {
-    return (this.low & 1) === 1;
-  }
-
-  /** Tests if this Long's value is positive. */
-  isPositive(): boolean {
-    return this.unsigned || this.high >= 0;
-  }
-
-  /** Tests if this Long's value equals zero. */
-  isZero(): boolean {
-    return this.high === 0 && this.low === 0;
-  }
-
-  /** Tests if this Long's value is less than the specified's. */
-  lessThan(other: string | number | Long | Timestamp): boolean {
-    return this.comp(other) < 0;
-  }
-
-  /** This is an alias of {@link Long#lessThan}. */
-  lt(other: string | number | Long | Timestamp): boolean {
-    return this.lessThan(other);
-  }
-
-  /** Tests if this Long's value is less than or equal the specified's. */
-  lessThanOrEqual(other: string | number | Long | Timestamp): boolean {
-    return this.comp(other) <= 0;
-  }
-
-  /** This is an alias of {@link Long.lessThanOrEqual} */
-  lte(other: string | number | Long | Timestamp): boolean {
-    return this.lessThanOrEqual(other);
-  }
-
-  /** Returns this Long modulo the specified. */
-  modulo(divisor: string | number | Long | Timestamp): Long {
-    if (!Long.isLong(divisor)) divisor = Long.fromValue(divisor);
-
-    // use wasm support if present
-    if (wasm) {
-      const low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(
-        this.low,
-        this.high,
-        divisor.low,
-        divisor.high
-      );
-      return Long.fromBits(low, wasm.get_high(), this.unsigned);
-    }
-
-    return this.sub(this.div(divisor).mul(divisor));
-  }
-
-  /** This is an alias of {@link Long.modulo} */
-  mod(divisor: string | number | Long | Timestamp): Long {
-    return this.modulo(divisor);
-  }
-  /** This is an alias of {@link Long.modulo} */
-  rem(divisor: string | number | Long | Timestamp): Long {
-    return this.modulo(divisor);
-  }
-
-  /**
-   * Returns the product of this and the specified Long.
-   * @param multiplier - Multiplier
-   * @returns Product
-   */
-  multiply(multiplier: string | number | Long | Timestamp): Long {
-    if (this.isZero()) return Long.ZERO;
-    if (!Long.isLong(multiplier)) multiplier = Long.fromValue(multiplier);
-
-    // use wasm support if present
-    if (wasm) {
-      const low = wasm.mul(this.low, this.high, multiplier.low, multiplier.high);
-      return Long.fromBits(low, wasm.get_high(), this.unsigned);
-    }
-
-    if (multiplier.isZero()) return Long.ZERO;
-    if (this.eq(Long.MIN_VALUE)) return multiplier.isOdd() ? Long.MIN_VALUE : Long.ZERO;
-    if (multiplier.eq(Long.MIN_VALUE)) return this.isOdd() ? Long.MIN_VALUE : Long.ZERO;
-
-    if (this.isNegative()) {
-      if (multiplier.isNegative()) return this.neg().mul(multiplier.neg());
-      else return this.neg().mul(multiplier).neg();
-    } else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg();
-
-    // If both longs are small, use float multiplication
-    if (this.lt(Long.TWO_PWR_24) && multiplier.lt(Long.TWO_PWR_24))
-      return Long.fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);
-
-    // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.
-    // We can skip products that would overflow.
-
-    const a48 = this.high >>> 16;
-    const a32 = this.high & 0xffff;
-    const a16 = this.low >>> 16;
-    const a00 = this.low & 0xffff;
-
-    const b48 = multiplier.high >>> 16;
-    const b32 = multiplier.high & 0xffff;
-    const b16 = multiplier.low >>> 16;
-    const b00 = multiplier.low & 0xffff;
-
-    let c48 = 0,
-      c32 = 0,
-      c16 = 0,
-      c00 = 0;
-    c00 += a00 * b00;
-    c16 += c00 >>> 16;
-    c00 &= 0xffff;
-    c16 += a16 * b00;
-    c32 += c16 >>> 16;
-    c16 &= 0xffff;
-    c16 += a00 * b16;
-    c32 += c16 >>> 16;
-    c16 &= 0xffff;
-    c32 += a32 * b00;
-    c48 += c32 >>> 16;
-    c32 &= 0xffff;
-    c32 += a16 * b16;
-    c48 += c32 >>> 16;
-    c32 &= 0xffff;
-    c32 += a00 * b32;
-    c48 += c32 >>> 16;
-    c32 &= 0xffff;
-    c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
-    c48 &= 0xffff;
-    return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
-  }
-
-  /** This is an alias of {@link Long.multiply} */
-  mul(multiplier: string | number | Long | Timestamp): Long {
-    return this.multiply(multiplier);
-  }
-
-  /** Returns the Negation of this Long's value. */
-  negate(): Long {
-    if (!this.unsigned && this.eq(Long.MIN_VALUE)) return Long.MIN_VALUE;
-    return this.not().add(Long.ONE);
-  }
-
-  /** This is an alias of {@link Long.negate} */
-  neg(): Long {
-    return this.negate();
-  }
-
-  /** Returns the bitwise NOT of this Long. */
-  not(): Long {
-    return Long.fromBits(~this.low, ~this.high, this.unsigned);
-  }
-
-  /** Tests if this Long's value differs from the specified's. */
-  notEquals(other: string | number | Long | Timestamp): boolean {
-    return !this.equals(other);
-  }
-
-  /** This is an alias of {@link Long.notEquals} */
-  neq(other: string | number | Long | Timestamp): boolean {
-    return this.notEquals(other);
-  }
-  /** This is an alias of {@link Long.notEquals} */
-  ne(other: string | number | Long | Timestamp): boolean {
-    return this.notEquals(other);
-  }
-
-  /**
-   * Returns the bitwise OR of this Long and the specified.
-   */
-  or(other: number | string | Long): Long {
-    if (!Long.isLong(other)) other = Long.fromValue(other);
-    return Long.fromBits(this.low | other.low, this.high | other.high, this.unsigned);
-  }
-
-  /**
-   * Returns this Long with bits shifted to the left by the given amount.
-   * @param numBits - Number of bits
-   * @returns Shifted Long
-   */
-  shiftLeft(numBits: number | Long): Long {
-    if (Long.isLong(numBits)) numBits = numBits.toInt();
-    if ((numBits &= 63) === 0) return this;
-    else if (numBits < 32)
-      return Long.fromBits(
-        this.low << numBits,
-        (this.high << numBits) | (this.low >>> (32 - numBits)),
-        this.unsigned
-      );
-    else return Long.fromBits(0, this.low << (numBits - 32), this.unsigned);
-  }
-
-  /** This is an alias of {@link Long.shiftLeft} */
-  shl(numBits: number | Long): Long {
-    return this.shiftLeft(numBits);
-  }
-
-  /**
-   * Returns this Long with bits arithmetically shifted to the right by the given amount.
-   * @param numBits - Number of bits
-   * @returns Shifted Long
-   */
-  shiftRight(numBits: number | Long): Long {
-    if (Long.isLong(numBits)) numBits = numBits.toInt();
-    if ((numBits &= 63) === 0) return this;
-    else if (numBits < 32)
-      return Long.fromBits(
-        (this.low >>> numBits) | (this.high << (32 - numBits)),
-        this.high >> numBits,
-        this.unsigned
-      );
-    else return Long.fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);
-  }
-
-  /** This is an alias of {@link Long.shiftRight} */
-  shr(numBits: number | Long): Long {
-    return this.shiftRight(numBits);
-  }
-
-  /**
-   * Returns this Long with bits logically shifted to the right by the given amount.
-   * @param numBits - Number of bits
-   * @returns Shifted Long
-   */
-  shiftRightUnsigned(numBits: Long | number): Long {
-    if (Long.isLong(numBits)) numBits = numBits.toInt();
-    numBits &= 63;
-    if (numBits === 0) return this;
-    else {
-      const high = this.high;
-      if (numBits < 32) {
-        const low = this.low;
-        return Long.fromBits(
-          (low >>> numBits) | (high << (32 - numBits)),
-          high >>> numBits,
-          this.unsigned
-        );
-      } else if (numBits === 32) return Long.fromBits(high, 0, this.unsigned);
-      else return Long.fromBits(high >>> (numBits - 32), 0, this.unsigned);
-    }
-  }
-
-  /** This is an alias of {@link Long.shiftRightUnsigned} */
-  shr_u(numBits: number | Long): Long {
-    return this.shiftRightUnsigned(numBits);
-  }
-  /** This is an alias of {@link Long.shiftRightUnsigned} */
-  shru(numBits: number | Long): Long {
-    return this.shiftRightUnsigned(numBits);
-  }
-
-  /**
-   * Returns the difference of this and the specified Long.
-   * @param subtrahend - Subtrahend
-   * @returns Difference
-   */
-  subtract(subtrahend: string | number | Long | Timestamp): Long {
-    if (!Long.isLong(subtrahend)) subtrahend = Long.fromValue(subtrahend);
-    return this.add(subtrahend.neg());
-  }
-
-  /** This is an alias of {@link Long.subtract} */
-  sub(subtrahend: string | number | Long | Timestamp): Long {
-    return this.subtract(subtrahend);
-  }
-
-  /** Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. */
-  toInt(): number {
-    return this.unsigned ? this.low >>> 0 : this.low;
-  }
-
-  /** Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). */
-  toNumber(): number {
-    if (this.unsigned) return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);
-    return this.high * TWO_PWR_32_DBL + (this.low >>> 0);
-  }
-
-  /** Converts the Long to a BigInt (arbitrary precision). */
-  toBigInt(): bigint {
-    // eslint-disable-next-line no-restricted-globals -- This is allowed here as it is explicitly requesting a bigint
-    return BigInt(this.toString());
-  }
-
-  /**
-   * Converts this Long to its byte representation.
-   * @param le - Whether little or big endian, defaults to big endian
-   * @returns Byte representation
-   */
-  toBytes(le?: boolean): number[] {
-    return le ? this.toBytesLE() : this.toBytesBE();
-  }
-
-  /**
-   * Converts this Long to its little endian byte representation.
-   * @returns Little endian byte representation
-   */
-  toBytesLE(): number[] {
-    const hi = this.high,
-      lo = this.low;
-    return [
-      lo & 0xff,
-      (lo >>> 8) & 0xff,
-      (lo >>> 16) & 0xff,
-      lo >>> 24,
-      hi & 0xff,
-      (hi >>> 8) & 0xff,
-      (hi >>> 16) & 0xff,
-      hi >>> 24
-    ];
-  }
-
-  /**
-   * Converts this Long to its big endian byte representation.
-   * @returns Big endian byte representation
-   */
-  toBytesBE(): number[] {
-    const hi = this.high,
-      lo = this.low;
-    return [
-      hi >>> 24,
-      (hi >>> 16) & 0xff,
-      (hi >>> 8) & 0xff,
-      hi & 0xff,
-      lo >>> 24,
-      (lo >>> 16) & 0xff,
-      (lo >>> 8) & 0xff,
-      lo & 0xff
-    ];
-  }
-
-  /**
-   * Converts this Long to signed.
-   */
-  toSigned(): Long {
-    if (!this.unsigned) return this;
-    return Long.fromBits(this.low, this.high, false);
-  }
-
-  /**
-   * Converts the Long to a string written in the specified radix.
-   * @param radix - Radix (2-36), defaults to 10
-   * @throws RangeError If `radix` is out of range
-   */
-  toString(radix?: number): string {
-    radix = radix || 10;
-    if (radix < 2 || 36 < radix) throw new BSONError('radix');
-    if (this.isZero()) return '0';
-    if (this.isNegative()) {
-      // Unsigned Longs are never negative
-      if (this.eq(Long.MIN_VALUE)) {
-        // We need to change the Long value before it can be negated, so we remove
-        // the bottom-most digit in this base and then recurse to do the rest.
-        const radixLong = Long.fromNumber(radix),
-          div = this.div(radixLong),
-          rem1 = div.mul(radixLong).sub(this);
-        return div.toString(radix) + rem1.toInt().toString(radix);
-      } else return '-' + this.neg().toString(radix);
-    }
-
-    // Do several (6) digits each time through the loop, so as to
-    // minimize the calls to the very expensive emulated div.
-    const radixToPower = Long.fromNumber(Math.pow(radix, 6), this.unsigned);
-    // eslint-disable-next-line @typescript-eslint/no-this-alias
-    let rem: Long = this;
-    let result = '';
-    // eslint-disable-next-line no-constant-condition
-    while (true) {
-      const remDiv = rem.div(radixToPower);
-      const intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0;
-      let digits = intval.toString(radix);
-      rem = remDiv;
-      if (rem.isZero()) {
-        return digits + result;
-      } else {
-        while (digits.length < 6) digits = '0' + digits;
-        result = '' + digits + result;
-      }
-    }
-  }
-
-  /** Converts this Long to unsigned. */
-  toUnsigned(): Long {
-    if (this.unsigned) return this;
-    return Long.fromBits(this.low, this.high, true);
-  }
-
-  /** Returns the bitwise XOR of this Long and the given one. */
-  xor(other: Long | number | string): Long {
-    if (!Long.isLong(other)) other = Long.fromValue(other);
-    return Long.fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);
-  }
-
-  /** This is an alias of {@link Long.isZero} */
-  eqz(): boolean {
-    return this.isZero();
-  }
-
-  /** This is an alias of {@link Long.lessThanOrEqual} */
-  le(other: string | number | Long | Timestamp): boolean {
-    return this.lessThanOrEqual(other);
-  }
-
-  /*
-   ****************************************************************
-   *                  BSON SPECIFIC ADDITIONS                     *
-   ****************************************************************
-   */
-  toExtendedJSON(options?: EJSONOptions): number | LongExtended {
-    if (options && options.relaxed) return this.toNumber();
-    return { $numberLong: this.toString() };
-  }
-  static fromExtendedJSON(
-    doc: { $numberLong: string },
-    options?: EJSONOptions
-  ): number | Long | bigint {
-    const { useBigInt64 = false, relaxed = true } = { ...options };
-
-    if (doc.$numberLong.length > MAX_INT64_STRING_LENGTH) {
-      throw new BSONError('$numberLong string is too long');
-    }
-
-    if (!DECIMAL_REG_EX.test(doc.$numberLong)) {
-      throw new BSONError(`$numberLong string "${doc.$numberLong}" is in an invalid format`);
-    }
-
-    if (useBigInt64) {
-      /* eslint-disable no-restricted-globals -- Can use BigInt here as useBigInt64=true */
-      const bigIntResult = BigInt(doc.$numberLong);
-      return BigInt.asIntN(64, bigIntResult);
-      /* eslint-enable */
-    }
-
-    const longResult = Long.fromString(doc.$numberLong);
-    if (relaxed) {
-      return longResult.toNumber();
-    }
-    return longResult;
-  }
-
-  inspect(depth?: number, options?: unknown, inspect?: InspectFn): string {
-    inspect ??= defaultInspect;
-    const longVal = inspect(this.toString(), options);
-    const unsignedVal = this.unsigned ? `, ${inspect(this.unsigned, options)}` : '';
-    return `new Long(${longVal}${unsignedVal})`;
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/max_key.ts b/server/data-import/node_modules/bson/src/max_key.ts
deleted file mode 100644
index 903f1d1656e46e959f6b7bc2def290272b780f7d..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/max_key.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { BSONValue } from './bson_value';
-
-/** @public */
-export interface MaxKeyExtended {
-  $maxKey: 1;
-}
-
-/**
- * A class representation of the BSON MaxKey type.
- * @public
- * @category BSONType
- */
-export class MaxKey extends BSONValue {
-  get _bsontype(): 'MaxKey' {
-    return 'MaxKey';
-  }
-
-  /** @internal */
-  toExtendedJSON(): MaxKeyExtended {
-    return { $maxKey: 1 };
-  }
-
-  /** @internal */
-  static fromExtendedJSON(): MaxKey {
-    return new MaxKey();
-  }
-
-  inspect(): string {
-    return 'new MaxKey()';
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/min_key.ts b/server/data-import/node_modules/bson/src/min_key.ts
deleted file mode 100644
index 244e645ab50baf1fb55305d995206e1a055742e7..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/min_key.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { BSONValue } from './bson_value';
-
-/** @public */
-export interface MinKeyExtended {
-  $minKey: 1;
-}
-
-/**
- * A class representation of the BSON MinKey type.
- * @public
- * @category BSONType
- */
-export class MinKey extends BSONValue {
-  get _bsontype(): 'MinKey' {
-    return 'MinKey';
-  }
-
-  /** @internal */
-  toExtendedJSON(): MinKeyExtended {
-    return { $minKey: 1 };
-  }
-
-  /** @internal */
-  static fromExtendedJSON(): MinKey {
-    return new MinKey();
-  }
-
-  inspect(): string {
-    return 'new MinKey()';
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/objectid.ts b/server/data-import/node_modules/bson/src/objectid.ts
deleted file mode 100644
index 98daecc882196ee07060bed8148be62969401d5e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/objectid.ts
+++ /dev/null
@@ -1,361 +0,0 @@
-import { BSONValue } from './bson_value';
-import { BSONError } from './error';
-import { type InspectFn, defaultInspect } from './parser/utils';
-import { ByteUtils } from './utils/byte_utils';
-import { NumberUtils } from './utils/number_utils';
-
-// Regular expression that checks for hex value
-const checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$');
-
-// Unique sequence for the current process (initialized on first use)
-let PROCESS_UNIQUE: Uint8Array | null = null;
-
-/** @public */
-export interface ObjectIdLike {
-  id: string | Uint8Array;
-  __id?: string;
-  toHexString(): string;
-}
-
-/** @public */
-export interface ObjectIdExtended {
-  $oid: string;
-}
-
-/**
- * A class representation of the BSON ObjectId type.
- * @public
- * @category BSONType
- */
-export class ObjectId extends BSONValue {
-  get _bsontype(): 'ObjectId' {
-    return 'ObjectId';
-  }
-
-  /** @internal */
-  private static index = Math.floor(Math.random() * 0xffffff);
-
-  static cacheHexString: boolean;
-
-  /** ObjectId Bytes @internal */
-  private buffer!: Uint8Array;
-  /** ObjectId hexString cache @internal */
-  private __id?: string;
-
-  /**
-   * Create ObjectId from a number.
-   *
-   * @param inputId - A number.
-   * @deprecated Instead, use `static createFromTime()` to set a numeric value for the new ObjectId.
-   */
-  constructor(inputId: number);
-  /**
-   * Create ObjectId from a 24 character hex string.
-   *
-   * @param inputId - A 24 character hex string.
-   */
-  constructor(inputId: string);
-  /**
-   * Create ObjectId from the BSON ObjectId type.
-   *
-   * @param inputId - The BSON ObjectId type.
-   */
-  constructor(inputId: ObjectId);
-  /**
-   * Create ObjectId from the object type that has the toHexString method.
-   *
-   * @param inputId - The ObjectIdLike type.
-   */
-  constructor(inputId: ObjectIdLike);
-  /**
-   * Create ObjectId from a 12 byte binary Buffer.
-   *
-   * @param inputId - A 12 byte binary Buffer.
-   */
-  constructor(inputId: Uint8Array);
-  /** To generate a new ObjectId, use ObjectId() with no argument. */
-  constructor();
-  /**
-   * Implementation overload.
-   *
-   * @param inputId - All input types that are used in the constructor implementation.
-   */
-  constructor(inputId?: string | number | ObjectId | ObjectIdLike | Uint8Array);
-  /**
-   * Create a new ObjectId.
-   *
-   * @param inputId - An input value to create a new ObjectId from.
-   */
-  constructor(inputId?: string | number | ObjectId | ObjectIdLike | Uint8Array) {
-    super();
-    // workingId is set based on type of input and whether valid id exists for the input
-    let workingId;
-    if (typeof inputId === 'object' && inputId && 'id' in inputId) {
-      if (typeof inputId.id !== 'string' && !ArrayBuffer.isView(inputId.id)) {
-        throw new BSONError('Argument passed in must have an id that is of type string or Buffer');
-      }
-      if ('toHexString' in inputId && typeof inputId.toHexString === 'function') {
-        workingId = ByteUtils.fromHex(inputId.toHexString());
-      } else {
-        workingId = inputId.id;
-      }
-    } else {
-      workingId = inputId;
-    }
-
-    // The following cases use workingId to construct an ObjectId
-    if (workingId == null || typeof workingId === 'number') {
-      // The most common use case (blank id, new objectId instance)
-      // Generate a new id
-      this.buffer = ObjectId.generate(typeof workingId === 'number' ? workingId : undefined);
-    } else if (ArrayBuffer.isView(workingId) && workingId.byteLength === 12) {
-      // If intstanceof matches we can escape calling ensure buffer in Node.js environments
-      this.buffer = ByteUtils.toLocalBufferType(workingId);
-    } else if (typeof workingId === 'string') {
-      if (workingId.length === 24 && checkForHexRegExp.test(workingId)) {
-        this.buffer = ByteUtils.fromHex(workingId);
-      } else {
-        throw new BSONError(
-          'input must be a 24 character hex string, 12 byte Uint8Array, or an integer'
-        );
-      }
-    } else {
-      throw new BSONError('Argument passed in does not match the accepted types');
-    }
-    // If we are caching the hex string
-    if (ObjectId.cacheHexString) {
-      this.__id = ByteUtils.toHex(this.id);
-    }
-  }
-
-  /**
-   * The ObjectId bytes
-   * @readonly
-   */
-  get id(): Uint8Array {
-    return this.buffer;
-  }
-
-  set id(value: Uint8Array) {
-    this.buffer = value;
-    if (ObjectId.cacheHexString) {
-      this.__id = ByteUtils.toHex(value);
-    }
-  }
-
-  /** Returns the ObjectId id as a 24 lowercase character hex string representation */
-  toHexString(): string {
-    if (ObjectId.cacheHexString && this.__id) {
-      return this.__id;
-    }
-
-    const hexString = ByteUtils.toHex(this.id);
-
-    if (ObjectId.cacheHexString && !this.__id) {
-      this.__id = hexString;
-    }
-
-    return hexString;
-  }
-
-  /**
-   * Update the ObjectId index
-   * @internal
-   */
-  private static getInc(): number {
-    return (ObjectId.index = (ObjectId.index + 1) % 0xffffff);
-  }
-
-  /**
-   * Generate a 12 byte id buffer used in ObjectId's
-   *
-   * @param time - pass in a second based timestamp.
-   */
-  static generate(time?: number): Uint8Array {
-    if ('number' !== typeof time) {
-      time = Math.floor(Date.now() / 1000);
-    }
-
-    const inc = ObjectId.getInc();
-    const buffer = ByteUtils.allocateUnsafe(12);
-
-    // 4-byte timestamp
-    NumberUtils.setInt32BE(buffer, 0, time);
-
-    // set PROCESS_UNIQUE if yet not initialized
-    if (PROCESS_UNIQUE === null) {
-      PROCESS_UNIQUE = ByteUtils.randomBytes(5);
-    }
-
-    // 5-byte process unique
-    buffer[4] = PROCESS_UNIQUE[0];
-    buffer[5] = PROCESS_UNIQUE[1];
-    buffer[6] = PROCESS_UNIQUE[2];
-    buffer[7] = PROCESS_UNIQUE[3];
-    buffer[8] = PROCESS_UNIQUE[4];
-
-    // 3-byte counter
-    buffer[11] = inc & 0xff;
-    buffer[10] = (inc >> 8) & 0xff;
-    buffer[9] = (inc >> 16) & 0xff;
-
-    return buffer;
-  }
-
-  /**
-   * Converts the id into a 24 character hex string for printing, unless encoding is provided.
-   * @param encoding - hex or base64
-   */
-  toString(encoding?: 'hex' | 'base64'): string {
-    // Is the id a buffer then use the buffer toString method to return the format
-    if (encoding === 'base64') return ByteUtils.toBase64(this.id);
-    if (encoding === 'hex') return this.toHexString();
-    return this.toHexString();
-  }
-
-  /** Converts to its JSON the 24 character hex string representation. */
-  toJSON(): string {
-    return this.toHexString();
-  }
-
-  /** @internal */
-  private static is(variable: unknown): variable is ObjectId {
-    return (
-      variable != null &&
-      typeof variable === 'object' &&
-      '_bsontype' in variable &&
-      variable._bsontype === 'ObjectId'
-    );
-  }
-
-  /**
-   * Compares the equality of this ObjectId with `otherID`.
-   *
-   * @param otherId - ObjectId instance to compare against.
-   */
-  equals(otherId: string | ObjectId | ObjectIdLike | undefined | null): boolean {
-    if (otherId === undefined || otherId === null) {
-      return false;
-    }
-
-    if (ObjectId.is(otherId)) {
-      return (
-        this.buffer[11] === otherId.buffer[11] && ByteUtils.equals(this.buffer, otherId.buffer)
-      );
-    }
-
-    if (typeof otherId === 'string') {
-      return otherId.toLowerCase() === this.toHexString();
-    }
-
-    if (typeof otherId === 'object' && typeof otherId.toHexString === 'function') {
-      const otherIdString = otherId.toHexString();
-      const thisIdString = this.toHexString();
-      return typeof otherIdString === 'string' && otherIdString.toLowerCase() === thisIdString;
-    }
-
-    return false;
-  }
-
-  /** Returns the generation date (accurate up to the second) that this ID was generated. */
-  getTimestamp(): Date {
-    const timestamp = new Date();
-    const time = NumberUtils.getUint32BE(this.buffer, 0);
-    timestamp.setTime(Math.floor(time) * 1000);
-    return timestamp;
-  }
-
-  /** @internal */
-  static createPk(): ObjectId {
-    return new ObjectId();
-  }
-
-  /** @internal */
-  serializeInto(uint8array: Uint8Array, index: number): 12 {
-    uint8array[index] = this.buffer[0];
-    uint8array[index + 1] = this.buffer[1];
-    uint8array[index + 2] = this.buffer[2];
-    uint8array[index + 3] = this.buffer[3];
-    uint8array[index + 4] = this.buffer[4];
-    uint8array[index + 5] = this.buffer[5];
-    uint8array[index + 6] = this.buffer[6];
-    uint8array[index + 7] = this.buffer[7];
-    uint8array[index + 8] = this.buffer[8];
-    uint8array[index + 9] = this.buffer[9];
-    uint8array[index + 10] = this.buffer[10];
-    uint8array[index + 11] = this.buffer[11];
-    return 12;
-  }
-
-  /**
-   * Creates an ObjectId from a second based number, with the rest of the ObjectId zeroed out. Used for comparisons or sorting the ObjectId.
-   *
-   * @param time - an integer number representing a number of seconds.
-   */
-  static createFromTime(time: number): ObjectId {
-    const buffer = ByteUtils.allocate(12);
-    for (let i = 11; i >= 4; i--) buffer[i] = 0;
-    // Encode time into first 4 bytes
-    NumberUtils.setInt32BE(buffer, 0, time);
-    // Return the new objectId
-    return new ObjectId(buffer);
-  }
-
-  /**
-   * Creates an ObjectId from a hex string representation of an ObjectId.
-   *
-   * @param hexString - create a ObjectId from a passed in 24 character hexstring.
-   */
-  static createFromHexString(hexString: string): ObjectId {
-    if (hexString?.length !== 24) {
-      throw new BSONError('hex string must be 24 characters');
-    }
-
-    return new ObjectId(ByteUtils.fromHex(hexString));
-  }
-
-  /** Creates an ObjectId instance from a base64 string */
-  static createFromBase64(base64: string): ObjectId {
-    if (base64?.length !== 16) {
-      throw new BSONError('base64 string must be 16 characters');
-    }
-
-    return new ObjectId(ByteUtils.fromBase64(base64));
-  }
-
-  /**
-   * Checks if a value can be used to create a valid bson ObjectId
-   * @param id - any JS value
-   */
-  static isValid(id: string | number | ObjectId | ObjectIdLike | Uint8Array): boolean {
-    if (id == null) return false;
-
-    try {
-      new ObjectId(id);
-      return true;
-    } catch {
-      return false;
-    }
-  }
-
-  /** @internal */
-  toExtendedJSON(): ObjectIdExtended {
-    if (this.toHexString) return { $oid: this.toHexString() };
-    return { $oid: this.toString('hex') };
-  }
-
-  /** @internal */
-  static fromExtendedJSON(doc: ObjectIdExtended): ObjectId {
-    return new ObjectId(doc.$oid);
-  }
-
-  /**
-   * Converts to a string representation of this Id.
-   *
-   * @returns return the 24 character hex string representation.
-   */
-  inspect(depth?: number, options?: unknown, inspect?: InspectFn): string {
-    inspect ??= defaultInspect;
-    return `new ObjectId(${inspect(this.toHexString(), options)})`;
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/parser/calculate_size.ts b/server/data-import/node_modules/bson/src/parser/calculate_size.ts
deleted file mode 100644
index fd1e4a02947b5094cdac376105b2d8c5413188ee..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/parser/calculate_size.ts
+++ /dev/null
@@ -1,211 +0,0 @@
-import { Binary } from '../binary';
-import type { Document } from '../bson';
-import { BSONVersionError } from '../error';
-import * as constants from '../constants';
-import { ByteUtils } from '../utils/byte_utils';
-import { isAnyArrayBuffer, isDate, isRegExp } from './utils';
-
-export function internalCalculateObjectSize(
-  object: Document,
-  serializeFunctions?: boolean,
-  ignoreUndefined?: boolean
-): number {
-  let totalLength = 4 + 1;
-
-  if (Array.isArray(object)) {
-    for (let i = 0; i < object.length; i++) {
-      totalLength += calculateElement(
-        i.toString(),
-        object[i],
-        serializeFunctions,
-        true,
-        ignoreUndefined
-      );
-    }
-  } else {
-    // If we have toBSON defined, override the current object
-
-    if (typeof object?.toBSON === 'function') {
-      object = object.toBSON();
-    }
-
-    // Calculate size
-    for (const key of Object.keys(object)) {
-      totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined);
-    }
-  }
-
-  return totalLength;
-}
-
-/** @internal */
-function calculateElement(
-  name: string,
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  value: any,
-  serializeFunctions = false,
-  isArray = false,
-  ignoreUndefined = false
-) {
-  // If we have toBSON defined, override the current object
-  if (typeof value?.toBSON === 'function') {
-    value = value.toBSON();
-  }
-
-  switch (typeof value) {
-    case 'string':
-      return 1 + ByteUtils.utf8ByteLength(name) + 1 + 4 + ByteUtils.utf8ByteLength(value) + 1;
-    case 'number':
-      if (
-        Math.floor(value) === value &&
-        value >= constants.JS_INT_MIN &&
-        value <= constants.JS_INT_MAX
-      ) {
-        if (value >= constants.BSON_INT32_MIN && value <= constants.BSON_INT32_MAX) {
-          // 32 bit
-          return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (4 + 1);
-        } else {
-          return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-        }
-      } else {
-        // 64 bit
-        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-      }
-    case 'undefined':
-      if (isArray || !ignoreUndefined)
-        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
-      return 0;
-    case 'boolean':
-      return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 1);
-    case 'object':
-      if (
-        value != null &&
-        typeof value._bsontype === 'string' &&
-        value[Symbol.for('@@mdb.bson.version')] !== constants.BSON_MAJOR_VERSION
-      ) {
-        throw new BSONVersionError();
-      } else if (value == null || value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
-      } else if (value._bsontype === 'ObjectId') {
-        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (12 + 1);
-      } else if (value instanceof Date || isDate(value)) {
-        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-      } else if (
-        ArrayBuffer.isView(value) ||
-        value instanceof ArrayBuffer ||
-        isAnyArrayBuffer(value)
-      ) {
-        return (
-          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 4 + 1) + value.byteLength
-        );
-      } else if (
-        value._bsontype === 'Long' ||
-        value._bsontype === 'Double' ||
-        value._bsontype === 'Timestamp'
-      ) {
-        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
-      } else if (value._bsontype === 'Decimal128') {
-        return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (16 + 1);
-      } else if (value._bsontype === 'Code') {
-        // Calculate size depending on the availability of a scope
-        if (value.scope != null && Object.keys(value.scope).length > 0) {
-          return (
-            (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-            1 +
-            4 +
-            4 +
-            ByteUtils.utf8ByteLength(value.code.toString()) +
-            1 +
-            internalCalculateObjectSize(value.scope, serializeFunctions, ignoreUndefined)
-          );
-        } else {
-          return (
-            (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-            1 +
-            4 +
-            ByteUtils.utf8ByteLength(value.code.toString()) +
-            1
-          );
-        }
-      } else if (value._bsontype === 'Binary') {
-        const binary: Binary = value;
-        // Check what kind of subtype we have
-        if (binary.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
-          return (
-            (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-            (binary.position + 1 + 4 + 1 + 4)
-          );
-        } else {
-          return (
-            (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (binary.position + 1 + 4 + 1)
-          );
-        }
-      } else if (value._bsontype === 'Symbol') {
-        return (
-          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-          ByteUtils.utf8ByteLength(value.value) +
-          4 +
-          1 +
-          1
-        );
-      } else if (value._bsontype === 'DBRef') {
-        // Set up correct object for serialization
-        const ordered_values = Object.assign(
-          {
-            $ref: value.collection,
-            $id: value.oid
-          },
-          value.fields
-        );
-
-        // Add db reference if it exists
-        if (value.db != null) {
-          ordered_values['$db'] = value.db;
-        }
-
-        return (
-          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-          1 +
-          internalCalculateObjectSize(ordered_values, serializeFunctions, ignoreUndefined)
-        );
-      } else if (value instanceof RegExp || isRegExp(value)) {
-        return (
-          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-          1 +
-          ByteUtils.utf8ByteLength(value.source) +
-          1 +
-          (value.global ? 1 : 0) +
-          (value.ignoreCase ? 1 : 0) +
-          (value.multiline ? 1 : 0) +
-          1
-        );
-      } else if (value._bsontype === 'BSONRegExp') {
-        return (
-          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-          1 +
-          ByteUtils.utf8ByteLength(value.pattern) +
-          1 +
-          ByteUtils.utf8ByteLength(value.options) +
-          1
-        );
-      } else {
-        return (
-          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-          internalCalculateObjectSize(value, serializeFunctions, ignoreUndefined) +
-          1
-        );
-      }
-    case 'function':
-      if (serializeFunctions) {
-        return (
-          (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
-          1 +
-          4 +
-          ByteUtils.utf8ByteLength(value.toString()) +
-          1
-        );
-      }
-  }
-
-  return 0;
-}
diff --git a/server/data-import/node_modules/bson/src/parser/deserializer.ts b/server/data-import/node_modules/bson/src/parser/deserializer.ts
deleted file mode 100644
index ac27819037bcf4c0d540c96d4db10face09e722b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/parser/deserializer.ts
+++ /dev/null
@@ -1,661 +0,0 @@
-import { Binary, UUID } from '../binary';
-import type { Document } from '../bson';
-import { Code } from '../code';
-import * as constants from '../constants';
-import { DBRef, type DBRefLike, isDBRefLike } from '../db_ref';
-import { Decimal128 } from '../decimal128';
-import { Double } from '../double';
-import { BSONError } from '../error';
-import { Int32 } from '../int_32';
-import { Long } from '../long';
-import { MaxKey } from '../max_key';
-import { MinKey } from '../min_key';
-import { ObjectId } from '../objectid';
-import { BSONRegExp } from '../regexp';
-import { BSONSymbol } from '../symbol';
-import { Timestamp } from '../timestamp';
-import { ByteUtils } from '../utils/byte_utils';
-import { NumberUtils } from '../utils/number_utils';
-import { validateUtf8 } from '../validate_utf8';
-
-/** @public */
-export interface DeserializeOptions {
-  /**
-   * when deserializing a Long return as a BigInt.
-   * @defaultValue `false`
-   */
-  useBigInt64?: boolean;
-  /**
-   * when deserializing a Long will fit it into a Number if it's smaller than 53 bits.
-   * @defaultValue `true`
-   */
-  promoteLongs?: boolean;
-  /**
-   * when deserializing a Binary will return it as a node.js Buffer instance.
-   * @defaultValue `false`
-   */
-  promoteBuffers?: boolean;
-  /**
-   * when deserializing will promote BSON values to their Node.js closest equivalent types.
-   * @defaultValue `true`
-   */
-  promoteValues?: boolean;
-  /**
-   * allow to specify if there what fields we wish to return as unserialized raw buffer.
-   * @defaultValue `null`
-   */
-  fieldsAsRaw?: Document;
-  /**
-   * return BSON regular expressions as BSONRegExp instances.
-   * @defaultValue `false`
-   */
-  bsonRegExp?: boolean;
-  /**
-   * allows the buffer to be larger than the parsed BSON object.
-   * @defaultValue `false`
-   */
-  allowObjectSmallerThanBufferSize?: boolean;
-  /**
-   * Offset into buffer to begin reading document from
-   * @defaultValue `0`
-   */
-  index?: number;
-
-  raw?: boolean;
-  /** Allows for opt-out utf-8 validation for all keys or
-   * specified keys. Must be all true or all false.
-   *
-   * @example
-   * ```js
-   * // disables validation on all keys
-   *  validation: { utf8: false }
-   *
-   * // enables validation only on specified keys a, b, and c
-   *  validation: { utf8: { a: true, b: true, c: true } }
-   *
-   *  // disables validation only on specified keys a, b
-   *  validation: { utf8: { a: false, b: false } }
-   * ```
-   */
-  validation?: { utf8: boolean | Record<string, true> | Record<string, false> };
-}
-
-// Internal long versions
-const JS_INT_MAX_LONG = Long.fromNumber(constants.JS_INT_MAX);
-const JS_INT_MIN_LONG = Long.fromNumber(constants.JS_INT_MIN);
-
-export function internalDeserialize(
-  buffer: Uint8Array,
-  options: DeserializeOptions,
-  isArray?: boolean
-): Document {
-  options = options == null ? {} : options;
-  const index = options && options.index ? options.index : 0;
-  // Read the document size
-  const size = NumberUtils.getInt32LE(buffer, index);
-
-  if (size < 5) {
-    throw new BSONError(`bson size must be >= 5, is ${size}`);
-  }
-
-  if (options.allowObjectSmallerThanBufferSize && buffer.length < size) {
-    throw new BSONError(`buffer length ${buffer.length} must be >= bson size ${size}`);
-  }
-
-  if (!options.allowObjectSmallerThanBufferSize && buffer.length !== size) {
-    throw new BSONError(`buffer length ${buffer.length} must === bson size ${size}`);
-  }
-
-  if (size + index > buffer.byteLength) {
-    throw new BSONError(
-      `(bson size ${size} + options.index ${index} must be <= buffer length ${buffer.byteLength})`
-    );
-  }
-
-  // Illegal end value
-  if (buffer[index + size - 1] !== 0) {
-    throw new BSONError(
-      "One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00"
-    );
-  }
-
-  // Start deserialization
-  return deserializeObject(buffer, index, options, isArray);
-}
-
-const allowedDBRefKeys = /^\$ref$|^\$id$|^\$db$/;
-
-function deserializeObject(
-  buffer: Uint8Array,
-  index: number,
-  options: DeserializeOptions,
-  isArray = false
-) {
-  const fieldsAsRaw = options['fieldsAsRaw'] == null ? null : options['fieldsAsRaw'];
-
-  // Return raw bson buffer instead of parsing it
-  const raw = options['raw'] == null ? false : options['raw'];
-
-  // Return BSONRegExp objects instead of native regular expressions
-  const bsonRegExp = typeof options['bsonRegExp'] === 'boolean' ? options['bsonRegExp'] : false;
-
-  // Controls the promotion of values vs wrapper classes
-  const promoteBuffers = options.promoteBuffers ?? false;
-  const promoteLongs = options.promoteLongs ?? true;
-  const promoteValues = options.promoteValues ?? true;
-  const useBigInt64 = options.useBigInt64 ?? false;
-
-  if (useBigInt64 && !promoteValues) {
-    throw new BSONError('Must either request bigint or Long for int64 deserialization');
-  }
-
-  if (useBigInt64 && !promoteLongs) {
-    throw new BSONError('Must either request bigint or Long for int64 deserialization');
-  }
-
-  // Ensures default validation option if none given
-  const validation = options.validation == null ? { utf8: true } : options.validation;
-
-  // Shows if global utf-8 validation is enabled or disabled
-  let globalUTFValidation = true;
-  // Reflects utf-8 validation setting regardless of global or specific key validation
-  let validationSetting: boolean;
-  // Set of keys either to enable or disable validation on
-  let utf8KeysSet;
-
-  // Check for boolean uniformity and empty validation option
-  const utf8ValidatedKeys = validation.utf8;
-  if (typeof utf8ValidatedKeys === 'boolean') {
-    validationSetting = utf8ValidatedKeys;
-  } else {
-    globalUTFValidation = false;
-    const utf8ValidationValues = Object.keys(utf8ValidatedKeys).map(function (key) {
-      return utf8ValidatedKeys[key];
-    });
-    if (utf8ValidationValues.length === 0) {
-      throw new BSONError('UTF-8 validation setting cannot be empty');
-    }
-    if (typeof utf8ValidationValues[0] !== 'boolean') {
-      throw new BSONError('Invalid UTF-8 validation option, must specify boolean values');
-    }
-    validationSetting = utf8ValidationValues[0];
-    // Ensures boolean uniformity in utf-8 validation (all true or all false)
-    if (!utf8ValidationValues.every(item => item === validationSetting)) {
-      throw new BSONError('Invalid UTF-8 validation option - keys must be all true or all false');
-    }
-  }
-
-  // Add keys to set that will either be validated or not based on validationSetting
-  if (!globalUTFValidation) {
-    utf8KeysSet = new Set();
-
-    for (const key of Object.keys(utf8ValidatedKeys)) {
-      utf8KeysSet.add(key);
-    }
-  }
-
-  // Set the start index
-  const startIndex = index;
-
-  // Validate that we have at least 4 bytes of buffer
-  if (buffer.length < 5) throw new BSONError('corrupt bson message < 5 bytes long');
-
-  // Read the document size
-  const size = NumberUtils.getInt32LE(buffer, index);
-  index += 4;
-
-  // Ensure buffer is valid size
-  if (size < 5 || size > buffer.length) throw new BSONError('corrupt bson message');
-
-  // Create holding object
-  const object: Document = isArray ? [] : {};
-  // Used for arrays to skip having to perform utf8 decoding
-  let arrayIndex = 0;
-  const done = false;
-
-  let isPossibleDBRef = isArray ? false : null;
-
-  // While we have more left data left keep parsing
-  while (!done) {
-    // Read the type
-    const elementType = buffer[index++];
-
-    // If we get a zero it's the last byte, exit
-    if (elementType === 0) break;
-
-    // Get the start search index
-    let i = index;
-    // Locate the end of the c string
-    while (buffer[i] !== 0x00 && i < buffer.length) {
-      i++;
-    }
-
-    // If are at the end of the buffer there is a problem with the document
-    if (i >= buffer.byteLength) throw new BSONError('Bad BSON Document: illegal CString');
-
-    // Represents the key
-    const name = isArray ? arrayIndex++ : ByteUtils.toUTF8(buffer, index, i, false);
-
-    // shouldValidateKey is true if the key should be validated, false otherwise
-    let shouldValidateKey = true;
-    if (globalUTFValidation || utf8KeysSet?.has(name)) {
-      shouldValidateKey = validationSetting;
-    } else {
-      shouldValidateKey = !validationSetting;
-    }
-
-    if (isPossibleDBRef !== false && (name as string)[0] === '$') {
-      isPossibleDBRef = allowedDBRefKeys.test(name as string);
-    }
-    let value;
-
-    index = i + 1;
-
-    if (elementType === constants.BSON_DATA_STRING) {
-      const stringSize = NumberUtils.getInt32LE(buffer, index);
-      index += 4;
-      if (
-        stringSize <= 0 ||
-        stringSize > buffer.length - index ||
-        buffer[index + stringSize - 1] !== 0
-      ) {
-        throw new BSONError('bad string length in bson');
-      }
-      value = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-      index = index + stringSize;
-    } else if (elementType === constants.BSON_DATA_OID) {
-      const oid = ByteUtils.allocateUnsafe(12);
-      for (let i = 0; i < 12; i++) oid[i] = buffer[index + i];
-      value = new ObjectId(oid);
-      index = index + 12;
-    } else if (elementType === constants.BSON_DATA_INT && promoteValues === false) {
-      value = new Int32(NumberUtils.getInt32LE(buffer, index));
-      index += 4;
-    } else if (elementType === constants.BSON_DATA_INT) {
-      value = NumberUtils.getInt32LE(buffer, index);
-      index += 4;
-    } else if (elementType === constants.BSON_DATA_NUMBER) {
-      value = NumberUtils.getFloat64LE(buffer, index);
-      index += 8;
-      if (promoteValues === false) value = new Double(value);
-    } else if (elementType === constants.BSON_DATA_DATE) {
-      const lowBits = NumberUtils.getInt32LE(buffer, index);
-      const highBits = NumberUtils.getInt32LE(buffer, index + 4);
-      index += 8;
-
-      value = new Date(new Long(lowBits, highBits).toNumber());
-    } else if (elementType === constants.BSON_DATA_BOOLEAN) {
-      if (buffer[index] !== 0 && buffer[index] !== 1)
-        throw new BSONError('illegal boolean type value');
-      value = buffer[index++] === 1;
-    } else if (elementType === constants.BSON_DATA_OBJECT) {
-      const _index = index;
-      const objectSize = NumberUtils.getInt32LE(buffer, index);
-
-      if (objectSize <= 0 || objectSize > buffer.length - index)
-        throw new BSONError('bad embedded document length in bson');
-
-      // We have a raw value
-      if (raw) {
-        value = buffer.slice(index, index + objectSize);
-      } else {
-        let objectOptions = options;
-        if (!globalUTFValidation) {
-          objectOptions = { ...options, validation: { utf8: shouldValidateKey } };
-        }
-        value = deserializeObject(buffer, _index, objectOptions, false);
-      }
-
-      index = index + objectSize;
-    } else if (elementType === constants.BSON_DATA_ARRAY) {
-      const _index = index;
-      const objectSize = NumberUtils.getInt32LE(buffer, index);
-      let arrayOptions: DeserializeOptions = options;
-
-      // Stop index
-      const stopIndex = index + objectSize;
-
-      // All elements of array to be returned as raw bson
-      if (fieldsAsRaw && fieldsAsRaw[name]) {
-        arrayOptions = { ...options, raw: true };
-      }
-
-      if (!globalUTFValidation) {
-        arrayOptions = { ...arrayOptions, validation: { utf8: shouldValidateKey } };
-      }
-      value = deserializeObject(buffer, _index, arrayOptions, true);
-      index = index + objectSize;
-
-      if (buffer[index - 1] !== 0) throw new BSONError('invalid array terminator byte');
-      if (index !== stopIndex) throw new BSONError('corrupted array bson');
-    } else if (elementType === constants.BSON_DATA_UNDEFINED) {
-      value = undefined;
-    } else if (elementType === constants.BSON_DATA_NULL) {
-      value = null;
-    } else if (elementType === constants.BSON_DATA_LONG) {
-      if (useBigInt64) {
-        value = NumberUtils.getBigInt64LE(buffer, index);
-        index += 8;
-      } else {
-        // Unpack the low and high bits
-        const lowBits = NumberUtils.getInt32LE(buffer, index);
-        const highBits = NumberUtils.getInt32LE(buffer, index + 4);
-        index += 8;
-
-        const long = new Long(lowBits, highBits);
-        // Promote the long if possible
-        if (promoteLongs && promoteValues === true) {
-          value =
-            long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG)
-              ? long.toNumber()
-              : long;
-        } else {
-          value = long;
-        }
-      }
-    } else if (elementType === constants.BSON_DATA_DECIMAL128) {
-      // Buffer to contain the decimal bytes
-      const bytes = ByteUtils.allocateUnsafe(16);
-      // Copy the next 16 bytes into the bytes buffer
-      for (let i = 0; i < 16; i++) bytes[i] = buffer[index + i];
-      // Update index
-      index = index + 16;
-      // Assign the new Decimal128 value
-      value = new Decimal128(bytes);
-    } else if (elementType === constants.BSON_DATA_BINARY) {
-      let binarySize = NumberUtils.getInt32LE(buffer, index);
-      index += 4;
-      const totalBinarySize = binarySize;
-      const subType = buffer[index++];
-
-      // Did we have a negative binary size, throw
-      if (binarySize < 0) throw new BSONError('Negative binary type element size found');
-
-      // Is the length longer than the document
-      if (binarySize > buffer.byteLength)
-        throw new BSONError('Binary type size larger than document size');
-
-      // Decode as raw Buffer object if options specifies it
-      if (buffer['slice'] != null) {
-        // If we have subtype 2 skip the 4 bytes for the size
-        if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
-          binarySize = NumberUtils.getInt32LE(buffer, index);
-          index += 4;
-          if (binarySize < 0)
-            throw new BSONError('Negative binary type element size found for subtype 0x02');
-          if (binarySize > totalBinarySize - 4)
-            throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
-          if (binarySize < totalBinarySize - 4)
-            throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
-        }
-
-        if (promoteBuffers && promoteValues) {
-          value = ByteUtils.toLocalBufferType(buffer.slice(index, index + binarySize));
-        } else {
-          value = new Binary(buffer.slice(index, index + binarySize), subType);
-          if (subType === constants.BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
-            value = value.toUUID();
-          }
-        }
-      } else {
-        // If we have subtype 2 skip the 4 bytes for the size
-        if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
-          binarySize = NumberUtils.getInt32LE(buffer, index);
-          index += 4;
-          if (binarySize < 0)
-            throw new BSONError('Negative binary type element size found for subtype 0x02');
-          if (binarySize > totalBinarySize - 4)
-            throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
-          if (binarySize < totalBinarySize - 4)
-            throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
-        }
-
-        if (promoteBuffers && promoteValues) {
-          value = ByteUtils.allocateUnsafe(binarySize);
-          // Copy the data
-          for (i = 0; i < binarySize; i++) {
-            value[i] = buffer[index + i];
-          }
-        } else {
-          value = new Binary(buffer.slice(index, index + binarySize), subType);
-          if (subType === constants.BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
-            value = value.toUUID();
-          }
-        }
-      }
-
-      // Update the index
-      index = index + binarySize;
-    } else if (elementType === constants.BSON_DATA_REGEXP && bsonRegExp === false) {
-      // Get the start search index
-      i = index;
-      // Locate the end of the c string
-      while (buffer[i] !== 0x00 && i < buffer.length) {
-        i++;
-      }
-      // If are at the end of the buffer there is a problem with the document
-      if (i >= buffer.length) throw new BSONError('Bad BSON Document: illegal CString');
-      // Return the C string
-      const source = ByteUtils.toUTF8(buffer, index, i, false);
-      // Create the regexp
-      index = i + 1;
-
-      // Get the start search index
-      i = index;
-      // Locate the end of the c string
-      while (buffer[i] !== 0x00 && i < buffer.length) {
-        i++;
-      }
-      // If are at the end of the buffer there is a problem with the document
-      if (i >= buffer.length) throw new BSONError('Bad BSON Document: illegal CString');
-      // Return the C string
-      const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
-      index = i + 1;
-
-      // For each option add the corresponding one for javascript
-      const optionsArray = new Array(regExpOptions.length);
-
-      // Parse options
-      for (i = 0; i < regExpOptions.length; i++) {
-        switch (regExpOptions[i]) {
-          case 'm':
-            optionsArray[i] = 'm';
-            break;
-          case 's':
-            optionsArray[i] = 'g';
-            break;
-          case 'i':
-            optionsArray[i] = 'i';
-            break;
-        }
-      }
-
-      value = new RegExp(source, optionsArray.join(''));
-    } else if (elementType === constants.BSON_DATA_REGEXP && bsonRegExp === true) {
-      // Get the start search index
-      i = index;
-      // Locate the end of the c string
-      while (buffer[i] !== 0x00 && i < buffer.length) {
-        i++;
-      }
-      // If are at the end of the buffer there is a problem with the document
-      if (i >= buffer.length) throw new BSONError('Bad BSON Document: illegal CString');
-      // Return the C string
-      const source = ByteUtils.toUTF8(buffer, index, i, false);
-      index = i + 1;
-
-      // Get the start search index
-      i = index;
-      // Locate the end of the c string
-      while (buffer[i] !== 0x00 && i < buffer.length) {
-        i++;
-      }
-      // If are at the end of the buffer there is a problem with the document
-      if (i >= buffer.length) throw new BSONError('Bad BSON Document: illegal CString');
-      // Return the C string
-      const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
-      index = i + 1;
-
-      // Set the object
-      value = new BSONRegExp(source, regExpOptions);
-    } else if (elementType === constants.BSON_DATA_SYMBOL) {
-      const stringSize = NumberUtils.getInt32LE(buffer, index);
-      index += 4;
-      if (
-        stringSize <= 0 ||
-        stringSize > buffer.length - index ||
-        buffer[index + stringSize - 1] !== 0
-      ) {
-        throw new BSONError('bad string length in bson');
-      }
-      const symbol = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
-      value = promoteValues ? symbol : new BSONSymbol(symbol);
-      index = index + stringSize;
-    } else if (elementType === constants.BSON_DATA_TIMESTAMP) {
-      value = new Timestamp({
-        i: NumberUtils.getUint32LE(buffer, index),
-        t: NumberUtils.getUint32LE(buffer, index + 4)
-      });
-      index += 8;
-    } else if (elementType === constants.BSON_DATA_MIN_KEY) {
-      value = new MinKey();
-    } else if (elementType === constants.BSON_DATA_MAX_KEY) {
-      value = new MaxKey();
-    } else if (elementType === constants.BSON_DATA_CODE) {
-      const stringSize = NumberUtils.getInt32LE(buffer, index);
-      index += 4;
-      if (
-        stringSize <= 0 ||
-        stringSize > buffer.length - index ||
-        buffer[index + stringSize - 1] !== 0
-      ) {
-        throw new BSONError('bad string length in bson');
-      }
-      const functionString = ByteUtils.toUTF8(
-        buffer,
-        index,
-        index + stringSize - 1,
-        shouldValidateKey
-      );
-
-      value = new Code(functionString);
-
-      // Update parse index position
-      index = index + stringSize;
-    } else if (elementType === constants.BSON_DATA_CODE_W_SCOPE) {
-      const totalSize = NumberUtils.getInt32LE(buffer, index);
-      index += 4;
-
-      // Element cannot be shorter than totalSize + stringSize + documentSize + terminator
-      if (totalSize < 4 + 4 + 4 + 1) {
-        throw new BSONError('code_w_scope total size shorter minimum expected length');
-      }
-
-      // Get the code string size
-      const stringSize = NumberUtils.getInt32LE(buffer, index);
-      index += 4;
-      // Check if we have a valid string
-      if (
-        stringSize <= 0 ||
-        stringSize > buffer.length - index ||
-        buffer[index + stringSize - 1] !== 0
-      ) {
-        throw new BSONError('bad string length in bson');
-      }
-
-      // Javascript function
-      const functionString = ByteUtils.toUTF8(
-        buffer,
-        index,
-        index + stringSize - 1,
-        shouldValidateKey
-      );
-      // Update parse index position
-      index = index + stringSize;
-      // Parse the element
-      const _index = index;
-      // Decode the size of the object document
-      const objectSize = NumberUtils.getInt32LE(buffer, index);
-      // Decode the scope object
-      const scopeObject = deserializeObject(buffer, _index, options, false);
-      // Adjust the index
-      index = index + objectSize;
-
-      // Check if field length is too short
-      if (totalSize < 4 + 4 + objectSize + stringSize) {
-        throw new BSONError('code_w_scope total size is too short, truncating scope');
-      }
-
-      // Check if totalSize field is too long
-      if (totalSize > 4 + 4 + objectSize + stringSize) {
-        throw new BSONError('code_w_scope total size is too long, clips outer document');
-      }
-
-      value = new Code(functionString, scopeObject);
-    } else if (elementType === constants.BSON_DATA_DBPOINTER) {
-      // Get the code string size
-      const stringSize = NumberUtils.getInt32LE(buffer, index);
-      index += 4;
-      // Check if we have a valid string
-      if (
-        stringSize <= 0 ||
-        stringSize > buffer.length - index ||
-        buffer[index + stringSize - 1] !== 0
-      )
-        throw new BSONError('bad string length in bson');
-      // Namespace
-      if (validation != null && validation.utf8) {
-        if (!validateUtf8(buffer, index, index + stringSize - 1)) {
-          throw new BSONError('Invalid UTF-8 string in BSON document');
-        }
-      }
-      const namespace = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, false);
-      // Update parse index position
-      index = index + stringSize;
-
-      // Read the oid
-      const oidBuffer = ByteUtils.allocateUnsafe(12);
-      for (let i = 0; i < 12; i++) oidBuffer[i] = buffer[index + i];
-      const oid = new ObjectId(oidBuffer);
-
-      // Update the index
-      index = index + 12;
-
-      // Upgrade to DBRef type
-      value = new DBRef(namespace, oid);
-    } else {
-      throw new BSONError(
-        `Detected unknown BSON type ${elementType.toString(16)} for fieldname "${name}"`
-      );
-    }
-    if (name === '__proto__') {
-      Object.defineProperty(object, name, {
-        value,
-        writable: true,
-        enumerable: true,
-        configurable: true
-      });
-    } else {
-      object[name] = value;
-    }
-  }
-
-  // Check if the deserialization was against a valid array/object
-  if (size !== index - startIndex) {
-    if (isArray) throw new BSONError('corrupt array bson');
-    throw new BSONError('corrupt object bson');
-  }
-
-  // if we did not find "$ref", "$id", "$db", or found an extraneous $key, don't make a DBRef
-  if (!isPossibleDBRef) return object;
-
-  if (isDBRefLike(object)) {
-    const copy = Object.assign({}, object) as Partial<DBRefLike>;
-    delete copy.$ref;
-    delete copy.$id;
-    delete copy.$db;
-    return new DBRef(object.$ref, object.$id, object.$db, copy);
-  }
-
-  return object;
-}
diff --git a/server/data-import/node_modules/bson/src/parser/serializer.ts b/server/data-import/node_modules/bson/src/parser/serializer.ts
deleted file mode 100644
index 86490798e2928fd1fd3d4bc3ed13231a968bf4dd..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/parser/serializer.ts
+++ /dev/null
@@ -1,942 +0,0 @@
-import { Binary } from '../binary';
-import type { BSONSymbol, DBRef, Document, MaxKey } from '../bson';
-import type { Code } from '../code';
-import * as constants from '../constants';
-import type { DBRefLike } from '../db_ref';
-import type { Decimal128 } from '../decimal128';
-import type { Double } from '../double';
-import { BSONError, BSONVersionError } from '../error';
-import type { Int32 } from '../int_32';
-import { Long } from '../long';
-import type { MinKey } from '../min_key';
-import type { ObjectId } from '../objectid';
-import type { BSONRegExp } from '../regexp';
-import { ByteUtils } from '../utils/byte_utils';
-import { NumberUtils } from '../utils/number_utils';
-import { isAnyArrayBuffer, isDate, isMap, isRegExp, isUint8Array } from './utils';
-
-/** @public */
-export interface SerializeOptions {
-  /**
-   * the serializer will check if keys are valid.
-   * @defaultValue `false`
-   */
-  checkKeys?: boolean;
-  /**
-   * serialize the javascript functions
-   * @defaultValue `false`
-   */
-  serializeFunctions?: boolean;
-  /**
-   * serialize will not emit undefined fields
-   * note that the driver sets this to `false`
-   * @defaultValue `true`
-   */
-  ignoreUndefined?: boolean;
-  /** @internal Resize internal buffer */
-  minInternalBufferSize?: number;
-  /**
-   * the index in the buffer where we wish to start serializing into
-   * @defaultValue `0`
-   */
-  index?: number;
-}
-
-const regexp = /\x00/; // eslint-disable-line no-control-regex
-const ignoreKeys = new Set(['$db', '$ref', '$id', '$clusterTime']);
-
-/*
- * isArray indicates if we are writing to a BSON array (type 0x04)
- * which forces the "key" which really an array index as a string to be written as ascii
- * This will catch any errors in index as a string generation
- */
-
-function serializeString(buffer: Uint8Array, key: string, value: string, index: number) {
-  // Encode String type
-  buffer[index++] = constants.BSON_DATA_STRING;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes + 1;
-  buffer[index - 1] = 0;
-  // Write the string
-  const size = ByteUtils.encodeUTF8Into(buffer, value, index + 4);
-  // Write the size of the string to buffer
-  NumberUtils.setInt32LE(buffer, index, size + 1);
-  // Update index
-  index = index + 4 + size;
-  // Write zero
-  buffer[index++] = 0;
-  return index;
-}
-
-function serializeNumber(buffer: Uint8Array, key: string, value: number, index: number) {
-  const isNegativeZero = Object.is(value, -0);
-
-  const type =
-    !isNegativeZero &&
-    Number.isSafeInteger(value) &&
-    value <= constants.BSON_INT32_MAX &&
-    value >= constants.BSON_INT32_MIN
-      ? constants.BSON_DATA_INT
-      : constants.BSON_DATA_NUMBER;
-
-  buffer[index++] = type;
-
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0x00;
-
-  if (type === constants.BSON_DATA_INT) {
-    index += NumberUtils.setInt32LE(buffer, index, value);
-  } else {
-    index += NumberUtils.setFloat64LE(buffer, index, value);
-  }
-
-  return index;
-}
-
-function serializeBigInt(buffer: Uint8Array, key: string, value: bigint, index: number) {
-  buffer[index++] = constants.BSON_DATA_LONG;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index += numberOfWrittenBytes;
-  buffer[index++] = 0;
-
-  index += NumberUtils.setBigInt64LE(buffer, index, value);
-
-  return index;
-}
-
-function serializeNull(buffer: Uint8Array, key: string, _: unknown, index: number) {
-  // Set long type
-  buffer[index++] = constants.BSON_DATA_NULL;
-
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-  return index;
-}
-
-function serializeBoolean(buffer: Uint8Array, key: string, value: boolean, index: number) {
-  // Write the type
-  buffer[index++] = constants.BSON_DATA_BOOLEAN;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-  // Encode the boolean value
-  buffer[index++] = value ? 1 : 0;
-  return index;
-}
-
-function serializeDate(buffer: Uint8Array, key: string, value: Date, index: number) {
-  // Write the type
-  buffer[index++] = constants.BSON_DATA_DATE;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-
-  // Write the date
-  const dateInMilis = Long.fromNumber(value.getTime());
-  const lowBits = dateInMilis.getLowBits();
-  const highBits = dateInMilis.getHighBits();
-  // Encode low bits
-  index += NumberUtils.setInt32LE(buffer, index, lowBits);
-  // Encode high bits
-  index += NumberUtils.setInt32LE(buffer, index, highBits);
-  return index;
-}
-
-function serializeRegExp(buffer: Uint8Array, key: string, value: RegExp, index: number) {
-  // Write the type
-  buffer[index++] = constants.BSON_DATA_REGEXP;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-  if (value.source && value.source.match(regexp) != null) {
-    throw new BSONError('value ' + value.source + ' must not contain null bytes');
-  }
-  // Adjust the index
-  index = index + ByteUtils.encodeUTF8Into(buffer, value.source, index);
-  // Write zero
-  buffer[index++] = 0x00;
-  // Write the parameters
-  if (value.ignoreCase) buffer[index++] = 0x69; // i
-  if (value.global) buffer[index++] = 0x73; // s
-  if (value.multiline) buffer[index++] = 0x6d; // m
-
-  // Add ending zero
-  buffer[index++] = 0x00;
-  return index;
-}
-
-function serializeBSONRegExp(buffer: Uint8Array, key: string, value: BSONRegExp, index: number) {
-  // Write the type
-  buffer[index++] = constants.BSON_DATA_REGEXP;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-
-  // Check the pattern for 0 bytes
-  if (value.pattern.match(regexp) != null) {
-    // The BSON spec doesn't allow keys with null bytes because keys are
-    // null-terminated.
-    throw new BSONError('pattern ' + value.pattern + ' must not contain null bytes');
-  }
-
-  // Adjust the index
-  index = index + ByteUtils.encodeUTF8Into(buffer, value.pattern, index);
-  // Write zero
-  buffer[index++] = 0x00;
-  // Write the options
-  const sortedOptions = value.options.split('').sort().join('');
-  index = index + ByteUtils.encodeUTF8Into(buffer, sortedOptions, index);
-  // Add ending zero
-  buffer[index++] = 0x00;
-  return index;
-}
-
-function serializeMinMax(buffer: Uint8Array, key: string, value: MinKey | MaxKey, index: number) {
-  // Write the type of either min or max key
-  if (value === null) {
-    buffer[index++] = constants.BSON_DATA_NULL;
-  } else if (value._bsontype === 'MinKey') {
-    buffer[index++] = constants.BSON_DATA_MIN_KEY;
-  } else {
-    buffer[index++] = constants.BSON_DATA_MAX_KEY;
-  }
-
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-  return index;
-}
-
-function serializeObjectId(buffer: Uint8Array, key: string, value: ObjectId, index: number) {
-  // Write the type
-  buffer[index++] = constants.BSON_DATA_OID;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-
-  index += value.serializeInto(buffer, index);
-
-  // Adjust index
-  return index;
-}
-
-function serializeBuffer(buffer: Uint8Array, key: string, value: Uint8Array, index: number) {
-  // Write the type
-  buffer[index++] = constants.BSON_DATA_BINARY;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-  // Get size of the buffer (current write point)
-  const size = value.length;
-  // Write the size of the string to buffer
-  index += NumberUtils.setInt32LE(buffer, index, size);
-  // Write the default subtype
-  buffer[index++] = constants.BSON_BINARY_SUBTYPE_DEFAULT;
-  // Copy the content form the binary field to the buffer
-  if (size <= 16) {
-    for (let i = 0; i < size; i++) buffer[index + i] = value[i];
-  } else {
-    buffer.set(value, index);
-  }
-  // Adjust the index
-  index = index + size;
-  return index;
-}
-
-function serializeObject(
-  buffer: Uint8Array,
-  key: string,
-  value: Document,
-  index: number,
-  checkKeys: boolean,
-  depth: number,
-  serializeFunctions: boolean,
-  ignoreUndefined: boolean,
-  path: Set<Document>
-) {
-  if (path.has(value)) {
-    throw new BSONError('Cannot convert circular structure to BSON');
-  }
-
-  path.add(value);
-
-  // Write the type
-  buffer[index++] = Array.isArray(value) ? constants.BSON_DATA_ARRAY : constants.BSON_DATA_OBJECT;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-  const endIndex = serializeInto(
-    buffer,
-    value,
-    checkKeys,
-    index,
-    depth + 1,
-    serializeFunctions,
-    ignoreUndefined,
-    path
-  );
-
-  path.delete(value);
-
-  return endIndex;
-}
-
-function serializeDecimal128(buffer: Uint8Array, key: string, value: Decimal128, index: number) {
-  buffer[index++] = constants.BSON_DATA_DECIMAL128;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-  // Write the data from the value
-  for (let i = 0; i < 16; i++) buffer[index + i] = value.bytes[i];
-  return index + 16;
-}
-
-function serializeLong(buffer: Uint8Array, key: string, value: Long, index: number) {
-  // Write the type
-  buffer[index++] =
-    value._bsontype === 'Long' ? constants.BSON_DATA_LONG : constants.BSON_DATA_TIMESTAMP;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-  // Write the date
-  const lowBits = value.getLowBits();
-  const highBits = value.getHighBits();
-  // Encode low bits
-  index += NumberUtils.setInt32LE(buffer, index, lowBits);
-  // Encode high bits
-  index += NumberUtils.setInt32LE(buffer, index, highBits);
-  return index;
-}
-
-function serializeInt32(buffer: Uint8Array, key: string, value: Int32 | number, index: number) {
-  value = value.valueOf();
-  // Set int type 32 bits or less
-  buffer[index++] = constants.BSON_DATA_INT;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-  // Write the int value
-  index += NumberUtils.setInt32LE(buffer, index, value);
-  return index;
-}
-
-function serializeDouble(buffer: Uint8Array, key: string, value: Double, index: number) {
-  // Encode as double
-  buffer[index++] = constants.BSON_DATA_NUMBER;
-
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-
-  // Write float
-  index += NumberUtils.setFloat64LE(buffer, index, value.value);
-
-  return index;
-}
-
-function serializeFunction(buffer: Uint8Array, key: string, value: Function, index: number) {
-  buffer[index++] = constants.BSON_DATA_CODE;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-  // Function string
-  const functionString = value.toString();
-
-  // Write the string
-  const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-  // Write the size of the string to buffer
-  NumberUtils.setInt32LE(buffer, index, size);
-  // Update index
-  index = index + 4 + size - 1;
-  // Write zero
-  buffer[index++] = 0;
-  return index;
-}
-
-function serializeCode(
-  buffer: Uint8Array,
-  key: string,
-  value: Code,
-  index: number,
-  checkKeys = false,
-  depth = 0,
-  serializeFunctions = false,
-  ignoreUndefined = true,
-  path: Set<Document>
-) {
-  if (value.scope && typeof value.scope === 'object') {
-    // Write the type
-    buffer[index++] = constants.BSON_DATA_CODE_W_SCOPE;
-    // Number of written bytes
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    // Encode the name
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-
-    // Starting index
-    let startIndex = index;
-
-    // Serialize the function
-    // Get the function string
-    const functionString = value.code;
-    // Index adjustment
-    index = index + 4;
-    // Write string into buffer
-    const codeSize = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-    // Write the size of the string to buffer
-    NumberUtils.setInt32LE(buffer, index, codeSize);
-    // Write end 0
-    buffer[index + 4 + codeSize - 1] = 0;
-    // Write the
-    index = index + codeSize + 4;
-
-    // Serialize the scope value
-    const endIndex = serializeInto(
-      buffer,
-      value.scope,
-      checkKeys,
-      index,
-      depth + 1,
-      serializeFunctions,
-      ignoreUndefined,
-      path
-    );
-    index = endIndex - 1;
-
-    // Writ the total
-    const totalSize = endIndex - startIndex;
-
-    // Write the total size of the object
-    startIndex += NumberUtils.setInt32LE(buffer, startIndex, totalSize);
-    // Write trailing zero
-    buffer[index++] = 0;
-  } else {
-    buffer[index++] = constants.BSON_DATA_CODE;
-    // Number of written bytes
-    const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-    // Encode the name
-    index = index + numberOfWrittenBytes;
-    buffer[index++] = 0;
-    // Function string
-    const functionString = value.code.toString();
-    // Write the string
-    const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
-    // Write the size of the string to buffer
-    NumberUtils.setInt32LE(buffer, index, size);
-    // Update index
-    index = index + 4 + size - 1;
-    // Write zero
-    buffer[index++] = 0;
-  }
-
-  return index;
-}
-
-function serializeBinary(buffer: Uint8Array, key: string, value: Binary, index: number) {
-  // Write the type
-  buffer[index++] = constants.BSON_DATA_BINARY;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-  // Extract the buffer
-  const data = value.buffer;
-  // Calculate size
-  let size = value.position;
-  // Add the deprecated 02 type 4 bytes of size to total
-  if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY) size = size + 4;
-  // Write the size of the string to buffer
-  index += NumberUtils.setInt32LE(buffer, index, size);
-  // Write the subtype to the buffer
-  buffer[index++] = value.sub_type;
-
-  // If we have binary type 2 the 4 first bytes are the size
-  if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
-    size = size - 4;
-    index += NumberUtils.setInt32LE(buffer, index, size);
-  }
-
-  if (size <= 16) {
-    for (let i = 0; i < size; i++) buffer[index + i] = data[i];
-  } else {
-    buffer.set(data, index);
-  }
-  // Adjust the index
-  index = index + value.position;
-  return index;
-}
-
-function serializeSymbol(buffer: Uint8Array, key: string, value: BSONSymbol, index: number) {
-  // Write the type
-  buffer[index++] = constants.BSON_DATA_SYMBOL;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-  // Write the string
-  const size = ByteUtils.encodeUTF8Into(buffer, value.value, index + 4) + 1;
-  // Write the size of the string to buffer
-  NumberUtils.setInt32LE(buffer, index, size);
-  // Update index
-  index = index + 4 + size - 1;
-  // Write zero
-  buffer[index++] = 0;
-  return index;
-}
-
-function serializeDBRef(
-  buffer: Uint8Array,
-  key: string,
-  value: DBRef,
-  index: number,
-  depth: number,
-  serializeFunctions: boolean,
-  path: Set<Document>
-) {
-  // Write the type
-  buffer[index++] = constants.BSON_DATA_OBJECT;
-  // Number of written bytes
-  const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
-
-  // Encode the name
-  index = index + numberOfWrittenBytes;
-  buffer[index++] = 0;
-
-  let startIndex = index;
-  let output: DBRefLike = {
-    $ref: value.collection || value.namespace, // "namespace" was what library 1.x called "collection"
-    $id: value.oid
-  };
-
-  if (value.db != null) {
-    output.$db = value.db;
-  }
-
-  output = Object.assign(output, value.fields);
-  const endIndex = serializeInto(
-    buffer,
-    output,
-    false,
-    index,
-    depth + 1,
-    serializeFunctions,
-    true,
-    path
-  );
-
-  // Calculate object size
-  const size = endIndex - startIndex;
-  // Write the size
-  startIndex += NumberUtils.setInt32LE(buffer, index, size);
-  // Set index
-  return endIndex;
-}
-
-export function serializeInto(
-  buffer: Uint8Array,
-  object: Document,
-  checkKeys: boolean,
-  startingIndex: number,
-  depth: number,
-  serializeFunctions: boolean,
-  ignoreUndefined: boolean,
-  path: Set<Document> | null
-): number {
-  if (path == null) {
-    // We are at the root input
-    if (object == null) {
-      // ONLY the root should turn into an empty document
-      // BSON Empty document has a size of 5 (LE)
-      buffer[0] = 0x05;
-      buffer[1] = 0x00;
-      buffer[2] = 0x00;
-      buffer[3] = 0x00;
-      // All documents end with null terminator
-      buffer[4] = 0x00;
-      return 5;
-    }
-
-    if (Array.isArray(object)) {
-      throw new BSONError('serialize does not support an array as the root input');
-    }
-    if (typeof object !== 'object') {
-      throw new BSONError('serialize does not support non-object as the root input');
-    } else if ('_bsontype' in object && typeof object._bsontype === 'string') {
-      throw new BSONError(`BSON types cannot be serialized as a document`);
-    } else if (
-      isDate(object) ||
-      isRegExp(object) ||
-      isUint8Array(object) ||
-      isAnyArrayBuffer(object)
-    ) {
-      throw new BSONError(`date, regexp, typedarray, and arraybuffer cannot be BSON documents`);
-    }
-
-    path = new Set();
-  }
-
-  // Push the object to the path
-  path.add(object);
-
-  // Start place to serialize into
-  let index = startingIndex + 4;
-
-  // Special case isArray
-  if (Array.isArray(object)) {
-    // Get object keys
-    for (let i = 0; i < object.length; i++) {
-      const key = `${i}`;
-      let value = object[i];
-
-      // Is there an override value
-      if (typeof value?.toBSON === 'function') {
-        value = value.toBSON();
-      }
-
-      if (typeof value === 'string') {
-        index = serializeString(buffer, key, value, index);
-      } else if (typeof value === 'number') {
-        index = serializeNumber(buffer, key, value, index);
-      } else if (typeof value === 'bigint') {
-        index = serializeBigInt(buffer, key, value, index);
-      } else if (typeof value === 'boolean') {
-        index = serializeBoolean(buffer, key, value, index);
-      } else if (value instanceof Date || isDate(value)) {
-        index = serializeDate(buffer, key, value, index);
-      } else if (value === undefined) {
-        index = serializeNull(buffer, key, value, index);
-      } else if (value === null) {
-        index = serializeNull(buffer, key, value, index);
-      } else if (isUint8Array(value)) {
-        index = serializeBuffer(buffer, key, value, index);
-      } else if (value instanceof RegExp || isRegExp(value)) {
-        index = serializeRegExp(buffer, key, value, index);
-      } else if (typeof value === 'object' && value._bsontype == null) {
-        index = serializeObject(
-          buffer,
-          key,
-          value,
-          index,
-          checkKeys,
-          depth,
-          serializeFunctions,
-          ignoreUndefined,
-          path
-        );
-      } else if (
-        typeof value === 'object' &&
-        value[Symbol.for('@@mdb.bson.version')] !== constants.BSON_MAJOR_VERSION
-      ) {
-        throw new BSONVersionError();
-      } else if (value._bsontype === 'ObjectId') {
-        index = serializeObjectId(buffer, key, value, index);
-      } else if (value._bsontype === 'Decimal128') {
-        index = serializeDecimal128(buffer, key, value, index);
-      } else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-        index = serializeLong(buffer, key, value, index);
-      } else if (value._bsontype === 'Double') {
-        index = serializeDouble(buffer, key, value, index);
-      } else if (typeof value === 'function' && serializeFunctions) {
-        index = serializeFunction(buffer, key, value, index);
-      } else if (value._bsontype === 'Code') {
-        index = serializeCode(
-          buffer,
-          key,
-          value,
-          index,
-          checkKeys,
-          depth,
-          serializeFunctions,
-          ignoreUndefined,
-          path
-        );
-      } else if (value._bsontype === 'Binary') {
-        index = serializeBinary(buffer, key, value, index);
-      } else if (value._bsontype === 'BSONSymbol') {
-        index = serializeSymbol(buffer, key, value, index);
-      } else if (value._bsontype === 'DBRef') {
-        index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-      } else if (value._bsontype === 'BSONRegExp') {
-        index = serializeBSONRegExp(buffer, key, value, index);
-      } else if (value._bsontype === 'Int32') {
-        index = serializeInt32(buffer, key, value, index);
-      } else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-        index = serializeMinMax(buffer, key, value, index);
-      } else if (typeof value._bsontype !== 'undefined') {
-        throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-      }
-    }
-  } else if (object instanceof Map || isMap(object)) {
-    const iterator = object.entries();
-    let done = false;
-
-    while (!done) {
-      // Unpack the next entry
-      const entry = iterator.next();
-      done = !!entry.done;
-      // Are we done, then skip and terminate
-      if (done) continue;
-
-      // Get the entry values
-      const key = entry.value[0];
-      let value = entry.value[1];
-
-      if (typeof value?.toBSON === 'function') {
-        value = value.toBSON();
-      }
-
-      // Check the type of the value
-      const type = typeof value;
-
-      // Check the key and throw error if it's illegal
-      if (typeof key === 'string' && !ignoreKeys.has(key)) {
-        if (key.match(regexp) != null) {
-          // The BSON spec doesn't allow keys with null bytes because keys are
-          // null-terminated.
-          throw new BSONError('key ' + key + ' must not contain null bytes');
-        }
-
-        if (checkKeys) {
-          if ('$' === key[0]) {
-            throw new BSONError('key ' + key + " must not start with '$'");
-          } else if (key.includes('.')) {
-            throw new BSONError('key ' + key + " must not contain '.'");
-          }
-        }
-      }
-
-      if (type === 'string') {
-        index = serializeString(buffer, key, value, index);
-      } else if (type === 'number') {
-        index = serializeNumber(buffer, key, value, index);
-      } else if (type === 'bigint') {
-        index = serializeBigInt(buffer, key, value, index);
-      } else if (type === 'boolean') {
-        index = serializeBoolean(buffer, key, value, index);
-      } else if (value instanceof Date || isDate(value)) {
-        index = serializeDate(buffer, key, value, index);
-      } else if (value === null || (value === undefined && ignoreUndefined === false)) {
-        index = serializeNull(buffer, key, value, index);
-      } else if (isUint8Array(value)) {
-        index = serializeBuffer(buffer, key, value, index);
-      } else if (value instanceof RegExp || isRegExp(value)) {
-        index = serializeRegExp(buffer, key, value, index);
-      } else if (type === 'object' && value._bsontype == null) {
-        index = serializeObject(
-          buffer,
-          key,
-          value,
-          index,
-          checkKeys,
-          depth,
-          serializeFunctions,
-          ignoreUndefined,
-          path
-        );
-      } else if (
-        typeof value === 'object' &&
-        value[Symbol.for('@@mdb.bson.version')] !== constants.BSON_MAJOR_VERSION
-      ) {
-        throw new BSONVersionError();
-      } else if (value._bsontype === 'ObjectId') {
-        index = serializeObjectId(buffer, key, value, index);
-      } else if (type === 'object' && value._bsontype === 'Decimal128') {
-        index = serializeDecimal128(buffer, key, value, index);
-      } else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-        index = serializeLong(buffer, key, value, index);
-      } else if (value._bsontype === 'Double') {
-        index = serializeDouble(buffer, key, value, index);
-      } else if (value._bsontype === 'Code') {
-        index = serializeCode(
-          buffer,
-          key,
-          value,
-          index,
-          checkKeys,
-          depth,
-          serializeFunctions,
-          ignoreUndefined,
-          path
-        );
-      } else if (typeof value === 'function' && serializeFunctions) {
-        index = serializeFunction(buffer, key, value, index);
-      } else if (value._bsontype === 'Binary') {
-        index = serializeBinary(buffer, key, value, index);
-      } else if (value._bsontype === 'BSONSymbol') {
-        index = serializeSymbol(buffer, key, value, index);
-      } else if (value._bsontype === 'DBRef') {
-        index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-      } else if (value._bsontype === 'BSONRegExp') {
-        index = serializeBSONRegExp(buffer, key, value, index);
-      } else if (value._bsontype === 'Int32') {
-        index = serializeInt32(buffer, key, value, index);
-      } else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-        index = serializeMinMax(buffer, key, value, index);
-      } else if (typeof value._bsontype !== 'undefined') {
-        throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-      }
-    }
-  } else {
-    if (typeof object?.toBSON === 'function') {
-      // Provided a custom serialization method
-      object = object.toBSON();
-      if (object != null && typeof object !== 'object') {
-        throw new BSONError('toBSON function did not return an object');
-      }
-    }
-
-    // Iterate over all the keys
-    for (const key of Object.keys(object)) {
-      let value = object[key];
-      // Is there an override value
-      if (typeof value?.toBSON === 'function') {
-        value = value.toBSON();
-      }
-
-      // Check the type of the value
-      const type = typeof value;
-
-      // Check the key and throw error if it's illegal
-      if (typeof key === 'string' && !ignoreKeys.has(key)) {
-        if (key.match(regexp) != null) {
-          // The BSON spec doesn't allow keys with null bytes because keys are
-          // null-terminated.
-          throw new BSONError('key ' + key + ' must not contain null bytes');
-        }
-
-        if (checkKeys) {
-          if ('$' === key[0]) {
-            throw new BSONError('key ' + key + " must not start with '$'");
-          } else if (key.includes('.')) {
-            throw new BSONError('key ' + key + " must not contain '.'");
-          }
-        }
-      }
-
-      if (type === 'string') {
-        index = serializeString(buffer, key, value, index);
-      } else if (type === 'number') {
-        index = serializeNumber(buffer, key, value, index);
-      } else if (type === 'bigint') {
-        index = serializeBigInt(buffer, key, value, index);
-      } else if (type === 'boolean') {
-        index = serializeBoolean(buffer, key, value, index);
-      } else if (value instanceof Date || isDate(value)) {
-        index = serializeDate(buffer, key, value, index);
-      } else if (value === undefined) {
-        if (ignoreUndefined === false) index = serializeNull(buffer, key, value, index);
-      } else if (value === null) {
-        index = serializeNull(buffer, key, value, index);
-      } else if (isUint8Array(value)) {
-        index = serializeBuffer(buffer, key, value, index);
-      } else if (value instanceof RegExp || isRegExp(value)) {
-        index = serializeRegExp(buffer, key, value, index);
-      } else if (type === 'object' && value._bsontype == null) {
-        index = serializeObject(
-          buffer,
-          key,
-          value,
-          index,
-          checkKeys,
-          depth,
-          serializeFunctions,
-          ignoreUndefined,
-          path
-        );
-      } else if (
-        typeof value === 'object' &&
-        value[Symbol.for('@@mdb.bson.version')] !== constants.BSON_MAJOR_VERSION
-      ) {
-        throw new BSONVersionError();
-      } else if (value._bsontype === 'ObjectId') {
-        index = serializeObjectId(buffer, key, value, index);
-      } else if (type === 'object' && value._bsontype === 'Decimal128') {
-        index = serializeDecimal128(buffer, key, value, index);
-      } else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
-        index = serializeLong(buffer, key, value, index);
-      } else if (value._bsontype === 'Double') {
-        index = serializeDouble(buffer, key, value, index);
-      } else if (value._bsontype === 'Code') {
-        index = serializeCode(
-          buffer,
-          key,
-          value,
-          index,
-          checkKeys,
-          depth,
-          serializeFunctions,
-          ignoreUndefined,
-          path
-        );
-      } else if (typeof value === 'function' && serializeFunctions) {
-        index = serializeFunction(buffer, key, value, index);
-      } else if (value._bsontype === 'Binary') {
-        index = serializeBinary(buffer, key, value, index);
-      } else if (value._bsontype === 'BSONSymbol') {
-        index = serializeSymbol(buffer, key, value, index);
-      } else if (value._bsontype === 'DBRef') {
-        index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
-      } else if (value._bsontype === 'BSONRegExp') {
-        index = serializeBSONRegExp(buffer, key, value, index);
-      } else if (value._bsontype === 'Int32') {
-        index = serializeInt32(buffer, key, value, index);
-      } else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
-        index = serializeMinMax(buffer, key, value, index);
-      } else if (typeof value._bsontype !== 'undefined') {
-        throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
-      }
-    }
-  }
-
-  // Remove the path
-  path.delete(object);
-
-  // Final padding byte for object
-  buffer[index++] = 0x00;
-
-  // Final size
-  const size = index - startingIndex;
-  // Write the size of the object
-  startingIndex += NumberUtils.setInt32LE(buffer, startingIndex, size);
-  return index;
-}
diff --git a/server/data-import/node_modules/bson/src/parser/utils.ts b/server/data-import/node_modules/bson/src/parser/utils.ts
deleted file mode 100644
index 0b27249eec25ae704b1578eb54b9790c9d56dab4..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/parser/utils.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-export function isAnyArrayBuffer(value: unknown): value is ArrayBuffer {
-  return ['[object ArrayBuffer]', '[object SharedArrayBuffer]'].includes(
-    Object.prototype.toString.call(value)
-  );
-}
-
-export function isUint8Array(value: unknown): value is Uint8Array {
-  return Object.prototype.toString.call(value) === '[object Uint8Array]';
-}
-
-export function isBigInt64Array(value: unknown): value is BigInt64Array {
-  return Object.prototype.toString.call(value) === '[object BigInt64Array]';
-}
-
-export function isBigUInt64Array(value: unknown): value is BigUint64Array {
-  return Object.prototype.toString.call(value) === '[object BigUint64Array]';
-}
-
-export function isRegExp(d: unknown): d is RegExp {
-  return Object.prototype.toString.call(d) === '[object RegExp]';
-}
-
-export function isMap(d: unknown): d is Map<unknown, unknown> {
-  return Object.prototype.toString.call(d) === '[object Map]';
-}
-
-export function isDate(d: unknown): d is Date {
-  return Object.prototype.toString.call(d) === '[object Date]';
-}
-
-export type InspectFn = (x: unknown, options?: unknown) => string;
-export function defaultInspect(x: unknown, _options?: unknown): string {
-  return JSON.stringify(x, (k: string, v: unknown) => {
-    if (typeof v === 'bigint') {
-      return { $numberLong: `${v}` };
-    } else if (isMap(v)) {
-      return Object.fromEntries(v);
-    }
-    return v;
-  });
-}
-
-/** @internal */
-type StylizeFunction = (x: string, style: string) => string;
-/** @internal */
-export function getStylizeFunction(options?: unknown): StylizeFunction | undefined {
-  const stylizeExists =
-    options != null &&
-    typeof options === 'object' &&
-    'stylize' in options &&
-    typeof options.stylize === 'function';
-
-  if (stylizeExists) {
-    return options.stylize as StylizeFunction;
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/regexp.ts b/server/data-import/node_modules/bson/src/regexp.ts
deleted file mode 100644
index e401a290937724338a5ff35c7d270471e5348b10..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/regexp.ts
+++ /dev/null
@@ -1,114 +0,0 @@
-import { BSONValue } from './bson_value';
-import { BSONError } from './error';
-import type { EJSONOptions } from './extended_json';
-import { type InspectFn, defaultInspect, getStylizeFunction } from './parser/utils';
-
-function alphabetize(str: string): string {
-  return str.split('').sort().join('');
-}
-
-/** @public */
-export interface BSONRegExpExtendedLegacy {
-  $regex: string | BSONRegExp;
-  $options: string;
-}
-
-/** @public */
-export interface BSONRegExpExtended {
-  $regularExpression: {
-    pattern: string;
-    options: string;
-  };
-}
-
-/**
- * A class representation of the BSON RegExp type.
- * @public
- * @category BSONType
- */
-export class BSONRegExp extends BSONValue {
-  get _bsontype(): 'BSONRegExp' {
-    return 'BSONRegExp';
-  }
-
-  pattern!: string;
-  options!: string;
-  /**
-   * @param pattern - The regular expression pattern to match
-   * @param options - The regular expression options
-   */
-  constructor(pattern: string, options?: string) {
-    super();
-    this.pattern = pattern;
-    this.options = alphabetize(options ?? '');
-
-    if (this.pattern.indexOf('\x00') !== -1) {
-      throw new BSONError(
-        `BSON Regex patterns cannot contain null bytes, found: ${JSON.stringify(this.pattern)}`
-      );
-    }
-    if (this.options.indexOf('\x00') !== -1) {
-      throw new BSONError(
-        `BSON Regex options cannot contain null bytes, found: ${JSON.stringify(this.options)}`
-      );
-    }
-
-    // Validate options
-    for (let i = 0; i < this.options.length; i++) {
-      if (
-        !(
-          this.options[i] === 'i' ||
-          this.options[i] === 'm' ||
-          this.options[i] === 'x' ||
-          this.options[i] === 'l' ||
-          this.options[i] === 's' ||
-          this.options[i] === 'u'
-        )
-      ) {
-        throw new BSONError(`The regular expression option [${this.options[i]}] is not supported`);
-      }
-    }
-  }
-
-  static parseOptions(options?: string): string {
-    return options ? options.split('').sort().join('') : '';
-  }
-
-  /** @internal */
-  toExtendedJSON(options?: EJSONOptions): BSONRegExpExtendedLegacy | BSONRegExpExtended {
-    options = options || {};
-    if (options.legacy) {
-      return { $regex: this.pattern, $options: this.options };
-    }
-    return { $regularExpression: { pattern: this.pattern, options: this.options } };
-  }
-
-  /** @internal */
-  static fromExtendedJSON(doc: BSONRegExpExtendedLegacy | BSONRegExpExtended): BSONRegExp {
-    if ('$regex' in doc) {
-      if (typeof doc.$regex !== 'string') {
-        // This is for $regex query operators that have extended json values.
-        if (doc.$regex._bsontype === 'BSONRegExp') {
-          return doc as unknown as BSONRegExp;
-        }
-      } else {
-        return new BSONRegExp(doc.$regex, BSONRegExp.parseOptions(doc.$options));
-      }
-    }
-    if ('$regularExpression' in doc) {
-      return new BSONRegExp(
-        doc.$regularExpression.pattern,
-        BSONRegExp.parseOptions(doc.$regularExpression.options)
-      );
-    }
-    throw new BSONError(`Unexpected BSONRegExp EJSON object form: ${JSON.stringify(doc)}`);
-  }
-
-  inspect(depth?: number, options?: unknown, inspect?: InspectFn): string {
-    const stylize = getStylizeFunction(options) ?? (v => v);
-    inspect ??= defaultInspect;
-    const pattern = stylize(inspect(this.pattern), 'regexp');
-    const flags = stylize(inspect(this.options), 'regexp');
-    return `new BSONRegExp(${pattern}, ${flags})`;
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/symbol.ts b/server/data-import/node_modules/bson/src/symbol.ts
deleted file mode 100644
index 6835ab9599b57b27cd30477a58579e0f43efe0f7..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/symbol.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { BSONValue } from './bson_value';
-import { type InspectFn, defaultInspect } from './parser/utils';
-
-/** @public */
-export interface BSONSymbolExtended {
-  $symbol: string;
-}
-
-/**
- * A class representation of the BSON Symbol type.
- * @public
- * @category BSONType
- */
-export class BSONSymbol extends BSONValue {
-  get _bsontype(): 'BSONSymbol' {
-    return 'BSONSymbol';
-  }
-
-  value!: string;
-  /**
-   * @param value - the string representing the symbol.
-   */
-  constructor(value: string) {
-    super();
-    this.value = value;
-  }
-
-  /** Access the wrapped string value. */
-  valueOf(): string {
-    return this.value;
-  }
-
-  toString(): string {
-    return this.value;
-  }
-
-  toJSON(): string {
-    return this.value;
-  }
-
-  /** @internal */
-  toExtendedJSON(): BSONSymbolExtended {
-    return { $symbol: this.value };
-  }
-
-  /** @internal */
-  static fromExtendedJSON(doc: BSONSymbolExtended): BSONSymbol {
-    return new BSONSymbol(doc.$symbol);
-  }
-
-  inspect(depth?: number, options?: unknown, inspect?: InspectFn): string {
-    inspect ??= defaultInspect;
-    return `new BSONSymbol(${inspect(this.value, options)})`;
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/timestamp.ts b/server/data-import/node_modules/bson/src/timestamp.ts
deleted file mode 100644
index 9d1e205ce75fa1aad18797d413ab65b46f757015..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/timestamp.ts
+++ /dev/null
@@ -1,151 +0,0 @@
-import { BSONError } from './error';
-import type { Int32 } from './int_32';
-import { Long } from './long';
-import { type InspectFn, defaultInspect } from './parser/utils';
-
-/** @public */
-export type TimestampOverrides = '_bsontype' | 'toExtendedJSON' | 'fromExtendedJSON' | 'inspect';
-/** @public */
-export type LongWithoutOverrides = new (
-  low: unknown,
-  high?: number | boolean,
-  unsigned?: boolean
-) => {
-  [P in Exclude<keyof Long, TimestampOverrides>]: Long[P];
-};
-/** @public */
-export const LongWithoutOverridesClass: LongWithoutOverrides =
-  Long as unknown as LongWithoutOverrides;
-
-/** @public */
-export interface TimestampExtended {
-  $timestamp: {
-    t: number;
-    i: number;
-  };
-}
-
-/**
- * @public
- * @category BSONType
- */
-export class Timestamp extends LongWithoutOverridesClass {
-  get _bsontype(): 'Timestamp' {
-    return 'Timestamp';
-  }
-
-  static readonly MAX_VALUE = Long.MAX_UNSIGNED_VALUE;
-
-  /**
-   * @param int - A 64-bit bigint representing the Timestamp.
-   */
-  constructor(int: bigint);
-  /**
-   * @param long - A 64-bit Long representing the Timestamp.
-   */
-  constructor(long: Long);
-  /**
-   * @param value - A pair of two values indicating timestamp and increment.
-   */
-  constructor(value: { t: number; i: number });
-  constructor(low?: bigint | Long | { t: number | Int32; i: number | Int32 }) {
-    if (low == null) {
-      super(0, 0, true);
-    } else if (typeof low === 'bigint') {
-      super(low, true);
-    } else if (Long.isLong(low)) {
-      super(low.low, low.high, true);
-    } else if (typeof low === 'object' && 't' in low && 'i' in low) {
-      if (typeof low.t !== 'number' && (typeof low.t !== 'object' || low.t._bsontype !== 'Int32')) {
-        throw new BSONError('Timestamp constructed from { t, i } must provide t as a number');
-      }
-      if (typeof low.i !== 'number' && (typeof low.i !== 'object' || low.i._bsontype !== 'Int32')) {
-        throw new BSONError('Timestamp constructed from { t, i } must provide i as a number');
-      }
-      const t = Number(low.t);
-      const i = Number(low.i);
-      if (t < 0 || Number.isNaN(t)) {
-        throw new BSONError('Timestamp constructed from { t, i } must provide a positive t');
-      }
-      if (i < 0 || Number.isNaN(i)) {
-        throw new BSONError('Timestamp constructed from { t, i } must provide a positive i');
-      }
-      if (t > 0xffff_ffff) {
-        throw new BSONError(
-          'Timestamp constructed from { t, i } must provide t equal or less than uint32 max'
-        );
-      }
-      if (i > 0xffff_ffff) {
-        throw new BSONError(
-          'Timestamp constructed from { t, i } must provide i equal or less than uint32 max'
-        );
-      }
-
-      super(i, t, true);
-    } else {
-      throw new BSONError(
-        'A Timestamp can only be constructed with: bigint, Long, or { t: number; i: number }'
-      );
-    }
-  }
-
-  toJSON(): { $timestamp: string } {
-    return {
-      $timestamp: this.toString()
-    };
-  }
-
-  /** Returns a Timestamp represented by the given (32-bit) integer value. */
-  static fromInt(value: number): Timestamp {
-    return new Timestamp(Long.fromInt(value, true));
-  }
-
-  /** Returns a Timestamp representing the given number value, provided that it is a finite number. Otherwise, zero is returned. */
-  static fromNumber(value: number): Timestamp {
-    return new Timestamp(Long.fromNumber(value, true));
-  }
-
-  /**
-   * Returns a Timestamp for the given high and low bits. Each is assumed to use 32 bits.
-   *
-   * @param lowBits - the low 32-bits.
-   * @param highBits - the high 32-bits.
-   */
-  static fromBits(lowBits: number, highBits: number): Timestamp {
-    return new Timestamp({ i: lowBits, t: highBits });
-  }
-
-  /**
-   * Returns a Timestamp from the given string, optionally using the given radix.
-   *
-   * @param str - the textual representation of the Timestamp.
-   * @param optRadix - the radix in which the text is written.
-   */
-  static fromString(str: string, optRadix: number): Timestamp {
-    return new Timestamp(Long.fromString(str, true, optRadix));
-  }
-
-  /** @internal */
-  toExtendedJSON(): TimestampExtended {
-    return { $timestamp: { t: this.high >>> 0, i: this.low >>> 0 } };
-  }
-
-  /** @internal */
-  static fromExtendedJSON(doc: TimestampExtended): Timestamp {
-    // The Long check is necessary because extended JSON has different behavior given the size of the input number
-    const i = Long.isLong(doc.$timestamp.i)
-      ? doc.$timestamp.i.getLowBitsUnsigned() // Need to fetch the least significant 32 bits
-      : doc.$timestamp.i;
-    const t = Long.isLong(doc.$timestamp.t)
-      ? doc.$timestamp.t.getLowBitsUnsigned() // Need to fetch the least significant 32 bits
-      : doc.$timestamp.t;
-    return new Timestamp({ t, i });
-  }
-
-  inspect(depth?: number, options?: unknown, inspect?: InspectFn): string {
-    inspect ??= defaultInspect;
-    const t = inspect(this.high >>> 0, options);
-    const i = inspect(this.low >>> 0, options);
-    return `new Timestamp({ t: ${t}, i: ${i} })`;
-  }
-}
diff --git a/server/data-import/node_modules/bson/src/utils/byte_utils.ts b/server/data-import/node_modules/bson/src/utils/byte_utils.ts
deleted file mode 100644
index 9c748acb4bd7a3f8240b25e0b702611d12942ca6..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/utils/byte_utils.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { nodeJsByteUtils } from './node_byte_utils';
-import { webByteUtils } from './web_byte_utils';
-
-/** @internal */
-export type ByteUtils = {
-  /** Transforms the input to an instance of Buffer if running on node, otherwise Uint8Array */
-  toLocalBufferType(buffer: Uint8Array | ArrayBufferView | ArrayBuffer): Uint8Array;
-  /** Create empty space of size */
-  allocate: (size: number) => Uint8Array;
-  /** Create empty space of size, use pooled memory when available */
-  allocateUnsafe: (size: number) => Uint8Array;
-  /** Check if two Uint8Arrays are deep equal */
-  equals: (a: Uint8Array, b: Uint8Array) => boolean;
-  /** Check if two Uint8Arrays are deep equal */
-  fromNumberArray: (array: number[]) => Uint8Array;
-  /** Create a Uint8Array from a base64 string */
-  fromBase64: (base64: string) => Uint8Array;
-  /** Create a base64 string from bytes */
-  toBase64: (buffer: Uint8Array) => string;
-  /** **Legacy** binary strings are an outdated method of data transfer. Do not add public API support for interpreting this format */
-  fromISO88591: (codePoints: string) => Uint8Array;
-  /** **Legacy** binary strings are an outdated method of data transfer. Do not add public API support for interpreting this format */
-  toISO88591: (buffer: Uint8Array) => string;
-  /** Create a Uint8Array from a hex string */
-  fromHex: (hex: string) => Uint8Array;
-  /** Create a lowercase hex string from bytes */
-  toHex: (buffer: Uint8Array) => string;
-  /** Create a string from utf8 code units, fatal=true will throw an error if UTF-8 bytes are invalid, fatal=false will insert replacement characters */
-  toUTF8: (buffer: Uint8Array, start: number, end: number, fatal: boolean) => string;
-  /** Get the utf8 code unit count from a string if it were to be transformed to utf8 */
-  utf8ByteLength: (input: string) => number;
-  /** Encode UTF8 bytes generated from `source` string into `destination` at byteOffset. Returns the number of bytes encoded. */
-  encodeUTF8Into(destination: Uint8Array, source: string, byteOffset: number): number;
-  /** Generate a Uint8Array filled with random bytes with byteLength */
-  randomBytes(byteLength: number): Uint8Array;
-};
-
-declare const Buffer: { new (): unknown; prototype?: { _isBuffer?: boolean } } | undefined;
-
-/**
- * Check that a global Buffer exists that is a function and
- * does not have a '_isBuffer' property defined on the prototype
- * (this is to prevent using the npm buffer)
- */
-const hasGlobalBuffer = typeof Buffer === 'function' && Buffer.prototype?._isBuffer !== true;
-
-/**
- * This is the only ByteUtils that should be used across the rest of the BSON library.
- *
- * The type annotation is important here, it asserts that each of the platform specific
- * utils implementations are compatible with the common one.
- *
- * @internal
- */
-export const ByteUtils: ByteUtils = hasGlobalBuffer ? nodeJsByteUtils : webByteUtils;
diff --git a/server/data-import/node_modules/bson/src/utils/latin.ts b/server/data-import/node_modules/bson/src/utils/latin.ts
deleted file mode 100644
index 5dd5c91f691de1fd1dc841448d93bcef7c54cf10..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/utils/latin.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- * This function is an optimization for small basic latin strings.
- * @internal
- * @remarks
- * ### Important characteristics:
- * - If the uint8array or distance between start and end is 0 this function returns an empty string
- * - If the byteLength of the string is 1, 2, or 3 we invoke String.fromCharCode and manually offset into the buffer
- * - If the byteLength of the string is less than or equal to 20 an array of bytes is built and `String.fromCharCode.apply` is called with the result
- * - If any byte exceeds 128 this function returns null
- *
- * @param uint8array - A sequence of bytes that may contain basic latin characters
- * @param start - The start index from which to search the uint8array
- * @param end - The index to stop searching the uint8array
- * @returns string if all bytes are within the basic latin range, otherwise null
- */
-export function tryReadBasicLatin(
-  uint8array: Uint8Array,
-  start: number,
-  end: number
-): string | null {
-  if (uint8array.length === 0) {
-    return '';
-  }
-
-  const stringByteLength = end - start;
-  if (stringByteLength === 0) {
-    return '';
-  }
-
-  if (stringByteLength > 20) {
-    return null;
-  }
-
-  if (stringByteLength === 1 && uint8array[start] < 128) {
-    return String.fromCharCode(uint8array[start]);
-  }
-
-  if (stringByteLength === 2 && uint8array[start] < 128 && uint8array[start + 1] < 128) {
-    return String.fromCharCode(uint8array[start]) + String.fromCharCode(uint8array[start + 1]);
-  }
-
-  if (
-    stringByteLength === 3 &&
-    uint8array[start] < 128 &&
-    uint8array[start + 1] < 128 &&
-    uint8array[start + 2] < 128
-  ) {
-    return (
-      String.fromCharCode(uint8array[start]) +
-      String.fromCharCode(uint8array[start + 1]) +
-      String.fromCharCode(uint8array[start + 2])
-    );
-  }
-
-  const latinBytes = [];
-  for (let i = start; i < end; i++) {
-    const byte = uint8array[i];
-    if (byte > 127) {
-      return null;
-    }
-    latinBytes.push(byte);
-  }
-
-  return String.fromCharCode(...latinBytes);
-}
-
-/**
- * This function is an optimization for writing small basic latin strings.
- * @internal
- * @remarks
- * ### Important characteristics:
- * - If the string length is 0 return 0, do not perform any work
- * - If a string is longer than 25 code units return null
- * - If any code unit exceeds 128 this function returns null
- *
- * @param destination - The uint8array to serialize the string to
- * @param source - The string to turn into UTF-8 bytes if it fits in the basic latin range
- * @param offset - The position in the destination to begin writing bytes to
- * @returns the number of bytes written to destination if all code units are below 128, otherwise null
- */
-export function tryWriteBasicLatin(
-  destination: Uint8Array,
-  source: string,
-  offset: number
-): number | null {
-  if (source.length === 0) return 0;
-
-  if (source.length > 25) return null;
-
-  if (destination.length - offset < source.length) return null;
-
-  for (
-    let charOffset = 0, destinationOffset = offset;
-    charOffset < source.length;
-    charOffset++, destinationOffset++
-  ) {
-    const char = source.charCodeAt(charOffset);
-    if (char > 127) return null;
-
-    destination[destinationOffset] = char;
-  }
-
-  return source.length;
-}
diff --git a/server/data-import/node_modules/bson/src/utils/node_byte_utils.ts b/server/data-import/node_modules/bson/src/utils/node_byte_utils.ts
deleted file mode 100644
index d6a641a47d2d5cc16e74839f7274b7c93bfbbca2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/utils/node_byte_utils.ts
+++ /dev/null
@@ -1,166 +0,0 @@
-import { BSONError } from '../error';
-import { validateUtf8 } from '../validate_utf8';
-import { tryReadBasicLatin, tryWriteBasicLatin } from './latin';
-
-type NodeJsEncoding = 'base64' | 'hex' | 'utf8' | 'binary';
-type NodeJsBuffer = ArrayBufferView &
-  Uint8Array & {
-    write(string: string, offset: number, length: undefined, encoding: 'utf8'): number;
-    copy(target: Uint8Array, targetStart: number, sourceStart: number, sourceEnd: number): number;
-    toString: (this: Uint8Array, encoding: NodeJsEncoding, start?: number, end?: number) => string;
-    equals: (this: Uint8Array, other: Uint8Array) => boolean;
-  };
-type NodeJsBufferConstructor = Omit<Uint8ArrayConstructor, 'from'> & {
-  alloc: (size: number) => NodeJsBuffer;
-  allocUnsafe: (size: number) => NodeJsBuffer;
-  from(array: number[]): NodeJsBuffer;
-  from(array: Uint8Array): NodeJsBuffer;
-  from(array: ArrayBuffer): NodeJsBuffer;
-  from(array: ArrayBuffer, byteOffset: number, byteLength: number): NodeJsBuffer;
-  from(base64: string, encoding: NodeJsEncoding): NodeJsBuffer;
-  byteLength(input: string, encoding: 'utf8'): number;
-  isBuffer(value: unknown): value is NodeJsBuffer;
-};
-
-// This can be nullish, but we gate the nodejs functions on being exported whether or not this exists
-// Node.js global
-declare const Buffer: NodeJsBufferConstructor;
-declare const require: (mod: 'crypto') => { randomBytes: (byteLength: number) => Uint8Array };
-
-/** @internal */
-export function nodejsMathRandomBytes(byteLength: number) {
-  return nodeJsByteUtils.fromNumberArray(
-    Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256))
-  );
-}
-
-/**
- * @internal
- * WARNING: REQUIRE WILL BE REWRITTEN
- *
- * This code is carefully used by require_rewriter.mjs any modifications must be reflected in the plugin.
- *
- * @remarks
- * "crypto" is the only dependency BSON needs. This presents a problem for creating a bundle of the BSON library
- * in an es module format that can be used both on the browser and in Node.js. In Node.js when BSON is imported as
- * an es module, there will be no global require function defined, making the code below fallback to the much less desireable math.random bytes.
- * In order to make our es module bundle work as expected on Node.js we need to change this `require()` to a dynamic import, and the dynamic
- * import must be top-level awaited since es modules are async. So we rely on a custom rollup plugin to seek out the following lines of code
- * and replace `require` with `await import` and the IIFE line (`nodejsRandomBytes = (() => { ... })()`) with `nodejsRandomBytes = await (async () => { ... })()`
- * when generating an es module bundle.
- */
-const nodejsRandomBytes: (byteLength: number) => Uint8Array = (() => {
-  try {
-    return require('crypto').randomBytes;
-  } catch {
-    return nodejsMathRandomBytes;
-  }
-})();
-
-/** @internal */
-export const nodeJsByteUtils = {
-  toLocalBufferType(potentialBuffer: Uint8Array | NodeJsBuffer | ArrayBuffer): NodeJsBuffer {
-    if (Buffer.isBuffer(potentialBuffer)) {
-      return potentialBuffer;
-    }
-
-    if (ArrayBuffer.isView(potentialBuffer)) {
-      return Buffer.from(
-        potentialBuffer.buffer,
-        potentialBuffer.byteOffset,
-        potentialBuffer.byteLength
-      );
-    }
-
-    const stringTag =
-      potentialBuffer?.[Symbol.toStringTag] ?? Object.prototype.toString.call(potentialBuffer);
-    if (
-      stringTag === 'ArrayBuffer' ||
-      stringTag === 'SharedArrayBuffer' ||
-      stringTag === '[object ArrayBuffer]' ||
-      stringTag === '[object SharedArrayBuffer]'
-    ) {
-      return Buffer.from(potentialBuffer);
-    }
-
-    throw new BSONError(`Cannot create Buffer from ${String(potentialBuffer)}`);
-  },
-
-  allocate(size: number): NodeJsBuffer {
-    return Buffer.alloc(size);
-  },
-
-  allocateUnsafe(size: number): NodeJsBuffer {
-    return Buffer.allocUnsafe(size);
-  },
-
-  equals(a: Uint8Array, b: Uint8Array): boolean {
-    return nodeJsByteUtils.toLocalBufferType(a).equals(b);
-  },
-
-  fromNumberArray(array: number[]): NodeJsBuffer {
-    return Buffer.from(array);
-  },
-
-  fromBase64(base64: string): NodeJsBuffer {
-    return Buffer.from(base64, 'base64');
-  },
-
-  toBase64(buffer: Uint8Array): string {
-    return nodeJsByteUtils.toLocalBufferType(buffer).toString('base64');
-  },
-
-  /** **Legacy** binary strings are an outdated method of data transfer. Do not add public API support for interpreting this format */
-  fromISO88591(codePoints: string): NodeJsBuffer {
-    return Buffer.from(codePoints, 'binary');
-  },
-
-  /** **Legacy** binary strings are an outdated method of data transfer. Do not add public API support for interpreting this format */
-  toISO88591(buffer: Uint8Array): string {
-    return nodeJsByteUtils.toLocalBufferType(buffer).toString('binary');
-  },
-
-  fromHex(hex: string): NodeJsBuffer {
-    return Buffer.from(hex, 'hex');
-  },
-
-  toHex(buffer: Uint8Array): string {
-    return nodeJsByteUtils.toLocalBufferType(buffer).toString('hex');
-  },
-
-  toUTF8(buffer: Uint8Array, start: number, end: number, fatal: boolean): string {
-    const basicLatin = end - start <= 20 ? tryReadBasicLatin(buffer, start, end) : null;
-    if (basicLatin != null) {
-      return basicLatin;
-    }
-
-    const string = nodeJsByteUtils.toLocalBufferType(buffer).toString('utf8', start, end);
-    if (fatal) {
-      // TODO(NODE-4930): Insufficiently strict BSON UTF8 validation
-      for (let i = 0; i < string.length; i++) {
-        if (string.charCodeAt(i) === 0xfffd) {
-          if (!validateUtf8(buffer, start, end)) {
-            throw new BSONError('Invalid UTF-8 string in BSON document');
-          }
-          break;
-        }
-      }
-    }
-    return string;
-  },
-
-  utf8ByteLength(input: string): number {
-    return Buffer.byteLength(input, 'utf8');
-  },
-
-  encodeUTF8Into(buffer: Uint8Array, source: string, byteOffset: number): number {
-    const latinBytesWritten = tryWriteBasicLatin(buffer, source, byteOffset);
-    if (latinBytesWritten != null) {
-      return latinBytesWritten;
-    }
-
-    return nodeJsByteUtils.toLocalBufferType(buffer).write(source, byteOffset, undefined, 'utf8');
-  },
-
-  randomBytes: nodejsRandomBytes
-};
diff --git a/server/data-import/node_modules/bson/src/utils/number_utils.ts b/server/data-import/node_modules/bson/src/utils/number_utils.ts
deleted file mode 100644
index a3ccc8e2e03a864278fcef3ee08aa8f03afaabb3..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/utils/number_utils.ts
+++ /dev/null
@@ -1,135 +0,0 @@
-const FLOAT = new Float64Array(1);
-const FLOAT_BYTES = new Uint8Array(FLOAT.buffer, 0, 8);
-
-/**
- * Number parsing and serializing utilities.
- *
- * @internal
- */
-export const NumberUtils = {
-  /** Reads a little-endian 32-bit integer from source */
-  getInt32LE(source: Uint8Array, offset: number): number {
-    return (
-      source[offset] |
-      (source[offset + 1] << 8) |
-      (source[offset + 2] << 16) |
-      (source[offset + 3] << 24)
-    );
-  },
-
-  /** Reads a little-endian 32-bit unsigned integer from source */
-  getUint32LE(source: Uint8Array, offset: number): number {
-    return (
-      source[offset] +
-      source[offset + 1] * 256 +
-      source[offset + 2] * 65536 +
-      source[offset + 3] * 16777216
-    );
-  },
-
-  /** Reads a big-endian 32-bit integer from source */
-  getUint32BE(source: Uint8Array, offset: number): number {
-    return (
-      source[offset + 3] +
-      source[offset + 2] * 256 +
-      source[offset + 1] * 65536 +
-      source[offset] * 16777216
-    );
-  },
-
-  /** Reads a little-endian 64-bit integer from source */
-  getBigInt64LE(source: Uint8Array, offset: number): bigint {
-    const lo = NumberUtils.getUint32LE(source, offset);
-    const hi = NumberUtils.getUint32LE(source, offset + 4);
-
-    /*
-      eslint-disable-next-line no-restricted-globals
-      -- This is allowed since this helper should not be called unless bigint features are enabled
-     */
-    return (BigInt(hi) << BigInt(32)) + BigInt(lo);
-  },
-
-  /** Reads a little-endian 64-bit float from source */
-  getFloat64LE(source: Uint8Array, offset: number): number {
-    FLOAT_BYTES[0] = source[offset];
-    FLOAT_BYTES[1] = source[offset + 1];
-    FLOAT_BYTES[2] = source[offset + 2];
-    FLOAT_BYTES[3] = source[offset + 3];
-    FLOAT_BYTES[4] = source[offset + 4];
-    FLOAT_BYTES[5] = source[offset + 5];
-    FLOAT_BYTES[6] = source[offset + 6];
-    FLOAT_BYTES[7] = source[offset + 7];
-    return FLOAT[0];
-  },
-
-  /** Writes a big-endian 32-bit integer to destination, can be signed or unsigned */
-  setInt32BE(destination: Uint8Array, offset: number, value: number): 4 {
-    destination[offset + 3] = value;
-    value >>>= 8;
-    destination[offset + 2] = value;
-    value >>>= 8;
-    destination[offset + 1] = value;
-    value >>>= 8;
-    destination[offset] = value;
-    return 4;
-  },
-
-  /** Writes a little-endian 32-bit integer to destination, can be signed or unsigned */
-  setInt32LE(destination: Uint8Array, offset: number, value: number): 4 {
-    destination[offset] = value;
-    value >>>= 8;
-    destination[offset + 1] = value;
-    value >>>= 8;
-    destination[offset + 2] = value;
-    value >>>= 8;
-    destination[offset + 3] = value;
-    return 4;
-  },
-
-  /** Write a little-endian 64-bit integer to source */
-  setBigInt64LE(destination: Uint8Array, offset: number, value: bigint): 8 {
-    /* eslint-disable-next-line no-restricted-globals -- This is allowed here as useBigInt64=true */
-    const mask32bits = BigInt(0xffff_ffff);
-
-    /** lower 32 bits */
-    let lo = Number(value & mask32bits);
-    destination[offset] = lo;
-    lo >>= 8;
-    destination[offset + 1] = lo;
-    lo >>= 8;
-    destination[offset + 2] = lo;
-    lo >>= 8;
-    destination[offset + 3] = lo;
-
-    /*
-       eslint-disable-next-line no-restricted-globals
-       -- This is allowed here as useBigInt64=true
-
-       upper 32 bits
-     */
-    let hi = Number((value >> BigInt(32)) & mask32bits);
-    destination[offset + 4] = hi;
-    hi >>= 8;
-    destination[offset + 5] = hi;
-    hi >>= 8;
-    destination[offset + 6] = hi;
-    hi >>= 8;
-    destination[offset + 7] = hi;
-
-    return 8;
-  },
-
-  /** Writes a little-endian 64-bit float to destination */
-  setFloat64LE(destination: Uint8Array, offset: number, value: number): 8 {
-    FLOAT[0] = value;
-    destination[offset] = FLOAT_BYTES[0];
-    destination[offset + 1] = FLOAT_BYTES[1];
-    destination[offset + 2] = FLOAT_BYTES[2];
-    destination[offset + 3] = FLOAT_BYTES[3];
-    destination[offset + 4] = FLOAT_BYTES[4];
-    destination[offset + 5] = FLOAT_BYTES[5];
-    destination[offset + 6] = FLOAT_BYTES[6];
-    destination[offset + 7] = FLOAT_BYTES[7];
-    return 8;
-  }
-};
diff --git a/server/data-import/node_modules/bson/src/utils/web_byte_utils.ts b/server/data-import/node_modules/bson/src/utils/web_byte_utils.ts
deleted file mode 100644
index 77a1f0f741e5d07232855d2310b52a9023e7983a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/utils/web_byte_utils.ts
+++ /dev/null
@@ -1,203 +0,0 @@
-import { BSONError } from '../error';
-import { tryReadBasicLatin } from './latin';
-
-type TextDecoder = {
-  readonly encoding: string;
-  readonly fatal: boolean;
-  readonly ignoreBOM: boolean;
-  decode(input?: Uint8Array): string;
-};
-type TextDecoderConstructor = {
-  new (label: 'utf8', options: { fatal: boolean; ignoreBOM?: boolean }): TextDecoder;
-};
-
-type TextEncoder = {
-  readonly encoding: string;
-  encode(input?: string): Uint8Array;
-};
-type TextEncoderConstructor = {
-  new (): TextEncoder;
-};
-
-// Web global
-declare const TextDecoder: TextDecoderConstructor;
-declare const TextEncoder: TextEncoderConstructor;
-declare const atob: (base64: string) => string;
-declare const btoa: (binary: string) => string;
-
-type ArrayBufferViewWithTag = ArrayBufferView & {
-  [Symbol.toStringTag]?: string;
-};
-
-function isReactNative() {
-  const { navigator } = globalThis as { navigator?: { product?: string } };
-  return typeof navigator === 'object' && navigator.product === 'ReactNative';
-}
-
-/** @internal */
-export function webMathRandomBytes(byteLength: number) {
-  if (byteLength < 0) {
-    throw new RangeError(`The argument 'byteLength' is invalid. Received ${byteLength}`);
-  }
-  return webByteUtils.fromNumberArray(
-    Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256))
-  );
-}
-
-/** @internal */
-const webRandomBytes: (byteLength: number) => Uint8Array = (() => {
-  const { crypto } = globalThis as {
-    crypto?: { getRandomValues?: (space: Uint8Array) => Uint8Array };
-  };
-  if (crypto != null && typeof crypto.getRandomValues === 'function') {
-    return (byteLength: number) => {
-      // @ts-expect-error: crypto.getRandomValues cannot actually be null here
-      // You cannot separate getRandomValues from crypto (need to have this === crypto)
-      return crypto.getRandomValues(webByteUtils.allocate(byteLength));
-    };
-  } else {
-    if (isReactNative()) {
-      const { console } = globalThis as { console?: { warn?: (message: string) => void } };
-      console?.warn?.(
-        'BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.'
-      );
-    }
-    return webMathRandomBytes;
-  }
-})();
-
-const HEX_DIGIT = /(\d|[a-f])/i;
-
-/** @internal */
-export const webByteUtils = {
-  toLocalBufferType(
-    potentialUint8array: Uint8Array | ArrayBufferViewWithTag | ArrayBuffer
-  ): Uint8Array {
-    const stringTag =
-      potentialUint8array?.[Symbol.toStringTag] ??
-      Object.prototype.toString.call(potentialUint8array);
-
-    if (stringTag === 'Uint8Array') {
-      return potentialUint8array as Uint8Array;
-    }
-
-    if (ArrayBuffer.isView(potentialUint8array)) {
-      return new Uint8Array(
-        potentialUint8array.buffer.slice(
-          potentialUint8array.byteOffset,
-          potentialUint8array.byteOffset + potentialUint8array.byteLength
-        )
-      );
-    }
-
-    if (
-      stringTag === 'ArrayBuffer' ||
-      stringTag === 'SharedArrayBuffer' ||
-      stringTag === '[object ArrayBuffer]' ||
-      stringTag === '[object SharedArrayBuffer]'
-    ) {
-      return new Uint8Array(potentialUint8array);
-    }
-
-    throw new BSONError(`Cannot make a Uint8Array from ${String(potentialUint8array)}`);
-  },
-
-  allocate(size: number): Uint8Array {
-    if (typeof size !== 'number') {
-      throw new TypeError(`The "size" argument must be of type number. Received ${String(size)}`);
-    }
-    return new Uint8Array(size);
-  },
-
-  allocateUnsafe(size: number): Uint8Array {
-    return webByteUtils.allocate(size);
-  },
-
-  equals(a: Uint8Array, b: Uint8Array): boolean {
-    if (a.byteLength !== b.byteLength) {
-      return false;
-    }
-    for (let i = 0; i < a.byteLength; i++) {
-      if (a[i] !== b[i]) {
-        return false;
-      }
-    }
-    return true;
-  },
-
-  fromNumberArray(array: number[]): Uint8Array {
-    return Uint8Array.from(array);
-  },
-
-  fromBase64(base64: string): Uint8Array {
-    return Uint8Array.from(atob(base64), c => c.charCodeAt(0));
-  },
-
-  toBase64(uint8array: Uint8Array): string {
-    return btoa(webByteUtils.toISO88591(uint8array));
-  },
-
-  /** **Legacy** binary strings are an outdated method of data transfer. Do not add public API support for interpreting this format */
-  fromISO88591(codePoints: string): Uint8Array {
-    return Uint8Array.from(codePoints, c => c.charCodeAt(0) & 0xff);
-  },
-
-  /** **Legacy** binary strings are an outdated method of data transfer. Do not add public API support for interpreting this format */
-  toISO88591(uint8array: Uint8Array): string {
-    return Array.from(Uint16Array.from(uint8array), b => String.fromCharCode(b)).join('');
-  },
-
-  fromHex(hex: string): Uint8Array {
-    const evenLengthHex = hex.length % 2 === 0 ? hex : hex.slice(0, hex.length - 1);
-    const buffer = [];
-
-    for (let i = 0; i < evenLengthHex.length; i += 2) {
-      const firstDigit = evenLengthHex[i];
-      const secondDigit = evenLengthHex[i + 1];
-
-      if (!HEX_DIGIT.test(firstDigit)) {
-        break;
-      }
-      if (!HEX_DIGIT.test(secondDigit)) {
-        break;
-      }
-
-      const hexDigit = Number.parseInt(`${firstDigit}${secondDigit}`, 16);
-      buffer.push(hexDigit);
-    }
-
-    return Uint8Array.from(buffer);
-  },
-
-  toHex(uint8array: Uint8Array): string {
-    return Array.from(uint8array, byte => byte.toString(16).padStart(2, '0')).join('');
-  },
-
-  toUTF8(uint8array: Uint8Array, start: number, end: number, fatal: boolean): string {
-    const basicLatin = end - start <= 20 ? tryReadBasicLatin(uint8array, start, end) : null;
-    if (basicLatin != null) {
-      return basicLatin;
-    }
-
-    if (fatal) {
-      try {
-        return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
-      } catch (cause) {
-        throw new BSONError('Invalid UTF-8 string in BSON document', { cause });
-      }
-    }
-    return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
-  },
-
-  utf8ByteLength(input: string): number {
-    return new TextEncoder().encode(input).byteLength;
-  },
-
-  encodeUTF8Into(uint8array: Uint8Array, source: string, byteOffset: number): number {
-    const bytes = new TextEncoder().encode(source);
-    uint8array.set(bytes, byteOffset);
-    return bytes.byteLength;
-  },
-
-  randomBytes: webRandomBytes
-};
diff --git a/server/data-import/node_modules/bson/src/validate_utf8.ts b/server/data-import/node_modules/bson/src/validate_utf8.ts
deleted file mode 100644
index e1da934c6909248025132ec0fb89200f358252e3..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/src/validate_utf8.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-const FIRST_BIT = 0x80;
-const FIRST_TWO_BITS = 0xc0;
-const FIRST_THREE_BITS = 0xe0;
-const FIRST_FOUR_BITS = 0xf0;
-const FIRST_FIVE_BITS = 0xf8;
-
-const TWO_BIT_CHAR = 0xc0;
-const THREE_BIT_CHAR = 0xe0;
-const FOUR_BIT_CHAR = 0xf0;
-const CONTINUING_CHAR = 0x80;
-
-/**
- * Determines if the passed in bytes are valid utf8
- * @param bytes - An array of 8-bit bytes. Must be indexable and have length property
- * @param start - The index to start validating
- * @param end - The index to end validating
- */
-export function validateUtf8(
-  bytes: { [index: number]: number },
-  start: number,
-  end: number
-): boolean {
-  let continuation = 0;
-
-  for (let i = start; i < end; i += 1) {
-    const byte = bytes[i];
-
-    if (continuation) {
-      if ((byte & FIRST_TWO_BITS) !== CONTINUING_CHAR) {
-        return false;
-      }
-      continuation -= 1;
-    } else if (byte & FIRST_BIT) {
-      if ((byte & FIRST_THREE_BITS) === TWO_BIT_CHAR) {
-        continuation = 1;
-      } else if ((byte & FIRST_FOUR_BITS) === THREE_BIT_CHAR) {
-        continuation = 2;
-      } else if ((byte & FIRST_FIVE_BITS) === FOUR_BIT_CHAR) {
-        continuation = 3;
-      } else {
-        return false;
-      }
-    }
-  }
-
-  return !continuation;
-}
diff --git a/server/data-import/node_modules/bson/vendor/base64/LICENSE-MIT.txt b/server/data-import/node_modules/bson/vendor/base64/LICENSE-MIT.txt
deleted file mode 100644
index a41e0a7ef970ecdd83d82cd99bda97b22077bc62..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/vendor/base64/LICENSE-MIT.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright Mathias Bynens <https://mathiasbynens.be/>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/data-import/node_modules/bson/vendor/base64/README.md b/server/data-import/node_modules/bson/vendor/base64/README.md
deleted file mode 100644
index ab0ef251e3f1e4bfbbdc21f6cd01e3fbc60aaa3b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/vendor/base64/README.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# base64 [![Build status](https://travis-ci.org/mathiasbynens/base64.svg?branch=master)](https://travis-ci.org/mathiasbynens/base64) [![Code coverage status](http://img.shields.io/coveralls/mathiasbynens/base64/master.svg)](https://coveralls.io/r/mathiasbynens/base64)
-
-_base64_ is a robust base64 encoder/decoder that is fully compatible with [`atob()` and `btoa()`](https://html.spec.whatwg.org/multipage/webappapis.html#atob), written in JavaScript. The base64-encoding and -decoding algorithms it uses are fully [RFC 4648](https://tools.ietf.org/html/rfc4648#section-4) compliant.
-
-## Installation
-
-Via [npm](https://www.npmjs.com/):
-
-```bash
-npm install base-64
-```
-
-In a browser:
-
-```html
-<script src="base64.js"></script>
-```
-
-In [Narwhal](http://narwhaljs.org/), [Node.js](https://nodejs.org/), and [RingoJS](http://ringojs.org/):
-
-```js
-var base64 = require('base-64');
-```
-
-In [Rhino](http://www.mozilla.org/rhino/):
-
-```js
-load('base64.js');
-```
-
-Using an AMD loader like [RequireJS](http://requirejs.org/):
-
-```js
-require(
-  {
-    'paths': {
-      'base64': 'path/to/base64'
-    }
-  },
-  ['base64'],
-  function(base64) {
-    console.log(base64);
-  }
-);
-```
-
-## API
-
-### `base64.version`
-
-A string representing the semantic version number.
-
-### `base64.encode(input)`
-
-This function takes a byte string (the `input` parameter) and encodes it according to base64. The input data must be in the form of a string containing only characters in the range from U+0000 to U+00FF, each representing a binary byte with values `0x00` to `0xFF`. The `base64.encode()` function is designed to be fully compatible with [`btoa()` as described in the HTML Standard](https://html.spec.whatwg.org/multipage/webappapis.html#dom-windowbase64-btoa).
-
-```js
-var encodedData = base64.encode(input);
-```
-
-To base64-encode any Unicode string, [encode it as UTF-8 first](https://github.com/mathiasbynens/utf8.js#utf8encodestring):
-
-```js
-var base64 = require('base-64');
-var utf8 = require('utf8');
-
-var text = 'foo © bar 𝌆 baz';
-var bytes = utf8.encode(text);
-var encoded = base64.encode(bytes);
-console.log(encoded);
-// → 'Zm9vIMKpIGJhciDwnYyGIGJheg=='
-```
-
-### `base64.decode(input)`
-
-This function takes a base64-encoded string (the `input` parameter) and decodes it. The return value is in the form of a string containing only characters in the range from U+0000 to U+00FF, each representing a binary byte with values `0x00` to `0xFF`. The `base64.decode()` function is designed to be fully compatible with [`atob()` as described in the HTML Standard](https://html.spec.whatwg.org/multipage/webappapis.html#dom-windowbase64-atob).
-
-```js
-var decodedData = base64.decode(encodedData);
-```
-
-To base64-decode UTF-8-encoded data back into a Unicode string, [UTF-8-decode it](https://github.com/mathiasbynens/utf8.js#utf8decodebytestring) after base64-decoding it:
-
-```js
-var encoded = 'Zm9vIMKpIGJhciDwnYyGIGJheg==';
-var bytes = base64.decode(encoded);
-var text = utf8.decode(bytes);
-console.log(text);
-// → 'foo © bar 𝌆 baz'
-```
-
-## Support
-
-_base64_ is designed to work in at least Node.js v0.10.0, Narwhal 0.3.2, RingoJS 0.8-0.9, PhantomJS 1.9.0, Rhino 1.7RC4, as well as old and modern versions of Chrome, Firefox, Safari, Opera, and Internet Explorer.
-
-## Unit tests & code coverage
-
-After cloning this repository, run `npm install` to install the dependencies needed for development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`.
-
-Once that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, and web browsers as well, use `grunt test`.
-
-To generate the code coverage report, use `grunt cover`.
-
-## Author
-
-| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") |
-|---|
-| [Mathias Bynens](https://mathiasbynens.be/) |
-
-## License
-
-_base64_ is available under the [MIT](https://mths.be/mit) license.
diff --git a/server/data-import/node_modules/bson/vendor/base64/base64.js b/server/data-import/node_modules/bson/vendor/base64/base64.js
deleted file mode 100644
index 611b4461f38bfab815f3566e8b936b0da40acd49..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/vendor/base64/base64.js
+++ /dev/null
@@ -1,157 +0,0 @@
-/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */
-;(function(root) {
-
-	// Detect free variables `exports`.
-	var freeExports = typeof exports == 'object' && exports;
-
-	// Detect free variable `module`.
-	var freeModule = typeof module == 'object' && module &&
-		module.exports == freeExports && module;
-
-	/*--------------------------------------------------------------------------*/
-
-	var InvalidCharacterError = function(message) {
-		this.message = message;
-	};
-	InvalidCharacterError.prototype = new Error;
-	InvalidCharacterError.prototype.name = 'InvalidCharacterError';
-
-	var error = function(message) {
-		// Note: the error messages used throughout this file match those used by
-		// the native `atob`/`btoa` implementation in Chromium.
-		throw new InvalidCharacterError(message);
-	};
-
-	var TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
-	// http://whatwg.org/html/common-microsyntaxes.html#space-character
-	var REGEX_SPACE_CHARACTERS = /[\t\n\f\r ]/g;
-
-	// `decode` is designed to be fully compatible with `atob` as described in the
-	// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob
-	// The optimized base64-decoding algorithm used is based on @atk’s excellent
-	// implementation. https://gist.github.com/atk/1020396
-	var decode = function(input) {
-		input = String(input)
-			.replace(REGEX_SPACE_CHARACTERS, '');
-		var length = input.length;
-		if (length % 4 == 0) {
-			input = input.replace(/==?$/, '');
-			length = input.length;
-		}
-		if (
-			length % 4 == 1 ||
-			// http://whatwg.org/C#alphanumeric-ascii-characters
-			/[^+a-zA-Z0-9/]/.test(input)
-		) {
-			error(
-				'Invalid character: the string to be decoded is not correctly encoded.'
-			);
-		}
-		var bitCounter = 0;
-		var bitStorage;
-		var buffer;
-		var output = '';
-		var position = -1;
-		while (++position < length) {
-			buffer = TABLE.indexOf(input.charAt(position));
-			bitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;
-			// Unless this is the first of a group of 4 characters…
-			if (bitCounter++ % 4) {
-				// …convert the first 8 bits to a single ASCII character.
-				output += String.fromCharCode(
-					0xFF & bitStorage >> (-2 * bitCounter & 6)
-				);
-			}
-		}
-		return output;
-	};
-
-	// `encode` is designed to be fully compatible with `btoa` as described in the
-	// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa
-	var encode = function(input) {
-		input = String(input);
-		if (/[^\0-\xFF]/.test(input)) {
-			// Note: no need to special-case astral symbols here, as surrogates are
-			// matched, and the input is supposed to only contain ASCII anyway.
-			error(
-				'The string to be encoded contains characters outside of the ' +
-				'Latin1 range.'
-			);
-		}
-		var padding = input.length % 3;
-		var output = '';
-		var position = -1;
-		var a;
-		var b;
-		var c;
-		var buffer;
-		// Make sure any padding is handled outside of the loop.
-		var length = input.length - padding;
-
-		while (++position < length) {
-			// Read three bytes, i.e. 24 bits.
-			a = input.charCodeAt(position) << 16;
-			b = input.charCodeAt(++position) << 8;
-			c = input.charCodeAt(++position);
-			buffer = a + b + c;
-			// Turn the 24 bits into four chunks of 6 bits each, and append the
-			// matching character for each of them to the output.
-			output += (
-				TABLE.charAt(buffer >> 18 & 0x3F) +
-				TABLE.charAt(buffer >> 12 & 0x3F) +
-				TABLE.charAt(buffer >> 6 & 0x3F) +
-				TABLE.charAt(buffer & 0x3F)
-			);
-		}
-
-		if (padding == 2) {
-			a = input.charCodeAt(position) << 8;
-			b = input.charCodeAt(++position);
-			buffer = a + b;
-			output += (
-				TABLE.charAt(buffer >> 10) +
-				TABLE.charAt((buffer >> 4) & 0x3F) +
-				TABLE.charAt((buffer << 2) & 0x3F) +
-				'='
-			);
-		} else if (padding == 1) {
-			buffer = input.charCodeAt(position);
-			output += (
-				TABLE.charAt(buffer >> 2) +
-				TABLE.charAt((buffer << 4) & 0x3F) +
-				'=='
-			);
-		}
-
-		return output;
-	};
-
-	var base64 = {
-		'encode': encode,
-		'decode': decode,
-		'version': '1.0.0'
-	};
-
-	// Some AMD build optimizers, like r.js, check for specific condition patterns
-	// like the following:
-	if (
-		typeof define == 'function' &&
-		typeof define.amd == 'object' &&
-		define.amd
-	) {
-		define(function() {
-			return base64;
-		});
-	}	else if (freeExports && !freeExports.nodeType) {
-		if (freeModule) { // in Node.js or RingoJS v0.8.0+
-			freeModule.exports = base64;
-		} else { // in Narwhal or RingoJS v0.7.0-
-			for (var key in base64) {
-				base64.hasOwnProperty(key) && (freeExports[key] = base64[key]);
-			}
-		}
-	} else { // in Rhino or a web browser
-		root.base64 = base64;
-	}
-
-}(this));
diff --git a/server/data-import/node_modules/bson/vendor/base64/package.json b/server/data-import/node_modules/bson/vendor/base64/package.json
deleted file mode 100644
index 479b0a180c4849433747d753f4536d3786738289..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/vendor/base64/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-	"name": "base-64",
-	"version": "1.0.0",
-	"description": "A robust base64 encoder/decoder that is fully compatible with `atob()` and `btoa()`, written in JavaScript.",
-	"homepage": "https://mths.be/base64",
-	"main": "base64.js",
-	"keywords": [
-		"codec",
-		"decoder",
-		"encoder",
-		"base64",
-		"atob",
-		"btoa"
-	],
-	"license": "MIT",
-	"author": {
-		"name": "Mathias Bynens",
-		"url": "https://mathiasbynens.be/"
-	},
-	"repository": {
-		"type": "git",
-		"url": "https://github.com/mathiasbynens/base64.git"
-	},
-	"bugs": "https://github.com/mathiasbynens/base64/issues",
-	"files": [
-		"LICENSE-MIT.txt",
-		"base64.js"
-	],
-	"scripts": {
-		"test": "mocha tests/tests.js",
-		"build": "grunt build"
-	},
-	"devDependencies": {
-		"coveralls": "^2.11.4",
-		"grunt": "^0.4.5",
-		"grunt-cli": "^1.3.2",
-		"grunt-shell": "^1.1.2",
-		"grunt-template": "^0.2.3",
-		"istanbul": "^0.4.0",
-		"mocha": "^6.2.0",
-		"regenerate": "^1.2.1"
-	}
-}
diff --git a/server/data-import/node_modules/bson/vendor/text-encoding/LICENSE.md b/server/data-import/node_modules/bson/vendor/text-encoding/LICENSE.md
deleted file mode 100644
index 5ab10466b86b91d5a63cd7d14a25e09e1fab8eee..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/vendor/text-encoding/LICENSE.md
+++ /dev/null
@@ -1,237 +0,0 @@
-The encoding indexes, algorithms, and many comments in the code
-derive from the Encoding Standard https://encoding.spec.whatwg.org/
-
-Otherwise, the code of this repository is released under the Unlicense
-license and is also dual-licensed under an Apache 2.0 license. Both
-are included below.
-
-# Unlicense
-
-This is free and unencumbered software released into the public domain.
-
-Anyone is free to copy, modify, publish, use, compile, sell, or
-distribute this software, either in source code form or as a compiled
-binary, for any purpose, commercial or non-commercial, and by any
-means.
-
-In jurisdictions that recognize copyright laws, the author or authors
-of this software dedicate any and all copyright interest in the
-software to the public domain. We make this dedication for the benefit
-of the public at large and to the detriment of our heirs and
-successors. We intend this dedication to be an overt act of
-relinquishment in perpetuity of all present and future rights to this
-software under copyright law.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-For more information, please refer to <http://unlicense.org/>
-
-# Apache 2.0 License
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/server/data-import/node_modules/bson/vendor/text-encoding/README.md b/server/data-import/node_modules/bson/vendor/text-encoding/README.md
deleted file mode 100644
index b9af0e31111ab4bbb260acb6c2d766be0c865c9a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/vendor/text-encoding/README.md
+++ /dev/null
@@ -1,111 +0,0 @@
-text-encoding
-==============
-
-This is a polyfill for the [Encoding Living
-Standard](https://encoding.spec.whatwg.org/) API for the Web, allowing
-encoding and decoding of textual data to and from Typed Array buffers
-for binary data in JavaScript.
-
-By default it adheres to the spec and does not support *encoding* to
-legacy encodings, only *decoding*. It is also implemented to match the
-specification's algorithms, rather than for performance. The intended
-use is within Web pages, so it has no dependency on server frameworks
-or particular module schemes.
-
-Basic examples and tests are included.
-
-### Install ###
-
-There are a few ways you can get and use the `text-encoding` library.
-
-### HTML Page Usage ###
-
-Clone the repo and include the files directly:
-
-```html
-  <!-- Required for non-UTF encodings -->
-  <script src="encoding-indexes.js"></script>
-  <script src="encoding.js"></script>
-```
-
-This is the only use case the developer cares about. If you want those
-fancy module and/or package manager things that are popular these days
-you should probably use a different library.
-
-#### Package Managers ####
-
-The package is published to **npm** and **bower** as `text-encoding`.
-Use through these is not really supported, since they aren't used by
-the developer of the library. Using `require()` in interesting ways
-probably breaks. Patches welcome, as long as they don't break the
-basic use of the files via `<script>`.
-
-### API Overview ###
-
-Basic Usage
-
-```js
-  var uint8array = new TextEncoder().encode(string);
-  var string = new TextDecoder(encoding).decode(uint8array);
-```
-
-Streaming Decode
-
-```js
-  var string = "", decoder = new TextDecoder(encoding), buffer;
-  while (buffer = next_chunk()) {
-    string += decoder.decode(buffer, {stream:true});
-  }
-  string += decoder.decode(); // finish the stream
-```
-
-### Encodings ###
-
-All encodings from the Encoding specification are supported:
-
-utf-8 ibm866 iso-8859-2 iso-8859-3 iso-8859-4 iso-8859-5 iso-8859-6
-iso-8859-7 iso-8859-8 iso-8859-8-i iso-8859-10 iso-8859-13 iso-8859-14
-iso-8859-15 iso-8859-16 koi8-r koi8-u macintosh windows-874
-windows-1250 windows-1251 windows-1252 windows-1253 windows-1254
-windows-1255 windows-1256 windows-1257 windows-1258 x-mac-cyrillic
-gb18030 hz-gb-2312 big5 euc-jp iso-2022-jp shift_jis euc-kr
-replacement utf-16be utf-16le x-user-defined
-
-(Some encodings may be supported under other names, e.g. ascii,
-iso-8859-1, etc. See [Encoding](https://encoding.spec.whatwg.org/) for
-additional labels for each encoding.)
-
-Encodings other than **utf-8**, **utf-16le** and **utf-16be** require
-an additional `encoding-indexes.js` file to be included. It is rather
-large (596kB uncompressed, 188kB gzipped); portions may be deleted if
-support for some encodings is not required.
-
-### Non-Standard Behavior ###
-
-As required by the specification, only encoding to **utf-8** is
-supported. If you want to try it out, you can force a non-standard
-behavior by passing the `NONSTANDARD_allowLegacyEncoding` option to
-TextEncoder and a label. For example:
-
-```js
-var uint8array = new TextEncoder(
-  'windows-1252', { NONSTANDARD_allowLegacyEncoding: true }).encode(text);
-```
-
-But note that the above won't work if you're using the polyfill in a
-browser that natively supports the TextEncoder API natively, since the
-polyfill won't be used!
-
-You can force the polyfill to be used by using this before the polyfill:
-
-```html
-<script>
-window.TextEncoder = window.TextDecoder = null;
-</script>
-```
-
-To support the legacy encodings (which may be stateful), the
-TextEncoder `encode()` method accepts an optional dictionary and
-`stream` option, e.g. `encoder.encode(string, {stream: true});` This
-is not needed for standard encoding since the input is always in
-complete code points.
diff --git a/server/data-import/node_modules/bson/vendor/text-encoding/index.js b/server/data-import/node_modules/bson/vendor/text-encoding/index.js
deleted file mode 100644
index cc57d658fa42db539b8742dc6bedbf39491c5e28..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/vendor/text-encoding/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// This is free and unencumbered software released into the public domain.
-// See LICENSE.md for more information.
-
-var encoding = require("./lib/encoding.js");
-
-module.exports = {
-  TextEncoder: encoding.TextEncoder,
-  TextDecoder: encoding.TextDecoder,
-};
diff --git a/server/data-import/node_modules/bson/vendor/text-encoding/lib/encoding-indexes.js b/server/data-import/node_modules/bson/vendor/text-encoding/lib/encoding-indexes.js
deleted file mode 100644
index 4f170c3bb24fc8453676bfeb3dfe23dcacf68493..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/vendor/text-encoding/lib/encoding-indexes.js
+++ /dev/null
@@ -1,47 +0,0 @@
-(function(global) {
-  'use strict';
-
-  if (typeof module !== "undefined" && module.exports) {
-    module.exports = global;
-  }
-
-  global["encoding-indexes"] =
-{
-  "big5":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,17392,19506,17923,17830,17784,160359,19831,17843,162993,19682,163013,15253,18230,18244,19527,19520,148159,144919,160594,159371,159954,19543,172881,18255,17882,19589,162924,19719,19108,18081,158499,29221,154196,137827,146950,147297,26189,22267,null,32149,22813,166841,15860,38708,162799,23515,138590,23204,13861,171696,23249,23479,23804,26478,34195,170309,29793,29853,14453,138579,145054,155681,16108,153822,15093,31484,40855,147809,166157,143850,133770,143966,17162,33924,40854,37935,18736,34323,22678,38730,37400,31184,31282,26208,27177,34973,29772,31685,26498,31276,21071,36934,13542,29636,155065,29894,40903,22451,18735,21580,16689,145038,22552,31346,162661,35727,18094,159368,16769,155033,31662,140476,40904,140481,140489,140492,40905,34052,144827,16564,40906,17633,175615,25281,28782,40907,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,12736,12737,12738,12739,12740,131340,12741,131281,131277,12742,12743,131275,139240,12744,131274,12745,12746,12747,12748,131342,12749,12750,256,193,461,192,274,201,282,200,332,211,465,210,null,7870,null,7872,202,257,225,462,224,593,275,233,283,232,299,237,464,236,333,243,466,242,363,250,468,249,470,472,474,476,252,null,7871,null,7873,234,609,9178,9179,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,172969,135493,null,25866,null,null,20029,28381,40270,37343,null,null,161589,25745,20250,20264,20392,20822,20852,20892,20964,21153,21160,21307,21326,21457,21464,22242,22768,22788,22791,22834,22836,23398,23454,23455,23706,24198,24635,25993,26622,26628,26725,27982,28860,30005,32420,32428,32442,32455,32463,32479,32518,32567,33402,33487,33647,35270,35774,35810,36710,36711,36718,29713,31996,32205,26950,31433,21031,null,null,null,null,37260,30904,37214,32956,null,36107,33014,133607,null,null,32927,40647,19661,40393,40460,19518,171510,159758,40458,172339,13761,null,28314,33342,29977,null,18705,39532,39567,40857,31111,164972,138698,132560,142054,20004,20097,20096,20103,20159,20203,20279,13388,20413,15944,20483,20616,13437,13459,13477,20870,22789,20955,20988,20997,20105,21113,21136,21287,13767,21417,13649,21424,13651,21442,21539,13677,13682,13953,21651,21667,21684,21689,21712,21743,21784,21795,21800,13720,21823,13733,13759,21975,13765,163204,21797,null,134210,134421,151851,21904,142534,14828,131905,36422,150968,169189,16467,164030,30586,142392,14900,18389,164189,158194,151018,25821,134524,135092,134357,135412,25741,36478,134806,134155,135012,142505,164438,148691,null,134470,170573,164073,18420,151207,142530,39602,14951,169460,16365,13574,152263,169940,161992,142660,40302,38933,null,17369,155813,25780,21731,142668,142282,135287,14843,135279,157402,157462,162208,25834,151634,134211,36456,139681,166732,132913,null,18443,131497,16378,22643,142733,null,148936,132348,155799,134988,134550,21881,16571,17338,null,19124,141926,135325,33194,39157,134556,25465,14846,141173,36288,22177,25724,15939,null,173569,134665,142031,142537,null,135368,145858,14738,14854,164507,13688,155209,139463,22098,134961,142514,169760,13500,27709,151099,null,null,161140,142987,139784,173659,167117,134778,134196,157724,32659,135375,141315,141625,13819,152035,134796,135053,134826,16275,134960,134471,135503,134732,null,134827,134057,134472,135360,135485,16377,140950,25650,135085,144372,161337,142286,134526,134527,142417,142421,14872,134808,135367,134958,173618,158544,167122,167321,167114,38314,21708,33476,21945,null,171715,39974,39606,161630,142830,28992,33133,33004,23580,157042,33076,14231,21343,164029,37302,134906,134671,134775,134907,13789,151019,13833,134358,22191,141237,135369,134672,134776,135288,135496,164359,136277,134777,151120,142756,23124,135197,135198,135413,135414,22428,134673,161428,164557,135093,134779,151934,14083,135094,135552,152280,172733,149978,137274,147831,164476,22681,21096,13850,153405,31666,23400,18432,19244,40743,18919,39967,39821,154484,143677,22011,13810,22153,20008,22786,138177,194680,38737,131206,20059,20155,13630,23587,24401,24516,14586,25164,25909,27514,27701,27706,28780,29227,20012,29357,149737,32594,31035,31993,32595,156266,13505,null,156491,32770,32896,157202,158033,21341,34916,35265,161970,35744,36125,38021,38264,38271,38376,167439,38886,39029,39118,39134,39267,170000,40060,40479,40644,27503,63751,20023,131207,38429,25143,38050,null,20539,28158,171123,40870,15817,34959,147790,28791,23797,19232,152013,13657,154928,24866,166450,36775,37366,29073,26393,29626,144001,172295,15499,137600,19216,30948,29698,20910,165647,16393,27235,172730,16931,34319,133743,31274,170311,166634,38741,28749,21284,139390,37876,30425,166371,40871,30685,20131,20464,20668,20015,20247,40872,21556,32139,22674,22736,138678,24210,24217,24514,141074,25995,144377,26905,27203,146531,27903,null,29184,148741,29580,16091,150035,23317,29881,35715,154788,153237,31379,31724,31939,32364,33528,34199,40873,34960,40874,36537,40875,36815,34143,39392,37409,40876,167353,136255,16497,17058,23066,null,null,null,39016,26475,17014,22333,null,34262,149883,33471,160013,19585,159092,23931,158485,159678,40877,40878,23446,40879,26343,32347,28247,31178,15752,17603,143958,141206,17306,17718,null,23765,146202,35577,23672,15634,144721,23928,40882,29015,17752,147692,138787,19575,14712,13386,131492,158785,35532,20404,131641,22975,33132,38998,170234,24379,134047,null,139713,166253,16642,18107,168057,16135,40883,172469,16632,14294,18167,158790,16764,165554,160767,17773,14548,152730,17761,17691,19849,19579,19830,17898,16328,150287,13921,17630,17597,16877,23870,23880,23894,15868,14351,23972,23993,14368,14392,24130,24253,24357,24451,14600,14612,14655,14669,24791,24893,23781,14729,25015,25017,25039,14776,25132,25232,25317,25368,14840,22193,14851,25570,25595,25607,25690,14923,25792,23829,22049,40863,14999,25990,15037,26111,26195,15090,26258,15138,26390,15170,26532,26624,15192,26698,26756,15218,15217,15227,26889,26947,29276,26980,27039,27013,15292,27094,15325,27237,27252,27249,27266,15340,27289,15346,27307,27317,27348,27382,27521,27585,27626,27765,27818,15563,27906,27910,27942,28033,15599,28068,28081,28181,28184,28201,28294,166336,28347,28386,28378,40831,28392,28393,28452,28468,15686,147265,28545,28606,15722,15733,29111,23705,15754,28716,15761,28752,28756,28783,28799,28809,131877,17345,13809,134872,147159,22462,159443,28990,153568,13902,27042,166889,23412,31305,153825,169177,31333,31357,154028,31419,31408,31426,31427,29137,156813,16842,31450,31453,31466,16879,21682,154625,31499,31573,31529,152334,154878,31650,31599,33692,154548,158847,31696,33825,31634,31672,154912,15789,154725,33938,31738,31750,31797,154817,31812,31875,149634,31910,26237,148856,31945,31943,31974,31860,31987,31989,31950,32359,17693,159300,32093,159446,29837,32137,32171,28981,32179,32210,147543,155689,32228,15635,32245,137209,32229,164717,32285,155937,155994,32366,32402,17195,37996,32295,32576,32577,32583,31030,156368,39393,32663,156497,32675,136801,131176,17756,145254,17667,164666,32762,156809,32773,32776,32797,32808,32815,172167,158915,32827,32828,32865,141076,18825,157222,146915,157416,26405,32935,166472,33031,33050,22704,141046,27775,156824,151480,25831,136330,33304,137310,27219,150117,150165,17530,33321,133901,158290,146814,20473,136445,34018,33634,158474,149927,144688,137075,146936,33450,26907,194964,16859,34123,33488,33562,134678,137140,14017,143741,144730,33403,33506,33560,147083,159139,158469,158615,144846,15807,33565,21996,33669,17675,159141,33708,33729,33747,13438,159444,27223,34138,13462,159298,143087,33880,154596,33905,15827,17636,27303,33866,146613,31064,33960,158614,159351,159299,34014,33807,33681,17568,33939,34020,154769,16960,154816,17731,34100,23282,159385,17703,34163,17686,26559,34326,165413,165435,34241,159880,34306,136578,159949,194994,17770,34344,13896,137378,21495,160666,34430,34673,172280,34798,142375,34737,34778,34831,22113,34412,26710,17935,34885,34886,161248,146873,161252,34910,34972,18011,34996,34997,25537,35013,30583,161551,35207,35210,35238,35241,35239,35260,166437,35303,162084,162493,35484,30611,37374,35472,162393,31465,162618,147343,18195,162616,29052,35596,35615,152624,152933,35647,35660,35661,35497,150138,35728,35739,35503,136927,17941,34895,35995,163156,163215,195028,14117,163155,36054,163224,163261,36114,36099,137488,36059,28764,36113,150729,16080,36215,36265,163842,135188,149898,15228,164284,160012,31463,36525,36534,36547,37588,36633,36653,164709,164882,36773,37635,172703,133712,36787,18730,166366,165181,146875,24312,143970,36857,172052,165564,165121,140069,14720,159447,36919,165180,162494,36961,165228,165387,37032,165651,37060,165606,37038,37117,37223,15088,37289,37316,31916,166195,138889,37390,27807,37441,37474,153017,37561,166598,146587,166668,153051,134449,37676,37739,166625,166891,28815,23235,166626,166629,18789,37444,166892,166969,166911,37747,37979,36540,38277,38310,37926,38304,28662,17081,140922,165592,135804,146990,18911,27676,38523,38550,16748,38563,159445,25050,38582,30965,166624,38589,21452,18849,158904,131700,156688,168111,168165,150225,137493,144138,38705,34370,38710,18959,17725,17797,150249,28789,23361,38683,38748,168405,38743,23370,168427,38751,37925,20688,143543,143548,38793,38815,38833,38846,38848,38866,38880,152684,38894,29724,169011,38911,38901,168989,162170,19153,38964,38963,38987,39014,15118,160117,15697,132656,147804,153350,39114,39095,39112,39111,19199,159015,136915,21936,39137,39142,39148,37752,39225,150057,19314,170071,170245,39413,39436,39483,39440,39512,153381,14020,168113,170965,39648,39650,170757,39668,19470,39700,39725,165376,20532,39732,158120,14531,143485,39760,39744,171326,23109,137315,39822,148043,39938,39935,39948,171624,40404,171959,172434,172459,172257,172323,172511,40318,40323,172340,40462,26760,40388,139611,172435,172576,137531,172595,40249,172217,172724,40592,40597,40606,40610,19764,40618,40623,148324,40641,15200,14821,15645,20274,14270,166955,40706,40712,19350,37924,159138,40727,40726,40761,22175,22154,40773,39352,168075,38898,33919,40802,40809,31452,40846,29206,19390,149877,149947,29047,150008,148296,150097,29598,166874,137466,31135,166270,167478,37737,37875,166468,37612,37761,37835,166252,148665,29207,16107,30578,31299,28880,148595,148472,29054,137199,28835,137406,144793,16071,137349,152623,137208,14114,136955,137273,14049,137076,137425,155467,14115,136896,22363,150053,136190,135848,136134,136374,34051,145062,34051,33877,149908,160101,146993,152924,147195,159826,17652,145134,170397,159526,26617,14131,15381,15847,22636,137506,26640,16471,145215,147681,147595,147727,158753,21707,22174,157361,22162,135135,134056,134669,37830,166675,37788,20216,20779,14361,148534,20156,132197,131967,20299,20362,153169,23144,131499,132043,14745,131850,132116,13365,20265,131776,167603,131701,35546,131596,20120,20685,20749,20386,20227,150030,147082,20290,20526,20588,20609,20428,20453,20568,20732,20825,20827,20829,20830,28278,144789,147001,147135,28018,137348,147081,20904,20931,132576,17629,132259,132242,132241,36218,166556,132878,21081,21156,133235,21217,37742,18042,29068,148364,134176,149932,135396,27089,134685,29817,16094,29849,29716,29782,29592,19342,150204,147597,21456,13700,29199,147657,21940,131909,21709,134086,22301,37469,38644,37734,22493,22413,22399,13886,22731,23193,166470,136954,137071,136976,23084,22968,37519,23166,23247,23058,153926,137715,137313,148117,14069,27909,29763,23073,155267,23169,166871,132115,37856,29836,135939,28933,18802,37896,166395,37821,14240,23582,23710,24158,24136,137622,137596,146158,24269,23375,137475,137476,14081,137376,14045,136958,14035,33066,166471,138682,144498,166312,24332,24334,137511,137131,23147,137019,23364,34324,161277,34912,24702,141408,140843,24539,16056,140719,140734,168072,159603,25024,131134,131142,140827,24985,24984,24693,142491,142599,149204,168269,25713,149093,142186,14889,142114,144464,170218,142968,25399,173147,25782,25393,25553,149987,142695,25252,142497,25659,25963,26994,15348,143502,144045,149897,144043,21773,144096,137433,169023,26318,144009,143795,15072,16784,152964,166690,152975,136956,152923,152613,30958,143619,137258,143924,13412,143887,143746,148169,26254,159012,26219,19347,26160,161904,138731,26211,144082,144097,26142,153714,14545,145466,145340,15257,145314,144382,29904,15254,26511,149034,26806,26654,15300,27326,14435,145365,148615,27187,27218,27337,27397,137490,25873,26776,27212,15319,27258,27479,147392,146586,37792,37618,166890,166603,37513,163870,166364,37991,28069,28427,149996,28007,147327,15759,28164,147516,23101,28170,22599,27940,30786,28987,148250,148086,28913,29264,29319,29332,149391,149285,20857,150180,132587,29818,147192,144991,150090,149783,155617,16134,16049,150239,166947,147253,24743,16115,29900,29756,37767,29751,17567,159210,17745,30083,16227,150745,150790,16216,30037,30323,173510,15129,29800,166604,149931,149902,15099,15821,150094,16127,149957,149747,37370,22322,37698,166627,137316,20703,152097,152039,30584,143922,30478,30479,30587,149143,145281,14942,149744,29752,29851,16063,150202,150215,16584,150166,156078,37639,152961,30750,30861,30856,30930,29648,31065,161601,153315,16654,31131,33942,31141,27181,147194,31290,31220,16750,136934,16690,37429,31217,134476,149900,131737,146874,137070,13719,21867,13680,13994,131540,134157,31458,23129,141045,154287,154268,23053,131675,30960,23082,154566,31486,16889,31837,31853,16913,154547,155324,155302,31949,150009,137136,31886,31868,31918,27314,32220,32263,32211,32590,156257,155996,162632,32151,155266,17002,158581,133398,26582,131150,144847,22468,156690,156664,149858,32733,31527,133164,154345,154947,31500,155150,39398,34373,39523,27164,144447,14818,150007,157101,39455,157088,33920,160039,158929,17642,33079,17410,32966,33033,33090,157620,39107,158274,33378,33381,158289,33875,159143,34320,160283,23174,16767,137280,23339,137377,23268,137432,34464,195004,146831,34861,160802,23042,34926,20293,34951,35007,35046,35173,35149,153219,35156,161669,161668,166901,166873,166812,166393,16045,33955,18165,18127,14322,35389,35356,169032,24397,37419,148100,26068,28969,28868,137285,40301,35999,36073,163292,22938,30659,23024,17262,14036,36394,36519,150537,36656,36682,17140,27736,28603,140065,18587,28537,28299,137178,39913,14005,149807,37051,37015,21873,18694,37307,37892,166475,16482,166652,37927,166941,166971,34021,35371,38297,38311,38295,38294,167220,29765,16066,149759,150082,148458,16103,143909,38543,167655,167526,167525,16076,149997,150136,147438,29714,29803,16124,38721,168112,26695,18973,168083,153567,38749,37736,166281,166950,166703,156606,37562,23313,35689,18748,29689,147995,38811,38769,39224,134950,24001,166853,150194,38943,169178,37622,169431,37349,17600,166736,150119,166756,39132,166469,16128,37418,18725,33812,39227,39245,162566,15869,39323,19311,39338,39516,166757,153800,27279,39457,23294,39471,170225,19344,170312,39356,19389,19351,37757,22642,135938,22562,149944,136424,30788,141087,146872,26821,15741,37976,14631,24912,141185,141675,24839,40015,40019,40059,39989,39952,39807,39887,171565,39839,172533,172286,40225,19630,147716,40472,19632,40204,172468,172269,172275,170287,40357,33981,159250,159711,158594,34300,17715,159140,159364,159216,33824,34286,159232,145367,155748,31202,144796,144960,18733,149982,15714,37851,37566,37704,131775,30905,37495,37965,20452,13376,36964,152925,30781,30804,30902,30795,137047,143817,149825,13978,20338,28634,28633,28702,28702,21524,147893,22459,22771,22410,40214,22487,28980,13487,147884,29163,158784,151447,23336,137141,166473,24844,23246,23051,17084,148616,14124,19323,166396,37819,37816,137430,134941,33906,158912,136211,148218,142374,148417,22932,146871,157505,32168,155995,155812,149945,149899,166394,37605,29666,16105,29876,166755,137375,16097,150195,27352,29683,29691,16086,150078,150164,137177,150118,132007,136228,149989,29768,149782,28837,149878,37508,29670,37727,132350,37681,166606,166422,37766,166887,153045,18741,166530,29035,149827,134399,22180,132634,134123,134328,21762,31172,137210,32254,136898,150096,137298,17710,37889,14090,166592,149933,22960,137407,137347,160900,23201,14050,146779,14000,37471,23161,166529,137314,37748,15565,133812,19094,14730,20724,15721,15692,136092,29045,17147,164376,28175,168164,17643,27991,163407,28775,27823,15574,147437,146989,28162,28428,15727,132085,30033,14012,13512,18048,16090,18545,22980,37486,18750,36673,166940,158656,22546,22472,14038,136274,28926,148322,150129,143331,135856,140221,26809,26983,136088,144613,162804,145119,166531,145366,144378,150687,27162,145069,158903,33854,17631,17614,159014,159057,158850,159710,28439,160009,33597,137018,33773,158848,159827,137179,22921,23170,137139,23137,23153,137477,147964,14125,23023,137020,14023,29070,37776,26266,148133,23150,23083,148115,27179,147193,161590,148571,148170,28957,148057,166369,20400,159016,23746,148686,163405,148413,27148,148054,135940,28838,28979,148457,15781,27871,194597,150095,32357,23019,23855,15859,24412,150109,137183,32164,33830,21637,146170,144128,131604,22398,133333,132633,16357,139166,172726,28675,168283,23920,29583,31955,166489,168992,20424,32743,29389,29456,162548,29496,29497,153334,29505,29512,16041,162584,36972,29173,149746,29665,33270,16074,30476,16081,27810,22269,29721,29726,29727,16098,16112,16116,16122,29907,16142,16211,30018,30061,30066,30093,16252,30152,30172,16320,30285,16343,30324,16348,30330,151388,29064,22051,35200,22633,16413,30531,16441,26465,16453,13787,30616,16490,16495,23646,30654,30667,22770,30744,28857,30748,16552,30777,30791,30801,30822,33864,152885,31027,26627,31026,16643,16649,31121,31129,36795,31238,36796,16743,31377,16818,31420,33401,16836,31439,31451,16847,20001,31586,31596,31611,31762,31771,16992,17018,31867,31900,17036,31928,17044,31981,36755,28864,134351,32207,32212,32208,32253,32686,32692,29343,17303,32800,32805,31545,32814,32817,32852,15820,22452,28832,32951,33001,17389,33036,29482,33038,33042,30048,33044,17409,15161,33110,33113,33114,17427,22586,33148,33156,17445,33171,17453,33189,22511,33217,33252,33364,17551,33446,33398,33482,33496,33535,17584,33623,38505,27018,33797,28917,33892,24803,33928,17668,33982,34017,34040,34064,34104,34130,17723,34159,34160,34272,17783,34418,34450,34482,34543,38469,34699,17926,17943,34990,35071,35108,35143,35217,162151,35369,35384,35476,35508,35921,36052,36082,36124,18328,22623,36291,18413,20206,36410,21976,22356,36465,22005,36528,18487,36558,36578,36580,36589,36594,36791,36801,36810,36812,36915,39364,18605,39136,37395,18718,37416,37464,37483,37553,37550,37567,37603,37611,37619,37620,37629,37699,37764,37805,18757,18769,40639,37911,21249,37917,37933,37950,18794,37972,38009,38189,38306,18855,38388,38451,18917,26528,18980,38720,18997,38834,38850,22100,19172,24808,39097,19225,39153,22596,39182,39193,20916,39196,39223,39234,39261,39266,19312,39365,19357,39484,39695,31363,39785,39809,39901,39921,39924,19565,39968,14191,138178,40265,39994,40702,22096,40339,40381,40384,40444,38134,36790,40571,40620,40625,40637,40646,38108,40674,40689,40696,31432,40772,131220,131767,132000,26906,38083,22956,132311,22592,38081,14265,132565,132629,132726,136890,22359,29043,133826,133837,134079,21610,194619,134091,21662,134139,134203,134227,134245,134268,24807,134285,22138,134325,134365,134381,134511,134578,134600,26965,39983,34725,134660,134670,134871,135056,134957,134771,23584,135100,24075,135260,135247,135286,26398,135291,135304,135318,13895,135359,135379,135471,135483,21348,33965,135907,136053,135990,35713,136567,136729,137155,137159,20088,28859,137261,137578,137773,137797,138282,138352,138412,138952,25283,138965,139029,29080,26709,139333,27113,14024,139900,140247,140282,141098,141425,141647,33533,141671,141715,142037,35237,142056,36768,142094,38840,142143,38983,39613,142412,null,142472,142519,154600,142600,142610,142775,142741,142914,143220,143308,143411,143462,144159,144350,24497,26184,26303,162425,144743,144883,29185,149946,30679,144922,145174,32391,131910,22709,26382,26904,146087,161367,155618,146961,147129,161278,139418,18640,19128,147737,166554,148206,148237,147515,148276,148374,150085,132554,20946,132625,22943,138920,15294,146687,148484,148694,22408,149108,14747,149295,165352,170441,14178,139715,35678,166734,39382,149522,149755,150037,29193,150208,134264,22885,151205,151430,132985,36570,151596,21135,22335,29041,152217,152601,147274,150183,21948,152646,152686,158546,37332,13427,152895,161330,152926,18200,152930,152934,153543,149823,153693,20582,13563,144332,24798,153859,18300,166216,154286,154505,154630,138640,22433,29009,28598,155906,162834,36950,156082,151450,35682,156674,156746,23899,158711,36662,156804,137500,35562,150006,156808,147439,156946,19392,157119,157365,141083,37989,153569,24981,23079,194765,20411,22201,148769,157436,20074,149812,38486,28047,158909,13848,35191,157593,157806,156689,157790,29151,157895,31554,168128,133649,157990,37124,158009,31301,40432,158202,39462,158253,13919,156777,131105,31107,158260,158555,23852,144665,33743,158621,18128,158884,30011,34917,159150,22710,14108,140685,159819,160205,15444,160384,160389,37505,139642,160395,37680,160486,149968,27705,38047,160848,134904,34855,35061,141606,164979,137137,28344,150058,137248,14756,14009,23568,31203,17727,26294,171181,170148,35139,161740,161880,22230,16607,136714,14753,145199,164072,136133,29101,33638,162269,168360,23143,19639,159919,166315,162301,162314,162571,163174,147834,31555,31102,163849,28597,172767,27139,164632,21410,159239,37823,26678,38749,164207,163875,158133,136173,143919,163912,23941,166960,163971,22293,38947,166217,23979,149896,26046,27093,21458,150181,147329,15377,26422,163984,164084,164142,139169,164175,164233,164271,164378,164614,164655,164746,13770,164968,165546,18682,25574,166230,30728,37461,166328,17394,166375,17375,166376,166726,166868,23032,166921,36619,167877,168172,31569,168208,168252,15863,168286,150218,36816,29327,22155,169191,169449,169392,169400,169778,170193,170313,170346,170435,170536,170766,171354,171419,32415,171768,171811,19620,38215,172691,29090,172799,19857,36882,173515,19868,134300,36798,21953,36794,140464,36793,150163,17673,32383,28502,27313,20202,13540,166700,161949,14138,36480,137205,163876,166764,166809,162366,157359,15851,161365,146615,153141,153942,20122,155265,156248,22207,134765,36366,23405,147080,150686,25566,25296,137206,137339,25904,22061,154698,21530,152337,15814,171416,19581,22050,22046,32585,155352,22901,146752,34672,19996,135146,134473,145082,33047,40286,36120,30267,40005,30286,30649,37701,21554,33096,33527,22053,33074,33816,32957,21994,31074,22083,21526,134813,13774,22021,22001,26353,164578,13869,30004,22000,21946,21655,21874,134209,134294,24272,151880,134774,142434,134818,40619,32090,21982,135285,25245,38765,21652,36045,29174,37238,25596,25529,25598,21865,142147,40050,143027,20890,13535,134567,20903,21581,21790,21779,30310,36397,157834,30129,32950,34820,34694,35015,33206,33820,135361,17644,29444,149254,23440,33547,157843,22139,141044,163119,147875,163187,159440,160438,37232,135641,37384,146684,173737,134828,134905,29286,138402,18254,151490,163833,135147,16634,40029,25887,142752,18675,149472,171388,135148,134666,24674,161187,135149,null,155720,135559,29091,32398,40272,19994,19972,13687,23309,27826,21351,13996,14812,21373,13989,149016,22682,150382,33325,21579,22442,154261,133497,null,14930,140389,29556,171692,19721,39917,146686,171824,19547,151465,169374,171998,33884,146870,160434,157619,145184,25390,32037,147191,146988,14890,36872,21196,15988,13946,17897,132238,30272,23280,134838,30842,163630,22695,16575,22140,39819,23924,30292,173108,40581,19681,30201,14331,24857,143578,148466,null,22109,135849,22439,149859,171526,21044,159918,13741,27722,40316,31830,39737,22494,137068,23635,25811,169168,156469,160100,34477,134440,159010,150242,134513,null,20990,139023,23950,38659,138705,40577,36940,31519,39682,23761,31651,25192,25397,39679,31695,39722,31870,39726,31810,31878,39957,31740,39689,40727,39963,149822,40794,21875,23491,20477,40600,20466,21088,15878,21201,22375,20566,22967,24082,38856,40363,36700,21609,38836,39232,38842,21292,24880,26924,21466,39946,40194,19515,38465,27008,20646,30022,137069,39386,21107,null,37209,38529,37212,null,37201,167575,25471,159011,27338,22033,37262,30074,25221,132092,29519,31856,154657,146685,null,149785,30422,39837,20010,134356,33726,34882,null,23626,27072,20717,22394,21023,24053,20174,27697,131570,20281,21660,21722,21146,36226,13822,24332,13811,null,27474,37244,40869,39831,38958,39092,39610,40616,40580,29050,31508,null,27642,34840,32632,null,22048,173642,36471,40787,null,36308,36431,40476,36353,25218,164733,36392,36469,31443,150135,31294,30936,27882,35431,30215,166490,40742,27854,34774,30147,172722,30803,194624,36108,29410,29553,35629,29442,29937,36075,150203,34351,24506,34976,17591,null,137275,159237,null,35454,140571,null,24829,30311,39639,40260,37742,39823,34805,null,34831,36087,29484,38689,39856,13782,29362,19463,31825,39242,155993,24921,19460,40598,24957,null,22367,24943,25254,25145,25294,14940,25058,21418,144373,25444,26626,13778,23895,166850,36826,167481,null,20697,138566,30982,21298,38456,134971,16485,null,30718,null,31938,155418,31962,31277,32870,32867,32077,29957,29938,35220,33306,26380,32866,160902,32859,29936,33027,30500,35209,157644,30035,159441,34729,34766,33224,34700,35401,36013,35651,30507,29944,34010,13877,27058,36262,null,35241,29800,28089,34753,147473,29927,15835,29046,24740,24988,15569,29026,24695,null,32625,166701,29264,24809,19326,21024,15384,146631,155351,161366,152881,137540,135934,170243,159196,159917,23745,156077,166415,145015,131310,157766,151310,17762,23327,156492,40784,40614,156267,12288,65292,12289,12290,65294,8231,65307,65306,65311,65281,65072,8230,8229,65104,65105,65106,183,65108,65109,65110,65111,65372,8211,65073,8212,65075,9588,65076,65103,65288,65289,65077,65078,65371,65373,65079,65080,12308,12309,65081,65082,12304,12305,65083,65084,12298,12299,65085,65086,12296,12297,65087,65088,12300,12301,65089,65090,12302,12303,65091,65092,65113,65114,65115,65116,65117,65118,8216,8217,8220,8221,12317,12318,8245,8242,65283,65286,65290,8251,167,12291,9675,9679,9651,9650,9678,9734,9733,9671,9670,9633,9632,9661,9660,12963,8453,175,65507,65343,717,65097,65098,65101,65102,65099,65100,65119,65120,65121,65291,65293,215,247,177,8730,65308,65310,65309,8806,8807,8800,8734,8786,8801,65122,65123,65124,65125,65126,65374,8745,8746,8869,8736,8735,8895,13266,13265,8747,8750,8757,8756,9792,9794,8853,8857,8593,8595,8592,8594,8598,8599,8601,8600,8741,8739,65295,65340,8725,65128,65284,65509,12306,65504,65505,65285,65312,8451,8457,65129,65130,65131,13269,13212,13213,13214,13262,13217,13198,13199,13252,176,20825,20827,20830,20829,20833,20835,21991,29929,31950,9601,9602,9603,9604,9605,9606,9607,9608,9615,9614,9613,9612,9611,9610,9609,9532,9524,9516,9508,9500,9620,9472,9474,9621,9484,9488,9492,9496,9581,9582,9584,9583,9552,9566,9578,9569,9698,9699,9701,9700,9585,9586,9587,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,12321,12322,12323,12324,12325,12326,12327,12328,12329,21313,21316,21317,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,729,713,714,711,715,9216,9217,9218,9219,9220,9221,9222,9223,9224,9225,9226,9227,9228,9229,9230,9231,9232,9233,9234,9235,9236,9237,9238,9239,9240,9241,9242,9243,9244,9245,9246,9247,9249,8364,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,19968,20057,19969,19971,20035,20061,20102,20108,20154,20799,20837,20843,20960,20992,20993,21147,21269,21313,21340,21448,19977,19979,19976,19978,20011,20024,20961,20037,20040,20063,20062,20110,20129,20800,20995,21242,21315,21449,21475,22303,22763,22805,22823,22899,23376,23377,23379,23544,23567,23586,23608,23665,24029,24037,24049,24050,24051,24062,24178,24318,24331,24339,25165,19985,19984,19981,20013,20016,20025,20043,23609,20104,20113,20117,20114,20116,20130,20161,20160,20163,20166,20167,20173,20170,20171,20164,20803,20801,20839,20845,20846,20844,20887,20982,20998,20999,21000,21243,21246,21247,21270,21305,21320,21319,21317,21342,21380,21451,21450,21453,22764,22825,22827,22826,22829,23380,23569,23588,23610,23663,24052,24187,24319,24340,24341,24515,25096,25142,25163,25166,25903,25991,26007,26020,26041,26085,26352,26376,26408,27424,27490,27513,27595,27604,27611,27663,27700,28779,29226,29238,29243,29255,29273,29275,29356,29579,19993,19990,19989,19988,19992,20027,20045,20047,20046,20197,20184,20180,20181,20182,20183,20195,20196,20185,20190,20805,20804,20873,20874,20908,20985,20986,20984,21002,21152,21151,21253,21254,21271,21277,20191,21322,21321,21345,21344,21359,21358,21435,21487,21476,21491,21484,21486,21481,21480,21500,21496,21493,21483,21478,21482,21490,21489,21488,21477,21485,21499,22235,22234,22806,22830,22833,22900,22902,23381,23427,23612,24040,24039,24038,24066,24067,24179,24188,24321,24344,24343,24517,25098,25171,25172,25170,25169,26021,26086,26414,26412,26410,26411,26413,27491,27597,27665,27664,27704,27713,27712,27710,29359,29572,29577,29916,29926,29976,29983,29992,29993,30000,30001,30002,30003,30091,30333,30382,30399,30446,30683,30690,30707,31034,31166,31348,31435,19998,19999,20050,20051,20073,20121,20132,20134,20133,20223,20233,20249,20234,20245,20237,20240,20241,20239,20210,20214,20219,20208,20211,20221,20225,20235,20809,20807,20806,20808,20840,20849,20877,20912,21015,21009,21010,21006,21014,21155,21256,21281,21280,21360,21361,21513,21519,21516,21514,21520,21505,21515,21508,21521,21517,21512,21507,21518,21510,21522,22240,22238,22237,22323,22320,22312,22317,22316,22319,22313,22809,22810,22839,22840,22916,22904,22915,22909,22905,22914,22913,23383,23384,23431,23432,23429,23433,23546,23574,23673,24030,24070,24182,24180,24335,24347,24537,24534,25102,25100,25101,25104,25187,25179,25176,25910,26089,26088,26092,26093,26354,26355,26377,26429,26420,26417,26421,27425,27492,27515,27670,27741,27735,27737,27743,27744,27728,27733,27745,27739,27725,27726,28784,29279,29277,30334,31481,31859,31992,32566,32650,32701,32769,32771,32780,32786,32819,32895,32905,32907,32908,33251,33258,33267,33276,33292,33307,33311,33390,33394,33406,34411,34880,34892,34915,35199,38433,20018,20136,20301,20303,20295,20311,20318,20276,20315,20309,20272,20304,20305,20285,20282,20280,20291,20308,20284,20294,20323,20316,20320,20271,20302,20278,20313,20317,20296,20314,20812,20811,20813,20853,20918,20919,21029,21028,21033,21034,21032,21163,21161,21162,21164,21283,21363,21365,21533,21549,21534,21566,21542,21582,21543,21574,21571,21555,21576,21570,21531,21545,21578,21561,21563,21560,21550,21557,21558,21536,21564,21568,21553,21547,21535,21548,22250,22256,22244,22251,22346,22353,22336,22349,22343,22350,22334,22352,22351,22331,22767,22846,22941,22930,22952,22942,22947,22937,22934,22925,22948,22931,22922,22949,23389,23388,23386,23387,23436,23435,23439,23596,23616,23617,23615,23614,23696,23697,23700,23692,24043,24076,24207,24199,24202,24311,24324,24351,24420,24418,24439,24441,24536,24524,24535,24525,24561,24555,24568,24554,25106,25105,25220,25239,25238,25216,25206,25225,25197,25226,25212,25214,25209,25203,25234,25199,25240,25198,25237,25235,25233,25222,25913,25915,25912,26097,26356,26463,26446,26447,26448,26449,26460,26454,26462,26441,26438,26464,26451,26455,27493,27599,27714,27742,27801,27777,27784,27785,27781,27803,27754,27770,27792,27760,27788,27752,27798,27794,27773,27779,27762,27774,27764,27782,27766,27789,27796,27800,27778,28790,28796,28797,28792,29282,29281,29280,29380,29378,29590,29996,29995,30007,30008,30338,30447,30691,31169,31168,31167,31350,31995,32597,32918,32915,32925,32920,32923,32922,32946,33391,33426,33419,33421,35211,35282,35328,35895,35910,35925,35997,36196,36208,36275,36523,36554,36763,36784,36802,36806,36805,36804,24033,37009,37026,37034,37030,37027,37193,37318,37324,38450,38446,38449,38442,38444,20006,20054,20083,20107,20123,20126,20139,20140,20335,20381,20365,20339,20351,20332,20379,20363,20358,20355,20336,20341,20360,20329,20347,20374,20350,20367,20369,20346,20820,20818,20821,20841,20855,20854,20856,20925,20989,21051,21048,21047,21050,21040,21038,21046,21057,21182,21179,21330,21332,21331,21329,21350,21367,21368,21369,21462,21460,21463,21619,21621,21654,21624,21653,21632,21627,21623,21636,21650,21638,21628,21648,21617,21622,21644,21658,21602,21608,21643,21629,21646,22266,22403,22391,22378,22377,22369,22374,22372,22396,22812,22857,22855,22856,22852,22868,22974,22971,22996,22969,22958,22993,22982,22992,22989,22987,22995,22986,22959,22963,22994,22981,23391,23396,23395,23447,23450,23448,23452,23449,23451,23578,23624,23621,23622,23735,23713,23736,23721,23723,23729,23731,24088,24090,24086,24085,24091,24081,24184,24218,24215,24220,24213,24214,24310,24358,24359,24361,24448,24449,24447,24444,24541,24544,24573,24565,24575,24591,24596,24623,24629,24598,24618,24597,24609,24615,24617,24619,24603,25110,25109,25151,25150,25152,25215,25289,25292,25284,25279,25282,25273,25298,25307,25259,25299,25300,25291,25288,25256,25277,25276,25296,25305,25287,25293,25269,25306,25265,25304,25302,25303,25286,25260,25294,25918,26023,26044,26106,26132,26131,26124,26118,26114,26126,26112,26127,26133,26122,26119,26381,26379,26477,26507,26517,26481,26524,26483,26487,26503,26525,26519,26479,26480,26495,26505,26494,26512,26485,26522,26515,26492,26474,26482,27427,27494,27495,27519,27667,27675,27875,27880,27891,27825,27852,27877,27827,27837,27838,27836,27874,27819,27861,27859,27832,27844,27833,27841,27822,27863,27845,27889,27839,27835,27873,27867,27850,27820,27887,27868,27862,27872,28821,28814,28818,28810,28825,29228,29229,29240,29256,29287,29289,29376,29390,29401,29399,29392,29609,29608,29599,29611,29605,30013,30109,30105,30106,30340,30402,30450,30452,30693,30717,31038,31040,31041,31177,31176,31354,31353,31482,31998,32596,32652,32651,32773,32954,32933,32930,32945,32929,32939,32937,32948,32938,32943,33253,33278,33293,33459,33437,33433,33453,33469,33439,33465,33457,33452,33445,33455,33464,33443,33456,33470,33463,34382,34417,21021,34920,36555,36814,36820,36817,37045,37048,37041,37046,37319,37329,38263,38272,38428,38464,38463,38459,38468,38466,38585,38632,38738,38750,20127,20141,20142,20449,20405,20399,20415,20448,20433,20431,20445,20419,20406,20440,20447,20426,20439,20398,20432,20420,20418,20442,20430,20446,20407,20823,20882,20881,20896,21070,21059,21066,21069,21068,21067,21063,21191,21193,21187,21185,21261,21335,21371,21402,21467,21676,21696,21672,21710,21705,21688,21670,21683,21703,21698,21693,21674,21697,21700,21704,21679,21675,21681,21691,21673,21671,21695,22271,22402,22411,22432,22435,22434,22478,22446,22419,22869,22865,22863,22862,22864,23004,23000,23039,23011,23016,23043,23013,23018,23002,23014,23041,23035,23401,23459,23462,23460,23458,23461,23553,23630,23631,23629,23627,23769,23762,24055,24093,24101,24095,24189,24224,24230,24314,24328,24365,24421,24456,24453,24458,24459,24455,24460,24457,24594,24605,24608,24613,24590,24616,24653,24688,24680,24674,24646,24643,24684,24683,24682,24676,25153,25308,25366,25353,25340,25325,25345,25326,25341,25351,25329,25335,25327,25324,25342,25332,25361,25346,25919,25925,26027,26045,26082,26149,26157,26144,26151,26159,26143,26152,26161,26148,26359,26623,26579,26609,26580,26576,26604,26550,26543,26613,26601,26607,26564,26577,26548,26586,26597,26552,26575,26590,26611,26544,26585,26594,26589,26578,27498,27523,27526,27573,27602,27607,27679,27849,27915,27954,27946,27969,27941,27916,27953,27934,27927,27963,27965,27966,27958,27931,27893,27961,27943,27960,27945,27950,27957,27918,27947,28843,28858,28851,28844,28847,28845,28856,28846,28836,29232,29298,29295,29300,29417,29408,29409,29623,29642,29627,29618,29645,29632,29619,29978,29997,30031,30028,30030,30027,30123,30116,30117,30114,30115,30328,30342,30343,30344,30408,30406,30403,30405,30465,30457,30456,30473,30475,30462,30460,30471,30684,30722,30740,30732,30733,31046,31049,31048,31047,31161,31162,31185,31186,31179,31359,31361,31487,31485,31869,32002,32005,32000,32009,32007,32004,32006,32568,32654,32703,32772,32784,32781,32785,32822,32982,32997,32986,32963,32964,32972,32993,32987,32974,32990,32996,32989,33268,33314,33511,33539,33541,33507,33499,33510,33540,33509,33538,33545,33490,33495,33521,33537,33500,33492,33489,33502,33491,33503,33519,33542,34384,34425,34427,34426,34893,34923,35201,35284,35336,35330,35331,35998,36000,36212,36211,36276,36557,36556,36848,36838,36834,36842,36837,36845,36843,36836,36840,37066,37070,37057,37059,37195,37194,37325,38274,38480,38475,38476,38477,38754,38761,38859,38893,38899,38913,39080,39131,39135,39318,39321,20056,20147,20492,20493,20515,20463,20518,20517,20472,20521,20502,20486,20540,20511,20506,20498,20497,20474,20480,20500,20520,20465,20513,20491,20505,20504,20467,20462,20525,20522,20478,20523,20489,20860,20900,20901,20898,20941,20940,20934,20939,21078,21084,21076,21083,21085,21290,21375,21407,21405,21471,21736,21776,21761,21815,21756,21733,21746,21766,21754,21780,21737,21741,21729,21769,21742,21738,21734,21799,21767,21757,21775,22275,22276,22466,22484,22475,22467,22537,22799,22871,22872,22874,23057,23064,23068,23071,23067,23059,23020,23072,23075,23081,23077,23052,23049,23403,23640,23472,23475,23478,23476,23470,23477,23481,23480,23556,23633,23637,23632,23789,23805,23803,23786,23784,23792,23798,23809,23796,24046,24109,24107,24235,24237,24231,24369,24466,24465,24464,24665,24675,24677,24656,24661,24685,24681,24687,24708,24735,24730,24717,24724,24716,24709,24726,25159,25331,25352,25343,25422,25406,25391,25429,25410,25414,25423,25417,25402,25424,25405,25386,25387,25384,25421,25420,25928,25929,26009,26049,26053,26178,26185,26191,26179,26194,26188,26181,26177,26360,26388,26389,26391,26657,26680,26696,26694,26707,26681,26690,26708,26665,26803,26647,26700,26705,26685,26612,26704,26688,26684,26691,26666,26693,26643,26648,26689,27530,27529,27575,27683,27687,27688,27686,27684,27888,28010,28053,28040,28039,28006,28024,28023,27993,28051,28012,28041,28014,27994,28020,28009,28044,28042,28025,28037,28005,28052,28874,28888,28900,28889,28872,28879,29241,29305,29436,29433,29437,29432,29431,29574,29677,29705,29678,29664,29674,29662,30036,30045,30044,30042,30041,30142,30149,30151,30130,30131,30141,30140,30137,30146,30136,30347,30384,30410,30413,30414,30505,30495,30496,30504,30697,30768,30759,30776,30749,30772,30775,30757,30765,30752,30751,30770,31061,31056,31072,31071,31062,31070,31069,31063,31066,31204,31203,31207,31199,31206,31209,31192,31364,31368,31449,31494,31505,31881,32033,32023,32011,32010,32032,32034,32020,32016,32021,32026,32028,32013,32025,32027,32570,32607,32660,32709,32705,32774,32792,32789,32793,32791,32829,32831,33009,33026,33008,33029,33005,33012,33030,33016,33011,33032,33021,33034,33020,33007,33261,33260,33280,33296,33322,33323,33320,33324,33467,33579,33618,33620,33610,33592,33616,33609,33589,33588,33615,33586,33593,33590,33559,33600,33585,33576,33603,34388,34442,34474,34451,34468,34473,34444,34467,34460,34928,34935,34945,34946,34941,34937,35352,35344,35342,35340,35349,35338,35351,35347,35350,35343,35345,35912,35962,35961,36001,36002,36215,36524,36562,36564,36559,36785,36865,36870,36855,36864,36858,36852,36867,36861,36869,36856,37013,37089,37085,37090,37202,37197,37196,37336,37341,37335,37340,37337,38275,38498,38499,38497,38491,38493,38500,38488,38494,38587,39138,39340,39592,39640,39717,39730,39740,20094,20602,20605,20572,20551,20547,20556,20570,20553,20581,20598,20558,20565,20597,20596,20599,20559,20495,20591,20589,20828,20885,20976,21098,21103,21202,21209,21208,21205,21264,21263,21273,21311,21312,21310,21443,26364,21830,21866,21862,21828,21854,21857,21827,21834,21809,21846,21839,21845,21807,21860,21816,21806,21852,21804,21859,21811,21825,21847,22280,22283,22281,22495,22533,22538,22534,22496,22500,22522,22530,22581,22519,22521,22816,22882,23094,23105,23113,23142,23146,23104,23100,23138,23130,23110,23114,23408,23495,23493,23492,23490,23487,23494,23561,23560,23559,23648,23644,23645,23815,23814,23822,23835,23830,23842,23825,23849,23828,23833,23844,23847,23831,24034,24120,24118,24115,24119,24247,24248,24246,24245,24254,24373,24375,24407,24428,24425,24427,24471,24473,24478,24472,24481,24480,24476,24703,24739,24713,24736,24744,24779,24756,24806,24765,24773,24763,24757,24796,24764,24792,24789,24774,24799,24760,24794,24775,25114,25115,25160,25504,25511,25458,25494,25506,25509,25463,25447,25496,25514,25457,25513,25481,25475,25499,25451,25512,25476,25480,25497,25505,25516,25490,25487,25472,25467,25449,25448,25466,25949,25942,25937,25945,25943,21855,25935,25944,25941,25940,26012,26011,26028,26063,26059,26060,26062,26205,26202,26212,26216,26214,26206,26361,21207,26395,26753,26799,26786,26771,26805,26751,26742,26801,26791,26775,26800,26755,26820,26797,26758,26757,26772,26781,26792,26783,26785,26754,27442,27578,27627,27628,27691,28046,28092,28147,28121,28082,28129,28108,28132,28155,28154,28165,28103,28107,28079,28113,28078,28126,28153,28088,28151,28149,28101,28114,28186,28085,28122,28139,28120,28138,28145,28142,28136,28102,28100,28074,28140,28095,28134,28921,28937,28938,28925,28911,29245,29309,29313,29468,29467,29462,29459,29465,29575,29701,29706,29699,29702,29694,29709,29920,29942,29943,29980,29986,30053,30054,30050,30064,30095,30164,30165,30133,30154,30157,30350,30420,30418,30427,30519,30526,30524,30518,30520,30522,30827,30787,30798,31077,31080,31085,31227,31378,31381,31520,31528,31515,31532,31526,31513,31518,31534,31890,31895,31893,32070,32067,32113,32046,32057,32060,32064,32048,32051,32068,32047,32066,32050,32049,32573,32670,32666,32716,32718,32722,32796,32842,32838,33071,33046,33059,33067,33065,33072,33060,33282,33333,33335,33334,33337,33678,33694,33688,33656,33698,33686,33725,33707,33682,33674,33683,33673,33696,33655,33659,33660,33670,33703,34389,24426,34503,34496,34486,34500,34485,34502,34507,34481,34479,34505,34899,34974,34952,34987,34962,34966,34957,34955,35219,35215,35370,35357,35363,35365,35377,35373,35359,35355,35362,35913,35930,36009,36012,36011,36008,36010,36007,36199,36198,36286,36282,36571,36575,36889,36877,36890,36887,36899,36895,36893,36880,36885,36894,36896,36879,36898,36886,36891,36884,37096,37101,37117,37207,37326,37365,37350,37347,37351,37357,37353,38281,38506,38517,38515,38520,38512,38516,38518,38519,38508,38592,38634,38633,31456,31455,38914,38915,39770,40165,40565,40575,40613,40635,20642,20621,20613,20633,20625,20608,20630,20632,20634,26368,20977,21106,21108,21109,21097,21214,21213,21211,21338,21413,21883,21888,21927,21884,21898,21917,21912,21890,21916,21930,21908,21895,21899,21891,21939,21934,21919,21822,21938,21914,21947,21932,21937,21886,21897,21931,21913,22285,22575,22570,22580,22564,22576,22577,22561,22557,22560,22777,22778,22880,23159,23194,23167,23186,23195,23207,23411,23409,23506,23500,23507,23504,23562,23563,23601,23884,23888,23860,23879,24061,24133,24125,24128,24131,24190,24266,24257,24258,24260,24380,24429,24489,24490,24488,24785,24801,24754,24758,24800,24860,24867,24826,24853,24816,24827,24820,24936,24817,24846,24822,24841,24832,24850,25119,25161,25507,25484,25551,25536,25577,25545,25542,25549,25554,25571,25552,25569,25558,25581,25582,25462,25588,25578,25563,25682,25562,25593,25950,25958,25954,25955,26001,26000,26031,26222,26224,26228,26230,26223,26257,26234,26238,26231,26366,26367,26399,26397,26874,26837,26848,26840,26839,26885,26847,26869,26862,26855,26873,26834,26866,26851,26827,26829,26893,26898,26894,26825,26842,26990,26875,27454,27450,27453,27544,27542,27580,27631,27694,27695,27692,28207,28216,28244,28193,28210,28263,28234,28192,28197,28195,28187,28251,28248,28196,28246,28270,28205,28198,28271,28212,28237,28218,28204,28227,28189,28222,28363,28297,28185,28238,28259,28228,28274,28265,28255,28953,28954,28966,28976,28961,28982,29038,28956,29260,29316,29312,29494,29477,29492,29481,29754,29738,29747,29730,29733,29749,29750,29748,29743,29723,29734,29736,29989,29990,30059,30058,30178,30171,30179,30169,30168,30174,30176,30331,30332,30358,30355,30388,30428,30543,30701,30813,30828,30831,31245,31240,31243,31237,31232,31384,31383,31382,31461,31459,31561,31574,31558,31568,31570,31572,31565,31563,31567,31569,31903,31909,32094,32080,32104,32085,32043,32110,32114,32097,32102,32098,32112,32115,21892,32724,32725,32779,32850,32901,33109,33108,33099,33105,33102,33081,33094,33086,33100,33107,33140,33298,33308,33769,33795,33784,33805,33760,33733,33803,33729,33775,33777,33780,33879,33802,33776,33804,33740,33789,33778,33738,33848,33806,33796,33756,33799,33748,33759,34395,34527,34521,34541,34516,34523,34532,34512,34526,34903,35009,35010,34993,35203,35222,35387,35424,35413,35422,35388,35393,35412,35419,35408,35398,35380,35386,35382,35414,35937,35970,36015,36028,36019,36029,36033,36027,36032,36020,36023,36022,36031,36024,36234,36229,36225,36302,36317,36299,36314,36305,36300,36315,36294,36603,36600,36604,36764,36910,36917,36913,36920,36914,36918,37122,37109,37129,37118,37219,37221,37327,37396,37397,37411,37385,37406,37389,37392,37383,37393,38292,38287,38283,38289,38291,38290,38286,38538,38542,38539,38525,38533,38534,38541,38514,38532,38593,38597,38596,38598,38599,38639,38642,38860,38917,38918,38920,39143,39146,39151,39145,39154,39149,39342,39341,40643,40653,40657,20098,20653,20661,20658,20659,20677,20670,20652,20663,20667,20655,20679,21119,21111,21117,21215,21222,21220,21218,21219,21295,21983,21992,21971,21990,21966,21980,21959,21969,21987,21988,21999,21978,21985,21957,21958,21989,21961,22290,22291,22622,22609,22616,22615,22618,22612,22635,22604,22637,22602,22626,22610,22603,22887,23233,23241,23244,23230,23229,23228,23219,23234,23218,23913,23919,24140,24185,24265,24264,24338,24409,24492,24494,24858,24847,24904,24863,24819,24859,24825,24833,24840,24910,24908,24900,24909,24894,24884,24871,24845,24838,24887,25121,25122,25619,25662,25630,25642,25645,25661,25644,25615,25628,25620,25613,25654,25622,25623,25606,25964,26015,26032,26263,26249,26247,26248,26262,26244,26264,26253,26371,27028,26989,26970,26999,26976,26964,26997,26928,27010,26954,26984,26987,26974,26963,27001,27014,26973,26979,26971,27463,27506,27584,27583,27603,27645,28322,28335,28371,28342,28354,28304,28317,28359,28357,28325,28312,28348,28346,28331,28369,28310,28316,28356,28372,28330,28327,28340,29006,29017,29033,29028,29001,29031,29020,29036,29030,29004,29029,29022,28998,29032,29014,29242,29266,29495,29509,29503,29502,29807,29786,29781,29791,29790,29761,29759,29785,29787,29788,30070,30072,30208,30192,30209,30194,30193,30202,30207,30196,30195,30430,30431,30555,30571,30566,30558,30563,30585,30570,30572,30556,30565,30568,30562,30702,30862,30896,30871,30872,30860,30857,30844,30865,30867,30847,31098,31103,31105,33836,31165,31260,31258,31264,31252,31263,31262,31391,31392,31607,31680,31584,31598,31591,31921,31923,31925,32147,32121,32145,32129,32143,32091,32622,32617,32618,32626,32681,32680,32676,32854,32856,32902,32900,33137,33136,33144,33125,33134,33139,33131,33145,33146,33126,33285,33351,33922,33911,33853,33841,33909,33894,33899,33865,33900,33883,33852,33845,33889,33891,33897,33901,33862,34398,34396,34399,34553,34579,34568,34567,34560,34558,34555,34562,34563,34566,34570,34905,35039,35028,35033,35036,35032,35037,35041,35018,35029,35026,35228,35299,35435,35442,35443,35430,35433,35440,35463,35452,35427,35488,35441,35461,35437,35426,35438,35436,35449,35451,35390,35432,35938,35978,35977,36042,36039,36040,36036,36018,36035,36034,36037,36321,36319,36328,36335,36339,36346,36330,36324,36326,36530,36611,36617,36606,36618,36767,36786,36939,36938,36947,36930,36948,36924,36949,36944,36935,36943,36942,36941,36945,36926,36929,37138,37143,37228,37226,37225,37321,37431,37463,37432,37437,37440,37438,37467,37451,37476,37457,37428,37449,37453,37445,37433,37439,37466,38296,38552,38548,38549,38605,38603,38601,38602,38647,38651,38649,38646,38742,38772,38774,38928,38929,38931,38922,38930,38924,39164,39156,39165,39166,39347,39345,39348,39649,40169,40578,40718,40723,40736,20711,20718,20709,20694,20717,20698,20693,20687,20689,20721,20686,20713,20834,20979,21123,21122,21297,21421,22014,22016,22043,22039,22013,22036,22022,22025,22029,22030,22007,22038,22047,22024,22032,22006,22296,22294,22645,22654,22659,22675,22666,22649,22661,22653,22781,22821,22818,22820,22890,22889,23265,23270,23273,23255,23254,23256,23267,23413,23518,23527,23521,23525,23526,23528,23522,23524,23519,23565,23650,23940,23943,24155,24163,24149,24151,24148,24275,24278,24330,24390,24432,24505,24903,24895,24907,24951,24930,24931,24927,24922,24920,24949,25130,25735,25688,25684,25764,25720,25695,25722,25681,25703,25652,25709,25723,25970,26017,26071,26070,26274,26280,26269,27036,27048,27029,27073,27054,27091,27083,27035,27063,27067,27051,27060,27088,27085,27053,27084,27046,27075,27043,27465,27468,27699,28467,28436,28414,28435,28404,28457,28478,28448,28460,28431,28418,28450,28415,28399,28422,28465,28472,28466,28451,28437,28459,28463,28552,28458,28396,28417,28402,28364,28407,29076,29081,29053,29066,29060,29074,29246,29330,29334,29508,29520,29796,29795,29802,29808,29805,29956,30097,30247,30221,30219,30217,30227,30433,30435,30596,30589,30591,30561,30913,30879,30887,30899,30889,30883,31118,31119,31117,31278,31281,31402,31401,31469,31471,31649,31637,31627,31605,31639,31645,31636,31631,31672,31623,31620,31929,31933,31934,32187,32176,32156,32189,32190,32160,32202,32180,32178,32177,32186,32162,32191,32181,32184,32173,32210,32199,32172,32624,32736,32737,32735,32862,32858,32903,33104,33152,33167,33160,33162,33151,33154,33255,33274,33287,33300,33310,33355,33993,33983,33990,33988,33945,33950,33970,33948,33995,33976,33984,34003,33936,33980,34001,33994,34623,34588,34619,34594,34597,34612,34584,34645,34615,34601,35059,35074,35060,35065,35064,35069,35048,35098,35055,35494,35468,35486,35491,35469,35489,35475,35492,35498,35493,35496,35480,35473,35482,35495,35946,35981,35980,36051,36049,36050,36203,36249,36245,36348,36628,36626,36629,36627,36771,36960,36952,36956,36963,36953,36958,36962,36957,36955,37145,37144,37150,37237,37240,37239,37236,37496,37504,37509,37528,37526,37499,37523,37532,37544,37500,37521,38305,38312,38313,38307,38309,38308,38553,38556,38555,38604,38610,38656,38780,38789,38902,38935,38936,39087,39089,39171,39173,39180,39177,39361,39599,39600,39654,39745,39746,40180,40182,40179,40636,40763,40778,20740,20736,20731,20725,20729,20738,20744,20745,20741,20956,21127,21128,21129,21133,21130,21232,21426,22062,22075,22073,22066,22079,22068,22057,22099,22094,22103,22132,22070,22063,22064,22656,22687,22686,22707,22684,22702,22697,22694,22893,23305,23291,23307,23285,23308,23304,23534,23532,23529,23531,23652,23653,23965,23956,24162,24159,24161,24290,24282,24287,24285,24291,24288,24392,24433,24503,24501,24950,24935,24942,24925,24917,24962,24956,24944,24939,24958,24999,24976,25003,24974,25004,24986,24996,24980,25006,25134,25705,25711,25721,25758,25778,25736,25744,25776,25765,25747,25749,25769,25746,25774,25773,25771,25754,25772,25753,25762,25779,25973,25975,25976,26286,26283,26292,26289,27171,27167,27112,27137,27166,27161,27133,27169,27155,27146,27123,27138,27141,27117,27153,27472,27470,27556,27589,27590,28479,28540,28548,28497,28518,28500,28550,28525,28507,28536,28526,28558,28538,28528,28516,28567,28504,28373,28527,28512,28511,29087,29100,29105,29096,29270,29339,29518,29527,29801,29835,29827,29822,29824,30079,30240,30249,30239,30244,30246,30241,30242,30362,30394,30436,30606,30599,30604,30609,30603,30923,30917,30906,30922,30910,30933,30908,30928,31295,31292,31296,31293,31287,31291,31407,31406,31661,31665,31684,31668,31686,31687,31681,31648,31692,31946,32224,32244,32239,32251,32216,32236,32221,32232,32227,32218,32222,32233,32158,32217,32242,32249,32629,32631,32687,32745,32806,33179,33180,33181,33184,33178,33176,34071,34109,34074,34030,34092,34093,34067,34065,34083,34081,34068,34028,34085,34047,34054,34690,34676,34678,34656,34662,34680,34664,34649,34647,34636,34643,34907,34909,35088,35079,35090,35091,35093,35082,35516,35538,35527,35524,35477,35531,35576,35506,35529,35522,35519,35504,35542,35533,35510,35513,35547,35916,35918,35948,36064,36062,36070,36068,36076,36077,36066,36067,36060,36074,36065,36205,36255,36259,36395,36368,36381,36386,36367,36393,36383,36385,36382,36538,36637,36635,36639,36649,36646,36650,36636,36638,36645,36969,36974,36968,36973,36983,37168,37165,37159,37169,37255,37257,37259,37251,37573,37563,37559,37610,37548,37604,37569,37555,37564,37586,37575,37616,37554,38317,38321,38660,38662,38663,38665,38752,38797,38795,38799,38945,38955,38940,39091,39178,39187,39186,39192,39389,39376,39391,39387,39377,39381,39378,39385,39607,39662,39663,39719,39749,39748,39799,39791,40198,40201,40195,40617,40638,40654,22696,40786,20754,20760,20756,20752,20757,20864,20906,20957,21137,21139,21235,22105,22123,22137,22121,22116,22136,22122,22120,22117,22129,22127,22124,22114,22134,22721,22718,22727,22725,22894,23325,23348,23416,23536,23566,24394,25010,24977,25001,24970,25037,25014,25022,25034,25032,25136,25797,25793,25803,25787,25788,25818,25796,25799,25794,25805,25791,25810,25812,25790,25972,26310,26313,26297,26308,26311,26296,27197,27192,27194,27225,27243,27224,27193,27204,27234,27233,27211,27207,27189,27231,27208,27481,27511,27653,28610,28593,28577,28611,28580,28609,28583,28595,28608,28601,28598,28582,28576,28596,29118,29129,29136,29138,29128,29141,29113,29134,29145,29148,29123,29124,29544,29852,29859,29848,29855,29854,29922,29964,29965,30260,30264,30266,30439,30437,30624,30622,30623,30629,30952,30938,30956,30951,31142,31309,31310,31302,31308,31307,31418,31705,31761,31689,31716,31707,31713,31721,31718,31957,31958,32266,32273,32264,32283,32291,32286,32285,32265,32272,32633,32690,32752,32753,32750,32808,33203,33193,33192,33275,33288,33368,33369,34122,34137,34120,34152,34153,34115,34121,34157,34154,34142,34691,34719,34718,34722,34701,34913,35114,35122,35109,35115,35105,35242,35238,35558,35578,35563,35569,35584,35548,35559,35566,35582,35585,35586,35575,35565,35571,35574,35580,35947,35949,35987,36084,36420,36401,36404,36418,36409,36405,36667,36655,36664,36659,36776,36774,36981,36980,36984,36978,36988,36986,37172,37266,37664,37686,37624,37683,37679,37666,37628,37675,37636,37658,37648,37670,37665,37653,37678,37657,38331,38567,38568,38570,38613,38670,38673,38678,38669,38675,38671,38747,38748,38758,38808,38960,38968,38971,38967,38957,38969,38948,39184,39208,39198,39195,39201,39194,39405,39394,39409,39608,39612,39675,39661,39720,39825,40213,40227,40230,40232,40210,40219,40664,40660,40845,40860,20778,20767,20769,20786,21237,22158,22144,22160,22149,22151,22159,22741,22739,22737,22734,23344,23338,23332,23418,23607,23656,23996,23994,23997,23992,24171,24396,24509,25033,25026,25031,25062,25035,25138,25140,25806,25802,25816,25824,25840,25830,25836,25841,25826,25837,25986,25987,26329,26326,27264,27284,27268,27298,27292,27355,27299,27262,27287,27280,27296,27484,27566,27610,27656,28632,28657,28639,28640,28635,28644,28651,28655,28544,28652,28641,28649,28629,28654,28656,29159,29151,29166,29158,29157,29165,29164,29172,29152,29237,29254,29552,29554,29865,29872,29862,29864,30278,30274,30284,30442,30643,30634,30640,30636,30631,30637,30703,30967,30970,30964,30959,30977,31143,31146,31319,31423,31751,31757,31742,31735,31756,31712,31968,31964,31966,31970,31967,31961,31965,32302,32318,32326,32311,32306,32323,32299,32317,32305,32325,32321,32308,32313,32328,32309,32319,32303,32580,32755,32764,32881,32882,32880,32879,32883,33222,33219,33210,33218,33216,33215,33213,33225,33214,33256,33289,33393,34218,34180,34174,34204,34193,34196,34223,34203,34183,34216,34186,34407,34752,34769,34739,34770,34758,34731,34747,34746,34760,34763,35131,35126,35140,35128,35133,35244,35598,35607,35609,35611,35594,35616,35613,35588,35600,35905,35903,35955,36090,36093,36092,36088,36091,36264,36425,36427,36424,36426,36676,36670,36674,36677,36671,36991,36989,36996,36993,36994,36992,37177,37283,37278,37276,37709,37762,37672,37749,37706,37733,37707,37656,37758,37740,37723,37744,37722,37716,38346,38347,38348,38344,38342,38577,38584,38614,38684,38686,38816,38867,38982,39094,39221,39425,39423,39854,39851,39850,39853,40251,40255,40587,40655,40670,40668,40669,40667,40766,40779,21474,22165,22190,22745,22744,23352,24413,25059,25139,25844,25842,25854,25862,25850,25851,25847,26039,26332,26406,27315,27308,27331,27323,27320,27330,27310,27311,27487,27512,27567,28681,28683,28670,28678,28666,28689,28687,29179,29180,29182,29176,29559,29557,29863,29887,29973,30294,30296,30290,30653,30655,30651,30652,30990,31150,31329,31330,31328,31428,31429,31787,31783,31786,31774,31779,31777,31975,32340,32341,32350,32346,32353,32338,32345,32584,32761,32763,32887,32886,33229,33231,33290,34255,34217,34253,34256,34249,34224,34234,34233,34214,34799,34796,34802,34784,35206,35250,35316,35624,35641,35628,35627,35920,36101,36441,36451,36454,36452,36447,36437,36544,36681,36685,36999,36995,37000,37291,37292,37328,37780,37770,37782,37794,37811,37806,37804,37808,37784,37786,37783,38356,38358,38352,38357,38626,38620,38617,38619,38622,38692,38819,38822,38829,38905,38989,38991,38988,38990,38995,39098,39230,39231,39229,39214,39333,39438,39617,39683,39686,39759,39758,39757,39882,39881,39933,39880,39872,40273,40285,40288,40672,40725,40748,20787,22181,22750,22751,22754,23541,40848,24300,25074,25079,25078,25077,25856,25871,26336,26333,27365,27357,27354,27347,28699,28703,28712,28698,28701,28693,28696,29190,29197,29272,29346,29560,29562,29885,29898,29923,30087,30086,30303,30305,30663,31001,31153,31339,31337,31806,31807,31800,31805,31799,31808,32363,32365,32377,32361,32362,32645,32371,32694,32697,32696,33240,34281,34269,34282,34261,34276,34277,34295,34811,34821,34829,34809,34814,35168,35167,35158,35166,35649,35676,35672,35657,35674,35662,35663,35654,35673,36104,36106,36476,36466,36487,36470,36460,36474,36468,36692,36686,36781,37002,37003,37297,37294,37857,37841,37855,37827,37832,37852,37853,37846,37858,37837,37848,37860,37847,37864,38364,38580,38627,38698,38695,38753,38876,38907,39006,39000,39003,39100,39237,39241,39446,39449,39693,39912,39911,39894,39899,40329,40289,40306,40298,40300,40594,40599,40595,40628,21240,22184,22199,22198,22196,22204,22756,23360,23363,23421,23542,24009,25080,25082,25880,25876,25881,26342,26407,27372,28734,28720,28722,29200,29563,29903,30306,30309,31014,31018,31020,31019,31431,31478,31820,31811,31821,31983,31984,36782,32381,32380,32386,32588,32768,33242,33382,34299,34297,34321,34298,34310,34315,34311,34314,34836,34837,35172,35258,35320,35696,35692,35686,35695,35679,35691,36111,36109,36489,36481,36485,36482,37300,37323,37912,37891,37885,38369,38704,39108,39250,39249,39336,39467,39472,39479,39477,39955,39949,40569,40629,40680,40751,40799,40803,40801,20791,20792,22209,22208,22210,22804,23660,24013,25084,25086,25885,25884,26005,26345,27387,27396,27386,27570,28748,29211,29351,29910,29908,30313,30675,31824,32399,32396,32700,34327,34349,34330,34851,34850,34849,34847,35178,35180,35261,35700,35703,35709,36115,36490,36493,36491,36703,36783,37306,37934,37939,37941,37946,37944,37938,37931,38370,38712,38713,38706,38911,39015,39013,39255,39493,39491,39488,39486,39631,39764,39761,39981,39973,40367,40372,40386,40376,40605,40687,40729,40796,40806,40807,20796,20795,22216,22218,22217,23423,24020,24018,24398,25087,25892,27402,27489,28753,28760,29568,29924,30090,30318,30316,31155,31840,31839,32894,32893,33247,35186,35183,35324,35712,36118,36119,36497,36499,36705,37192,37956,37969,37970,38717,38718,38851,38849,39019,39253,39509,39501,39634,39706,40009,39985,39998,39995,40403,40407,40756,40812,40810,40852,22220,24022,25088,25891,25899,25898,26348,27408,29914,31434,31844,31843,31845,32403,32406,32404,33250,34360,34367,34865,35722,37008,37007,37987,37984,37988,38760,39023,39260,39514,39515,39511,39635,39636,39633,40020,40023,40022,40421,40607,40692,22225,22761,25900,28766,30321,30322,30679,32592,32648,34870,34873,34914,35731,35730,35734,33399,36123,37312,37994,38722,38728,38724,38854,39024,39519,39714,39768,40031,40441,40442,40572,40573,40711,40823,40818,24307,27414,28771,31852,31854,34875,35264,36513,37313,38002,38000,39025,39262,39638,39715,40652,28772,30682,35738,38007,38857,39522,39525,32412,35740,36522,37317,38013,38014,38012,40055,40056,40695,35924,38015,40474,29224,39530,39729,40475,40478,31858,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,20022,20031,20101,20128,20866,20886,20907,21241,21304,21353,21430,22794,23424,24027,12083,24191,24308,24400,24417,25908,26080,30098,30326,36789,38582,168,710,12541,12542,12445,12446,12291,20189,12293,12294,12295,12540,65339,65341,10045,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,8679,8632,8633,12751,131276,20058,131210,20994,17553,40880,20872,40881,161287,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,65506,65508,65287,65282,12849,8470,8481,12443,12444,11904,11908,11910,11911,11912,11914,11916,11917,11925,11932,11933,11941,11943,11946,11948,11950,11958,11964,11966,11974,11978,11980,11981,11983,11990,11991,11998,12003,null,null,null,643,592,603,596,629,339,248,331,650,618,20034,20060,20981,21274,21378,19975,19980,20039,20109,22231,64012,23662,24435,19983,20871,19982,20014,20115,20162,20169,20168,20888,21244,21356,21433,22304,22787,22828,23568,24063,26081,27571,27596,27668,29247,20017,20028,20200,20188,20201,20193,20189,20186,21004,21276,21324,22306,22307,22807,22831,23425,23428,23570,23611,23668,23667,24068,24192,24194,24521,25097,25168,27669,27702,27715,27711,27707,29358,29360,29578,31160,32906,38430,20238,20248,20268,20213,20244,20209,20224,20215,20232,20253,20226,20229,20258,20243,20228,20212,20242,20913,21011,21001,21008,21158,21282,21279,21325,21386,21511,22241,22239,22318,22314,22324,22844,22912,22908,22917,22907,22910,22903,22911,23382,23573,23589,23676,23674,23675,23678,24031,24181,24196,24322,24346,24436,24533,24532,24527,25180,25182,25188,25185,25190,25186,25177,25184,25178,25189,26095,26094,26430,26425,26424,26427,26426,26431,26428,26419,27672,27718,27730,27740,27727,27722,27732,27723,27724,28785,29278,29364,29365,29582,29994,30335,31349,32593,33400,33404,33408,33405,33407,34381,35198,37017,37015,37016,37019,37012,38434,38436,38432,38435,20310,20283,20322,20297,20307,20324,20286,20327,20306,20319,20289,20312,20269,20275,20287,20321,20879,20921,21020,21022,21025,21165,21166,21257,21347,21362,21390,21391,21552,21559,21546,21588,21573,21529,21532,21541,21528,21565,21583,21569,21544,21540,21575,22254,22247,22245,22337,22341,22348,22345,22347,22354,22790,22848,22950,22936,22944,22935,22926,22946,22928,22927,22951,22945,23438,23442,23592,23594,23693,23695,23688,23691,23689,23698,23690,23686,23699,23701,24032,24074,24078,24203,24201,24204,24200,24205,24325,24349,24440,24438,24530,24529,24528,24557,24552,24558,24563,24545,24548,24547,24570,24559,24567,24571,24576,24564,25146,25219,25228,25230,25231,25236,25223,25201,25211,25210,25200,25217,25224,25207,25213,25202,25204,25911,26096,26100,26099,26098,26101,26437,26439,26457,26453,26444,26440,26461,26445,26458,26443,27600,27673,27674,27768,27751,27755,27780,27787,27791,27761,27759,27753,27802,27757,27783,27797,27804,27750,27763,27749,27771,27790,28788,28794,29283,29375,29373,29379,29382,29377,29370,29381,29589,29591,29587,29588,29586,30010,30009,30100,30101,30337,31037,32820,32917,32921,32912,32914,32924,33424,33423,33413,33422,33425,33427,33418,33411,33412,35960,36809,36799,37023,37025,37029,37022,37031,37024,38448,38440,38447,38445,20019,20376,20348,20357,20349,20352,20359,20342,20340,20361,20356,20343,20300,20375,20330,20378,20345,20353,20344,20368,20380,20372,20382,20370,20354,20373,20331,20334,20894,20924,20926,21045,21042,21043,21062,21041,21180,21258,21259,21308,21394,21396,21639,21631,21633,21649,21634,21640,21611,21626,21630,21605,21612,21620,21606,21645,21615,21601,21600,21656,21603,21607,21604,22263,22265,22383,22386,22381,22379,22385,22384,22390,22400,22389,22395,22387,22388,22370,22376,22397,22796,22853,22965,22970,22991,22990,22962,22988,22977,22966,22972,22979,22998,22961,22973,22976,22984,22964,22983,23394,23397,23443,23445,23620,23623,23726,23716,23712,23733,23727,23720,23724,23711,23715,23725,23714,23722,23719,23709,23717,23734,23728,23718,24087,24084,24089,24360,24354,24355,24356,24404,24450,24446,24445,24542,24549,24621,24614,24601,24626,24587,24628,24586,24599,24627,24602,24606,24620,24610,24589,24592,24622,24595,24593,24588,24585,24604,25108,25149,25261,25268,25297,25278,25258,25270,25290,25262,25267,25263,25275,25257,25264,25272,25917,26024,26043,26121,26108,26116,26130,26120,26107,26115,26123,26125,26117,26109,26129,26128,26358,26378,26501,26476,26510,26514,26486,26491,26520,26502,26500,26484,26509,26508,26490,26527,26513,26521,26499,26493,26497,26488,26489,26516,27429,27520,27518,27614,27677,27795,27884,27883,27886,27865,27830,27860,27821,27879,27831,27856,27842,27834,27843,27846,27885,27890,27858,27869,27828,27786,27805,27776,27870,27840,27952,27853,27847,27824,27897,27855,27881,27857,28820,28824,28805,28819,28806,28804,28817,28822,28802,28826,28803,29290,29398,29387,29400,29385,29404,29394,29396,29402,29388,29393,29604,29601,29613,29606,29602,29600,29612,29597,29917,29928,30015,30016,30014,30092,30104,30383,30451,30449,30448,30453,30712,30716,30713,30715,30714,30711,31042,31039,31173,31352,31355,31483,31861,31997,32821,32911,32942,32931,32952,32949,32941,33312,33440,33472,33451,33434,33432,33435,33461,33447,33454,33468,33438,33466,33460,33448,33441,33449,33474,33444,33475,33462,33442,34416,34415,34413,34414,35926,36818,36811,36819,36813,36822,36821,36823,37042,37044,37039,37043,37040,38457,38461,38460,38458,38467,20429,20421,20435,20402,20425,20427,20417,20436,20444,20441,20411,20403,20443,20423,20438,20410,20416,20409,20460,21060,21065,21184,21186,21309,21372,21399,21398,21401,21400,21690,21665,21677,21669,21711,21699,33549,21687,21678,21718,21686,21701,21702,21664,21616,21692,21666,21694,21618,21726,21680,22453,22430,22431,22436,22412,22423,22429,22427,22420,22424,22415,22425,22437,22426,22421,22772,22797,22867,23009,23006,23022,23040,23025,23005,23034,23037,23036,23030,23012,23026,23031,23003,23017,23027,23029,23008,23038,23028,23021,23464,23628,23760,23768,23756,23767,23755,23771,23774,23770,23753,23751,23754,23766,23763,23764,23759,23752,23750,23758,23775,23800,24057,24097,24098,24099,24096,24100,24240,24228,24226,24219,24227,24229,24327,24366,24406,24454,24631,24633,24660,24690,24670,24645,24659,24647,24649,24667,24652,24640,24642,24671,24612,24644,24664,24678,24686,25154,25155,25295,25357,25355,25333,25358,25347,25323,25337,25359,25356,25336,25334,25344,25363,25364,25338,25365,25339,25328,25921,25923,26026,26047,26166,26145,26162,26165,26140,26150,26146,26163,26155,26170,26141,26164,26169,26158,26383,26384,26561,26610,26568,26554,26588,26555,26616,26584,26560,26551,26565,26603,26596,26591,26549,26573,26547,26615,26614,26606,26595,26562,26553,26574,26599,26608,26546,26620,26566,26605,26572,26542,26598,26587,26618,26569,26570,26563,26602,26571,27432,27522,27524,27574,27606,27608,27616,27680,27681,27944,27956,27949,27935,27964,27967,27922,27914,27866,27955,27908,27929,27962,27930,27921,27904,27933,27970,27905,27928,27959,27907,27919,27968,27911,27936,27948,27912,27938,27913,27920,28855,28831,28862,28849,28848,28833,28852,28853,28841,29249,29257,29258,29292,29296,29299,29294,29386,29412,29416,29419,29407,29418,29414,29411,29573,29644,29634,29640,29637,29625,29622,29621,29620,29675,29631,29639,29630,29635,29638,29624,29643,29932,29934,29998,30023,30024,30119,30122,30329,30404,30472,30467,30468,30469,30474,30455,30459,30458,30695,30696,30726,30737,30738,30725,30736,30735,30734,30729,30723,30739,31050,31052,31051,31045,31044,31189,31181,31183,31190,31182,31360,31358,31441,31488,31489,31866,31864,31865,31871,31872,31873,32003,32008,32001,32600,32657,32653,32702,32775,32782,32783,32788,32823,32984,32967,32992,32977,32968,32962,32976,32965,32995,32985,32988,32970,32981,32969,32975,32983,32998,32973,33279,33313,33428,33497,33534,33529,33543,33512,33536,33493,33594,33515,33494,33524,33516,33505,33522,33525,33548,33531,33526,33520,33514,33508,33504,33530,33523,33517,34423,34420,34428,34419,34881,34894,34919,34922,34921,35283,35332,35335,36210,36835,36833,36846,36832,37105,37053,37055,37077,37061,37054,37063,37067,37064,37332,37331,38484,38479,38481,38483,38474,38478,20510,20485,20487,20499,20514,20528,20507,20469,20468,20531,20535,20524,20470,20471,20503,20508,20512,20519,20533,20527,20529,20494,20826,20884,20883,20938,20932,20933,20936,20942,21089,21082,21074,21086,21087,21077,21090,21197,21262,21406,21798,21730,21783,21778,21735,21747,21732,21786,21759,21764,21768,21739,21777,21765,21745,21770,21755,21751,21752,21728,21774,21763,21771,22273,22274,22476,22578,22485,22482,22458,22470,22461,22460,22456,22454,22463,22471,22480,22457,22465,22798,22858,23065,23062,23085,23086,23061,23055,23063,23050,23070,23091,23404,23463,23469,23468,23555,23638,23636,23788,23807,23790,23793,23799,23808,23801,24105,24104,24232,24238,24234,24236,24371,24368,24423,24669,24666,24679,24641,24738,24712,24704,24722,24705,24733,24707,24725,24731,24727,24711,24732,24718,25113,25158,25330,25360,25430,25388,25412,25413,25398,25411,25572,25401,25419,25418,25404,25385,25409,25396,25432,25428,25433,25389,25415,25395,25434,25425,25400,25431,25408,25416,25930,25926,26054,26051,26052,26050,26186,26207,26183,26193,26386,26387,26655,26650,26697,26674,26675,26683,26699,26703,26646,26673,26652,26677,26667,26669,26671,26702,26692,26676,26653,26642,26644,26662,26664,26670,26701,26682,26661,26656,27436,27439,27437,27441,27444,27501,32898,27528,27622,27620,27624,27619,27618,27623,27685,28026,28003,28004,28022,27917,28001,28050,27992,28002,28013,28015,28049,28045,28143,28031,28038,27998,28007,28000,28055,28016,28028,27999,28034,28056,27951,28008,28043,28030,28032,28036,27926,28035,28027,28029,28021,28048,28892,28883,28881,28893,28875,32569,28898,28887,28882,28894,28896,28884,28877,28869,28870,28871,28890,28878,28897,29250,29304,29303,29302,29440,29434,29428,29438,29430,29427,29435,29441,29651,29657,29669,29654,29628,29671,29667,29673,29660,29650,29659,29652,29661,29658,29655,29656,29672,29918,29919,29940,29941,29985,30043,30047,30128,30145,30139,30148,30144,30143,30134,30138,30346,30409,30493,30491,30480,30483,30482,30499,30481,30485,30489,30490,30498,30503,30755,30764,30754,30773,30767,30760,30766,30763,30753,30761,30771,30762,30769,31060,31067,31055,31068,31059,31058,31057,31211,31212,31200,31214,31213,31210,31196,31198,31197,31366,31369,31365,31371,31372,31370,31367,31448,31504,31492,31507,31493,31503,31496,31498,31502,31497,31506,31876,31889,31882,31884,31880,31885,31877,32030,32029,32017,32014,32024,32022,32019,32031,32018,32015,32012,32604,32609,32606,32608,32605,32603,32662,32658,32707,32706,32704,32790,32830,32825,33018,33010,33017,33013,33025,33019,33024,33281,33327,33317,33587,33581,33604,33561,33617,33573,33622,33599,33601,33574,33564,33570,33602,33614,33563,33578,33544,33596,33613,33558,33572,33568,33591,33583,33577,33607,33605,33612,33619,33566,33580,33611,33575,33608,34387,34386,34466,34472,34454,34445,34449,34462,34439,34455,34438,34443,34458,34437,34469,34457,34465,34471,34453,34456,34446,34461,34448,34452,34883,34884,34925,34933,34934,34930,34944,34929,34943,34927,34947,34942,34932,34940,35346,35911,35927,35963,36004,36003,36214,36216,36277,36279,36278,36561,36563,36862,36853,36866,36863,36859,36868,36860,36854,37078,37088,37081,37082,37091,37087,37093,37080,37083,37079,37084,37092,37200,37198,37199,37333,37346,37338,38492,38495,38588,39139,39647,39727,20095,20592,20586,20577,20574,20576,20563,20555,20573,20594,20552,20557,20545,20571,20554,20578,20501,20549,20575,20585,20587,20579,20580,20550,20544,20590,20595,20567,20561,20944,21099,21101,21100,21102,21206,21203,21293,21404,21877,21878,21820,21837,21840,21812,21802,21841,21858,21814,21813,21808,21842,21829,21772,21810,21861,21838,21817,21832,21805,21819,21824,21835,22282,22279,22523,22548,22498,22518,22492,22516,22528,22509,22525,22536,22520,22539,22515,22479,22535,22510,22499,22514,22501,22508,22497,22542,22524,22544,22503,22529,22540,22513,22505,22512,22541,22532,22876,23136,23128,23125,23143,23134,23096,23093,23149,23120,23135,23141,23148,23123,23140,23127,23107,23133,23122,23108,23131,23112,23182,23102,23117,23097,23116,23152,23145,23111,23121,23126,23106,23132,23410,23406,23489,23488,23641,23838,23819,23837,23834,23840,23820,23848,23821,23846,23845,23823,23856,23826,23843,23839,23854,24126,24116,24241,24244,24249,24242,24243,24374,24376,24475,24470,24479,24714,24720,24710,24766,24752,24762,24787,24788,24783,24804,24793,24797,24776,24753,24795,24759,24778,24767,24771,24781,24768,25394,25445,25482,25474,25469,25533,25502,25517,25501,25495,25515,25486,25455,25479,25488,25454,25519,25461,25500,25453,25518,25468,25508,25403,25503,25464,25477,25473,25489,25485,25456,25939,26061,26213,26209,26203,26201,26204,26210,26392,26745,26759,26768,26780,26733,26734,26798,26795,26966,26735,26787,26796,26793,26741,26740,26802,26767,26743,26770,26748,26731,26738,26794,26752,26737,26750,26779,26774,26763,26784,26761,26788,26744,26747,26769,26764,26762,26749,27446,27443,27447,27448,27537,27535,27533,27534,27532,27690,28096,28075,28084,28083,28276,28076,28137,28130,28087,28150,28116,28160,28104,28128,28127,28118,28094,28133,28124,28125,28123,28148,28106,28093,28141,28144,28090,28117,28098,28111,28105,28112,28146,28115,28157,28119,28109,28131,28091,28922,28941,28919,28951,28916,28940,28912,28932,28915,28944,28924,28927,28934,28947,28928,28920,28918,28939,28930,28942,29310,29307,29308,29311,29469,29463,29447,29457,29464,29450,29448,29439,29455,29470,29576,29686,29688,29685,29700,29697,29693,29703,29696,29690,29692,29695,29708,29707,29684,29704,30052,30051,30158,30162,30159,30155,30156,30161,30160,30351,30345,30419,30521,30511,30509,30513,30514,30516,30515,30525,30501,30523,30517,30792,30802,30793,30797,30794,30796,30758,30789,30800,31076,31079,31081,31082,31075,31083,31073,31163,31226,31224,31222,31223,31375,31380,31376,31541,31559,31540,31525,31536,31522,31524,31539,31512,31530,31517,31537,31531,31533,31535,31538,31544,31514,31523,31892,31896,31894,31907,32053,32061,32056,32054,32058,32069,32044,32041,32065,32071,32062,32063,32074,32059,32040,32611,32661,32668,32669,32667,32714,32715,32717,32720,32721,32711,32719,32713,32799,32798,32795,32839,32835,32840,33048,33061,33049,33051,33069,33055,33068,33054,33057,33045,33063,33053,33058,33297,33336,33331,33338,33332,33330,33396,33680,33699,33704,33677,33658,33651,33700,33652,33679,33665,33685,33689,33653,33684,33705,33661,33667,33676,33693,33691,33706,33675,33662,33701,33711,33672,33687,33712,33663,33702,33671,33710,33654,33690,34393,34390,34495,34487,34498,34497,34501,34490,34480,34504,34489,34483,34488,34508,34484,34491,34492,34499,34493,34494,34898,34953,34965,34984,34978,34986,34970,34961,34977,34975,34968,34983,34969,34971,34967,34980,34988,34956,34963,34958,35202,35286,35289,35285,35376,35367,35372,35358,35897,35899,35932,35933,35965,36005,36221,36219,36217,36284,36290,36281,36287,36289,36568,36574,36573,36572,36567,36576,36577,36900,36875,36881,36892,36876,36897,37103,37098,37104,37108,37106,37107,37076,37099,37100,37097,37206,37208,37210,37203,37205,37356,37364,37361,37363,37368,37348,37369,37354,37355,37367,37352,37358,38266,38278,38280,38524,38509,38507,38513,38511,38591,38762,38916,39141,39319,20635,20629,20628,20638,20619,20643,20611,20620,20622,20637,20584,20636,20626,20610,20615,20831,20948,21266,21265,21412,21415,21905,21928,21925,21933,21879,22085,21922,21907,21896,21903,21941,21889,21923,21906,21924,21885,21900,21926,21887,21909,21921,21902,22284,22569,22583,22553,22558,22567,22563,22568,22517,22600,22565,22556,22555,22579,22591,22582,22574,22585,22584,22573,22572,22587,22881,23215,23188,23199,23162,23202,23198,23160,23206,23164,23205,23212,23189,23214,23095,23172,23178,23191,23171,23179,23209,23163,23165,23180,23196,23183,23187,23197,23530,23501,23499,23508,23505,23498,23502,23564,23600,23863,23875,23915,23873,23883,23871,23861,23889,23886,23893,23859,23866,23890,23869,23857,23897,23874,23865,23881,23864,23868,23858,23862,23872,23877,24132,24129,24408,24486,24485,24491,24777,24761,24780,24802,24782,24772,24852,24818,24842,24854,24837,24821,24851,24824,24828,24830,24769,24835,24856,24861,24848,24831,24836,24843,25162,25492,25521,25520,25550,25573,25576,25583,25539,25757,25587,25546,25568,25590,25557,25586,25589,25697,25567,25534,25565,25564,25540,25560,25555,25538,25543,25548,25547,25544,25584,25559,25561,25906,25959,25962,25956,25948,25960,25957,25996,26013,26014,26030,26064,26066,26236,26220,26235,26240,26225,26233,26218,26226,26369,26892,26835,26884,26844,26922,26860,26858,26865,26895,26838,26871,26859,26852,26870,26899,26896,26867,26849,26887,26828,26888,26992,26804,26897,26863,26822,26900,26872,26832,26877,26876,26856,26891,26890,26903,26830,26824,26845,26846,26854,26868,26833,26886,26836,26857,26901,26917,26823,27449,27451,27455,27452,27540,27543,27545,27541,27581,27632,27634,27635,27696,28156,28230,28231,28191,28233,28296,28220,28221,28229,28258,28203,28223,28225,28253,28275,28188,28211,28235,28224,28241,28219,28163,28206,28254,28264,28252,28257,28209,28200,28256,28273,28267,28217,28194,28208,28243,28261,28199,28280,28260,28279,28245,28281,28242,28262,28213,28214,28250,28960,28958,28975,28923,28974,28977,28963,28965,28962,28978,28959,28968,28986,28955,29259,29274,29320,29321,29318,29317,29323,29458,29451,29488,29474,29489,29491,29479,29490,29485,29478,29475,29493,29452,29742,29740,29744,29739,29718,29722,29729,29741,29745,29732,29731,29725,29737,29728,29746,29947,29999,30063,30060,30183,30170,30177,30182,30173,30175,30180,30167,30357,30354,30426,30534,30535,30532,30541,30533,30538,30542,30539,30540,30686,30700,30816,30820,30821,30812,30829,30833,30826,30830,30832,30825,30824,30814,30818,31092,31091,31090,31088,31234,31242,31235,31244,31236,31385,31462,31460,31562,31547,31556,31560,31564,31566,31552,31576,31557,31906,31902,31912,31905,32088,32111,32099,32083,32086,32103,32106,32079,32109,32092,32107,32082,32084,32105,32081,32095,32078,32574,32575,32613,32614,32674,32672,32673,32727,32849,32847,32848,33022,32980,33091,33098,33106,33103,33095,33085,33101,33082,33254,33262,33271,33272,33273,33284,33340,33341,33343,33397,33595,33743,33785,33827,33728,33768,33810,33767,33764,33788,33782,33808,33734,33736,33771,33763,33727,33793,33757,33765,33752,33791,33761,33739,33742,33750,33781,33737,33801,33807,33758,33809,33798,33730,33779,33749,33786,33735,33745,33770,33811,33731,33772,33774,33732,33787,33751,33762,33819,33755,33790,34520,34530,34534,34515,34531,34522,34538,34525,34539,34524,34540,34537,34519,34536,34513,34888,34902,34901,35002,35031,35001,35000,35008,35006,34998,35004,34999,35005,34994,35073,35017,35221,35224,35223,35293,35290,35291,35406,35405,35385,35417,35392,35415,35416,35396,35397,35410,35400,35409,35402,35404,35407,35935,35969,35968,36026,36030,36016,36025,36021,36228,36224,36233,36312,36307,36301,36295,36310,36316,36303,36309,36313,36296,36311,36293,36591,36599,36602,36601,36582,36590,36581,36597,36583,36584,36598,36587,36593,36588,36596,36585,36909,36916,36911,37126,37164,37124,37119,37116,37128,37113,37115,37121,37120,37127,37125,37123,37217,37220,37215,37218,37216,37377,37386,37413,37379,37402,37414,37391,37388,37376,37394,37375,37373,37382,37380,37415,37378,37404,37412,37401,37399,37381,37398,38267,38285,38284,38288,38535,38526,38536,38537,38531,38528,38594,38600,38595,38641,38640,38764,38768,38766,38919,39081,39147,40166,40697,20099,20100,20150,20669,20671,20678,20654,20676,20682,20660,20680,20674,20656,20673,20666,20657,20683,20681,20662,20664,20951,21114,21112,21115,21116,21955,21979,21964,21968,21963,21962,21981,21952,21972,21956,21993,21951,21970,21901,21967,21973,21986,21974,21960,22002,21965,21977,21954,22292,22611,22632,22628,22607,22605,22601,22639,22613,22606,22621,22617,22629,22619,22589,22627,22641,22780,23239,23236,23243,23226,23224,23217,23221,23216,23231,23240,23227,23238,23223,23232,23242,23220,23222,23245,23225,23184,23510,23512,23513,23583,23603,23921,23907,23882,23909,23922,23916,23902,23912,23911,23906,24048,24143,24142,24138,24141,24139,24261,24268,24262,24267,24263,24384,24495,24493,24823,24905,24906,24875,24901,24886,24882,24878,24902,24879,24911,24873,24896,25120,37224,25123,25125,25124,25541,25585,25579,25616,25618,25609,25632,25636,25651,25667,25631,25621,25624,25657,25655,25634,25635,25612,25638,25648,25640,25665,25653,25647,25610,25626,25664,25637,25639,25611,25575,25627,25646,25633,25614,25967,26002,26067,26246,26252,26261,26256,26251,26250,26265,26260,26232,26400,26982,26975,26936,26958,26978,26993,26943,26949,26986,26937,26946,26967,26969,27002,26952,26953,26933,26988,26931,26941,26981,26864,27000,26932,26985,26944,26991,26948,26998,26968,26945,26996,26956,26939,26955,26935,26972,26959,26961,26930,26962,26927,27003,26940,27462,27461,27459,27458,27464,27457,27547,64013,27643,27644,27641,27639,27640,28315,28374,28360,28303,28352,28319,28307,28308,28320,28337,28345,28358,28370,28349,28353,28318,28361,28343,28336,28365,28326,28367,28338,28350,28355,28380,28376,28313,28306,28302,28301,28324,28321,28351,28339,28368,28362,28311,28334,28323,28999,29012,29010,29027,29024,28993,29021,29026,29042,29048,29034,29025,28994,29016,28995,29003,29040,29023,29008,29011,28996,29005,29018,29263,29325,29324,29329,29328,29326,29500,29506,29499,29498,29504,29514,29513,29764,29770,29771,29778,29777,29783,29760,29775,29776,29774,29762,29766,29773,29780,29921,29951,29950,29949,29981,30073,30071,27011,30191,30223,30211,30199,30206,30204,30201,30200,30224,30203,30198,30189,30197,30205,30361,30389,30429,30549,30559,30560,30546,30550,30554,30569,30567,30548,30553,30573,30688,30855,30874,30868,30863,30852,30869,30853,30854,30881,30851,30841,30873,30848,30870,30843,31100,31106,31101,31097,31249,31256,31257,31250,31255,31253,31266,31251,31259,31248,31395,31394,31390,31467,31590,31588,31597,31604,31593,31602,31589,31603,31601,31600,31585,31608,31606,31587,31922,31924,31919,32136,32134,32128,32141,32127,32133,32122,32142,32123,32131,32124,32140,32148,32132,32125,32146,32621,32619,32615,32616,32620,32678,32677,32679,32731,32732,32801,33124,33120,33143,33116,33129,33115,33122,33138,26401,33118,33142,33127,33135,33092,33121,33309,33353,33348,33344,33346,33349,34033,33855,33878,33910,33913,33935,33933,33893,33873,33856,33926,33895,33840,33869,33917,33882,33881,33908,33907,33885,34055,33886,33847,33850,33844,33914,33859,33912,33842,33861,33833,33753,33867,33839,33858,33837,33887,33904,33849,33870,33868,33874,33903,33989,33934,33851,33863,33846,33843,33896,33918,33860,33835,33888,33876,33902,33872,34571,34564,34551,34572,34554,34518,34549,34637,34552,34574,34569,34561,34550,34573,34565,35030,35019,35021,35022,35038,35035,35034,35020,35024,35205,35227,35295,35301,35300,35297,35296,35298,35292,35302,35446,35462,35455,35425,35391,35447,35458,35460,35445,35459,35457,35444,35450,35900,35915,35914,35941,35940,35942,35974,35972,35973,36044,36200,36201,36241,36236,36238,36239,36237,36243,36244,36240,36242,36336,36320,36332,36337,36334,36304,36329,36323,36322,36327,36338,36331,36340,36614,36607,36609,36608,36613,36615,36616,36610,36619,36946,36927,36932,36937,36925,37136,37133,37135,37137,37142,37140,37131,37134,37230,37231,37448,37458,37424,37434,37478,37427,37477,37470,37507,37422,37450,37446,37485,37484,37455,37472,37479,37487,37430,37473,37488,37425,37460,37475,37456,37490,37454,37459,37452,37462,37426,38303,38300,38302,38299,38546,38547,38545,38551,38606,38650,38653,38648,38645,38771,38775,38776,38770,38927,38925,38926,39084,39158,39161,39343,39346,39344,39349,39597,39595,39771,40170,40173,40167,40576,40701,20710,20692,20695,20712,20723,20699,20714,20701,20708,20691,20716,20720,20719,20707,20704,20952,21120,21121,21225,21227,21296,21420,22055,22037,22028,22034,22012,22031,22044,22017,22035,22018,22010,22045,22020,22015,22009,22665,22652,22672,22680,22662,22657,22655,22644,22667,22650,22663,22673,22670,22646,22658,22664,22651,22676,22671,22782,22891,23260,23278,23269,23253,23274,23258,23277,23275,23283,23266,23264,23259,23276,23262,23261,23257,23272,23263,23415,23520,23523,23651,23938,23936,23933,23942,23930,23937,23927,23946,23945,23944,23934,23932,23949,23929,23935,24152,24153,24147,24280,24273,24279,24270,24284,24277,24281,24274,24276,24388,24387,24431,24502,24876,24872,24897,24926,24945,24947,24914,24915,24946,24940,24960,24948,24916,24954,24923,24933,24891,24938,24929,24918,25129,25127,25131,25643,25677,25691,25693,25716,25718,25714,25715,25725,25717,25702,25766,25678,25730,25694,25692,25675,25683,25696,25680,25727,25663,25708,25707,25689,25701,25719,25971,26016,26273,26272,26271,26373,26372,26402,27057,27062,27081,27040,27086,27030,27056,27052,27068,27025,27033,27022,27047,27021,27049,27070,27055,27071,27076,27069,27044,27092,27065,27082,27034,27087,27059,27027,27050,27041,27038,27097,27031,27024,27074,27061,27045,27078,27466,27469,27467,27550,27551,27552,27587,27588,27646,28366,28405,28401,28419,28453,28408,28471,28411,28462,28425,28494,28441,28442,28455,28440,28475,28434,28397,28426,28470,28531,28409,28398,28461,28480,28464,28476,28469,28395,28423,28430,28483,28421,28413,28406,28473,28444,28412,28474,28447,28429,28446,28424,28449,29063,29072,29065,29056,29061,29058,29071,29051,29062,29057,29079,29252,29267,29335,29333,29331,29507,29517,29521,29516,29794,29811,29809,29813,29810,29799,29806,29952,29954,29955,30077,30096,30230,30216,30220,30229,30225,30218,30228,30392,30593,30588,30597,30594,30574,30592,30575,30590,30595,30898,30890,30900,30893,30888,30846,30891,30878,30885,30880,30892,30882,30884,31128,31114,31115,31126,31125,31124,31123,31127,31112,31122,31120,31275,31306,31280,31279,31272,31270,31400,31403,31404,31470,31624,31644,31626,31633,31632,31638,31629,31628,31643,31630,31621,31640,21124,31641,31652,31618,31931,31935,31932,31930,32167,32183,32194,32163,32170,32193,32192,32197,32157,32206,32196,32198,32203,32204,32175,32185,32150,32188,32159,32166,32174,32169,32161,32201,32627,32738,32739,32741,32734,32804,32861,32860,33161,33158,33155,33159,33165,33164,33163,33301,33943,33956,33953,33951,33978,33998,33986,33964,33966,33963,33977,33972,33985,33997,33962,33946,33969,34000,33949,33959,33979,33954,33940,33991,33996,33947,33961,33967,33960,34006,33944,33974,33999,33952,34007,34004,34002,34011,33968,33937,34401,34611,34595,34600,34667,34624,34606,34590,34593,34585,34587,34627,34604,34625,34622,34630,34592,34610,34602,34605,34620,34578,34618,34609,34613,34626,34598,34599,34616,34596,34586,34608,34577,35063,35047,35057,35058,35066,35070,35054,35068,35062,35067,35056,35052,35051,35229,35233,35231,35230,35305,35307,35304,35499,35481,35467,35474,35471,35478,35901,35944,35945,36053,36047,36055,36246,36361,36354,36351,36365,36349,36362,36355,36359,36358,36357,36350,36352,36356,36624,36625,36622,36621,37155,37148,37152,37154,37151,37149,37146,37156,37153,37147,37242,37234,37241,37235,37541,37540,37494,37531,37498,37536,37524,37546,37517,37542,37530,37547,37497,37527,37503,37539,37614,37518,37506,37525,37538,37501,37512,37537,37514,37510,37516,37529,37543,37502,37511,37545,37533,37515,37421,38558,38561,38655,38744,38781,38778,38782,38787,38784,38786,38779,38788,38785,38783,38862,38861,38934,39085,39086,39170,39168,39175,39325,39324,39363,39353,39355,39354,39362,39357,39367,39601,39651,39655,39742,39743,39776,39777,39775,40177,40178,40181,40615,20735,20739,20784,20728,20742,20743,20726,20734,20747,20748,20733,20746,21131,21132,21233,21231,22088,22082,22092,22069,22081,22090,22089,22086,22104,22106,22080,22067,22077,22060,22078,22072,22058,22074,22298,22699,22685,22705,22688,22691,22703,22700,22693,22689,22783,23295,23284,23293,23287,23286,23299,23288,23298,23289,23297,23303,23301,23311,23655,23961,23959,23967,23954,23970,23955,23957,23968,23964,23969,23962,23966,24169,24157,24160,24156,32243,24283,24286,24289,24393,24498,24971,24963,24953,25009,25008,24994,24969,24987,24979,25007,25005,24991,24978,25002,24993,24973,24934,25011,25133,25710,25712,25750,25760,25733,25751,25756,25743,25739,25738,25740,25763,25759,25704,25777,25752,25974,25978,25977,25979,26034,26035,26293,26288,26281,26290,26295,26282,26287,27136,27142,27159,27109,27128,27157,27121,27108,27168,27135,27116,27106,27163,27165,27134,27175,27122,27118,27156,27127,27111,27200,27144,27110,27131,27149,27132,27115,27145,27140,27160,27173,27151,27126,27174,27143,27124,27158,27473,27557,27555,27554,27558,27649,27648,27647,27650,28481,28454,28542,28551,28614,28562,28557,28553,28556,28514,28495,28549,28506,28566,28534,28524,28546,28501,28530,28498,28496,28503,28564,28563,28509,28416,28513,28523,28541,28519,28560,28499,28555,28521,28543,28565,28515,28535,28522,28539,29106,29103,29083,29104,29088,29082,29097,29109,29085,29093,29086,29092,29089,29098,29084,29095,29107,29336,29338,29528,29522,29534,29535,29536,29533,29531,29537,29530,29529,29538,29831,29833,29834,29830,29825,29821,29829,29832,29820,29817,29960,29959,30078,30245,30238,30233,30237,30236,30243,30234,30248,30235,30364,30365,30366,30363,30605,30607,30601,30600,30925,30907,30927,30924,30929,30926,30932,30920,30915,30916,30921,31130,31137,31136,31132,31138,31131,27510,31289,31410,31412,31411,31671,31691,31678,31660,31694,31663,31673,31690,31669,31941,31944,31948,31947,32247,32219,32234,32231,32215,32225,32259,32250,32230,32246,32241,32240,32238,32223,32630,32684,32688,32685,32749,32747,32746,32748,32742,32744,32868,32871,33187,33183,33182,33173,33186,33177,33175,33302,33359,33363,33362,33360,33358,33361,34084,34107,34063,34048,34089,34062,34057,34061,34079,34058,34087,34076,34043,34091,34042,34056,34060,34036,34090,34034,34069,34039,34027,34035,34044,34066,34026,34025,34070,34046,34088,34077,34094,34050,34045,34078,34038,34097,34086,34023,34024,34032,34031,34041,34072,34080,34096,34059,34073,34095,34402,34646,34659,34660,34679,34785,34675,34648,34644,34651,34642,34657,34650,34641,34654,34669,34666,34640,34638,34655,34653,34671,34668,34682,34670,34652,34661,34639,34683,34677,34658,34663,34665,34906,35077,35084,35092,35083,35095,35096,35097,35078,35094,35089,35086,35081,35234,35236,35235,35309,35312,35308,35535,35526,35512,35539,35537,35540,35541,35515,35543,35518,35520,35525,35544,35523,35514,35517,35545,35902,35917,35983,36069,36063,36057,36072,36058,36061,36071,36256,36252,36257,36251,36384,36387,36389,36388,36398,36373,36379,36374,36369,36377,36390,36391,36372,36370,36376,36371,36380,36375,36378,36652,36644,36632,36634,36640,36643,36630,36631,36979,36976,36975,36967,36971,37167,37163,37161,37162,37170,37158,37166,37253,37254,37258,37249,37250,37252,37248,37584,37571,37572,37568,37593,37558,37583,37617,37599,37592,37609,37591,37597,37580,37615,37570,37608,37578,37576,37582,37606,37581,37589,37577,37600,37598,37607,37585,37587,37557,37601,37574,37556,38268,38316,38315,38318,38320,38564,38562,38611,38661,38664,38658,38746,38794,38798,38792,38864,38863,38942,38941,38950,38953,38952,38944,38939,38951,39090,39176,39162,39185,39188,39190,39191,39189,39388,39373,39375,39379,39380,39374,39369,39382,39384,39371,39383,39372,39603,39660,39659,39667,39666,39665,39750,39747,39783,39796,39793,39782,39798,39797,39792,39784,39780,39788,40188,40186,40189,40191,40183,40199,40192,40185,40187,40200,40197,40196,40579,40659,40719,40720,20764,20755,20759,20762,20753,20958,21300,21473,22128,22112,22126,22131,22118,22115,22125,22130,22110,22135,22300,22299,22728,22717,22729,22719,22714,22722,22716,22726,23319,23321,23323,23329,23316,23315,23312,23318,23336,23322,23328,23326,23535,23980,23985,23977,23975,23989,23984,23982,23978,23976,23986,23981,23983,23988,24167,24168,24166,24175,24297,24295,24294,24296,24293,24395,24508,24989,25000,24982,25029,25012,25030,25025,25036,25018,25023,25016,24972,25815,25814,25808,25807,25801,25789,25737,25795,25819,25843,25817,25907,25983,25980,26018,26312,26302,26304,26314,26315,26319,26301,26299,26298,26316,26403,27188,27238,27209,27239,27186,27240,27198,27229,27245,27254,27227,27217,27176,27226,27195,27199,27201,27242,27236,27216,27215,27220,27247,27241,27232,27196,27230,27222,27221,27213,27214,27206,27477,27476,27478,27559,27562,27563,27592,27591,27652,27651,27654,28589,28619,28579,28615,28604,28622,28616,28510,28612,28605,28574,28618,28584,28676,28581,28590,28602,28588,28586,28623,28607,28600,28578,28617,28587,28621,28591,28594,28592,29125,29122,29119,29112,29142,29120,29121,29131,29140,29130,29127,29135,29117,29144,29116,29126,29146,29147,29341,29342,29545,29542,29543,29548,29541,29547,29546,29823,29850,29856,29844,29842,29845,29857,29963,30080,30255,30253,30257,30269,30259,30268,30261,30258,30256,30395,30438,30618,30621,30625,30620,30619,30626,30627,30613,30617,30615,30941,30953,30949,30954,30942,30947,30939,30945,30946,30957,30943,30944,31140,31300,31304,31303,31414,31416,31413,31409,31415,31710,31715,31719,31709,31701,31717,31706,31720,31737,31700,31722,31714,31708,31723,31704,31711,31954,31956,31959,31952,31953,32274,32289,32279,32268,32287,32288,32275,32270,32284,32277,32282,32290,32267,32271,32278,32269,32276,32293,32292,32579,32635,32636,32634,32689,32751,32810,32809,32876,33201,33190,33198,33209,33205,33195,33200,33196,33204,33202,33207,33191,33266,33365,33366,33367,34134,34117,34155,34125,34131,34145,34136,34112,34118,34148,34113,34146,34116,34129,34119,34147,34110,34139,34161,34126,34158,34165,34133,34151,34144,34188,34150,34141,34132,34149,34156,34403,34405,34404,34715,34703,34711,34707,34706,34696,34689,34710,34712,34681,34695,34723,34693,34704,34705,34717,34692,34708,34716,34714,34697,35102,35110,35120,35117,35118,35111,35121,35106,35113,35107,35119,35116,35103,35313,35552,35554,35570,35572,35573,35549,35604,35556,35551,35568,35528,35550,35553,35560,35583,35567,35579,35985,35986,35984,36085,36078,36081,36080,36083,36204,36206,36261,36263,36403,36414,36408,36416,36421,36406,36412,36413,36417,36400,36415,36541,36662,36654,36661,36658,36665,36663,36660,36982,36985,36987,36998,37114,37171,37173,37174,37267,37264,37265,37261,37263,37671,37662,37640,37663,37638,37647,37754,37688,37692,37659,37667,37650,37633,37702,37677,37646,37645,37579,37661,37626,37669,37651,37625,37623,37684,37634,37668,37631,37673,37689,37685,37674,37652,37644,37643,37630,37641,37632,37627,37654,38332,38349,38334,38329,38330,38326,38335,38325,38333,38569,38612,38667,38674,38672,38809,38807,38804,38896,38904,38965,38959,38962,39204,39199,39207,39209,39326,39406,39404,39397,39396,39408,39395,39402,39401,39399,39609,39615,39604,39611,39670,39674,39673,39671,39731,39808,39813,39815,39804,39806,39803,39810,39827,39826,39824,39802,39829,39805,39816,40229,40215,40224,40222,40212,40233,40221,40216,40226,40208,40217,40223,40584,40582,40583,40622,40621,40661,40662,40698,40722,40765,20774,20773,20770,20772,20768,20777,21236,22163,22156,22157,22150,22148,22147,22142,22146,22143,22145,22742,22740,22735,22738,23341,23333,23346,23331,23340,23335,23334,23343,23342,23419,23537,23538,23991,24172,24170,24510,24507,25027,25013,25020,25063,25056,25061,25060,25064,25054,25839,25833,25827,25835,25828,25832,25985,25984,26038,26074,26322,27277,27286,27265,27301,27273,27295,27291,27297,27294,27271,27283,27278,27285,27267,27304,27300,27281,27263,27302,27290,27269,27276,27282,27483,27565,27657,28620,28585,28660,28628,28643,28636,28653,28647,28646,28638,28658,28637,28642,28648,29153,29169,29160,29170,29156,29168,29154,29555,29550,29551,29847,29874,29867,29840,29866,29869,29873,29861,29871,29968,29969,29970,29967,30084,30275,30280,30281,30279,30372,30441,30645,30635,30642,30647,30646,30644,30641,30632,30704,30963,30973,30978,30971,30972,30962,30981,30969,30974,30980,31147,31144,31324,31323,31318,31320,31316,31322,31422,31424,31425,31749,31759,31730,31744,31743,31739,31758,31732,31755,31731,31746,31753,31747,31745,31736,31741,31750,31728,31729,31760,31754,31976,32301,32316,32322,32307,38984,32312,32298,32329,32320,32327,32297,32332,32304,32315,32310,32324,32314,32581,32639,32638,32637,32756,32754,32812,33211,33220,33228,33226,33221,33223,33212,33257,33371,33370,33372,34179,34176,34191,34215,34197,34208,34187,34211,34171,34212,34202,34206,34167,34172,34185,34209,34170,34168,34135,34190,34198,34182,34189,34201,34205,34177,34210,34178,34184,34181,34169,34166,34200,34192,34207,34408,34750,34730,34733,34757,34736,34732,34745,34741,34748,34734,34761,34755,34754,34764,34743,34735,34756,34762,34740,34742,34751,34744,34749,34782,34738,35125,35123,35132,35134,35137,35154,35127,35138,35245,35247,35246,35314,35315,35614,35608,35606,35601,35589,35595,35618,35599,35602,35605,35591,35597,35592,35590,35612,35603,35610,35919,35952,35954,35953,35951,35989,35988,36089,36207,36430,36429,36435,36432,36428,36423,36675,36672,36997,36990,37176,37274,37282,37275,37273,37279,37281,37277,37280,37793,37763,37807,37732,37718,37703,37756,37720,37724,37750,37705,37712,37713,37728,37741,37775,37708,37738,37753,37719,37717,37714,37711,37745,37751,37755,37729,37726,37731,37735,37760,37710,37721,38343,38336,38345,38339,38341,38327,38574,38576,38572,38688,38687,38680,38685,38681,38810,38817,38812,38814,38813,38869,38868,38897,38977,38980,38986,38985,38981,38979,39205,39211,39212,39210,39219,39218,39215,39213,39217,39216,39320,39331,39329,39426,39418,39412,39415,39417,39416,39414,39419,39421,39422,39420,39427,39614,39678,39677,39681,39676,39752,39834,39848,39838,39835,39846,39841,39845,39844,39814,39842,39840,39855,40243,40257,40295,40246,40238,40239,40241,40248,40240,40261,40258,40259,40254,40247,40256,40253,32757,40237,40586,40585,40589,40624,40648,40666,40699,40703,40740,40739,40738,40788,40864,20785,20781,20782,22168,22172,22167,22170,22173,22169,22896,23356,23657,23658,24000,24173,24174,25048,25055,25069,25070,25073,25066,25072,25067,25046,25065,25855,25860,25853,25848,25857,25859,25852,26004,26075,26330,26331,26328,27333,27321,27325,27361,27334,27322,27318,27319,27335,27316,27309,27486,27593,27659,28679,28684,28685,28673,28677,28692,28686,28671,28672,28667,28710,28668,28663,28682,29185,29183,29177,29187,29181,29558,29880,29888,29877,29889,29886,29878,29883,29890,29972,29971,30300,30308,30297,30288,30291,30295,30298,30374,30397,30444,30658,30650,30975,30988,30995,30996,30985,30992,30994,30993,31149,31148,31327,31772,31785,31769,31776,31775,31789,31773,31782,31784,31778,31781,31792,32348,32336,32342,32355,32344,32354,32351,32337,32352,32343,32339,32693,32691,32759,32760,32885,33233,33234,33232,33375,33374,34228,34246,34240,34243,34242,34227,34229,34237,34247,34244,34239,34251,34254,34248,34245,34225,34230,34258,34340,34232,34231,34238,34409,34791,34790,34786,34779,34795,34794,34789,34783,34803,34788,34772,34780,34771,34797,34776,34787,34724,34775,34777,34817,34804,34792,34781,35155,35147,35151,35148,35142,35152,35153,35145,35626,35623,35619,35635,35632,35637,35655,35631,35644,35646,35633,35621,35639,35622,35638,35630,35620,35643,35645,35642,35906,35957,35993,35992,35991,36094,36100,36098,36096,36444,36450,36448,36439,36438,36446,36453,36455,36443,36442,36449,36445,36457,36436,36678,36679,36680,36683,37160,37178,37179,37182,37288,37285,37287,37295,37290,37813,37772,37778,37815,37787,37789,37769,37799,37774,37802,37790,37798,37781,37768,37785,37791,37773,37809,37777,37810,37796,37800,37812,37795,37797,38354,38355,38353,38579,38615,38618,24002,38623,38616,38621,38691,38690,38693,38828,38830,38824,38827,38820,38826,38818,38821,38871,38873,38870,38872,38906,38992,38993,38994,39096,39233,39228,39226,39439,39435,39433,39437,39428,39441,39434,39429,39431,39430,39616,39644,39688,39684,39685,39721,39733,39754,39756,39755,39879,39878,39875,39871,39873,39861,39864,39891,39862,39876,39865,39869,40284,40275,40271,40266,40283,40267,40281,40278,40268,40279,40274,40276,40287,40280,40282,40590,40588,40671,40705,40704,40726,40741,40747,40746,40745,40744,40780,40789,20788,20789,21142,21239,21428,22187,22189,22182,22183,22186,22188,22746,22749,22747,22802,23357,23358,23359,24003,24176,24511,25083,25863,25872,25869,25865,25868,25870,25988,26078,26077,26334,27367,27360,27340,27345,27353,27339,27359,27356,27344,27371,27343,27341,27358,27488,27568,27660,28697,28711,28704,28694,28715,28705,28706,28707,28713,28695,28708,28700,28714,29196,29194,29191,29186,29189,29349,29350,29348,29347,29345,29899,29893,29879,29891,29974,30304,30665,30666,30660,30705,31005,31003,31009,31004,30999,31006,31152,31335,31336,31795,31804,31801,31788,31803,31980,31978,32374,32373,32376,32368,32375,32367,32378,32370,32372,32360,32587,32586,32643,32646,32695,32765,32766,32888,33239,33237,33380,33377,33379,34283,34289,34285,34265,34273,34280,34266,34263,34284,34290,34296,34264,34271,34275,34268,34257,34288,34278,34287,34270,34274,34816,34810,34819,34806,34807,34825,34828,34827,34822,34812,34824,34815,34826,34818,35170,35162,35163,35159,35169,35164,35160,35165,35161,35208,35255,35254,35318,35664,35656,35658,35648,35667,35670,35668,35659,35669,35665,35650,35666,35671,35907,35959,35958,35994,36102,36103,36105,36268,36266,36269,36267,36461,36472,36467,36458,36463,36475,36546,36690,36689,36687,36688,36691,36788,37184,37183,37296,37293,37854,37831,37839,37826,37850,37840,37881,37868,37836,37849,37801,37862,37834,37844,37870,37859,37845,37828,37838,37824,37842,37863,38269,38362,38363,38625,38697,38699,38700,38696,38694,38835,38839,38838,38877,38878,38879,39004,39001,39005,38999,39103,39101,39099,39102,39240,39239,39235,39334,39335,39450,39445,39461,39453,39460,39451,39458,39456,39463,39459,39454,39452,39444,39618,39691,39690,39694,39692,39735,39914,39915,39904,39902,39908,39910,39906,39920,39892,39895,39916,39900,39897,39909,39893,39905,39898,40311,40321,40330,40324,40328,40305,40320,40312,40326,40331,40332,40317,40299,40308,40309,40304,40297,40325,40307,40315,40322,40303,40313,40319,40327,40296,40596,40593,40640,40700,40749,40768,40769,40781,40790,40791,40792,21303,22194,22197,22195,22755,23365,24006,24007,24302,24303,24512,24513,25081,25879,25878,25877,25875,26079,26344,26339,26340,27379,27376,27370,27368,27385,27377,27374,27375,28732,28725,28719,28727,28724,28721,28738,28728,28735,28730,28729,28736,28731,28723,28737,29203,29204,29352,29565,29564,29882,30379,30378,30398,30445,30668,30670,30671,30669,30706,31013,31011,31015,31016,31012,31017,31154,31342,31340,31341,31479,31817,31816,31818,31815,31813,31982,32379,32382,32385,32384,32698,32767,32889,33243,33241,33291,33384,33385,34338,34303,34305,34302,34331,34304,34294,34308,34313,34309,34316,34301,34841,34832,34833,34839,34835,34838,35171,35174,35257,35319,35680,35690,35677,35688,35683,35685,35687,35693,36270,36486,36488,36484,36697,36694,36695,36693,36696,36698,37005,37187,37185,37303,37301,37298,37299,37899,37907,37883,37920,37903,37908,37886,37909,37904,37928,37913,37901,37877,37888,37879,37895,37902,37910,37906,37882,37897,37880,37898,37887,37884,37900,37878,37905,37894,38366,38368,38367,38702,38703,38841,38843,38909,38910,39008,39010,39011,39007,39105,39106,39248,39246,39257,39244,39243,39251,39474,39476,39473,39468,39466,39478,39465,39470,39480,39469,39623,39626,39622,39696,39698,39697,39947,39944,39927,39941,39954,39928,40000,39943,39950,39942,39959,39956,39945,40351,40345,40356,40349,40338,40344,40336,40347,40352,40340,40348,40362,40343,40353,40346,40354,40360,40350,40355,40383,40361,40342,40358,40359,40601,40603,40602,40677,40676,40679,40678,40752,40750,40795,40800,40798,40797,40793,40849,20794,20793,21144,21143,22211,22205,22206,23368,23367,24011,24015,24305,25085,25883,27394,27388,27395,27384,27392,28739,28740,28746,28744,28745,28741,28742,29213,29210,29209,29566,29975,30314,30672,31021,31025,31023,31828,31827,31986,32394,32391,32392,32395,32390,32397,32589,32699,32816,33245,34328,34346,34342,34335,34339,34332,34329,34343,34350,34337,34336,34345,34334,34341,34857,34845,34843,34848,34852,34844,34859,34890,35181,35177,35182,35179,35322,35705,35704,35653,35706,35707,36112,36116,36271,36494,36492,36702,36699,36701,37190,37188,37189,37305,37951,37947,37942,37929,37949,37948,37936,37945,37930,37943,37932,37952,37937,38373,38372,38371,38709,38714,38847,38881,39012,39113,39110,39104,39256,39254,39481,39485,39494,39492,39490,39489,39482,39487,39629,39701,39703,39704,39702,39738,39762,39979,39965,39964,39980,39971,39976,39977,39972,39969,40375,40374,40380,40385,40391,40394,40399,40382,40389,40387,40379,40373,40398,40377,40378,40364,40392,40369,40365,40396,40371,40397,40370,40570,40604,40683,40686,40685,40731,40728,40730,40753,40782,40805,40804,40850,20153,22214,22213,22219,22897,23371,23372,24021,24017,24306,25889,25888,25894,25890,27403,27400,27401,27661,28757,28758,28759,28754,29214,29215,29353,29567,29912,29909,29913,29911,30317,30381,31029,31156,31344,31345,31831,31836,31833,31835,31834,31988,31985,32401,32591,32647,33246,33387,34356,34357,34355,34348,34354,34358,34860,34856,34854,34858,34853,35185,35263,35262,35323,35710,35716,35714,35718,35717,35711,36117,36501,36500,36506,36498,36496,36502,36503,36704,36706,37191,37964,37968,37962,37963,37967,37959,37957,37960,37961,37958,38719,38883,39018,39017,39115,39252,39259,39502,39507,39508,39500,39503,39496,39498,39497,39506,39504,39632,39705,39723,39739,39766,39765,40006,40008,39999,40004,39993,39987,40001,39996,39991,39988,39986,39997,39990,40411,40402,40414,40410,40395,40400,40412,40401,40415,40425,40409,40408,40406,40437,40405,40413,40630,40688,40757,40755,40754,40770,40811,40853,40866,20797,21145,22760,22759,22898,23373,24024,34863,24399,25089,25091,25092,25897,25893,26006,26347,27409,27410,27407,27594,28763,28762,29218,29570,29569,29571,30320,30676,31847,31846,32405,33388,34362,34368,34361,34364,34353,34363,34366,34864,34866,34862,34867,35190,35188,35187,35326,35724,35726,35723,35720,35909,36121,36504,36708,36707,37308,37986,37973,37981,37975,37982,38852,38853,38912,39510,39513,39710,39711,39712,40018,40024,40016,40010,40013,40011,40021,40025,40012,40014,40443,40439,40431,40419,40427,40440,40420,40438,40417,40430,40422,40434,40432,40418,40428,40436,40435,40424,40429,40642,40656,40690,40691,40710,40732,40760,40759,40758,40771,40783,40817,40816,40814,40815,22227,22221,23374,23661,25901,26349,26350,27411,28767,28769,28765,28768,29219,29915,29925,30677,31032,31159,31158,31850,32407,32649,33389,34371,34872,34871,34869,34891,35732,35733,36510,36511,36512,36509,37310,37309,37314,37995,37992,37993,38629,38726,38723,38727,38855,38885,39518,39637,39769,40035,40039,40038,40034,40030,40032,40450,40446,40455,40451,40454,40453,40448,40449,40457,40447,40445,40452,40608,40734,40774,40820,40821,40822,22228,25902,26040,27416,27417,27415,27418,28770,29222,29354,30680,30681,31033,31849,31851,31990,32410,32408,32411,32409,33248,33249,34374,34375,34376,35193,35194,35196,35195,35327,35736,35737,36517,36516,36515,37998,37997,37999,38001,38003,38729,39026,39263,40040,40046,40045,40459,40461,40464,40463,40466,40465,40609,40693,40713,40775,40824,40827,40826,40825,22302,28774,31855,34876,36274,36518,37315,38004,38008,38006,38005,39520,40052,40051,40049,40053,40468,40467,40694,40714,40868,28776,28773,31991,34410,34878,34877,34879,35742,35996,36521,36553,38731,39027,39028,39116,39265,39339,39524,39526,39527,39716,40469,40471,40776,25095,27422,29223,34380,36520,38018,38016,38017,39529,39528,39726,40473,29225,34379,35743,38019,40057,40631,30325,39531,40058,40477,28777,28778,40612,40830,40777,40856,30849,37561,35023,22715,24658,31911,23290,9556,9574,9559,9568,9580,9571,9562,9577,9565,9554,9572,9557,9566,9578,9569,9560,9575,9563,9555,9573,9558,9567,9579,9570,9561,9576,9564,9553,9552,9581,9582,9584,9583,65517,132423,37595,132575,147397,34124,17077,29679,20917,13897,149826,166372,37700,137691,33518,146632,30780,26436,25311,149811,166314,131744,158643,135941,20395,140525,20488,159017,162436,144896,150193,140563,20521,131966,24484,131968,131911,28379,132127,20605,20737,13434,20750,39020,14147,33814,149924,132231,20832,144308,20842,134143,139516,131813,140592,132494,143923,137603,23426,34685,132531,146585,20914,20920,40244,20937,20943,20945,15580,20947,150182,20915,20962,21314,20973,33741,26942,145197,24443,21003,21030,21052,21173,21079,21140,21177,21189,31765,34114,21216,34317,158483,21253,166622,21833,28377,147328,133460,147436,21299,21316,134114,27851,136998,26651,29653,24650,16042,14540,136936,29149,17570,21357,21364,165547,21374,21375,136598,136723,30694,21395,166555,21408,21419,21422,29607,153458,16217,29596,21441,21445,27721,20041,22526,21465,15019,134031,21472,147435,142755,21494,134263,21523,28793,21803,26199,27995,21613,158547,134516,21853,21647,21668,18342,136973,134877,15796,134477,166332,140952,21831,19693,21551,29719,21894,21929,22021,137431,147514,17746,148533,26291,135348,22071,26317,144010,26276,26285,22093,22095,30961,22257,38791,21502,22272,22255,22253,166758,13859,135759,22342,147877,27758,28811,22338,14001,158846,22502,136214,22531,136276,148323,22566,150517,22620,22698,13665,22752,22748,135740,22779,23551,22339,172368,148088,37843,13729,22815,26790,14019,28249,136766,23076,21843,136850,34053,22985,134478,158849,159018,137180,23001,137211,137138,159142,28017,137256,136917,23033,159301,23211,23139,14054,149929,23159,14088,23190,29797,23251,159649,140628,15749,137489,14130,136888,24195,21200,23414,25992,23420,162318,16388,18525,131588,23509,24928,137780,154060,132517,23539,23453,19728,23557,138052,23571,29646,23572,138405,158504,23625,18653,23685,23785,23791,23947,138745,138807,23824,23832,23878,138916,23738,24023,33532,14381,149761,139337,139635,33415,14390,15298,24110,27274,24181,24186,148668,134355,21414,20151,24272,21416,137073,24073,24308,164994,24313,24315,14496,24316,26686,37915,24333,131521,194708,15070,18606,135994,24378,157832,140240,24408,140401,24419,38845,159342,24434,37696,166454,24487,23990,15711,152144,139114,159992,140904,37334,131742,166441,24625,26245,137335,14691,15815,13881,22416,141236,31089,15936,24734,24740,24755,149890,149903,162387,29860,20705,23200,24932,33828,24898,194726,159442,24961,20980,132694,24967,23466,147383,141407,25043,166813,170333,25040,14642,141696,141505,24611,24924,25886,25483,131352,25285,137072,25301,142861,25452,149983,14871,25656,25592,136078,137212,25744,28554,142902,38932,147596,153373,25825,25829,38011,14950,25658,14935,25933,28438,150056,150051,25989,25965,25951,143486,26037,149824,19255,26065,16600,137257,26080,26083,24543,144384,26136,143863,143864,26180,143780,143781,26187,134773,26215,152038,26227,26228,138813,143921,165364,143816,152339,30661,141559,39332,26370,148380,150049,15147,27130,145346,26462,26471,26466,147917,168173,26583,17641,26658,28240,37436,26625,144358,159136,26717,144495,27105,27147,166623,26995,26819,144845,26881,26880,15666,14849,144956,15232,26540,26977,166474,17148,26934,27032,15265,132041,33635,20624,27129,144985,139562,27205,145155,27293,15347,26545,27336,168348,15373,27421,133411,24798,27445,27508,141261,28341,146139,132021,137560,14144,21537,146266,27617,147196,27612,27703,140427,149745,158545,27738,33318,27769,146876,17605,146877,147876,149772,149760,146633,14053,15595,134450,39811,143865,140433,32655,26679,159013,159137,159211,28054,27996,28284,28420,149887,147589,159346,34099,159604,20935,27804,28189,33838,166689,28207,146991,29779,147330,31180,28239,23185,143435,28664,14093,28573,146992,28410,136343,147517,17749,37872,28484,28508,15694,28532,168304,15675,28575,147780,28627,147601,147797,147513,147440,147380,147775,20959,147798,147799,147776,156125,28747,28798,28839,28801,28876,28885,28886,28895,16644,15848,29108,29078,148087,28971,28997,23176,29002,29038,23708,148325,29007,37730,148161,28972,148570,150055,150050,29114,166888,28861,29198,37954,29205,22801,37955,29220,37697,153093,29230,29248,149876,26813,29269,29271,15957,143428,26637,28477,29314,29482,29483,149539,165931,18669,165892,29480,29486,29647,29610,134202,158254,29641,29769,147938,136935,150052,26147,14021,149943,149901,150011,29687,29717,26883,150054,29753,132547,16087,29788,141485,29792,167602,29767,29668,29814,33721,29804,14128,29812,37873,27180,29826,18771,150156,147807,150137,166799,23366,166915,137374,29896,137608,29966,29929,29982,167641,137803,23511,167596,37765,30029,30026,30055,30062,151426,16132,150803,30094,29789,30110,30132,30210,30252,30289,30287,30319,30326,156661,30352,33263,14328,157969,157966,30369,30373,30391,30412,159647,33890,151709,151933,138780,30494,30502,30528,25775,152096,30552,144044,30639,166244,166248,136897,30708,30729,136054,150034,26826,30895,30919,30931,38565,31022,153056,30935,31028,30897,161292,36792,34948,166699,155779,140828,31110,35072,26882,31104,153687,31133,162617,31036,31145,28202,160038,16040,31174,168205,31188],
-  "euc-kr":[44034,44035,44037,44038,44043,44044,44045,44046,44047,44056,44062,44063,44065,44066,44067,44069,44070,44071,44072,44073,44074,44075,44078,44082,44083,44084,null,null,null,null,null,null,44085,44086,44087,44090,44091,44093,44094,44095,44097,44098,44099,44100,44101,44102,44103,44104,44105,44106,44108,44110,44111,44112,44113,44114,44115,44117,null,null,null,null,null,null,44118,44119,44121,44122,44123,44125,44126,44127,44128,44129,44130,44131,44132,44133,44134,44135,44136,44137,44138,44139,44140,44141,44142,44143,44146,44147,44149,44150,44153,44155,44156,44157,44158,44159,44162,44167,44168,44173,44174,44175,44177,44178,44179,44181,44182,44183,44184,44185,44186,44187,44190,44194,44195,44196,44197,44198,44199,44203,44205,44206,44209,44210,44211,44212,44213,44214,44215,44218,44222,44223,44224,44226,44227,44229,44230,44231,44233,44234,44235,44237,44238,44239,44240,44241,44242,44243,44244,44246,44248,44249,44250,44251,44252,44253,44254,44255,44258,44259,44261,44262,44265,44267,44269,44270,44274,44276,44279,44280,44281,44282,44283,44286,44287,44289,44290,44291,44293,44295,44296,44297,44298,44299,44302,44304,44306,44307,44308,44309,44310,44311,44313,44314,44315,44317,44318,44319,44321,44322,44323,44324,44325,44326,44327,44328,44330,44331,44334,44335,44336,44337,44338,44339,null,null,null,null,null,null,44342,44343,44345,44346,44347,44349,44350,44351,44352,44353,44354,44355,44358,44360,44362,44363,44364,44365,44366,44367,44369,44370,44371,44373,44374,44375,null,null,null,null,null,null,44377,44378,44379,44380,44381,44382,44383,44384,44386,44388,44389,44390,44391,44392,44393,44394,44395,44398,44399,44401,44402,44407,44408,44409,44410,44414,44416,44419,44420,44421,44422,44423,44426,44427,44429,44430,44431,44433,44434,44435,44436,44437,44438,44439,44440,44441,44442,44443,44446,44447,44448,44449,44450,44451,44453,44454,44455,44456,44457,44458,44459,44460,44461,44462,44463,44464,44465,44466,44467,44468,44469,44470,44472,44473,44474,44475,44476,44477,44478,44479,44482,44483,44485,44486,44487,44489,44490,44491,44492,44493,44494,44495,44498,44500,44501,44502,44503,44504,44505,44506,44507,44509,44510,44511,44513,44514,44515,44517,44518,44519,44520,44521,44522,44523,44524,44525,44526,44527,44528,44529,44530,44531,44532,44533,44534,44535,44538,44539,44541,44542,44546,44547,44548,44549,44550,44551,44554,44556,44558,44559,44560,44561,44562,44563,44565,44566,44567,44568,44569,44570,44571,44572,null,null,null,null,null,null,44573,44574,44575,44576,44577,44578,44579,44580,44581,44582,44583,44584,44585,44586,44587,44588,44589,44590,44591,44594,44595,44597,44598,44601,44603,44604,null,null,null,null,null,null,44605,44606,44607,44610,44612,44615,44616,44617,44619,44623,44625,44626,44627,44629,44631,44632,44633,44634,44635,44638,44642,44643,44644,44646,44647,44650,44651,44653,44654,44655,44657,44658,44659,44660,44661,44662,44663,44666,44670,44671,44672,44673,44674,44675,44678,44679,44680,44681,44682,44683,44685,44686,44687,44688,44689,44690,44691,44692,44693,44694,44695,44696,44697,44698,44699,44700,44701,44702,44703,44704,44705,44706,44707,44708,44709,44710,44711,44712,44713,44714,44715,44716,44717,44718,44719,44720,44721,44722,44723,44724,44725,44726,44727,44728,44729,44730,44731,44735,44737,44738,44739,44741,44742,44743,44744,44745,44746,44747,44750,44754,44755,44756,44757,44758,44759,44762,44763,44765,44766,44767,44768,44769,44770,44771,44772,44773,44774,44775,44777,44778,44780,44782,44783,44784,44785,44786,44787,44789,44790,44791,44793,44794,44795,44797,44798,44799,44800,44801,44802,44803,44804,44805,null,null,null,null,null,null,44806,44809,44810,44811,44812,44814,44815,44817,44818,44819,44820,44821,44822,44823,44824,44825,44826,44827,44828,44829,44830,44831,44832,44833,44834,44835,null,null,null,null,null,null,44836,44837,44838,44839,44840,44841,44842,44843,44846,44847,44849,44851,44853,44854,44855,44856,44857,44858,44859,44862,44864,44868,44869,44870,44871,44874,44875,44876,44877,44878,44879,44881,44882,44883,44884,44885,44886,44887,44888,44889,44890,44891,44894,44895,44896,44897,44898,44899,44902,44903,44904,44905,44906,44907,44908,44909,44910,44911,44912,44913,44914,44915,44916,44917,44918,44919,44920,44922,44923,44924,44925,44926,44927,44929,44930,44931,44933,44934,44935,44937,44938,44939,44940,44941,44942,44943,44946,44947,44948,44950,44951,44952,44953,44954,44955,44957,44958,44959,44960,44961,44962,44963,44964,44965,44966,44967,44968,44969,44970,44971,44972,44973,44974,44975,44976,44977,44978,44979,44980,44981,44982,44983,44986,44987,44989,44990,44991,44993,44994,44995,44996,44997,44998,45002,45004,45007,45008,45009,45010,45011,45013,45014,45015,45016,45017,45018,45019,45021,45022,45023,45024,45025,null,null,null,null,null,null,45026,45027,45028,45029,45030,45031,45034,45035,45036,45037,45038,45039,45042,45043,45045,45046,45047,45049,45050,45051,45052,45053,45054,45055,45058,45059,null,null,null,null,null,null,45061,45062,45063,45064,45065,45066,45067,45069,45070,45071,45073,45074,45075,45077,45078,45079,45080,45081,45082,45083,45086,45087,45088,45089,45090,45091,45092,45093,45094,45095,45097,45098,45099,45100,45101,45102,45103,45104,45105,45106,45107,45108,45109,45110,45111,45112,45113,45114,45115,45116,45117,45118,45119,45120,45121,45122,45123,45126,45127,45129,45131,45133,45135,45136,45137,45138,45142,45144,45146,45147,45148,45150,45151,45152,45153,45154,45155,45156,45157,45158,45159,45160,45161,45162,45163,45164,45165,45166,45167,45168,45169,45170,45171,45172,45173,45174,45175,45176,45177,45178,45179,45182,45183,45185,45186,45187,45189,45190,45191,45192,45193,45194,45195,45198,45200,45202,45203,45204,45205,45206,45207,45211,45213,45214,45219,45220,45221,45222,45223,45226,45232,45234,45238,45239,45241,45242,45243,45245,45246,45247,45248,45249,45250,45251,45254,45258,45259,45260,45261,45262,45263,45266,null,null,null,null,null,null,45267,45269,45270,45271,45273,45274,45275,45276,45277,45278,45279,45281,45282,45283,45284,45286,45287,45288,45289,45290,45291,45292,45293,45294,45295,45296,null,null,null,null,null,null,45297,45298,45299,45300,45301,45302,45303,45304,45305,45306,45307,45308,45309,45310,45311,45312,45313,45314,45315,45316,45317,45318,45319,45322,45325,45326,45327,45329,45332,45333,45334,45335,45338,45342,45343,45344,45345,45346,45350,45351,45353,45354,45355,45357,45358,45359,45360,45361,45362,45363,45366,45370,45371,45372,45373,45374,45375,45378,45379,45381,45382,45383,45385,45386,45387,45388,45389,45390,45391,45394,45395,45398,45399,45401,45402,45403,45405,45406,45407,45409,45410,45411,45412,45413,45414,45415,45416,45417,45418,45419,45420,45421,45422,45423,45424,45425,45426,45427,45428,45429,45430,45431,45434,45435,45437,45438,45439,45441,45443,45444,45445,45446,45447,45450,45452,45454,45455,45456,45457,45461,45462,45463,45465,45466,45467,45469,45470,45471,45472,45473,45474,45475,45476,45477,45478,45479,45481,45482,45483,45484,45485,45486,45487,45488,45489,45490,45491,45492,45493,45494,45495,45496,null,null,null,null,null,null,45497,45498,45499,45500,45501,45502,45503,45504,45505,45506,45507,45508,45509,45510,45511,45512,45513,45514,45515,45517,45518,45519,45521,45522,45523,45525,null,null,null,null,null,null,45526,45527,45528,45529,45530,45531,45534,45536,45537,45538,45539,45540,45541,45542,45543,45546,45547,45549,45550,45551,45553,45554,45555,45556,45557,45558,45559,45560,45562,45564,45566,45567,45568,45569,45570,45571,45574,45575,45577,45578,45581,45582,45583,45584,45585,45586,45587,45590,45592,45594,45595,45596,45597,45598,45599,45601,45602,45603,45604,45605,45606,45607,45608,45609,45610,45611,45612,45613,45614,45615,45616,45617,45618,45619,45621,45622,45623,45624,45625,45626,45627,45629,45630,45631,45632,45633,45634,45635,45636,45637,45638,45639,45640,45641,45642,45643,45644,45645,45646,45647,45648,45649,45650,45651,45652,45653,45654,45655,45657,45658,45659,45661,45662,45663,45665,45666,45667,45668,45669,45670,45671,45674,45675,45676,45677,45678,45679,45680,45681,45682,45683,45686,45687,45688,45689,45690,45691,45693,45694,45695,45696,45697,45698,45699,45702,45703,45704,45706,45707,45708,45709,45710,null,null,null,null,null,null,45711,45714,45715,45717,45718,45719,45723,45724,45725,45726,45727,45730,45732,45735,45736,45737,45739,45741,45742,45743,45745,45746,45747,45749,45750,45751,null,null,null,null,null,null,45752,45753,45754,45755,45756,45757,45758,45759,45760,45761,45762,45763,45764,45765,45766,45767,45770,45771,45773,45774,45775,45777,45779,45780,45781,45782,45783,45786,45788,45790,45791,45792,45793,45795,45799,45801,45802,45808,45809,45810,45814,45820,45821,45822,45826,45827,45829,45830,45831,45833,45834,45835,45836,45837,45838,45839,45842,45846,45847,45848,45849,45850,45851,45853,45854,45855,45856,45857,45858,45859,45860,45861,45862,45863,45864,45865,45866,45867,45868,45869,45870,45871,45872,45873,45874,45875,45876,45877,45878,45879,45880,45881,45882,45883,45884,45885,45886,45887,45888,45889,45890,45891,45892,45893,45894,45895,45896,45897,45898,45899,45900,45901,45902,45903,45904,45905,45906,45907,45911,45913,45914,45917,45920,45921,45922,45923,45926,45928,45930,45932,45933,45935,45938,45939,45941,45942,45943,45945,45946,45947,45948,45949,45950,45951,45954,45958,45959,45960,45961,45962,45963,45965,null,null,null,null,null,null,45966,45967,45969,45970,45971,45973,45974,45975,45976,45977,45978,45979,45980,45981,45982,45983,45986,45987,45988,45989,45990,45991,45993,45994,45995,45997,null,null,null,null,null,null,45998,45999,46000,46001,46002,46003,46004,46005,46006,46007,46008,46009,46010,46011,46012,46013,46014,46015,46016,46017,46018,46019,46022,46023,46025,46026,46029,46031,46033,46034,46035,46038,46040,46042,46044,46046,46047,46049,46050,46051,46053,46054,46055,46057,46058,46059,46060,46061,46062,46063,46064,46065,46066,46067,46068,46069,46070,46071,46072,46073,46074,46075,46077,46078,46079,46080,46081,46082,46083,46084,46085,46086,46087,46088,46089,46090,46091,46092,46093,46094,46095,46097,46098,46099,46100,46101,46102,46103,46105,46106,46107,46109,46110,46111,46113,46114,46115,46116,46117,46118,46119,46122,46124,46125,46126,46127,46128,46129,46130,46131,46133,46134,46135,46136,46137,46138,46139,46140,46141,46142,46143,46144,46145,46146,46147,46148,46149,46150,46151,46152,46153,46154,46155,46156,46157,46158,46159,46162,46163,46165,46166,46167,46169,46170,46171,46172,46173,46174,46175,46178,46180,46182,null,null,null,null,null,null,46183,46184,46185,46186,46187,46189,46190,46191,46192,46193,46194,46195,46196,46197,46198,46199,46200,46201,46202,46203,46204,46205,46206,46207,46209,46210,null,null,null,null,null,null,46211,46212,46213,46214,46215,46217,46218,46219,46220,46221,46222,46223,46224,46225,46226,46227,46228,46229,46230,46231,46232,46233,46234,46235,46236,46238,46239,46240,46241,46242,46243,46245,46246,46247,46249,46250,46251,46253,46254,46255,46256,46257,46258,46259,46260,46262,46264,46266,46267,46268,46269,46270,46271,46273,46274,46275,46277,46278,46279,46281,46282,46283,46284,46285,46286,46287,46289,46290,46291,46292,46294,46295,46296,46297,46298,46299,46302,46303,46305,46306,46309,46311,46312,46313,46314,46315,46318,46320,46322,46323,46324,46325,46326,46327,46329,46330,46331,46332,46333,46334,46335,46336,46337,46338,46339,46340,46341,46342,46343,46344,46345,46346,46347,46348,46349,46350,46351,46352,46353,46354,46355,46358,46359,46361,46362,46365,46366,46367,46368,46369,46370,46371,46374,46379,46380,46381,46382,46383,46386,46387,46389,46390,46391,46393,46394,46395,46396,46397,46398,46399,46402,46406,null,null,null,null,null,null,46407,46408,46409,46410,46414,46415,46417,46418,46419,46421,46422,46423,46424,46425,46426,46427,46430,46434,46435,46436,46437,46438,46439,46440,46441,46442,null,null,null,null,null,null,46443,46444,46445,46446,46447,46448,46449,46450,46451,46452,46453,46454,46455,46456,46457,46458,46459,46460,46461,46462,46463,46464,46465,46466,46467,46468,46469,46470,46471,46472,46473,46474,46475,46476,46477,46478,46479,46480,46481,46482,46483,46484,46485,46486,46487,46488,46489,46490,46491,46492,46493,46494,46495,46498,46499,46501,46502,46503,46505,46508,46509,46510,46511,46514,46518,46519,46520,46521,46522,46526,46527,46529,46530,46531,46533,46534,46535,46536,46537,46538,46539,46542,46546,46547,46548,46549,46550,46551,46553,46554,46555,46556,46557,46558,46559,46560,46561,46562,46563,46564,46565,46566,46567,46568,46569,46570,46571,46573,46574,46575,46576,46577,46578,46579,46580,46581,46582,46583,46584,46585,46586,46587,46588,46589,46590,46591,46592,46593,46594,46595,46596,46597,46598,46599,46600,46601,46602,46603,46604,46605,46606,46607,46610,46611,46613,46614,46615,46617,46618,46619,46620,46621,null,null,null,null,null,null,46622,46623,46624,46625,46626,46627,46628,46630,46631,46632,46633,46634,46635,46637,46638,46639,46640,46641,46642,46643,46645,46646,46647,46648,46649,46650,null,null,null,null,null,null,46651,46652,46653,46654,46655,46656,46657,46658,46659,46660,46661,46662,46663,46665,46666,46667,46668,46669,46670,46671,46672,46673,46674,46675,46676,46677,46678,46679,46680,46681,46682,46683,46684,46685,46686,46687,46688,46689,46690,46691,46693,46694,46695,46697,46698,46699,46700,46701,46702,46703,46704,46705,46706,46707,46708,46709,46710,46711,46712,46713,46714,46715,46716,46717,46718,46719,46720,46721,46722,46723,46724,46725,46726,46727,46728,46729,46730,46731,46732,46733,46734,46735,46736,46737,46738,46739,46740,46741,46742,46743,46744,46745,46746,46747,46750,46751,46753,46754,46755,46757,46758,46759,46760,46761,46762,46765,46766,46767,46768,46770,46771,46772,46773,46774,46775,46776,46777,46778,46779,46780,46781,46782,46783,46784,46785,46786,46787,46788,46789,46790,46791,46792,46793,46794,46795,46796,46797,46798,46799,46800,46801,46802,46803,46805,46806,46807,46808,46809,46810,46811,46812,46813,null,null,null,null,null,null,46814,46815,46816,46817,46818,46819,46820,46821,46822,46823,46824,46825,46826,46827,46828,46829,46830,46831,46833,46834,46835,46837,46838,46839,46841,46842,null,null,null,null,null,null,46843,46844,46845,46846,46847,46850,46851,46852,46854,46855,46856,46857,46858,46859,46860,46861,46862,46863,46864,46865,46866,46867,46868,46869,46870,46871,46872,46873,46874,46875,46876,46877,46878,46879,46880,46881,46882,46883,46884,46885,46886,46887,46890,46891,46893,46894,46897,46898,46899,46900,46901,46902,46903,46906,46908,46909,46910,46911,46912,46913,46914,46915,46917,46918,46919,46921,46922,46923,46925,46926,46927,46928,46929,46930,46931,46934,46935,46936,46937,46938,46939,46940,46941,46942,46943,46945,46946,46947,46949,46950,46951,46953,46954,46955,46956,46957,46958,46959,46962,46964,46966,46967,46968,46969,46970,46971,46974,46975,46977,46978,46979,46981,46982,46983,46984,46985,46986,46987,46990,46995,46996,46997,47002,47003,47005,47006,47007,47009,47010,47011,47012,47013,47014,47015,47018,47022,47023,47024,47025,47026,47027,47030,47031,47033,47034,47035,47036,47037,47038,47039,47040,47041,null,null,null,null,null,null,47042,47043,47044,47045,47046,47048,47050,47051,47052,47053,47054,47055,47056,47057,47058,47059,47060,47061,47062,47063,47064,47065,47066,47067,47068,47069,null,null,null,null,null,null,47070,47071,47072,47073,47074,47075,47076,47077,47078,47079,47080,47081,47082,47083,47086,47087,47089,47090,47091,47093,47094,47095,47096,47097,47098,47099,47102,47106,47107,47108,47109,47110,47114,47115,47117,47118,47119,47121,47122,47123,47124,47125,47126,47127,47130,47132,47134,47135,47136,47137,47138,47139,47142,47143,47145,47146,47147,47149,47150,47151,47152,47153,47154,47155,47158,47162,47163,47164,47165,47166,47167,47169,47170,47171,47173,47174,47175,47176,47177,47178,47179,47180,47181,47182,47183,47184,47186,47188,47189,47190,47191,47192,47193,47194,47195,47198,47199,47201,47202,47203,47205,47206,47207,47208,47209,47210,47211,47214,47216,47218,47219,47220,47221,47222,47223,47225,47226,47227,47229,47230,47231,47232,47233,47234,47235,47236,47237,47238,47239,47240,47241,47242,47243,47244,47246,47247,47248,47249,47250,47251,47252,47253,47254,47255,47256,47257,47258,47259,47260,47261,47262,47263,null,null,null,null,null,null,47264,47265,47266,47267,47268,47269,47270,47271,47273,47274,47275,47276,47277,47278,47279,47281,47282,47283,47285,47286,47287,47289,47290,47291,47292,47293,null,null,null,null,null,null,47294,47295,47298,47300,47302,47303,47304,47305,47306,47307,47309,47310,47311,47313,47314,47315,47317,47318,47319,47320,47321,47322,47323,47324,47326,47328,47330,47331,47332,47333,47334,47335,47338,47339,47341,47342,47343,47345,47346,47347,47348,47349,47350,47351,47354,47356,47358,47359,47360,47361,47362,47363,47365,47366,47367,47368,47369,47370,47371,47372,47373,47374,47375,47376,47377,47378,47379,47380,47381,47382,47383,47385,47386,47387,47388,47389,47390,47391,47393,47394,47395,47396,47397,47398,47399,47400,47401,47402,47403,47404,47405,47406,47407,47408,47409,47410,47411,47412,47413,47414,47415,47416,47417,47418,47419,47422,47423,47425,47426,47427,47429,47430,47431,47432,47433,47434,47435,47437,47438,47440,47442,47443,47444,47445,47446,47447,47450,47451,47453,47454,47455,47457,47458,47459,47460,47461,47462,47463,47466,47468,47470,47471,47472,47473,47474,47475,47478,47479,47481,47482,47483,47485,null,null,null,null,null,null,47486,47487,47488,47489,47490,47491,47494,47496,47499,47500,47503,47504,47505,47506,47507,47508,47509,47510,47511,47512,47513,47514,47515,47516,47517,47518,null,null,null,null,null,null,47519,47520,47521,47522,47523,47524,47525,47526,47527,47528,47529,47530,47531,47534,47535,47537,47538,47539,47541,47542,47543,47544,47545,47546,47547,47550,47552,47554,47555,47556,47557,47558,47559,47562,47563,47565,47571,47572,47573,47574,47575,47578,47580,47583,47584,47586,47590,47591,47593,47594,47595,47597,47598,47599,47600,47601,47602,47603,47606,47611,47612,47613,47614,47615,47618,47619,47620,47621,47622,47623,47625,47626,47627,47628,47629,47630,47631,47632,47633,47634,47635,47636,47638,47639,47640,47641,47642,47643,47644,47645,47646,47647,47648,47649,47650,47651,47652,47653,47654,47655,47656,47657,47658,47659,47660,47661,47662,47663,47664,47665,47666,47667,47668,47669,47670,47671,47674,47675,47677,47678,47679,47681,47683,47684,47685,47686,47687,47690,47692,47695,47696,47697,47698,47702,47703,47705,47706,47707,47709,47710,47711,47712,47713,47714,47715,47718,47722,47723,47724,47725,47726,47727,null,null,null,null,null,null,47730,47731,47733,47734,47735,47737,47738,47739,47740,47741,47742,47743,47744,47745,47746,47750,47752,47753,47754,47755,47757,47758,47759,47760,47761,47762,null,null,null,null,null,null,47763,47764,47765,47766,47767,47768,47769,47770,47771,47772,47773,47774,47775,47776,47777,47778,47779,47780,47781,47782,47783,47786,47789,47790,47791,47793,47795,47796,47797,47798,47799,47802,47804,47806,47807,47808,47809,47810,47811,47813,47814,47815,47817,47818,47819,47820,47821,47822,47823,47824,47825,47826,47827,47828,47829,47830,47831,47834,47835,47836,47837,47838,47839,47840,47841,47842,47843,47844,47845,47846,47847,47848,47849,47850,47851,47852,47853,47854,47855,47856,47857,47858,47859,47860,47861,47862,47863,47864,47865,47866,47867,47869,47870,47871,47873,47874,47875,47877,47878,47879,47880,47881,47882,47883,47884,47886,47888,47890,47891,47892,47893,47894,47895,47897,47898,47899,47901,47902,47903,47905,47906,47907,47908,47909,47910,47911,47912,47914,47916,47917,47918,47919,47920,47921,47922,47923,47927,47929,47930,47935,47936,47937,47938,47939,47942,47944,47946,47947,47948,47950,47953,47954,null,null,null,null,null,null,47955,47957,47958,47959,47961,47962,47963,47964,47965,47966,47967,47968,47970,47972,47973,47974,47975,47976,47977,47978,47979,47981,47982,47983,47984,47985,null,null,null,null,null,null,47986,47987,47988,47989,47990,47991,47992,47993,47994,47995,47996,47997,47998,47999,48000,48001,48002,48003,48004,48005,48006,48007,48009,48010,48011,48013,48014,48015,48017,48018,48019,48020,48021,48022,48023,48024,48025,48026,48027,48028,48029,48030,48031,48032,48033,48034,48035,48037,48038,48039,48041,48042,48043,48045,48046,48047,48048,48049,48050,48051,48053,48054,48056,48057,48058,48059,48060,48061,48062,48063,48065,48066,48067,48069,48070,48071,48073,48074,48075,48076,48077,48078,48079,48081,48082,48084,48085,48086,48087,48088,48089,48090,48091,48092,48093,48094,48095,48096,48097,48098,48099,48100,48101,48102,48103,48104,48105,48106,48107,48108,48109,48110,48111,48112,48113,48114,48115,48116,48117,48118,48119,48122,48123,48125,48126,48129,48131,48132,48133,48134,48135,48138,48142,48144,48146,48147,48153,48154,48160,48161,48162,48163,48166,48168,48170,48171,48172,48174,48175,48178,48179,48181,null,null,null,null,null,null,48182,48183,48185,48186,48187,48188,48189,48190,48191,48194,48198,48199,48200,48202,48203,48206,48207,48209,48210,48211,48212,48213,48214,48215,48216,48217,null,null,null,null,null,null,48218,48219,48220,48222,48223,48224,48225,48226,48227,48228,48229,48230,48231,48232,48233,48234,48235,48236,48237,48238,48239,48240,48241,48242,48243,48244,48245,48246,48247,48248,48249,48250,48251,48252,48253,48254,48255,48256,48257,48258,48259,48262,48263,48265,48266,48269,48271,48272,48273,48274,48275,48278,48280,48283,48284,48285,48286,48287,48290,48291,48293,48294,48297,48298,48299,48300,48301,48302,48303,48306,48310,48311,48312,48313,48314,48315,48318,48319,48321,48322,48323,48325,48326,48327,48328,48329,48330,48331,48332,48334,48338,48339,48340,48342,48343,48345,48346,48347,48349,48350,48351,48352,48353,48354,48355,48356,48357,48358,48359,48360,48361,48362,48363,48364,48365,48366,48367,48368,48369,48370,48371,48375,48377,48378,48379,48381,48382,48383,48384,48385,48386,48387,48390,48392,48394,48395,48396,48397,48398,48399,48401,48402,48403,48405,48406,48407,48408,48409,48410,48411,48412,48413,null,null,null,null,null,null,48414,48415,48416,48417,48418,48419,48421,48422,48423,48424,48425,48426,48427,48429,48430,48431,48432,48433,48434,48435,48436,48437,48438,48439,48440,48441,null,null,null,null,null,null,48442,48443,48444,48445,48446,48447,48449,48450,48451,48452,48453,48454,48455,48458,48459,48461,48462,48463,48465,48466,48467,48468,48469,48470,48471,48474,48475,48476,48477,48478,48479,48480,48481,48482,48483,48485,48486,48487,48489,48490,48491,48492,48493,48494,48495,48496,48497,48498,48499,48500,48501,48502,48503,48504,48505,48506,48507,48508,48509,48510,48511,48514,48515,48517,48518,48523,48524,48525,48526,48527,48530,48532,48534,48535,48536,48539,48541,48542,48543,48544,48545,48546,48547,48549,48550,48551,48552,48553,48554,48555,48556,48557,48558,48559,48561,48562,48563,48564,48565,48566,48567,48569,48570,48571,48572,48573,48574,48575,48576,48577,48578,48579,48580,48581,48582,48583,48584,48585,48586,48587,48588,48589,48590,48591,48592,48593,48594,48595,48598,48599,48601,48602,48603,48605,48606,48607,48608,48609,48610,48611,48612,48613,48614,48615,48616,48618,48619,48620,48621,48622,48623,48625,null,null,null,null,null,null,48626,48627,48629,48630,48631,48633,48634,48635,48636,48637,48638,48639,48641,48642,48644,48646,48647,48648,48649,48650,48651,48654,48655,48657,48658,48659,null,null,null,null,null,null,48661,48662,48663,48664,48665,48666,48667,48670,48672,48673,48674,48675,48676,48677,48678,48679,48680,48681,48682,48683,48684,48685,48686,48687,48688,48689,48690,48691,48692,48693,48694,48695,48696,48697,48698,48699,48700,48701,48702,48703,48704,48705,48706,48707,48710,48711,48713,48714,48715,48717,48719,48720,48721,48722,48723,48726,48728,48732,48733,48734,48735,48738,48739,48741,48742,48743,48745,48747,48748,48749,48750,48751,48754,48758,48759,48760,48761,48762,48766,48767,48769,48770,48771,48773,48774,48775,48776,48777,48778,48779,48782,48786,48787,48788,48789,48790,48791,48794,48795,48796,48797,48798,48799,48800,48801,48802,48803,48804,48805,48806,48807,48809,48810,48811,48812,48813,48814,48815,48816,48817,48818,48819,48820,48821,48822,48823,48824,48825,48826,48827,48828,48829,48830,48831,48832,48833,48834,48835,48836,48837,48838,48839,48840,48841,48842,48843,48844,48845,48846,48847,48850,48851,null,null,null,null,null,null,48853,48854,48857,48858,48859,48860,48861,48862,48863,48865,48866,48870,48871,48872,48873,48874,48875,48877,48878,48879,48880,48881,48882,48883,48884,48885,null,null,null,null,null,null,48886,48887,48888,48889,48890,48891,48892,48893,48894,48895,48896,48898,48899,48900,48901,48902,48903,48906,48907,48908,48909,48910,48911,48912,48913,48914,48915,48916,48917,48918,48919,48922,48926,48927,48928,48929,48930,48931,48932,48933,48934,48935,48936,48937,48938,48939,48940,48941,48942,48943,48944,48945,48946,48947,48948,48949,48950,48951,48952,48953,48954,48955,48956,48957,48958,48959,48962,48963,48965,48966,48967,48969,48970,48971,48972,48973,48974,48975,48978,48979,48980,48982,48983,48984,48985,48986,48987,48988,48989,48990,48991,48992,48993,48994,48995,48996,48997,48998,48999,49000,49001,49002,49003,49004,49005,49006,49007,49008,49009,49010,49011,49012,49013,49014,49015,49016,49017,49018,49019,49020,49021,49022,49023,49024,49025,49026,49027,49028,49029,49030,49031,49032,49033,49034,49035,49036,49037,49038,49039,49040,49041,49042,49043,49045,49046,49047,49048,49049,49050,49051,49052,49053,null,null,null,null,null,null,49054,49055,49056,49057,49058,49059,49060,49061,49062,49063,49064,49065,49066,49067,49068,49069,49070,49071,49073,49074,49075,49076,49077,49078,49079,49080,null,null,null,null,null,null,49081,49082,49083,49084,49085,49086,49087,49088,49089,49090,49091,49092,49094,49095,49096,49097,49098,49099,49102,49103,49105,49106,49107,49109,49110,49111,49112,49113,49114,49115,49117,49118,49120,49122,49123,49124,49125,49126,49127,49128,49129,49130,49131,49132,49133,49134,49135,49136,49137,49138,49139,49140,49141,49142,49143,49144,49145,49146,49147,49148,49149,49150,49151,49152,49153,49154,49155,49156,49157,49158,49159,49160,49161,49162,49163,49164,49165,49166,49167,49168,49169,49170,49171,49172,49173,49174,49175,49176,49177,49178,49179,49180,49181,49182,49183,49184,49185,49186,49187,49188,49189,49190,49191,49192,49193,49194,49195,49196,49197,49198,49199,49200,49201,49202,49203,49204,49205,49206,49207,49208,49209,49210,49211,49213,49214,49215,49216,49217,49218,49219,49220,49221,49222,49223,49224,49225,49226,49227,49228,49229,49230,49231,49232,49234,49235,49236,49237,49238,49239,49241,49242,49243,null,null,null,null,null,null,49245,49246,49247,49249,49250,49251,49252,49253,49254,49255,49258,49259,49260,49261,49262,49263,49264,49265,49266,49267,49268,49269,49270,49271,49272,49273,null,null,null,null,null,null,49274,49275,49276,49277,49278,49279,49280,49281,49282,49283,49284,49285,49286,49287,49288,49289,49290,49291,49292,49293,49294,49295,49298,49299,49301,49302,49303,49305,49306,49307,49308,49309,49310,49311,49314,49316,49318,49319,49320,49321,49322,49323,49326,49329,49330,49335,49336,49337,49338,49339,49342,49346,49347,49348,49350,49351,49354,49355,49357,49358,49359,49361,49362,49363,49364,49365,49366,49367,49370,49374,49375,49376,49377,49378,49379,49382,49383,49385,49386,49387,49389,49390,49391,49392,49393,49394,49395,49398,49400,49402,49403,49404,49405,49406,49407,49409,49410,49411,49413,49414,49415,49417,49418,49419,49420,49421,49422,49423,49425,49426,49427,49428,49430,49431,49432,49433,49434,49435,49441,49442,49445,49448,49449,49450,49451,49454,49458,49459,49460,49461,49463,49466,49467,49469,49470,49471,49473,49474,49475,49476,49477,49478,49479,49482,49486,49487,49488,49489,49490,49491,49494,49495,null,null,null,null,null,null,49497,49498,49499,49501,49502,49503,49504,49505,49506,49507,49510,49514,49515,49516,49517,49518,49519,49521,49522,49523,49525,49526,49527,49529,49530,49531,null,null,null,null,null,null,49532,49533,49534,49535,49536,49537,49538,49539,49540,49542,49543,49544,49545,49546,49547,49551,49553,49554,49555,49557,49559,49560,49561,49562,49563,49566,49568,49570,49571,49572,49574,49575,49578,49579,49581,49582,49583,49585,49586,49587,49588,49589,49590,49591,49592,49593,49594,49595,49596,49598,49599,49600,49601,49602,49603,49605,49606,49607,49609,49610,49611,49613,49614,49615,49616,49617,49618,49619,49621,49622,49625,49626,49627,49628,49629,49630,49631,49633,49634,49635,49637,49638,49639,49641,49642,49643,49644,49645,49646,49647,49650,49652,49653,49654,49655,49656,49657,49658,49659,49662,49663,49665,49666,49667,49669,49670,49671,49672,49673,49674,49675,49678,49680,49682,49683,49684,49685,49686,49687,49690,49691,49693,49694,49697,49698,49699,49700,49701,49702,49703,49706,49708,49710,49712,49715,49717,49718,49719,49720,49721,49722,49723,49724,49725,49726,49727,49728,49729,49730,49731,49732,49733,null,null,null,null,null,null,49734,49735,49737,49738,49739,49740,49741,49742,49743,49746,49747,49749,49750,49751,49753,49754,49755,49756,49757,49758,49759,49761,49762,49763,49764,49766,null,null,null,null,null,null,49767,49768,49769,49770,49771,49774,49775,49777,49778,49779,49781,49782,49783,49784,49785,49786,49787,49790,49792,49794,49795,49796,49797,49798,49799,49802,49803,49804,49805,49806,49807,49809,49810,49811,49812,49813,49814,49815,49817,49818,49820,49822,49823,49824,49825,49826,49827,49830,49831,49833,49834,49835,49838,49839,49840,49841,49842,49843,49846,49848,49850,49851,49852,49853,49854,49855,49856,49857,49858,49859,49860,49861,49862,49863,49864,49865,49866,49867,49868,49869,49870,49871,49872,49873,49874,49875,49876,49877,49878,49879,49880,49881,49882,49883,49886,49887,49889,49890,49893,49894,49895,49896,49897,49898,49902,49904,49906,49907,49908,49909,49911,49914,49917,49918,49919,49921,49922,49923,49924,49925,49926,49927,49930,49931,49934,49935,49936,49937,49938,49942,49943,49945,49946,49947,49949,49950,49951,49952,49953,49954,49955,49958,49959,49962,49963,49964,49965,49966,49967,49968,49969,49970,null,null,null,null,null,null,49971,49972,49973,49974,49975,49976,49977,49978,49979,49980,49981,49982,49983,49984,49985,49986,49987,49988,49990,49991,49992,49993,49994,49995,49996,49997,null,null,null,null,null,null,49998,49999,50000,50001,50002,50003,50004,50005,50006,50007,50008,50009,50010,50011,50012,50013,50014,50015,50016,50017,50018,50019,50020,50021,50022,50023,50026,50027,50029,50030,50031,50033,50035,50036,50037,50038,50039,50042,50043,50046,50047,50048,50049,50050,50051,50053,50054,50055,50057,50058,50059,50061,50062,50063,50064,50065,50066,50067,50068,50069,50070,50071,50072,50073,50074,50075,50076,50077,50078,50079,50080,50081,50082,50083,50084,50085,50086,50087,50088,50089,50090,50091,50092,50093,50094,50095,50096,50097,50098,50099,50100,50101,50102,50103,50104,50105,50106,50107,50108,50109,50110,50111,50113,50114,50115,50116,50117,50118,50119,50120,50121,50122,50123,50124,50125,50126,50127,50128,50129,50130,50131,50132,50133,50134,50135,50138,50139,50141,50142,50145,50147,50148,50149,50150,50151,50154,50155,50156,50158,50159,50160,50161,50162,50163,50166,50167,50169,50170,50171,50172,50173,50174,null,null,null,null,null,null,50175,50176,50177,50178,50179,50180,50181,50182,50183,50185,50186,50187,50188,50189,50190,50191,50193,50194,50195,50196,50197,50198,50199,50200,50201,50202,null,null,null,null,null,null,50203,50204,50205,50206,50207,50208,50209,50210,50211,50213,50214,50215,50216,50217,50218,50219,50221,50222,50223,50225,50226,50227,50229,50230,50231,50232,50233,50234,50235,50238,50239,50240,50241,50242,50243,50244,50245,50246,50247,50249,50250,50251,50252,50253,50254,50255,50256,50257,50258,50259,50260,50261,50262,50263,50264,50265,50266,50267,50268,50269,50270,50271,50272,50273,50274,50275,50278,50279,50281,50282,50283,50285,50286,50287,50288,50289,50290,50291,50294,50295,50296,50298,50299,50300,50301,50302,50303,50305,50306,50307,50308,50309,50310,50311,50312,50313,50314,50315,50316,50317,50318,50319,50320,50321,50322,50323,50325,50326,50327,50328,50329,50330,50331,50333,50334,50335,50336,50337,50338,50339,50340,50341,50342,50343,50344,50345,50346,50347,50348,50349,50350,50351,50352,50353,50354,50355,50356,50357,50358,50359,50361,50362,50363,50365,50366,50367,50368,50369,50370,50371,50372,50373,null,null,null,null,null,null,50374,50375,50376,50377,50378,50379,50380,50381,50382,50383,50384,50385,50386,50387,50388,50389,50390,50391,50392,50393,50394,50395,50396,50397,50398,50399,null,null,null,null,null,null,50400,50401,50402,50403,50404,50405,50406,50407,50408,50410,50411,50412,50413,50414,50415,50418,50419,50421,50422,50423,50425,50427,50428,50429,50430,50434,50435,50436,50437,50438,50439,50440,50441,50442,50443,50445,50446,50447,50449,50450,50451,50453,50454,50455,50456,50457,50458,50459,50461,50462,50463,50464,50465,50466,50467,50468,50469,50470,50471,50474,50475,50477,50478,50479,50481,50482,50483,50484,50485,50486,50487,50490,50492,50494,50495,50496,50497,50498,50499,50502,50503,50507,50511,50512,50513,50514,50518,50522,50523,50524,50527,50530,50531,50533,50534,50535,50537,50538,50539,50540,50541,50542,50543,50546,50550,50551,50552,50553,50554,50555,50558,50559,50561,50562,50563,50565,50566,50568,50569,50570,50571,50574,50576,50578,50579,50580,50582,50585,50586,50587,50589,50590,50591,50593,50594,50595,50596,50597,50598,50599,50600,50602,50603,50604,50605,50606,50607,50608,50609,50610,50611,50614,null,null,null,null,null,null,50615,50618,50623,50624,50625,50626,50627,50635,50637,50639,50642,50643,50645,50646,50647,50649,50650,50651,50652,50653,50654,50655,50658,50660,50662,50663,null,null,null,null,null,null,50664,50665,50666,50667,50671,50673,50674,50675,50677,50680,50681,50682,50683,50690,50691,50692,50697,50698,50699,50701,50702,50703,50705,50706,50707,50708,50709,50710,50711,50714,50717,50718,50719,50720,50721,50722,50723,50726,50727,50729,50730,50731,50735,50737,50738,50742,50744,50746,50748,50749,50750,50751,50754,50755,50757,50758,50759,50761,50762,50763,50764,50765,50766,50767,50770,50774,50775,50776,50777,50778,50779,50782,50783,50785,50786,50787,50788,50789,50790,50791,50792,50793,50794,50795,50797,50798,50800,50802,50803,50804,50805,50806,50807,50810,50811,50813,50814,50815,50817,50818,50819,50820,50821,50822,50823,50826,50828,50830,50831,50832,50833,50834,50835,50838,50839,50841,50842,50843,50845,50846,50847,50848,50849,50850,50851,50854,50856,50858,50859,50860,50861,50862,50863,50866,50867,50869,50870,50871,50875,50876,50877,50878,50879,50882,50884,50886,50887,50888,50889,50890,50891,50894,null,null,null,null,null,null,50895,50897,50898,50899,50901,50902,50903,50904,50905,50906,50907,50910,50911,50914,50915,50916,50917,50918,50919,50922,50923,50925,50926,50927,50929,50930,null,null,null,null,null,null,50931,50932,50933,50934,50935,50938,50939,50940,50942,50943,50944,50945,50946,50947,50950,50951,50953,50954,50955,50957,50958,50959,50960,50961,50962,50963,50966,50968,50970,50971,50972,50973,50974,50975,50978,50979,50981,50982,50983,50985,50986,50987,50988,50989,50990,50991,50994,50996,50998,51000,51001,51002,51003,51006,51007,51009,51010,51011,51013,51014,51015,51016,51017,51019,51022,51024,51033,51034,51035,51037,51038,51039,51041,51042,51043,51044,51045,51046,51047,51049,51050,51052,51053,51054,51055,51056,51057,51058,51059,51062,51063,51065,51066,51067,51071,51072,51073,51074,51078,51083,51084,51085,51087,51090,51091,51093,51097,51099,51100,51101,51102,51103,51106,51111,51112,51113,51114,51115,51118,51119,51121,51122,51123,51125,51126,51127,51128,51129,51130,51131,51134,51138,51139,51140,51141,51142,51143,51146,51147,51149,51151,51153,51154,51155,51156,51157,51158,51159,51161,51162,51163,51164,null,null,null,null,null,null,51166,51167,51168,51169,51170,51171,51173,51174,51175,51177,51178,51179,51181,51182,51183,51184,51185,51186,51187,51188,51189,51190,51191,51192,51193,51194,null,null,null,null,null,null,51195,51196,51197,51198,51199,51202,51203,51205,51206,51207,51209,51211,51212,51213,51214,51215,51218,51220,51223,51224,51225,51226,51227,51230,51231,51233,51234,51235,51237,51238,51239,51240,51241,51242,51243,51246,51248,51250,51251,51252,51253,51254,51255,51257,51258,51259,51261,51262,51263,51265,51266,51267,51268,51269,51270,51271,51274,51275,51278,51279,51280,51281,51282,51283,51285,51286,51287,51288,51289,51290,51291,51292,51293,51294,51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305,51306,51307,51308,51309,51310,51311,51314,51315,51317,51318,51319,51321,51323,51324,51325,51326,51327,51330,51332,51336,51337,51338,51342,51343,51344,51345,51346,51347,51349,51350,51351,51352,51353,51354,51355,51356,51358,51360,51362,51363,51364,51365,51366,51367,51369,51370,51371,51372,51373,51374,51375,51376,51377,51378,51379,51380,51381,51382,51383,51384,51385,51386,51387,51390,51391,51392,51393,null,null,null,null,null,null,51394,51395,51397,51398,51399,51401,51402,51403,51405,51406,51407,51408,51409,51410,51411,51414,51416,51418,51419,51420,51421,51422,51423,51426,51427,51429,null,null,null,null,null,null,51430,51431,51432,51433,51434,51435,51436,51437,51438,51439,51440,51441,51442,51443,51444,51446,51447,51448,51449,51450,51451,51454,51455,51457,51458,51459,51463,51464,51465,51466,51467,51470,12288,12289,12290,183,8229,8230,168,12291,173,8213,8741,65340,8764,8216,8217,8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,12304,12305,177,215,247,8800,8804,8805,8734,8756,176,8242,8243,8451,8491,65504,65505,65509,9794,9792,8736,8869,8978,8706,8711,8801,8786,167,8251,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8594,8592,8593,8595,8596,12307,8810,8811,8730,8765,8733,8757,8747,8748,8712,8715,8838,8839,8834,8835,8746,8745,8743,8744,65506,51472,51474,51475,51476,51477,51478,51479,51481,51482,51483,51484,51485,51486,51487,51488,51489,51490,51491,51492,51493,51494,51495,51496,51497,51498,51499,null,null,null,null,null,null,51501,51502,51503,51504,51505,51506,51507,51509,51510,51511,51512,51513,51514,51515,51516,51517,51518,51519,51520,51521,51522,51523,51524,51525,51526,51527,null,null,null,null,null,null,51528,51529,51530,51531,51532,51533,51534,51535,51538,51539,51541,51542,51543,51545,51546,51547,51548,51549,51550,51551,51554,51556,51557,51558,51559,51560,51561,51562,51563,51565,51566,51567,8658,8660,8704,8707,180,65374,711,728,733,730,729,184,731,161,191,720,8750,8721,8719,164,8457,8240,9665,9664,9655,9654,9828,9824,9825,9829,9831,9827,8857,9672,9635,9680,9681,9618,9636,9637,9640,9639,9638,9641,9832,9743,9742,9756,9758,182,8224,8225,8597,8599,8601,8598,8600,9837,9833,9834,9836,12927,12828,8470,13255,8482,13250,13272,8481,8364,174,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,51569,51570,51571,51573,51574,51575,51576,51577,51578,51579,51581,51582,51583,51584,51585,51586,51587,51588,51589,51590,51591,51594,51595,51597,51598,51599,null,null,null,null,null,null,51601,51602,51603,51604,51605,51606,51607,51610,51612,51614,51615,51616,51617,51618,51619,51620,51621,51622,51623,51624,51625,51626,51627,51628,51629,51630,null,null,null,null,null,null,51631,51632,51633,51634,51635,51636,51637,51638,51639,51640,51641,51642,51643,51644,51645,51646,51647,51650,51651,51653,51654,51657,51659,51660,51661,51662,51663,51666,51668,51671,51672,51675,65281,65282,65283,65284,65285,65286,65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,65310,65311,65312,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65339,65510,65341,65342,65343,65344,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373,65507,51678,51679,51681,51683,51685,51686,51688,51689,51690,51691,51694,51698,51699,51700,51701,51702,51703,51706,51707,51709,51710,51711,51713,51714,51715,51716,null,null,null,null,null,null,51717,51718,51719,51722,51726,51727,51728,51729,51730,51731,51733,51734,51735,51737,51738,51739,51740,51741,51742,51743,51744,51745,51746,51747,51748,51749,null,null,null,null,null,null,51750,51751,51752,51754,51755,51756,51757,51758,51759,51760,51761,51762,51763,51764,51765,51766,51767,51768,51769,51770,51771,51772,51773,51774,51775,51776,51777,51778,51779,51780,51781,51782,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,51783,51784,51785,51786,51787,51790,51791,51793,51794,51795,51797,51798,51799,51800,51801,51802,51803,51806,51810,51811,51812,51813,51814,51815,51817,51818,null,null,null,null,null,null,51819,51820,51821,51822,51823,51824,51825,51826,51827,51828,51829,51830,51831,51832,51833,51834,51835,51836,51838,51839,51840,51841,51842,51843,51845,51846,null,null,null,null,null,null,51847,51848,51849,51850,51851,51852,51853,51854,51855,51856,51857,51858,51859,51860,51861,51862,51863,51865,51866,51867,51868,51869,51870,51871,51872,51873,51874,51875,51876,51877,51878,51879,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,null,null,null,null,null,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,null,null,null,null,null,null,null,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,null,null,null,null,null,null,null,null,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,null,null,null,null,null,null,51880,51881,51882,51883,51884,51885,51886,51887,51888,51889,51890,51891,51892,51893,51894,51895,51896,51897,51898,51899,51902,51903,51905,51906,51907,51909,null,null,null,null,null,null,51910,51911,51912,51913,51914,51915,51918,51920,51922,51924,51925,51926,51927,51930,51931,51932,51933,51934,51935,51937,51938,51939,51940,51941,51942,51943,null,null,null,null,null,null,51944,51945,51946,51947,51949,51950,51951,51952,51953,51954,51955,51957,51958,51959,51960,51961,51962,51963,51964,51965,51966,51967,51968,51969,51970,51971,51972,51973,51974,51975,51977,51978,9472,9474,9484,9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507,9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,9490,9489,9498,9497,9494,9493,9486,9485,9502,9503,9505,9506,9510,9511,9513,9514,9517,9518,9521,9522,9525,9526,9529,9530,9533,9534,9536,9537,9539,9540,9541,9542,9543,9544,9545,9546,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,51979,51980,51981,51982,51983,51985,51986,51987,51989,51990,51991,51993,51994,51995,51996,51997,51998,51999,52002,52003,52004,52005,52006,52007,52008,52009,null,null,null,null,null,null,52010,52011,52012,52013,52014,52015,52016,52017,52018,52019,52020,52021,52022,52023,52024,52025,52026,52027,52028,52029,52030,52031,52032,52034,52035,52036,null,null,null,null,null,null,52037,52038,52039,52042,52043,52045,52046,52047,52049,52050,52051,52052,52053,52054,52055,52058,52059,52060,52062,52063,52064,52065,52066,52067,52069,52070,52071,52072,52073,52074,52075,52076,13205,13206,13207,8467,13208,13252,13219,13220,13221,13222,13209,13210,13211,13212,13213,13214,13215,13216,13217,13218,13258,13197,13198,13199,13263,13192,13193,13256,13223,13224,13232,13233,13234,13235,13236,13237,13238,13239,13240,13241,13184,13185,13186,13187,13188,13242,13243,13244,13245,13246,13247,13200,13201,13202,13203,13204,8486,13248,13249,13194,13195,13196,13270,13253,13229,13230,13231,13275,13225,13226,13227,13228,13277,13264,13267,13251,13257,13276,13254,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52077,52078,52079,52080,52081,52082,52083,52084,52085,52086,52087,52090,52091,52092,52093,52094,52095,52096,52097,52098,52099,52100,52101,52102,52103,52104,null,null,null,null,null,null,52105,52106,52107,52108,52109,52110,52111,52112,52113,52114,52115,52116,52117,52118,52119,52120,52121,52122,52123,52125,52126,52127,52128,52129,52130,52131,null,null,null,null,null,null,52132,52133,52134,52135,52136,52137,52138,52139,52140,52141,52142,52143,52144,52145,52146,52147,52148,52149,52150,52151,52153,52154,52155,52156,52157,52158,52159,52160,52161,52162,52163,52164,198,208,170,294,null,306,null,319,321,216,338,186,222,358,330,null,12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911,12912,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,9424,9425,9426,9427,9428,9429,9430,9431,9432,9433,9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446,9447,9448,9449,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,189,8531,8532,188,190,8539,8540,8541,8542,52165,52166,52167,52168,52169,52170,52171,52172,52173,52174,52175,52176,52177,52178,52179,52181,52182,52183,52184,52185,52186,52187,52188,52189,52190,52191,null,null,null,null,null,null,52192,52193,52194,52195,52197,52198,52200,52202,52203,52204,52205,52206,52207,52208,52209,52210,52211,52212,52213,52214,52215,52216,52217,52218,52219,52220,null,null,null,null,null,null,52221,52222,52223,52224,52225,52226,52227,52228,52229,52230,52231,52232,52233,52234,52235,52238,52239,52241,52242,52243,52245,52246,52247,52248,52249,52250,52251,52254,52255,52256,52259,52260,230,273,240,295,305,307,312,320,322,248,339,223,254,359,331,329,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819,12820,12821,12822,12823,12824,12825,12826,12827,9372,9373,9374,9375,9376,9377,9378,9379,9380,9381,9382,9383,9384,9385,9386,9387,9388,9389,9390,9391,9392,9393,9394,9395,9396,9397,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,185,178,179,8308,8319,8321,8322,8323,8324,52261,52262,52266,52267,52269,52271,52273,52274,52275,52276,52277,52278,52279,52282,52287,52288,52289,52290,52291,52294,52295,52297,52298,52299,52301,52302,null,null,null,null,null,null,52303,52304,52305,52306,52307,52310,52314,52315,52316,52317,52318,52319,52321,52322,52323,52325,52327,52329,52330,52331,52332,52333,52334,52335,52337,52338,null,null,null,null,null,null,52339,52340,52342,52343,52344,52345,52346,52347,52348,52349,52350,52351,52352,52353,52354,52355,52356,52357,52358,52359,52360,52361,52362,52363,52364,52365,52366,52367,52368,52369,52370,52371,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,null,null,null,null,null,null,null,null,null,null,null,52372,52373,52374,52375,52378,52379,52381,52382,52383,52385,52386,52387,52388,52389,52390,52391,52394,52398,52399,52400,52401,52402,52403,52406,52407,52409,null,null,null,null,null,null,52410,52411,52413,52414,52415,52416,52417,52418,52419,52422,52424,52426,52427,52428,52429,52430,52431,52433,52434,52435,52437,52438,52439,52440,52441,52442,null,null,null,null,null,null,52443,52444,52445,52446,52447,52448,52449,52450,52451,52453,52454,52455,52456,52457,52458,52459,52461,52462,52463,52465,52466,52467,52468,52469,52470,52471,52472,52473,52474,52475,52476,52477,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,null,null,null,null,null,null,null,null,52478,52479,52480,52482,52483,52484,52485,52486,52487,52490,52491,52493,52494,52495,52497,52498,52499,52500,52501,52502,52503,52506,52508,52510,52511,52512,null,null,null,null,null,null,52513,52514,52515,52517,52518,52519,52521,52522,52523,52525,52526,52527,52528,52529,52530,52531,52532,52533,52534,52535,52536,52538,52539,52540,52541,52542,null,null,null,null,null,null,52543,52544,52545,52546,52547,52548,52549,52550,52551,52552,52553,52554,52555,52556,52557,52558,52559,52560,52561,52562,52563,52564,52565,52566,52567,52568,52569,52570,52571,52573,52574,52575,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,null,null,null,null,null,null,null,null,null,null,null,null,null,52577,52578,52579,52581,52582,52583,52584,52585,52586,52587,52590,52592,52594,52595,52596,52597,52598,52599,52601,52602,52603,52604,52605,52606,52607,52608,null,null,null,null,null,null,52609,52610,52611,52612,52613,52614,52615,52617,52618,52619,52620,52621,52622,52623,52624,52625,52626,52627,52630,52631,52633,52634,52635,52637,52638,52639,null,null,null,null,null,null,52640,52641,52642,52643,52646,52648,52650,52651,52652,52653,52654,52655,52657,52658,52659,52660,52661,52662,52663,52664,52665,52666,52667,52668,52669,52670,52671,52672,52673,52674,52675,52677,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52678,52679,52680,52681,52682,52683,52685,52686,52687,52689,52690,52691,52692,52693,52694,52695,52696,52697,52698,52699,52700,52701,52702,52703,52704,52705,null,null,null,null,null,null,52706,52707,52708,52709,52710,52711,52713,52714,52715,52717,52718,52719,52721,52722,52723,52724,52725,52726,52727,52730,52732,52734,52735,52736,52737,52738,null,null,null,null,null,null,52739,52741,52742,52743,52745,52746,52747,52749,52750,52751,52752,52753,52754,52755,52757,52758,52759,52760,52762,52763,52764,52765,52766,52767,52770,52771,52773,52774,52775,52777,52778,52779,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52780,52781,52782,52783,52786,52788,52790,52791,52792,52793,52794,52795,52796,52797,52798,52799,52800,52801,52802,52803,52804,52805,52806,52807,52808,52809,null,null,null,null,null,null,52810,52811,52812,52813,52814,52815,52816,52817,52818,52819,52820,52821,52822,52823,52826,52827,52829,52830,52834,52835,52836,52837,52838,52839,52842,52844,null,null,null,null,null,null,52846,52847,52848,52849,52850,52851,52854,52855,52857,52858,52859,52861,52862,52863,52864,52865,52866,52867,52870,52872,52874,52875,52876,52877,52878,52879,52882,52883,52885,52886,52887,52889,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52890,52891,52892,52893,52894,52895,52898,52902,52903,52904,52905,52906,52907,52910,52911,52912,52913,52914,52915,52916,52917,52918,52919,52920,52921,52922,null,null,null,null,null,null,52923,52924,52925,52926,52927,52928,52930,52931,52932,52933,52934,52935,52936,52937,52938,52939,52940,52941,52942,52943,52944,52945,52946,52947,52948,52949,null,null,null,null,null,null,52950,52951,52952,52953,52954,52955,52956,52957,52958,52959,52960,52961,52962,52963,52966,52967,52969,52970,52973,52974,52975,52976,52977,52978,52979,52982,52986,52987,52988,52989,52990,52991,44032,44033,44036,44039,44040,44041,44042,44048,44049,44050,44051,44052,44053,44054,44055,44057,44058,44059,44060,44061,44064,44068,44076,44077,44079,44080,44081,44088,44089,44092,44096,44107,44109,44116,44120,44124,44144,44145,44148,44151,44152,44154,44160,44161,44163,44164,44165,44166,44169,44170,44171,44172,44176,44180,44188,44189,44191,44192,44193,44200,44201,44202,44204,44207,44208,44216,44217,44219,44220,44221,44225,44228,44232,44236,44245,44247,44256,44257,44260,44263,44264,44266,44268,44271,44272,44273,44275,44277,44278,44284,44285,44288,44292,44294,52994,52995,52997,52998,52999,53001,53002,53003,53004,53005,53006,53007,53010,53012,53014,53015,53016,53017,53018,53019,53021,53022,53023,53025,53026,53027,null,null,null,null,null,null,53029,53030,53031,53032,53033,53034,53035,53038,53042,53043,53044,53045,53046,53047,53049,53050,53051,53052,53053,53054,53055,53056,53057,53058,53059,53060,null,null,null,null,null,null,53061,53062,53063,53064,53065,53066,53067,53068,53069,53070,53071,53072,53073,53074,53075,53078,53079,53081,53082,53083,53085,53086,53087,53088,53089,53090,53091,53094,53096,53098,53099,53100,44300,44301,44303,44305,44312,44316,44320,44329,44332,44333,44340,44341,44344,44348,44356,44357,44359,44361,44368,44372,44376,44385,44387,44396,44397,44400,44403,44404,44405,44406,44411,44412,44413,44415,44417,44418,44424,44425,44428,44432,44444,44445,44452,44471,44480,44481,44484,44488,44496,44497,44499,44508,44512,44516,44536,44537,44540,44543,44544,44545,44552,44553,44555,44557,44564,44592,44593,44596,44599,44600,44602,44608,44609,44611,44613,44614,44618,44620,44621,44622,44624,44628,44630,44636,44637,44639,44640,44641,44645,44648,44649,44652,44656,44664,53101,53102,53103,53106,53107,53109,53110,53111,53113,53114,53115,53116,53117,53118,53119,53121,53122,53123,53124,53126,53127,53128,53129,53130,53131,53133,null,null,null,null,null,null,53134,53135,53136,53137,53138,53139,53140,53141,53142,53143,53144,53145,53146,53147,53148,53149,53150,53151,53152,53154,53155,53156,53157,53158,53159,53161,null,null,null,null,null,null,53162,53163,53164,53165,53166,53167,53169,53170,53171,53172,53173,53174,53175,53176,53177,53178,53179,53180,53181,53182,53183,53184,53185,53186,53187,53189,53190,53191,53192,53193,53194,53195,44665,44667,44668,44669,44676,44677,44684,44732,44733,44734,44736,44740,44748,44749,44751,44752,44753,44760,44761,44764,44776,44779,44781,44788,44792,44796,44807,44808,44813,44816,44844,44845,44848,44850,44852,44860,44861,44863,44865,44866,44867,44872,44873,44880,44892,44893,44900,44901,44921,44928,44932,44936,44944,44945,44949,44956,44984,44985,44988,44992,44999,45000,45001,45003,45005,45006,45012,45020,45032,45033,45040,45041,45044,45048,45056,45057,45060,45068,45072,45076,45084,45085,45096,45124,45125,45128,45130,45132,45134,45139,45140,45141,45143,45145,53196,53197,53198,53199,53200,53201,53202,53203,53204,53205,53206,53207,53208,53209,53210,53211,53212,53213,53214,53215,53218,53219,53221,53222,53223,53225,null,null,null,null,null,null,53226,53227,53228,53229,53230,53231,53234,53236,53238,53239,53240,53241,53242,53243,53245,53246,53247,53249,53250,53251,53253,53254,53255,53256,53257,53258,null,null,null,null,null,null,53259,53260,53261,53262,53263,53264,53266,53267,53268,53269,53270,53271,53273,53274,53275,53276,53277,53278,53279,53280,53281,53282,53283,53284,53285,53286,53287,53288,53289,53290,53291,53292,45149,45180,45181,45184,45188,45196,45197,45199,45201,45208,45209,45210,45212,45215,45216,45217,45218,45224,45225,45227,45228,45229,45230,45231,45233,45235,45236,45237,45240,45244,45252,45253,45255,45256,45257,45264,45265,45268,45272,45280,45285,45320,45321,45323,45324,45328,45330,45331,45336,45337,45339,45340,45341,45347,45348,45349,45352,45356,45364,45365,45367,45368,45369,45376,45377,45380,45384,45392,45393,45396,45397,45400,45404,45408,45432,45433,45436,45440,45442,45448,45449,45451,45453,45458,45459,45460,45464,45468,45480,45516,45520,45524,45532,45533,53294,53295,53296,53297,53298,53299,53302,53303,53305,53306,53307,53309,53310,53311,53312,53313,53314,53315,53318,53320,53322,53323,53324,53325,53326,53327,null,null,null,null,null,null,53329,53330,53331,53333,53334,53335,53337,53338,53339,53340,53341,53342,53343,53345,53346,53347,53348,53349,53350,53351,53352,53353,53354,53355,53358,53359,null,null,null,null,null,null,53361,53362,53363,53365,53366,53367,53368,53369,53370,53371,53374,53375,53376,53378,53379,53380,53381,53382,53383,53384,53385,53386,53387,53388,53389,53390,53391,53392,53393,53394,53395,53396,45535,45544,45545,45548,45552,45561,45563,45565,45572,45573,45576,45579,45580,45588,45589,45591,45593,45600,45620,45628,45656,45660,45664,45672,45673,45684,45685,45692,45700,45701,45705,45712,45713,45716,45720,45721,45722,45728,45729,45731,45733,45734,45738,45740,45744,45748,45768,45769,45772,45776,45778,45784,45785,45787,45789,45794,45796,45797,45798,45800,45803,45804,45805,45806,45807,45811,45812,45813,45815,45816,45817,45818,45819,45823,45824,45825,45828,45832,45840,45841,45843,45844,45845,45852,45908,45909,45910,45912,45915,45916,45918,45919,45924,45925,53397,53398,53399,53400,53401,53402,53403,53404,53405,53406,53407,53408,53409,53410,53411,53414,53415,53417,53418,53419,53421,53422,53423,53424,53425,53426,null,null,null,null,null,null,53427,53430,53432,53434,53435,53436,53437,53438,53439,53442,53443,53445,53446,53447,53450,53451,53452,53453,53454,53455,53458,53462,53463,53464,53465,53466,null,null,null,null,null,null,53467,53470,53471,53473,53474,53475,53477,53478,53479,53480,53481,53482,53483,53486,53490,53491,53492,53493,53494,53495,53497,53498,53499,53500,53501,53502,53503,53504,53505,53506,53507,53508,45927,45929,45931,45934,45936,45937,45940,45944,45952,45953,45955,45956,45957,45964,45968,45972,45984,45985,45992,45996,46020,46021,46024,46027,46028,46030,46032,46036,46037,46039,46041,46043,46045,46048,46052,46056,46076,46096,46104,46108,46112,46120,46121,46123,46132,46160,46161,46164,46168,46176,46177,46179,46181,46188,46208,46216,46237,46244,46248,46252,46261,46263,46265,46272,46276,46280,46288,46293,46300,46301,46304,46307,46308,46310,46316,46317,46319,46321,46328,46356,46357,46360,46363,46364,46372,46373,46375,46376,46377,46378,46384,46385,46388,46392,53509,53510,53511,53512,53513,53514,53515,53516,53518,53519,53520,53521,53522,53523,53524,53525,53526,53527,53528,53529,53530,53531,53532,53533,53534,53535,null,null,null,null,null,null,53536,53537,53538,53539,53540,53541,53542,53543,53544,53545,53546,53547,53548,53549,53550,53551,53554,53555,53557,53558,53559,53561,53563,53564,53565,53566,null,null,null,null,null,null,53567,53570,53574,53575,53576,53577,53578,53579,53582,53583,53585,53586,53587,53589,53590,53591,53592,53593,53594,53595,53598,53600,53602,53603,53604,53605,53606,53607,53609,53610,53611,53613,46400,46401,46403,46404,46405,46411,46412,46413,46416,46420,46428,46429,46431,46432,46433,46496,46497,46500,46504,46506,46507,46512,46513,46515,46516,46517,46523,46524,46525,46528,46532,46540,46541,46543,46544,46545,46552,46572,46608,46609,46612,46616,46629,46636,46644,46664,46692,46696,46748,46749,46752,46756,46763,46764,46769,46804,46832,46836,46840,46848,46849,46853,46888,46889,46892,46895,46896,46904,46905,46907,46916,46920,46924,46932,46933,46944,46948,46952,46960,46961,46963,46965,46972,46973,46976,46980,46988,46989,46991,46992,46993,46994,46998,46999,53614,53615,53616,53617,53618,53619,53620,53621,53622,53623,53624,53625,53626,53627,53629,53630,53631,53632,53633,53634,53635,53637,53638,53639,53641,53642,null,null,null,null,null,null,53643,53644,53645,53646,53647,53648,53649,53650,53651,53652,53653,53654,53655,53656,53657,53658,53659,53660,53661,53662,53663,53666,53667,53669,53670,53671,null,null,null,null,null,null,53673,53674,53675,53676,53677,53678,53679,53682,53684,53686,53687,53688,53689,53691,53693,53694,53695,53697,53698,53699,53700,53701,53702,53703,53704,53705,53706,53707,53708,53709,53710,53711,47000,47001,47004,47008,47016,47017,47019,47020,47021,47028,47029,47032,47047,47049,47084,47085,47088,47092,47100,47101,47103,47104,47105,47111,47112,47113,47116,47120,47128,47129,47131,47133,47140,47141,47144,47148,47156,47157,47159,47160,47161,47168,47172,47185,47187,47196,47197,47200,47204,47212,47213,47215,47217,47224,47228,47245,47272,47280,47284,47288,47296,47297,47299,47301,47308,47312,47316,47325,47327,47329,47336,47337,47340,47344,47352,47353,47355,47357,47364,47384,47392,47420,47421,47424,47428,47436,47439,47441,47448,47449,47452,47456,47464,47465,53712,53713,53714,53715,53716,53717,53718,53719,53721,53722,53723,53724,53725,53726,53727,53728,53729,53730,53731,53732,53733,53734,53735,53736,53737,53738,null,null,null,null,null,null,53739,53740,53741,53742,53743,53744,53745,53746,53747,53749,53750,53751,53753,53754,53755,53756,53757,53758,53759,53760,53761,53762,53763,53764,53765,53766,null,null,null,null,null,null,53768,53770,53771,53772,53773,53774,53775,53777,53778,53779,53780,53781,53782,53783,53784,53785,53786,53787,53788,53789,53790,53791,53792,53793,53794,53795,53796,53797,53798,53799,53800,53801,47467,47469,47476,47477,47480,47484,47492,47493,47495,47497,47498,47501,47502,47532,47533,47536,47540,47548,47549,47551,47553,47560,47561,47564,47566,47567,47568,47569,47570,47576,47577,47579,47581,47582,47585,47587,47588,47589,47592,47596,47604,47605,47607,47608,47609,47610,47616,47617,47624,47637,47672,47673,47676,47680,47682,47688,47689,47691,47693,47694,47699,47700,47701,47704,47708,47716,47717,47719,47720,47721,47728,47729,47732,47736,47747,47748,47749,47751,47756,47784,47785,47787,47788,47792,47794,47800,47801,47803,47805,47812,47816,47832,47833,47868,53802,53803,53806,53807,53809,53810,53811,53813,53814,53815,53816,53817,53818,53819,53822,53824,53826,53827,53828,53829,53830,53831,53833,53834,53835,53836,null,null,null,null,null,null,53837,53838,53839,53840,53841,53842,53843,53844,53845,53846,53847,53848,53849,53850,53851,53853,53854,53855,53856,53857,53858,53859,53861,53862,53863,53864,null,null,null,null,null,null,53865,53866,53867,53868,53869,53870,53871,53872,53873,53874,53875,53876,53877,53878,53879,53880,53881,53882,53883,53884,53885,53886,53887,53890,53891,53893,53894,53895,53897,53898,53899,53900,47872,47876,47885,47887,47889,47896,47900,47904,47913,47915,47924,47925,47926,47928,47931,47932,47933,47934,47940,47941,47943,47945,47949,47951,47952,47956,47960,47969,47971,47980,48008,48012,48016,48036,48040,48044,48052,48055,48064,48068,48072,48080,48083,48120,48121,48124,48127,48128,48130,48136,48137,48139,48140,48141,48143,48145,48148,48149,48150,48151,48152,48155,48156,48157,48158,48159,48164,48165,48167,48169,48173,48176,48177,48180,48184,48192,48193,48195,48196,48197,48201,48204,48205,48208,48221,48260,48261,48264,48267,48268,48270,48276,48277,48279,53901,53902,53903,53906,53907,53908,53910,53911,53912,53913,53914,53915,53917,53918,53919,53921,53922,53923,53925,53926,53927,53928,53929,53930,53931,53933,null,null,null,null,null,null,53934,53935,53936,53938,53939,53940,53941,53942,53943,53946,53947,53949,53950,53953,53955,53956,53957,53958,53959,53962,53964,53965,53966,53967,53968,53969,null,null,null,null,null,null,53970,53971,53973,53974,53975,53977,53978,53979,53981,53982,53983,53984,53985,53986,53987,53990,53991,53992,53993,53994,53995,53996,53997,53998,53999,54002,54003,54005,54006,54007,54009,54010,48281,48282,48288,48289,48292,48295,48296,48304,48305,48307,48308,48309,48316,48317,48320,48324,48333,48335,48336,48337,48341,48344,48348,48372,48373,48374,48376,48380,48388,48389,48391,48393,48400,48404,48420,48428,48448,48456,48457,48460,48464,48472,48473,48484,48488,48512,48513,48516,48519,48520,48521,48522,48528,48529,48531,48533,48537,48538,48540,48548,48560,48568,48596,48597,48600,48604,48617,48624,48628,48632,48640,48643,48645,48652,48653,48656,48660,48668,48669,48671,48708,48709,48712,48716,48718,48724,48725,48727,48729,48730,48731,48736,48737,48740,54011,54012,54013,54014,54015,54018,54020,54022,54023,54024,54025,54026,54027,54031,54033,54034,54035,54037,54039,54040,54041,54042,54043,54046,54050,54051,null,null,null,null,null,null,54052,54054,54055,54058,54059,54061,54062,54063,54065,54066,54067,54068,54069,54070,54071,54074,54078,54079,54080,54081,54082,54083,54086,54087,54088,54089,null,null,null,null,null,null,54090,54091,54092,54093,54094,54095,54096,54097,54098,54099,54100,54101,54102,54103,54104,54105,54106,54107,54108,54109,54110,54111,54112,54113,54114,54115,54116,54117,54118,54119,54120,54121,48744,48746,48752,48753,48755,48756,48757,48763,48764,48765,48768,48772,48780,48781,48783,48784,48785,48792,48793,48808,48848,48849,48852,48855,48856,48864,48867,48868,48869,48876,48897,48904,48905,48920,48921,48923,48924,48925,48960,48961,48964,48968,48976,48977,48981,49044,49072,49093,49100,49101,49104,49108,49116,49119,49121,49212,49233,49240,49244,49248,49256,49257,49296,49297,49300,49304,49312,49313,49315,49317,49324,49325,49327,49328,49331,49332,49333,49334,49340,49341,49343,49344,49345,49349,49352,49353,49356,49360,49368,49369,49371,49372,49373,49380,54122,54123,54124,54125,54126,54127,54128,54129,54130,54131,54132,54133,54134,54135,54136,54137,54138,54139,54142,54143,54145,54146,54147,54149,54150,54151,null,null,null,null,null,null,54152,54153,54154,54155,54158,54162,54163,54164,54165,54166,54167,54170,54171,54173,54174,54175,54177,54178,54179,54180,54181,54182,54183,54186,54188,54190,null,null,null,null,null,null,54191,54192,54193,54194,54195,54197,54198,54199,54201,54202,54203,54205,54206,54207,54208,54209,54210,54211,54214,54215,54218,54219,54220,54221,54222,54223,54225,54226,54227,54228,54229,54230,49381,49384,49388,49396,49397,49399,49401,49408,49412,49416,49424,49429,49436,49437,49438,49439,49440,49443,49444,49446,49447,49452,49453,49455,49456,49457,49462,49464,49465,49468,49472,49480,49481,49483,49484,49485,49492,49493,49496,49500,49508,49509,49511,49512,49513,49520,49524,49528,49541,49548,49549,49550,49552,49556,49558,49564,49565,49567,49569,49573,49576,49577,49580,49584,49597,49604,49608,49612,49620,49623,49624,49632,49636,49640,49648,49649,49651,49660,49661,49664,49668,49676,49677,49679,49681,49688,49689,49692,49695,49696,49704,49705,49707,49709,54231,54233,54234,54235,54236,54237,54238,54239,54240,54242,54244,54245,54246,54247,54248,54249,54250,54251,54254,54255,54257,54258,54259,54261,54262,54263,null,null,null,null,null,null,54264,54265,54266,54267,54270,54272,54274,54275,54276,54277,54278,54279,54281,54282,54283,54284,54285,54286,54287,54288,54289,54290,54291,54292,54293,54294,null,null,null,null,null,null,54295,54296,54297,54298,54299,54300,54302,54303,54304,54305,54306,54307,54308,54309,54310,54311,54312,54313,54314,54315,54316,54317,54318,54319,54320,54321,54322,54323,54324,54325,54326,54327,49711,49713,49714,49716,49736,49744,49745,49748,49752,49760,49765,49772,49773,49776,49780,49788,49789,49791,49793,49800,49801,49808,49816,49819,49821,49828,49829,49832,49836,49837,49844,49845,49847,49849,49884,49885,49888,49891,49892,49899,49900,49901,49903,49905,49910,49912,49913,49915,49916,49920,49928,49929,49932,49933,49939,49940,49941,49944,49948,49956,49957,49960,49961,49989,50024,50025,50028,50032,50034,50040,50041,50044,50045,50052,50056,50060,50112,50136,50137,50140,50143,50144,50146,50152,50153,50157,50164,50165,50168,50184,50192,50212,50220,50224,54328,54329,54330,54331,54332,54333,54334,54335,54337,54338,54339,54341,54342,54343,54344,54345,54346,54347,54348,54349,54350,54351,54352,54353,54354,54355,null,null,null,null,null,null,54356,54357,54358,54359,54360,54361,54362,54363,54365,54366,54367,54369,54370,54371,54373,54374,54375,54376,54377,54378,54379,54380,54382,54384,54385,54386,null,null,null,null,null,null,54387,54388,54389,54390,54391,54394,54395,54397,54398,54401,54403,54404,54405,54406,54407,54410,54412,54414,54415,54416,54417,54418,54419,54421,54422,54423,54424,54425,54426,54427,54428,54429,50228,50236,50237,50248,50276,50277,50280,50284,50292,50293,50297,50304,50324,50332,50360,50364,50409,50416,50417,50420,50424,50426,50431,50432,50433,50444,50448,50452,50460,50472,50473,50476,50480,50488,50489,50491,50493,50500,50501,50504,50505,50506,50508,50509,50510,50515,50516,50517,50519,50520,50521,50525,50526,50528,50529,50532,50536,50544,50545,50547,50548,50549,50556,50557,50560,50564,50567,50572,50573,50575,50577,50581,50583,50584,50588,50592,50601,50612,50613,50616,50617,50619,50620,50621,50622,50628,50629,50630,50631,50632,50633,50634,50636,50638,54430,54431,54432,54433,54434,54435,54436,54437,54438,54439,54440,54442,54443,54444,54445,54446,54447,54448,54449,54450,54451,54452,54453,54454,54455,54456,null,null,null,null,null,null,54457,54458,54459,54460,54461,54462,54463,54464,54465,54466,54467,54468,54469,54470,54471,54472,54473,54474,54475,54477,54478,54479,54481,54482,54483,54485,null,null,null,null,null,null,54486,54487,54488,54489,54490,54491,54493,54494,54496,54497,54498,54499,54500,54501,54502,54503,54505,54506,54507,54509,54510,54511,54513,54514,54515,54516,54517,54518,54519,54521,54522,54524,50640,50641,50644,50648,50656,50657,50659,50661,50668,50669,50670,50672,50676,50678,50679,50684,50685,50686,50687,50688,50689,50693,50694,50695,50696,50700,50704,50712,50713,50715,50716,50724,50725,50728,50732,50733,50734,50736,50739,50740,50741,50743,50745,50747,50752,50753,50756,50760,50768,50769,50771,50772,50773,50780,50781,50784,50796,50799,50801,50808,50809,50812,50816,50824,50825,50827,50829,50836,50837,50840,50844,50852,50853,50855,50857,50864,50865,50868,50872,50873,50874,50880,50881,50883,50885,50892,50893,50896,50900,50908,50909,50912,50913,50920,54526,54527,54528,54529,54530,54531,54533,54534,54535,54537,54538,54539,54541,54542,54543,54544,54545,54546,54547,54550,54552,54553,54554,54555,54556,54557,null,null,null,null,null,null,54558,54559,54560,54561,54562,54563,54564,54565,54566,54567,54568,54569,54570,54571,54572,54573,54574,54575,54576,54577,54578,54579,54580,54581,54582,54583,null,null,null,null,null,null,54584,54585,54586,54587,54590,54591,54593,54594,54595,54597,54598,54599,54600,54601,54602,54603,54606,54608,54610,54611,54612,54613,54614,54615,54618,54619,54621,54622,54623,54625,54626,54627,50921,50924,50928,50936,50937,50941,50948,50949,50952,50956,50964,50965,50967,50969,50976,50977,50980,50984,50992,50993,50995,50997,50999,51004,51005,51008,51012,51018,51020,51021,51023,51025,51026,51027,51028,51029,51030,51031,51032,51036,51040,51048,51051,51060,51061,51064,51068,51069,51070,51075,51076,51077,51079,51080,51081,51082,51086,51088,51089,51092,51094,51095,51096,51098,51104,51105,51107,51108,51109,51110,51116,51117,51120,51124,51132,51133,51135,51136,51137,51144,51145,51148,51150,51152,51160,51165,51172,51176,51180,51200,51201,51204,51208,51210,54628,54630,54631,54634,54636,54638,54639,54640,54641,54642,54643,54646,54647,54649,54650,54651,54653,54654,54655,54656,54657,54658,54659,54662,54666,54667,null,null,null,null,null,null,54668,54669,54670,54671,54673,54674,54675,54676,54677,54678,54679,54680,54681,54682,54683,54684,54685,54686,54687,54688,54689,54690,54691,54692,54694,54695,null,null,null,null,null,null,54696,54697,54698,54699,54700,54701,54702,54703,54704,54705,54706,54707,54708,54709,54710,54711,54712,54713,54714,54715,54716,54717,54718,54719,54720,54721,54722,54723,54724,54725,54726,54727,51216,51217,51219,51221,51222,51228,51229,51232,51236,51244,51245,51247,51249,51256,51260,51264,51272,51273,51276,51277,51284,51312,51313,51316,51320,51322,51328,51329,51331,51333,51334,51335,51339,51340,51341,51348,51357,51359,51361,51368,51388,51389,51396,51400,51404,51412,51413,51415,51417,51424,51425,51428,51445,51452,51453,51456,51460,51461,51462,51468,51469,51471,51473,51480,51500,51508,51536,51537,51540,51544,51552,51553,51555,51564,51568,51572,51580,51592,51593,51596,51600,51608,51609,51611,51613,51648,51649,51652,51655,51656,51658,51664,51665,51667,54730,54731,54733,54734,54735,54737,54739,54740,54741,54742,54743,54746,54748,54750,54751,54752,54753,54754,54755,54758,54759,54761,54762,54763,54765,54766,null,null,null,null,null,null,54767,54768,54769,54770,54771,54774,54776,54778,54779,54780,54781,54782,54783,54786,54787,54789,54790,54791,54793,54794,54795,54796,54797,54798,54799,54802,null,null,null,null,null,null,54806,54807,54808,54809,54810,54811,54813,54814,54815,54817,54818,54819,54821,54822,54823,54824,54825,54826,54827,54828,54830,54831,54832,54833,54834,54835,54836,54837,54838,54839,54842,54843,51669,51670,51673,51674,51676,51677,51680,51682,51684,51687,51692,51693,51695,51696,51697,51704,51705,51708,51712,51720,51721,51723,51724,51725,51732,51736,51753,51788,51789,51792,51796,51804,51805,51807,51808,51809,51816,51837,51844,51864,51900,51901,51904,51908,51916,51917,51919,51921,51923,51928,51929,51936,51948,51956,51976,51984,51988,51992,52000,52001,52033,52040,52041,52044,52048,52056,52057,52061,52068,52088,52089,52124,52152,52180,52196,52199,52201,52236,52237,52240,52244,52252,52253,52257,52258,52263,52264,52265,52268,52270,52272,52280,52281,52283,54845,54846,54847,54849,54850,54851,54852,54854,54855,54858,54860,54862,54863,54864,54866,54867,54870,54871,54873,54874,54875,54877,54878,54879,54880,54881,null,null,null,null,null,null,54882,54883,54884,54885,54886,54888,54890,54891,54892,54893,54894,54895,54898,54899,54901,54902,54903,54904,54905,54906,54907,54908,54909,54910,54911,54912,null,null,null,null,null,null,54913,54914,54916,54918,54919,54920,54921,54922,54923,54926,54927,54929,54930,54931,54933,54934,54935,54936,54937,54938,54939,54940,54942,54944,54946,54947,54948,54949,54950,54951,54953,54954,52284,52285,52286,52292,52293,52296,52300,52308,52309,52311,52312,52313,52320,52324,52326,52328,52336,52341,52376,52377,52380,52384,52392,52393,52395,52396,52397,52404,52405,52408,52412,52420,52421,52423,52425,52432,52436,52452,52460,52464,52481,52488,52489,52492,52496,52504,52505,52507,52509,52516,52520,52524,52537,52572,52576,52580,52588,52589,52591,52593,52600,52616,52628,52629,52632,52636,52644,52645,52647,52649,52656,52676,52684,52688,52712,52716,52720,52728,52729,52731,52733,52740,52744,52748,52756,52761,52768,52769,52772,52776,52784,52785,52787,52789,54955,54957,54958,54959,54961,54962,54963,54964,54965,54966,54967,54968,54970,54972,54973,54974,54975,54976,54977,54978,54979,54982,54983,54985,54986,54987,null,null,null,null,null,null,54989,54990,54991,54992,54994,54995,54997,54998,55000,55002,55003,55004,55005,55006,55007,55009,55010,55011,55013,55014,55015,55017,55018,55019,55020,55021,null,null,null,null,null,null,55022,55023,55025,55026,55027,55028,55030,55031,55032,55033,55034,55035,55038,55039,55041,55042,55043,55045,55046,55047,55048,55049,55050,55051,55052,55053,55054,55055,55056,55058,55059,55060,52824,52825,52828,52831,52832,52833,52840,52841,52843,52845,52852,52853,52856,52860,52868,52869,52871,52873,52880,52881,52884,52888,52896,52897,52899,52900,52901,52908,52909,52929,52964,52965,52968,52971,52972,52980,52981,52983,52984,52985,52992,52993,52996,53000,53008,53009,53011,53013,53020,53024,53028,53036,53037,53039,53040,53041,53048,53076,53077,53080,53084,53092,53093,53095,53097,53104,53105,53108,53112,53120,53125,53132,53153,53160,53168,53188,53216,53217,53220,53224,53232,53233,53235,53237,53244,53248,53252,53265,53272,53293,53300,53301,53304,53308,55061,55062,55063,55066,55067,55069,55070,55071,55073,55074,55075,55076,55077,55078,55079,55082,55084,55086,55087,55088,55089,55090,55091,55094,55095,55097,null,null,null,null,null,null,55098,55099,55101,55102,55103,55104,55105,55106,55107,55109,55110,55112,55114,55115,55116,55117,55118,55119,55122,55123,55125,55130,55131,55132,55133,55134,null,null,null,null,null,null,55135,55138,55140,55142,55143,55144,55146,55147,55149,55150,55151,55153,55154,55155,55157,55158,55159,55160,55161,55162,55163,55166,55167,55168,55170,55171,55172,55173,55174,55175,55178,55179,53316,53317,53319,53321,53328,53332,53336,53344,53356,53357,53360,53364,53372,53373,53377,53412,53413,53416,53420,53428,53429,53431,53433,53440,53441,53444,53448,53449,53456,53457,53459,53460,53461,53468,53469,53472,53476,53484,53485,53487,53488,53489,53496,53517,53552,53553,53556,53560,53562,53568,53569,53571,53572,53573,53580,53581,53584,53588,53596,53597,53599,53601,53608,53612,53628,53636,53640,53664,53665,53668,53672,53680,53681,53683,53685,53690,53692,53696,53720,53748,53752,53767,53769,53776,53804,53805,53808,53812,53820,53821,53823,53825,53832,53852,55181,55182,55183,55185,55186,55187,55188,55189,55190,55191,55194,55196,55198,55199,55200,55201,55202,55203,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,53860,53888,53889,53892,53896,53904,53905,53909,53916,53920,53924,53932,53937,53944,53945,53948,53951,53952,53954,53960,53961,53963,53972,53976,53980,53988,53989,54000,54001,54004,54008,54016,54017,54019,54021,54028,54029,54030,54032,54036,54038,54044,54045,54047,54048,54049,54053,54056,54057,54060,54064,54072,54073,54075,54076,54077,54084,54085,54140,54141,54144,54148,54156,54157,54159,54160,54161,54168,54169,54172,54176,54184,54185,54187,54189,54196,54200,54204,54212,54213,54216,54217,54224,54232,54241,54243,54252,54253,54256,54260,54268,54269,54271,54273,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,54280,54301,54336,54340,54364,54368,54372,54381,54383,54392,54393,54396,54399,54400,54402,54408,54409,54411,54413,54420,54441,54476,54480,54484,54492,54495,54504,54508,54512,54520,54523,54525,54532,54536,54540,54548,54549,54551,54588,54589,54592,54596,54604,54605,54607,54609,54616,54617,54620,54624,54629,54632,54633,54635,54637,54644,54645,54648,54652,54660,54661,54663,54664,54665,54672,54693,54728,54729,54732,54736,54738,54744,54745,54747,54749,54756,54757,54760,54764,54772,54773,54775,54777,54784,54785,54788,54792,54800,54801,54803,54804,54805,54812,54816,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,54820,54829,54840,54841,54844,54848,54853,54856,54857,54859,54861,54865,54868,54869,54872,54876,54887,54889,54896,54897,54900,54915,54917,54924,54925,54928,54932,54941,54943,54945,54952,54956,54960,54969,54971,54980,54981,54984,54988,54993,54996,54999,55001,55008,55012,55016,55024,55029,55036,55037,55040,55044,55057,55064,55065,55068,55072,55080,55081,55083,55085,55092,55093,55096,55100,55108,55111,55113,55120,55121,55124,55126,55127,55128,55129,55136,55137,55139,55141,55145,55148,55152,55156,55164,55165,55169,55176,55177,55180,55184,55192,55193,55195,55197,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20285,20339,20551,20729,21152,21487,21621,21733,22025,23233,23478,26247,26550,26551,26607,27468,29634,30146,31292,33499,33540,34903,34952,35382,36040,36303,36603,36838,39381,21051,21364,21508,24682,24932,27580,29647,33050,35258,35282,38307,20355,21002,22718,22904,23014,24178,24185,25031,25536,26438,26604,26751,28567,30286,30475,30965,31240,31487,31777,32925,33390,33393,35563,38291,20075,21917,26359,28212,30883,31469,33883,35088,34638,38824,21208,22350,22570,23884,24863,25022,25121,25954,26577,27204,28187,29976,30131,30435,30640,32058,37039,37969,37970,40853,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21283,23724,30002,32987,37440,38296,21083,22536,23004,23713,23831,24247,24378,24394,24951,27743,30074,30086,31968,32115,32177,32652,33108,33313,34193,35137,35611,37628,38477,40007,20171,20215,20491,20977,22607,24887,24894,24936,25913,27114,28433,30117,30342,30422,31623,33445,33995,63744,37799,38283,21888,23458,22353,63745,31923,32697,37301,20520,21435,23621,24040,25298,25454,25818,25831,28192,28844,31067,36317,36382,63746,36989,37445,37624,20094,20214,20581,24062,24314,24838,26967,33137,34388,36423,37749,39467,20062,20625,26480,26688,20745,21133,21138,27298,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,30652,37392,40660,21163,24623,36850,20552,25001,25581,25802,26684,27268,28608,33160,35233,38548,22533,29309,29356,29956,32121,32365,32937,35211,35700,36963,40273,25225,27770,28500,32080,32570,35363,20860,24906,31645,35609,37463,37772,20140,20435,20510,20670,20742,21185,21197,21375,22384,22659,24218,24465,24950,25004,25806,25964,26223,26299,26356,26775,28039,28805,28913,29855,29861,29898,30169,30828,30956,31455,31478,32069,32147,32789,32831,33051,33686,35686,36629,36885,37857,38915,38968,39514,39912,20418,21843,22586,22865,23395,23622,24760,25106,26690,26800,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26856,28330,30028,30328,30926,31293,31995,32363,32380,35336,35489,35903,38542,40388,21476,21481,21578,21617,22266,22993,23396,23611,24235,25335,25911,25925,25970,26272,26543,27073,27837,30204,30352,30590,31295,32660,32771,32929,33167,33510,33533,33776,34241,34865,34996,35493,63747,36764,37678,38599,39015,39640,40723,21741,26011,26354,26767,31296,35895,40288,22256,22372,23825,26118,26801,26829,28414,29736,34974,39908,27752,63748,39592,20379,20844,20849,21151,23380,24037,24656,24685,25329,25511,25915,29657,31354,34467,36002,38799,20018,23521,25096,26524,29916,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31185,33747,35463,35506,36328,36942,37707,38982,24275,27112,34303,37101,63749,20896,23448,23532,24931,26874,27454,28748,29743,29912,31649,32592,33733,35264,36011,38364,39208,21038,24669,25324,36866,20362,20809,21281,22745,24291,26336,27960,28826,29378,29654,31568,33009,37979,21350,25499,32619,20054,20608,22602,22750,24618,24871,25296,27088,39745,23439,32024,32945,36703,20132,20689,21676,21932,23308,23968,24039,25898,25934,26657,27211,29409,30350,30703,32094,32761,33184,34126,34527,36611,36686,37066,39171,39509,39851,19992,20037,20061,20167,20465,20855,21246,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21312,21475,21477,21646,22036,22389,22434,23495,23943,24272,25084,25304,25937,26552,26601,27083,27472,27590,27628,27714,28317,28792,29399,29590,29699,30655,30697,31350,32127,32777,33276,33285,33290,33503,34914,35635,36092,36544,36881,37041,37476,37558,39378,39493,40169,40407,40860,22283,23616,33738,38816,38827,40628,21531,31384,32676,35033,36557,37089,22528,23624,25496,31391,23470,24339,31353,31406,33422,36524,20518,21048,21240,21367,22280,25331,25458,27402,28099,30519,21413,29527,34152,36470,38357,26426,27331,28528,35437,36556,39243,63750,26231,27512,36020,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,39740,63751,21483,22317,22862,25542,27131,29674,30789,31418,31429,31998,33909,35215,36211,36917,38312,21243,22343,30023,31584,33740,37406,63752,27224,20811,21067,21127,25119,26840,26997,38553,20677,21156,21220,25027,26020,26681,27135,29822,31563,33465,33771,35250,35641,36817,39241,63753,20170,22935,25810,26129,27278,29748,31105,31165,33449,34942,34943,35167,63754,37670,20235,21450,24613,25201,27762,32026,32102,20120,20834,30684,32943,20225,20238,20854,20864,21980,22120,22331,22522,22524,22804,22855,22931,23492,23696,23822,24049,24190,24524,25216,26071,26083,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26398,26399,26462,26827,26820,27231,27450,27683,27773,27778,28103,29592,29734,29738,29826,29859,30072,30079,30849,30959,31041,31047,31048,31098,31637,32000,32186,32648,32774,32813,32908,35352,35663,35912,36215,37665,37668,39138,39249,39438,39439,39525,40594,32202,20342,21513,25326,26708,37329,21931,20794,63755,63756,23068,25062,63757,25295,25343,63758,63759,63760,63761,63762,63763,37027,63764,63765,63766,63767,63768,35582,63769,63770,63771,63772,26262,63773,29014,63774,63775,38627,63776,25423,25466,21335,63777,26511,26976,28275,63778,30007,63779,63780,63781,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32013,63782,63783,34930,22218,23064,63784,63785,63786,63787,63788,20035,63789,20839,22856,26608,32784,63790,22899,24180,25754,31178,24565,24684,25288,25467,23527,23511,21162,63791,22900,24361,24594,63792,63793,63794,29785,63795,63796,63797,63798,63799,63800,39377,63801,63802,63803,63804,63805,63806,63807,63808,63809,63810,63811,28611,63812,63813,33215,36786,24817,63814,63815,33126,63816,63817,23615,63818,63819,63820,63821,63822,63823,63824,63825,23273,35365,26491,32016,63826,63827,63828,63829,63830,63831,33021,63832,63833,23612,27877,21311,28346,22810,33590,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20025,20150,20294,21934,22296,22727,24406,26039,26086,27264,27573,28237,30701,31471,31774,32222,34507,34962,37170,37723,25787,28606,29562,30136,36948,21846,22349,25018,25812,26311,28129,28251,28525,28601,30192,32835,33213,34113,35203,35527,35674,37663,27795,30035,31572,36367,36957,21776,22530,22616,24162,25095,25758,26848,30070,31958,34739,40680,20195,22408,22382,22823,23565,23729,24118,24453,25140,25825,29619,33274,34955,36024,38538,40667,23429,24503,24755,20498,20992,21040,22294,22581,22615,23566,23648,23798,23947,24230,24466,24764,25361,25481,25623,26691,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26873,27330,28120,28193,28372,28644,29182,30428,30585,31153,31291,33796,35241,36077,36339,36424,36867,36884,36947,37117,37709,38518,38876,27602,28678,29272,29346,29544,30563,31167,31716,32411,35712,22697,24775,25958,26109,26302,27788,28958,29129,35930,38931,20077,31361,20189,20908,20941,21205,21516,24999,26481,26704,26847,27934,28540,30140,30643,31461,33012,33891,37509,20828,26007,26460,26515,30168,31431,33651,63834,35910,36887,38957,23663,33216,33434,36929,36975,37389,24471,23965,27225,29128,30331,31561,34276,35588,37159,39472,21895,25078,63835,30313,32645,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,34367,34746,35064,37007,63836,27931,28889,29662,32097,33853,63837,37226,39409,63838,20098,21365,27396,27410,28734,29211,34349,40478,21068,36771,23888,25829,25900,27414,28651,31811,32412,34253,35172,35261,25289,33240,34847,24266,26391,28010,29436,29701,29807,34690,37086,20358,23821,24480,33802,20919,25504,30053,20142,20486,20841,20937,26753,27153,31918,31921,31975,33391,35538,36635,37327,20406,20791,21237,21570,24300,24942,25150,26053,27354,28670,31018,34268,34851,38317,39522,39530,40599,40654,21147,26310,27511,28701,31019,36706,38722,24976,25088,25891,28451,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,29001,29833,32244,32879,34030,36646,36899,37706,20925,21015,21155,27916,28872,35010,24265,25986,27566,28610,31806,29557,20196,20278,22265,63839,23738,23994,24604,29618,31533,32666,32718,32838,36894,37428,38646,38728,38936,40801,20363,28583,31150,37300,38583,21214,63840,25736,25796,27347,28510,28696,29200,30439,32769,34310,34396,36335,36613,38706,39791,40442,40565,30860,31103,32160,33737,37636,40575,40595,35542,22751,24324,26407,28711,29903,31840,32894,20769,28712,29282,30922,36034,36058,36084,38647,20102,20698,23534,24278,26009,29134,30274,30637,32842,34044,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36988,39719,40845,22744,23105,23650,27155,28122,28431,30267,32047,32311,34078,35128,37860,38475,21129,26066,26611,27060,27969,28316,28687,29705,29792,30041,30244,30827,35628,39006,20845,25134,38520,20374,20523,23833,28138,32184,36650,24459,24900,26647,63841,38534,21202,32907,20956,20940,26974,31260,32190,33777,38517,20442,21033,21400,21519,21774,23653,24743,26446,26792,28012,29313,29432,29702,29827,63842,30178,31852,32633,32696,33673,35023,35041,37324,37328,38626,39881,21533,28542,29136,29848,34298,36522,38563,40023,40607,26519,28107,29747,33256,38678,30764,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31435,31520,31890,25705,29802,30194,30908,30952,39340,39764,40635,23518,24149,28448,33180,33707,37000,19975,21325,23081,24018,24398,24930,25405,26217,26364,28415,28459,28771,30622,33836,34067,34875,36627,39237,39995,21788,25273,26411,27819,33545,35178,38778,20129,22916,24536,24537,26395,32178,32596,33426,33579,33725,36638,37017,22475,22969,23186,23504,26151,26522,26757,27599,29028,32629,36023,36067,36993,39749,33032,35978,38476,39488,40613,23391,27667,29467,30450,30431,33804,20906,35219,20813,20885,21193,26825,27796,30468,30496,32191,32236,38754,40629,28357,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,34065,20901,21517,21629,26126,26269,26919,28319,30399,30609,33559,33986,34719,37225,37528,40180,34946,20398,20882,21215,22982,24125,24917,25720,25721,26286,26576,27169,27597,27611,29279,29281,29761,30520,30683,32791,33468,33541,35584,35624,35980,26408,27792,29287,30446,30566,31302,40361,27519,27794,22818,26406,33945,21359,22675,22937,24287,25551,26164,26483,28218,29483,31447,33495,37672,21209,24043,25006,25035,25098,25287,25771,26080,26969,27494,27595,28961,29687,30045,32326,33310,33538,34154,35491,36031,38695,40289,22696,40664,20497,21006,21563,21839,25991,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,27766,32010,32011,32862,34442,38272,38639,21247,27797,29289,21619,23194,23614,23883,24396,24494,26410,26806,26979,28220,28228,30473,31859,32654,34183,35598,36855,38753,40692,23735,24758,24845,25003,25935,26107,26108,27665,27887,29599,29641,32225,38292,23494,34588,35600,21085,21338,25293,25615,25778,26420,27192,27850,29632,29854,31636,31893,32283,33162,33334,34180,36843,38649,39361,20276,21322,21453,21467,25292,25644,25856,26001,27075,27886,28504,29677,30036,30242,30436,30460,30928,30971,31020,32070,33324,34784,36820,38930,39151,21187,25300,25765,28196,28497,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,30332,36299,37297,37474,39662,39747,20515,20621,22346,22952,23592,24135,24439,25151,25918,26041,26049,26121,26507,27036,28354,30917,32033,32938,33152,33323,33459,33953,34444,35370,35607,37030,38450,40848,20493,20467,63843,22521,24472,25308,25490,26479,28227,28953,30403,32972,32986,35060,35061,35097,36064,36649,37197,38506,20271,20336,24091,26575,26658,30333,30334,39748,24161,27146,29033,29140,30058,63844,32321,34115,34281,39132,20240,31567,32624,38309,20961,24070,26805,27710,27726,27867,29359,31684,33539,27861,29754,20731,21128,22721,25816,27287,29863,30294,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,30887,34327,38370,38713,63845,21342,24321,35722,36776,36783,37002,21029,30629,40009,40712,19993,20482,20853,23643,24183,26142,26170,26564,26821,28851,29953,30149,31177,31453,36647,39200,39432,20445,22561,22577,23542,26222,27493,27921,28282,28541,29668,29995,33769,35036,35091,35676,36628,20239,20693,21264,21340,23443,24489,26381,31119,33145,33583,34068,35079,35206,36665,36667,39333,39954,26412,20086,20472,22857,23553,23791,23792,25447,26834,28925,29090,29739,32299,34028,34562,36898,37586,40179,19981,20184,20463,20613,21078,21103,21542,21648,22496,22827,23142,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,23386,23413,23500,24220,63846,25206,25975,26023,28014,28325,29238,31526,31807,32566,33104,33105,33178,33344,33433,33705,35331,36000,36070,36091,36212,36282,37096,37340,38428,38468,39385,40167,21271,20998,21545,22132,22707,22868,22894,24575,24996,25198,26128,27774,28954,30406,31881,31966,32027,33452,36033,38640,63847,20315,24343,24447,25282,23849,26379,26842,30844,32323,40300,19989,20633,21269,21290,21329,22915,23138,24199,24754,24970,25161,25209,26000,26503,27047,27604,27606,27607,27608,27832,63848,29749,30202,30738,30865,31189,31192,31875,32203,32737,32933,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,33086,33218,33778,34586,35048,35513,35692,36027,37145,38750,39131,40763,22188,23338,24428,25996,27315,27567,27996,28657,28693,29277,29613,36007,36051,38971,24977,27703,32856,39425,20045,20107,20123,20181,20282,20284,20351,20447,20735,21490,21496,21766,21987,22235,22763,22882,23057,23531,23546,23556,24051,24107,24473,24605,25448,26012,26031,26614,26619,26797,27515,27801,27863,28195,28681,29509,30722,31038,31040,31072,31169,31721,32023,32114,32902,33293,33678,34001,34503,35039,35408,35422,35613,36060,36198,36781,37034,39164,39391,40605,21066,63849,26388,63850,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20632,21034,23665,25955,27733,29642,29987,30109,31639,33948,37240,38704,20087,25746,27578,29022,34217,19977,63851,26441,26862,28183,33439,34072,34923,25591,28545,37394,39087,19978,20663,20687,20767,21830,21930,22039,23360,23577,23776,24120,24202,24224,24258,24819,26705,27233,28248,29245,29248,29376,30456,31077,31665,32724,35059,35316,35443,35937,36062,38684,22622,29885,36093,21959,63852,31329,32034,33394,29298,29983,29989,63853,31513,22661,22779,23996,24207,24246,24464,24661,25234,25471,25933,26257,26329,26360,26646,26866,29312,29790,31598,32110,32214,32626,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32997,33298,34223,35199,35475,36893,37604,40653,40736,22805,22893,24109,24796,26132,26227,26512,27728,28101,28511,30707,30889,33990,37323,37675,20185,20682,20808,21892,23307,23459,25159,25982,26059,28210,29053,29697,29764,29831,29887,30316,31146,32218,32341,32680,33146,33203,33337,34330,34796,35445,36323,36984,37521,37925,39245,39854,21352,23633,26964,27844,27945,28203,33292,34203,35131,35373,35498,38634,40807,21089,26297,27570,32406,34814,36109,38275,38493,25885,28041,29166,63854,22478,22995,23468,24615,24826,25104,26143,26207,29481,29689,30427,30465,31596,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32854,32882,33125,35488,37266,19990,21218,27506,27927,31237,31545,32048,63855,36016,21484,22063,22609,23477,23567,23569,24034,25152,25475,25620,26157,26803,27836,28040,28335,28703,28836,29138,29990,30095,30094,30233,31505,31712,31787,32032,32057,34092,34157,34311,35380,36877,36961,37045,37559,38902,39479,20439,23660,26463,28049,31903,32396,35606,36118,36895,23403,24061,25613,33984,36956,39137,29575,23435,24730,26494,28126,35359,35494,36865,38924,21047,63856,28753,30862,37782,34928,37335,20462,21463,22013,22234,22402,22781,23234,23432,23723,23744,24101,24833,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,25101,25163,25480,25628,25910,25976,27193,27530,27700,27929,28465,29159,29417,29560,29703,29874,30246,30561,31168,31319,31466,31929,32143,32172,32353,32670,33065,33585,33936,34010,34282,34966,35504,35728,36664,36930,36995,37228,37526,37561,38539,38567,38568,38614,38656,38920,39318,39635,39706,21460,22654,22809,23408,23487,28113,28506,29087,29729,29881,32901,33789,24033,24455,24490,24642,26092,26642,26991,27219,27529,27957,28147,29667,30462,30636,31565,32020,33059,33308,33600,34036,34147,35426,35524,37255,37662,38918,39348,25100,34899,36848,37477,23815,23847,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,23913,29791,33181,34664,28629,25342,32722,35126,35186,19998,20056,20711,21213,21319,25215,26119,32361,34821,38494,20365,21273,22070,22987,23204,23608,23630,23629,24066,24337,24643,26045,26159,26178,26558,26612,29468,30690,31034,32709,33940,33997,35222,35430,35433,35553,35925,35962,22516,23508,24335,24687,25325,26893,27542,28252,29060,31698,34645,35672,36606,39135,39166,20280,20353,20449,21627,23072,23480,24892,26032,26216,29180,30003,31070,32051,33102,33251,33688,34218,34254,34563,35338,36523,36763,63857,36805,22833,23460,23526,24713,23529,23563,24515,27777,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63858,28145,28683,29978,33455,35574,20160,21313,63859,38617,27663,20126,20420,20818,21854,23077,23784,25105,29273,33469,33706,34558,34905,35357,38463,38597,39187,40201,40285,22538,23731,23997,24132,24801,24853,25569,27138,28197,37122,37716,38990,39952,40823,23433,23736,25353,26191,26696,30524,38593,38797,38996,39839,26017,35585,36555,38332,21813,23721,24022,24245,26263,30284,33780,38343,22739,25276,29390,40232,20208,22830,24591,26171,27523,31207,40230,21395,21696,22467,23830,24859,26326,28079,30861,33406,38552,38724,21380,25212,25494,28082,32266,33099,38989,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,27387,32588,40367,40474,20063,20539,20918,22812,24825,25590,26928,29242,32822,63860,37326,24369,63861,63862,32004,33509,33903,33979,34277,36493,63863,20335,63864,63865,22756,23363,24665,25562,25880,25965,26264,63866,26954,27171,27915,28673,29036,30162,30221,31155,31344,63867,32650,63868,35140,63869,35731,37312,38525,63870,39178,22276,24481,26044,28417,30208,31142,35486,39341,39770,40812,20740,25014,25233,27277,33222,20547,22576,24422,28937,35328,35578,23420,34326,20474,20796,22196,22852,25513,28153,23978,26989,20870,20104,20313,63871,63872,63873,22914,63874,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63875,27487,27741,63876,29877,30998,63877,33287,33349,33593,36671,36701,63878,39192,63879,63880,63881,20134,63882,22495,24441,26131,63883,63884,30123,32377,35695,63885,36870,39515,22181,22567,23032,23071,23476,63886,24310,63887,63888,25424,25403,63889,26941,27783,27839,28046,28051,28149,28436,63890,28895,28982,29017,63891,29123,29141,63892,30799,30831,63893,31605,32227,63894,32303,63895,34893,36575,63896,63897,63898,37467,63899,40182,63900,63901,63902,24709,28037,63903,29105,63904,63905,38321,21421,63906,63907,63908,26579,63909,28814,28976,29744,33398,33490,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63910,38331,39653,40573,26308,63911,29121,33865,63912,63913,22603,63914,63915,23992,24433,63916,26144,26254,27001,27054,27704,27891,28214,28481,28634,28699,28719,29008,29151,29552,63917,29787,63918,29908,30408,31310,32403,63919,63920,33521,35424,36814,63921,37704,63922,38681,63923,63924,20034,20522,63925,21000,21473,26355,27757,28618,29450,30591,31330,33454,34269,34306,63926,35028,35427,35709,35947,63927,37555,63928,38675,38928,20116,20237,20425,20658,21320,21566,21555,21978,22626,22714,22887,23067,23524,24735,63929,25034,25942,26111,26212,26791,27738,28595,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,28879,29100,29522,31613,34568,35492,39986,40711,23627,27779,29508,29577,37434,28331,29797,30239,31337,32277,34314,20800,22725,25793,29934,29973,30320,32705,37013,38605,39252,28198,29926,31401,31402,33253,34521,34680,35355,23113,23436,23451,26785,26880,28003,29609,29715,29740,30871,32233,32747,33048,33109,33694,35916,38446,38929,26352,24448,26106,26505,27754,29579,20525,23043,27498,30702,22806,23916,24013,29477,30031,63930,63931,20709,20985,22575,22829,22934,23002,23525,63932,63933,23970,25303,25622,25747,25854,63934,26332,63935,27208,63936,29183,29796,63937,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31368,31407,32327,32350,32768,33136,63938,34799,35201,35616,36953,63939,36992,39250,24958,27442,28020,32287,35109,36785,20433,20653,20887,21191,22471,22665,23481,24248,24898,27029,28044,28263,28342,29076,29794,29992,29996,32883,33592,33993,36362,37780,37854,63940,20110,20305,20598,20778,21448,21451,21491,23431,23507,23588,24858,24962,26100,29275,29591,29760,30402,31056,31121,31161,32006,32701,33419,34261,34398,36802,36935,37109,37354,38533,38632,38633,21206,24423,26093,26161,26671,29020,31286,37057,38922,20113,63941,27218,27550,28560,29065,32792,33464,34131,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36939,38549,38642,38907,34074,39729,20112,29066,38596,20803,21407,21729,22291,22290,22435,23195,23236,23491,24616,24895,25588,27781,27961,28274,28304,29232,29503,29783,33489,34945,36677,36960,63942,38498,39000,40219,26376,36234,37470,20301,20553,20702,21361,22285,22996,23041,23561,24944,26256,28205,29234,29771,32239,32963,33806,33894,34111,34655,34907,35096,35586,36949,38859,39759,20083,20369,20754,20842,63943,21807,21929,23418,23461,24188,24189,24254,24736,24799,24840,24841,25540,25912,26377,63944,26580,26586,63945,26977,26978,27833,27943,63946,28216,63947,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,28641,29494,29495,63948,29788,30001,63949,30290,63950,63951,32173,33278,33848,35029,35480,35547,35565,36400,36418,36938,36926,36986,37193,37321,37742,63952,63953,22537,63954,27603,32905,32946,63955,63956,20801,22891,23609,63957,63958,28516,29607,32996,36103,63959,37399,38287,63960,63961,63962,63963,32895,25102,28700,32104,34701,63964,22432,24681,24903,27575,35518,37504,38577,20057,21535,28139,34093,38512,38899,39150,25558,27875,37009,20957,25033,33210,40441,20381,20506,20736,23452,24847,25087,25836,26885,27589,30097,30691,32681,33380,34191,34811,34915,35516,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,35696,37291,20108,20197,20234,63965,63966,22839,23016,63967,24050,24347,24411,24609,63968,63969,63970,63971,29246,29669,63972,30064,30157,63973,31227,63974,32780,32819,32900,33505,33617,63975,63976,36029,36019,36999,63977,63978,39156,39180,63979,63980,28727,30410,32714,32716,32764,35610,20154,20161,20995,21360,63981,21693,22240,23035,23493,24341,24525,28270,63982,63983,32106,33589,63984,34451,35469,63985,38765,38775,63986,63987,19968,20314,20350,22777,26085,28322,36920,37808,39353,20219,22764,22922,23001,24641,63988,63989,31252,63990,33615,36035,20837,21316,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63991,63992,63993,20173,21097,23381,33471,20180,21050,21672,22985,23039,23376,23383,23388,24675,24904,28363,28825,29038,29574,29943,30133,30913,32043,32773,33258,33576,34071,34249,35566,36039,38604,20316,21242,22204,26027,26152,28796,28856,29237,32189,33421,37196,38592,40306,23409,26855,27544,28538,30430,23697,26283,28507,31668,31786,34870,38620,19976,20183,21280,22580,22715,22767,22892,23559,24115,24196,24373,25484,26290,26454,27167,27299,27404,28479,29254,63994,29520,29835,31456,31911,33144,33247,33255,33674,33900,34083,34196,34255,35037,36115,37292,38263,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,38556,20877,21705,22312,23472,25165,26448,26685,26771,28221,28371,28797,32289,35009,36001,36617,40779,40782,29229,31631,35533,37658,20295,20302,20786,21632,22992,24213,25269,26485,26990,27159,27822,28186,29401,29482,30141,31672,32053,33511,33785,33879,34295,35419,36015,36487,36889,37048,38606,40799,21219,21514,23265,23490,25688,25973,28404,29380,63995,30340,31309,31515,31821,32318,32735,33659,35627,36042,36196,36321,36447,36842,36857,36969,37841,20291,20346,20659,20840,20856,21069,21098,22625,22652,22880,23560,23637,24283,24731,25136,26643,27583,27656,28593,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,29006,29728,30000,30008,30033,30322,31564,31627,31661,31686,32399,35438,36670,36681,37439,37523,37666,37931,38651,39002,39019,39198,20999,25130,25240,27993,30308,31434,31680,32118,21344,23742,24215,28472,28857,31896,38673,39822,40670,25509,25722,34678,19969,20117,20141,20572,20597,21576,22979,23450,24128,24237,24311,24449,24773,25402,25919,25972,26060,26230,26232,26622,26984,27273,27491,27712,28096,28136,28191,28254,28702,28833,29582,29693,30010,30555,30855,31118,31243,31357,31934,32142,33351,35330,35562,35998,37165,37194,37336,37478,37580,37664,38662,38742,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,38748,38914,40718,21046,21137,21884,22564,24093,24351,24716,25552,26799,28639,31085,31532,33229,34234,35069,35576,36420,37261,38500,38555,38717,38988,40778,20430,20806,20939,21161,22066,24340,24427,25514,25805,26089,26177,26362,26361,26397,26781,26839,27133,28437,28526,29031,29157,29226,29866,30522,31062,31066,31199,31264,31381,31895,31967,32068,32368,32903,34299,34468,35412,35519,36249,36481,36896,36973,37347,38459,38613,40165,26063,31751,36275,37827,23384,23562,21330,25305,29469,20519,23447,24478,24752,24939,26837,28121,29742,31278,32066,32156,32305,33131,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36394,36405,37758,37912,20304,22352,24038,24231,25387,32618,20027,20303,20367,20570,23005,32964,21610,21608,22014,22863,23449,24030,24282,26205,26417,26609,26666,27880,27954,28234,28557,28855,29664,30087,31820,32002,32044,32162,33311,34523,35387,35461,36208,36490,36659,36913,37198,37202,37956,39376,31481,31909,20426,20737,20934,22472,23535,23803,26201,27197,27994,28310,28652,28940,30063,31459,34850,36897,36981,38603,39423,33537,20013,20210,34886,37325,21373,27355,26987,27713,33914,22686,24974,26366,25327,28893,29969,30151,32338,33976,35657,36104,20043,21482,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21675,22320,22336,24535,25345,25351,25711,25903,26088,26234,26525,26547,27490,27744,27802,28460,30693,30757,31049,31063,32025,32930,33026,33267,33437,33463,34584,35468,63996,36100,36286,36978,30452,31257,31287,32340,32887,21767,21972,22645,25391,25634,26185,26187,26733,27035,27524,27941,28337,29645,29800,29857,30043,30137,30433,30494,30603,31206,32265,32285,33275,34095,34967,35386,36049,36587,36784,36914,37805,38499,38515,38663,20356,21489,23018,23241,24089,26702,29894,30142,31209,31378,33187,34541,36074,36300,36845,26015,26389,63997,22519,28503,32221,36655,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,37878,38598,24501,25074,28548,19988,20376,20511,21449,21983,23919,24046,27425,27492,30923,31642,63998,36425,36554,36974,25417,25662,30528,31364,37679,38015,40810,25776,28591,29158,29864,29914,31428,31762,32386,31922,32408,35738,36106,38013,39184,39244,21049,23519,25830,26413,32046,20717,21443,22649,24920,24921,25082,26028,31449,35730,35734,20489,20513,21109,21809,23100,24288,24432,24884,25950,26124,26166,26274,27085,28356,28466,29462,30241,31379,33081,33369,33750,33980,20661,22512,23488,23528,24425,25505,30758,32181,33756,34081,37319,37365,20874,26613,31574,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36012,20932,22971,24765,34389,20508,63999,21076,23610,24957,25114,25299,25842,26021,28364,30240,33034,36448,38495,38587,20191,21315,21912,22825,24029,25797,27849,28154,29588,31359,33307,34214,36068,36368,36983,37351,38369,38433,38854,20984,21746,21894,24505,25764,28552,32180,36639,36685,37941,20681,23574,27838,28155,29979,30651,31805,31844,35449,35522,22558,22974,24086,25463,29266,30090,30571,35548,36028,36626,24307,26228,28152,32893,33729,35531,38737,39894,64000,21059,26367,28053,28399,32224,35558,36910,36958,39636,21021,21119,21736,24980,25220,25307,26786,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26898,26970,27189,28818,28966,30813,30977,30990,31186,31245,32918,33400,33493,33609,34121,35970,36229,37218,37259,37294,20419,22225,29165,30679,34560,35320,23544,24534,26449,37032,21474,22618,23541,24740,24961,25696,32317,32880,34085,37507,25774,20652,23828,26368,22684,25277,25512,26894,27000,27166,28267,30394,31179,33467,33833,35535,36264,36861,37138,37195,37276,37648,37656,37786,38619,39478,39949,19985,30044,31069,31482,31569,31689,32302,33988,36441,36468,36600,36880,26149,26943,29763,20986,26414,40668,20805,24544,27798,34802,34909,34935,24756,33205,33795,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36101,21462,21561,22068,23094,23601,28810,32736,32858,33030,33261,36259,37257,39519,40434,20596,20164,21408,24827,28204,23652,20360,20516,21988,23769,24159,24677,26772,27835,28100,29118,30164,30196,30305,31258,31305,32199,32251,32622,33268,34473,36636,38601,39347,40786,21063,21189,39149,35242,19971,26578,28422,20405,23522,26517,27784,28024,29723,30759,37341,37756,34756,31204,31281,24555,20182,21668,21822,22702,22949,24816,25171,25302,26422,26965,33333,38464,39345,39389,20524,21331,21828,22396,64001,25176,64002,25826,26219,26589,28609,28655,29730,29752,35351,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,37944,21585,22022,22374,24392,24986,27470,28760,28845,32187,35477,22890,33067,25506,30472,32829,36010,22612,25645,27067,23445,24081,28271,64003,34153,20812,21488,22826,24608,24907,27526,27760,27888,31518,32974,33492,36294,37040,39089,64004,25799,28580,25745,25860,20814,21520,22303,35342,24927,26742,64005,30171,31570,32113,36890,22534,27084,33151,35114,36864,38969,20600,22871,22956,25237,36879,39722,24925,29305,38358,22369,23110,24052,25226,25773,25850,26487,27874,27966,29228,29750,30772,32631,33453,36315,38935,21028,22338,26495,29256,29923,36009,36774,37393,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,38442,20843,21485,25420,20329,21764,24726,25943,27803,28031,29260,29437,31255,35207,35997,24429,28558,28921,33192,24846,20415,20559,25153,29255,31687,32232,32745,36941,38829,39449,36022,22378,24179,26544,33805,35413,21536,23318,24163,24290,24330,25987,32954,34109,38281,38491,20296,21253,21261,21263,21638,21754,22275,24067,24598,25243,25265,25429,64006,27873,28006,30129,30770,32990,33071,33502,33889,33970,34957,35090,36875,37610,39165,39825,24133,26292,26333,28689,29190,64007,20469,21117,24426,24915,26451,27161,28418,29922,31080,34920,35961,39111,39108,39491,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21697,31263,26963,35575,35914,39080,39342,24444,25259,30130,30382,34987,36991,38466,21305,24380,24517,27852,29644,30050,30091,31558,33534,39325,20047,36924,19979,20309,21414,22799,24264,26160,27827,29781,33655,34662,36032,36944,38686,39957,22737,23416,34384,35604,40372,23506,24680,24717,26097,27735,28450,28579,28698,32597,32752,38289,38290,38480,38867,21106,36676,20989,21547,21688,21859,21898,27323,28085,32216,33382,37532,38519,40569,21512,21704,30418,34532,38308,38356,38492,20130,20233,23022,23270,24055,24658,25239,26477,26689,27782,28207,32568,32923,33322,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,64008,64009,38917,20133,20565,21683,22419,22874,23401,23475,25032,26999,28023,28707,34809,35299,35442,35559,36994,39405,39608,21182,26680,20502,24184,26447,33607,34892,20139,21521,22190,29670,37141,38911,39177,39255,39321,22099,22687,34395,35377,25010,27382,29563,36562,27463,38570,39511,22869,29184,36203,38761,20436,23796,24358,25080,26203,27883,28843,29572,29625,29694,30505,30541,32067,32098,32291,33335,34898,64010,36066,37449,39023,23377,31348,34880,38913,23244,20448,21332,22846,23805,25406,28025,29433,33029,33031,33698,37583,38960,20136,20804,21009,22411,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,24418,27842,28366,28677,28752,28847,29074,29673,29801,33610,34722,34913,36872,37026,37795,39336,20846,24407,24800,24935,26291,34137,36426,37295,38795,20046,20114,21628,22741,22778,22909,23733,24359,25142,25160,26122,26215,27627,28009,28111,28246,28408,28564,28640,28649,28765,29392,29733,29786,29920,30355,31068,31946,32286,32993,33446,33899,33983,34382,34399,34676,35703,35946,37804,38912,39013,24785,25110,37239,23130,26127,28151,28222,29759,39746,24573,24794,31503,21700,24344,27742,27859,27946,28888,32005,34425,35340,40251,21270,21644,23301,27194,28779,30069,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31117,31166,33457,33775,35441,35649,36008,38772,64011,25844,25899,30906,30907,31339,20024,21914,22864,23462,24187,24739,25563,27489,26213,26707,28185,29029,29872,32008,36996,39529,39973,27963,28369,29502,35905,38346,20976,24140,24488,24653,24822,24880,24908,26179,26180,27045,27841,28255,28361,28514,29004,29852,30343,31681,31783,33618,34647,36945,38541,40643,21295,22238,24315,24458,24674,24724,25079,26214,26371,27292,28142,28590,28784,29546,32362,33214,33588,34516,35496,36036,21123,29554,23446,27243,37892,21742,22150,23389,25928,25989,26313,26783,28045,28102,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,29243,32948,37237,39501,20399,20505,21402,21518,21564,21897,21957,24127,24460,26429,29030,29661,36869,21211,21235,22628,22734,28932,29071,29179,34224,35347,26248,34216,21927,26244,29002,33841,21321,21913,27585,24409,24509,25582,26249,28999,35569,36637,40638,20241,25658,28875,30054,34407,24676,35662,40440,20807,20982,21256,27958,33016,40657,26133,27427,28824,30165,21507,23673,32007,35350,27424,27453,27462,21560,24688,27965,32725,33288,20694,20958,21916,22123,22221,23020,23305,24076,24985,24984,25137,26206,26342,29081,29113,29114,29351,31143,31232,32690,35440,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],
-  "gb18030":[19970,19972,19973,19974,19983,19986,19991,19999,20000,20001,20003,20006,20009,20014,20015,20017,20019,20021,20023,20028,20032,20033,20034,20036,20038,20042,20049,20053,20055,20058,20059,20066,20067,20068,20069,20071,20072,20074,20075,20076,20077,20078,20079,20082,20084,20085,20086,20087,20088,20089,20090,20091,20092,20093,20095,20096,20097,20098,20099,20100,20101,20103,20106,20112,20118,20119,20121,20124,20125,20126,20131,20138,20143,20144,20145,20148,20150,20151,20152,20153,20156,20157,20158,20168,20172,20175,20176,20178,20186,20187,20188,20192,20194,20198,20199,20201,20205,20206,20207,20209,20212,20216,20217,20218,20220,20222,20224,20226,20227,20228,20229,20230,20231,20232,20235,20236,20242,20243,20244,20245,20246,20252,20253,20257,20259,20264,20265,20268,20269,20270,20273,20275,20277,20279,20281,20283,20286,20287,20288,20289,20290,20292,20293,20295,20296,20297,20298,20299,20300,20306,20308,20310,20321,20322,20326,20328,20330,20331,20333,20334,20337,20338,20341,20343,20344,20345,20346,20349,20352,20353,20354,20357,20358,20359,20362,20364,20366,20368,20370,20371,20373,20374,20376,20377,20378,20380,20382,20383,20385,20386,20388,20395,20397,20400,20401,20402,20403,20404,20406,20407,20408,20409,20410,20411,20412,20413,20414,20416,20417,20418,20422,20423,20424,20425,20427,20428,20429,20434,20435,20436,20437,20438,20441,20443,20448,20450,20452,20453,20455,20459,20460,20464,20466,20468,20469,20470,20471,20473,20475,20476,20477,20479,20480,20481,20482,20483,20484,20485,20486,20487,20488,20489,20490,20491,20494,20496,20497,20499,20501,20502,20503,20507,20509,20510,20512,20514,20515,20516,20519,20523,20527,20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20539,20541,20543,20544,20545,20546,20548,20549,20550,20553,20554,20555,20557,20560,20561,20562,20563,20564,20566,20567,20568,20569,20571,20573,20574,20575,20576,20577,20578,20579,20580,20582,20583,20584,20585,20586,20587,20589,20590,20591,20592,20593,20594,20595,20596,20597,20600,20601,20602,20604,20605,20609,20610,20611,20612,20614,20615,20617,20618,20619,20620,20622,20623,20624,20625,20626,20627,20628,20629,20630,20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,20642,20644,20646,20650,20651,20653,20654,20655,20656,20657,20659,20660,20661,20662,20663,20664,20665,20668,20669,20670,20671,20672,20673,20674,20675,20676,20677,20678,20679,20680,20681,20682,20683,20684,20685,20686,20688,20689,20690,20691,20692,20693,20695,20696,20697,20699,20700,20701,20702,20703,20704,20705,20706,20707,20708,20709,20712,20713,20714,20715,20719,20720,20721,20722,20724,20726,20727,20728,20729,20730,20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,20744,20745,20746,20748,20749,20750,20751,20752,20753,20755,20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,20796,20797,20798,20802,20807,20810,20812,20814,20815,20816,20818,20819,20823,20824,20825,20827,20829,20830,20831,20832,20833,20835,20836,20838,20839,20841,20842,20847,20850,20858,20862,20863,20867,20868,20870,20871,20874,20875,20878,20879,20880,20881,20883,20884,20888,20890,20893,20894,20895,20897,20899,20902,20903,20904,20905,20906,20909,20910,20916,20920,20921,20922,20926,20927,20929,20930,20931,20933,20936,20938,20941,20942,20944,20946,20947,20948,20949,20950,20951,20952,20953,20954,20956,20958,20959,20962,20963,20965,20966,20967,20968,20969,20970,20972,20974,20977,20978,20980,20983,20990,20996,20997,21001,21003,21004,21007,21008,21011,21012,21013,21020,21022,21023,21025,21026,21027,21029,21030,21031,21034,21036,21039,21041,21042,21044,21045,21052,21054,21060,21061,21062,21063,21064,21065,21067,21070,21071,21074,21075,21077,21079,21080,21081,21082,21083,21085,21087,21088,21090,21091,21092,21094,21096,21099,21100,21101,21102,21104,21105,21107,21108,21109,21110,21111,21112,21113,21114,21115,21116,21118,21120,21123,21124,21125,21126,21127,21129,21130,21131,21132,21133,21134,21135,21137,21138,21140,21141,21142,21143,21144,21145,21146,21148,21156,21157,21158,21159,21166,21167,21168,21172,21173,21174,21175,21176,21177,21178,21179,21180,21181,21184,21185,21186,21188,21189,21190,21192,21194,21196,21197,21198,21199,21201,21203,21204,21205,21207,21209,21210,21211,21212,21213,21214,21216,21217,21218,21219,21221,21222,21223,21224,21225,21226,21227,21228,21229,21230,21231,21233,21234,21235,21236,21237,21238,21239,21240,21243,21244,21245,21249,21250,21251,21252,21255,21257,21258,21259,21260,21262,21265,21266,21267,21268,21272,21275,21276,21278,21279,21282,21284,21285,21287,21288,21289,21291,21292,21293,21295,21296,21297,21298,21299,21300,21301,21302,21303,21304,21308,21309,21312,21314,21316,21318,21323,21324,21325,21328,21332,21336,21337,21339,21341,21349,21352,21354,21356,21357,21362,21366,21369,21371,21372,21373,21374,21376,21377,21379,21383,21384,21386,21390,21391,21392,21393,21394,21395,21396,21398,21399,21401,21403,21404,21406,21408,21409,21412,21415,21418,21419,21420,21421,21423,21424,21425,21426,21427,21428,21429,21431,21432,21433,21434,21436,21437,21438,21440,21443,21444,21445,21446,21447,21454,21455,21456,21458,21459,21461,21466,21468,21469,21470,21473,21474,21479,21492,21498,21502,21503,21504,21506,21509,21511,21515,21524,21528,21529,21530,21532,21538,21540,21541,21546,21552,21555,21558,21559,21562,21565,21567,21569,21570,21572,21573,21575,21577,21580,21581,21582,21583,21585,21594,21597,21598,21599,21600,21601,21603,21605,21607,21609,21610,21611,21612,21613,21614,21615,21616,21620,21625,21626,21630,21631,21633,21635,21637,21639,21640,21641,21642,21645,21649,21651,21655,21656,21660,21662,21663,21664,21665,21666,21669,21678,21680,21682,21685,21686,21687,21689,21690,21692,21694,21699,21701,21706,21707,21718,21720,21723,21728,21729,21730,21731,21732,21739,21740,21743,21744,21745,21748,21749,21750,21751,21752,21753,21755,21758,21760,21762,21763,21764,21765,21768,21770,21771,21772,21773,21774,21778,21779,21781,21782,21783,21784,21785,21786,21788,21789,21790,21791,21793,21797,21798,21800,21801,21803,21805,21810,21812,21813,21814,21816,21817,21818,21819,21821,21824,21826,21829,21831,21832,21835,21836,21837,21838,21839,21841,21842,21843,21844,21847,21848,21849,21850,21851,21853,21854,21855,21856,21858,21859,21864,21865,21867,21871,21872,21873,21874,21875,21876,21881,21882,21885,21887,21893,21894,21900,21901,21902,21904,21906,21907,21909,21910,21911,21914,21915,21918,21920,21921,21922,21923,21924,21925,21926,21928,21929,21930,21931,21932,21933,21934,21935,21936,21938,21940,21942,21944,21946,21948,21951,21952,21953,21954,21955,21958,21959,21960,21962,21963,21966,21967,21968,21973,21975,21976,21977,21978,21979,21982,21984,21986,21991,21993,21997,21998,22000,22001,22004,22006,22008,22009,22010,22011,22012,22015,22018,22019,22020,22021,22022,22023,22026,22027,22029,22032,22033,22034,22035,22036,22037,22038,22039,22041,22042,22044,22045,22048,22049,22050,22053,22054,22056,22057,22058,22059,22062,22063,22064,22067,22069,22071,22072,22074,22076,22077,22078,22080,22081,22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22095,22096,22097,22098,22099,22101,22102,22106,22107,22109,22110,22111,22112,22113,22115,22117,22118,22119,22125,22126,22127,22128,22130,22131,22132,22133,22135,22136,22137,22138,22141,22142,22143,22144,22145,22146,22147,22148,22151,22152,22153,22154,22155,22156,22157,22160,22161,22162,22164,22165,22166,22167,22168,22169,22170,22171,22172,22173,22174,22175,22176,22177,22178,22180,22181,22182,22183,22184,22185,22186,22187,22188,22189,22190,22192,22193,22194,22195,22196,22197,22198,22200,22201,22202,22203,22205,22206,22207,22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,22219,22220,22221,22222,22223,22224,22225,22226,22227,22229,22230,22232,22233,22236,22243,22245,22246,22247,22248,22249,22250,22252,22254,22255,22258,22259,22262,22263,22264,22267,22268,22272,22273,22274,22277,22279,22283,22284,22285,22286,22287,22288,22289,22290,22291,22292,22293,22294,22295,22296,22297,22298,22299,22301,22302,22304,22305,22306,22308,22309,22310,22311,22315,22321,22322,22324,22325,22326,22327,22328,22332,22333,22335,22337,22339,22340,22341,22342,22344,22345,22347,22354,22355,22356,22357,22358,22360,22361,22370,22371,22373,22375,22380,22382,22384,22385,22386,22388,22389,22392,22393,22394,22397,22398,22399,22400,22401,22407,22408,22409,22410,22413,22414,22415,22416,22417,22420,22421,22422,22423,22424,22425,22426,22428,22429,22430,22431,22437,22440,22442,22444,22447,22448,22449,22451,22453,22454,22455,22457,22458,22459,22460,22461,22462,22463,22464,22465,22468,22469,22470,22471,22472,22473,22474,22476,22477,22480,22481,22483,22486,22487,22491,22492,22494,22497,22498,22499,22501,22502,22503,22504,22505,22506,22507,22508,22510,22512,22513,22514,22515,22517,22518,22519,22523,22524,22526,22527,22529,22531,22532,22533,22536,22537,22538,22540,22542,22543,22544,22546,22547,22548,22550,22551,22552,22554,22555,22556,22557,22559,22562,22563,22565,22566,22567,22568,22569,22571,22572,22573,22574,22575,22577,22578,22579,22580,22582,22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595,22597,22598,22599,22600,22601,22602,22603,22606,22607,22608,22610,22611,22613,22614,22615,22617,22618,22619,22620,22621,22623,22624,22625,22626,22627,22628,22630,22631,22632,22633,22634,22637,22638,22639,22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,22653,22655,22658,22660,22662,22663,22664,22666,22667,22668,22669,22670,22671,22672,22673,22676,22677,22678,22679,22680,22683,22684,22685,22688,22689,22690,22691,22692,22693,22694,22695,22698,22699,22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,22710,22711,22712,22713,22714,22715,22717,22718,22719,22720,22722,22723,22724,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735,22736,22738,22739,22740,22742,22743,22744,22745,22746,22747,22748,22749,22750,22751,22752,22753,22754,22755,22757,22758,22759,22760,22761,22762,22765,22767,22769,22770,22772,22773,22775,22776,22778,22779,22780,22781,22782,22783,22784,22785,22787,22789,22790,22792,22793,22794,22795,22796,22798,22800,22801,22802,22803,22807,22808,22811,22813,22814,22816,22817,22818,22819,22822,22824,22828,22832,22834,22835,22837,22838,22843,22845,22846,22847,22848,22851,22853,22854,22858,22860,22861,22864,22866,22867,22873,22875,22876,22877,22878,22879,22881,22883,22884,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,22896,22897,22898,22901,22903,22906,22907,22908,22910,22911,22912,22917,22921,22923,22924,22926,22927,22928,22929,22932,22933,22936,22938,22939,22940,22941,22943,22944,22945,22946,22950,22951,22956,22957,22960,22961,22963,22964,22965,22966,22967,22968,22970,22972,22973,22975,22976,22977,22978,22979,22980,22981,22983,22984,22985,22988,22989,22990,22991,22997,22998,23001,23003,23006,23007,23008,23009,23010,23012,23014,23015,23017,23018,23019,23021,23022,23023,23024,23025,23026,23027,23028,23029,23030,23031,23032,23034,23036,23037,23038,23040,23042,23050,23051,23053,23054,23055,23056,23058,23060,23061,23062,23063,23065,23066,23067,23069,23070,23073,23074,23076,23078,23079,23080,23082,23083,23084,23085,23086,23087,23088,23091,23093,23095,23096,23097,23098,23099,23101,23102,23103,23105,23106,23107,23108,23109,23111,23112,23115,23116,23117,23118,23119,23120,23121,23122,23123,23124,23126,23127,23128,23129,23131,23132,23133,23134,23135,23136,23137,23139,23140,23141,23142,23144,23145,23147,23148,23149,23150,23151,23152,23153,23154,23155,23160,23161,23163,23164,23165,23166,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,23187,23188,23189,23190,23191,23192,23193,23196,23197,23198,23199,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23211,23212,23213,23214,23215,23216,23217,23220,23222,23223,23225,23226,23227,23228,23229,23231,23232,23235,23236,23237,23238,23239,23240,23242,23243,23245,23246,23247,23248,23249,23251,23253,23255,23257,23258,23259,23261,23262,23263,23266,23268,23269,23271,23272,23274,23276,23277,23278,23279,23280,23282,23283,23284,23285,23286,23287,23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299,23300,23301,23302,23303,23304,23306,23307,23308,23309,23310,23311,23312,23313,23314,23315,23316,23317,23320,23321,23322,23323,23324,23325,23326,23327,23328,23329,23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23347,23349,23350,23352,23353,23354,23355,23356,23357,23358,23359,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371,23372,23373,23374,23375,23378,23382,23390,23392,23393,23399,23400,23403,23405,23406,23407,23410,23412,23414,23415,23416,23417,23419,23420,23422,23423,23426,23430,23434,23437,23438,23440,23441,23442,23444,23446,23455,23463,23464,23465,23468,23469,23470,23471,23473,23474,23479,23482,23483,23484,23488,23489,23491,23496,23497,23498,23499,23501,23502,23503,23505,23508,23509,23510,23511,23512,23513,23514,23515,23516,23520,23522,23523,23526,23527,23529,23530,23531,23532,23533,23535,23537,23538,23539,23540,23541,23542,23543,23549,23550,23552,23554,23555,23557,23559,23560,23563,23564,23565,23566,23568,23570,23571,23575,23577,23579,23582,23583,23584,23585,23587,23590,23592,23593,23594,23595,23597,23598,23599,23600,23602,23603,23605,23606,23607,23619,23620,23622,23623,23628,23629,23634,23635,23636,23638,23639,23640,23642,23643,23644,23645,23647,23650,23652,23655,23656,23657,23658,23659,23660,23661,23664,23666,23667,23668,23669,23670,23671,23672,23675,23676,23677,23678,23680,23683,23684,23685,23686,23687,23689,23690,23691,23694,23695,23698,23699,23701,23709,23710,23711,23712,23713,23716,23717,23718,23719,23720,23722,23726,23727,23728,23730,23732,23734,23737,23738,23739,23740,23742,23744,23746,23747,23749,23750,23751,23752,23753,23754,23756,23757,23758,23759,23760,23761,23763,23764,23765,23766,23767,23768,23770,23771,23772,23773,23774,23775,23776,23778,23779,23783,23785,23787,23788,23790,23791,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23804,23805,23806,23807,23808,23809,23812,23813,23816,23817,23818,23819,23820,23821,23823,23824,23825,23826,23827,23829,23831,23832,23833,23834,23836,23837,23839,23840,23841,23842,23843,23845,23848,23850,23851,23852,23855,23856,23857,23858,23859,23861,23862,23863,23864,23865,23866,23867,23868,23871,23872,23873,23874,23875,23876,23877,23878,23880,23881,23885,23886,23887,23888,23889,23890,23891,23892,23893,23894,23895,23897,23898,23900,23902,23903,23904,23905,23906,23907,23908,23909,23910,23911,23912,23914,23917,23918,23920,23921,23922,23923,23925,23926,23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23939,23940,23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,23954,23955,23956,23957,23958,23959,23960,23962,23963,23964,23966,23967,23968,23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983,23984,23985,23986,23987,23988,23989,23990,23992,23993,23994,23995,23996,23997,23998,23999,24000,24001,24002,24003,24004,24006,24007,24008,24009,24010,24011,24012,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,24024,24025,24026,24028,24031,24032,24035,24036,24042,24044,24045,24048,24053,24054,24056,24057,24058,24059,24060,24063,24064,24068,24071,24073,24074,24075,24077,24078,24082,24083,24087,24094,24095,24096,24097,24098,24099,24100,24101,24104,24105,24106,24107,24108,24111,24112,24114,24115,24116,24117,24118,24121,24122,24126,24127,24128,24129,24131,24134,24135,24136,24137,24138,24139,24141,24142,24143,24144,24145,24146,24147,24150,24151,24152,24153,24154,24156,24157,24159,24160,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,24174,24175,24176,24177,24181,24183,24185,24190,24193,24194,24195,24197,24200,24201,24204,24205,24206,24210,24216,24219,24221,24225,24226,24227,24228,24232,24233,24234,24235,24236,24238,24239,24240,24241,24242,24244,24250,24251,24252,24253,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24267,24268,24269,24270,24271,24272,24276,24277,24279,24280,24281,24282,24284,24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24297,24299,24300,24301,24302,24303,24304,24305,24306,24307,24309,24312,24313,24315,24316,24317,24325,24326,24327,24329,24332,24333,24334,24336,24338,24340,24342,24345,24346,24348,24349,24350,24353,24354,24355,24356,24360,24363,24364,24366,24368,24370,24371,24372,24373,24374,24375,24376,24379,24381,24382,24383,24385,24386,24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,24401,24404,24409,24410,24411,24412,24414,24415,24416,24419,24421,24423,24424,24427,24430,24431,24434,24436,24437,24438,24440,24442,24445,24446,24447,24451,24454,24461,24462,24463,24465,24467,24468,24470,24474,24475,24477,24478,24479,24480,24482,24483,24484,24485,24486,24487,24489,24491,24492,24495,24496,24497,24498,24499,24500,24502,24504,24505,24506,24507,24510,24511,24512,24513,24514,24519,24520,24522,24523,24526,24531,24532,24533,24538,24539,24540,24542,24543,24546,24547,24549,24550,24552,24553,24556,24559,24560,24562,24563,24564,24566,24567,24569,24570,24572,24583,24584,24585,24587,24588,24592,24593,24595,24599,24600,24602,24606,24607,24610,24611,24612,24620,24621,24622,24624,24625,24626,24627,24628,24630,24631,24632,24633,24634,24637,24638,24640,24644,24645,24646,24647,24648,24649,24650,24652,24654,24655,24657,24659,24660,24662,24663,24664,24667,24668,24670,24671,24672,24673,24677,24678,24686,24689,24690,24692,24693,24695,24702,24704,24705,24706,24709,24710,24711,24712,24714,24715,24718,24719,24720,24721,24723,24725,24727,24728,24729,24732,24734,24737,24738,24740,24741,24743,24745,24746,24750,24752,24755,24757,24758,24759,24761,24762,24765,24766,24767,24768,24769,24770,24771,24772,24775,24776,24777,24780,24781,24782,24783,24784,24786,24787,24788,24790,24791,24793,24795,24798,24801,24802,24803,24804,24805,24810,24817,24818,24821,24823,24824,24827,24828,24829,24830,24831,24834,24835,24836,24837,24839,24842,24843,24844,24848,24849,24850,24851,24852,24854,24855,24856,24857,24859,24860,24861,24862,24865,24866,24869,24872,24873,24874,24876,24877,24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24896,24897,24898,24899,24900,24901,24902,24903,24905,24907,24909,24911,24912,24914,24915,24916,24918,24919,24920,24921,24922,24923,24924,24926,24927,24928,24929,24931,24932,24933,24934,24937,24938,24939,24940,24941,24942,24943,24945,24946,24947,24948,24950,24952,24953,24954,24955,24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,24970,24972,24973,24975,24976,24977,24978,24979,24981,24982,24983,24984,24985,24986,24987,24988,24990,24991,24992,24993,24994,24995,24996,24997,24998,25002,25003,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25016,25017,25018,25019,25020,25021,25023,25024,25025,25027,25028,25029,25030,25031,25033,25036,25037,25038,25039,25040,25043,25045,25046,25047,25048,25049,25050,25051,25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25063,25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,25075,25076,25078,25079,25080,25081,25082,25083,25084,25085,25086,25088,25089,25090,25091,25092,25093,25095,25097,25107,25108,25113,25116,25117,25118,25120,25123,25126,25127,25128,25129,25131,25133,25135,25136,25137,25138,25141,25142,25144,25145,25146,25147,25148,25154,25156,25157,25158,25162,25167,25168,25173,25174,25175,25177,25178,25180,25181,25182,25183,25184,25185,25186,25188,25189,25192,25201,25202,25204,25205,25207,25208,25210,25211,25213,25217,25218,25219,25221,25222,25223,25224,25227,25228,25229,25230,25231,25232,25236,25241,25244,25245,25246,25251,25254,25255,25257,25258,25261,25262,25263,25264,25266,25267,25268,25270,25271,25272,25274,25278,25280,25281,25283,25291,25295,25297,25301,25309,25310,25312,25313,25316,25322,25323,25328,25330,25333,25336,25337,25338,25339,25344,25347,25348,25349,25350,25354,25355,25356,25357,25359,25360,25362,25363,25364,25365,25367,25368,25369,25372,25382,25383,25385,25388,25389,25390,25392,25393,25395,25396,25397,25398,25399,25400,25403,25404,25406,25407,25408,25409,25412,25415,25416,25418,25425,25426,25427,25428,25430,25431,25432,25433,25434,25435,25436,25437,25440,25444,25445,25446,25448,25450,25451,25452,25455,25456,25458,25459,25460,25461,25464,25465,25468,25469,25470,25471,25473,25475,25476,25477,25478,25483,25485,25489,25491,25492,25493,25495,25497,25498,25499,25500,25501,25502,25503,25505,25508,25510,25515,25519,25521,25522,25525,25526,25529,25531,25533,25535,25536,25537,25538,25539,25541,25543,25544,25546,25547,25548,25553,25555,25556,25557,25559,25560,25561,25562,25563,25564,25565,25567,25570,25572,25573,25574,25575,25576,25579,25580,25582,25583,25584,25585,25587,25589,25591,25593,25594,25595,25596,25598,25603,25604,25606,25607,25608,25609,25610,25613,25614,25617,25618,25621,25622,25623,25624,25625,25626,25629,25631,25634,25635,25636,25637,25639,25640,25641,25643,25646,25647,25648,25649,25650,25651,25653,25654,25655,25656,25657,25659,25660,25662,25664,25666,25667,25673,25675,25676,25677,25678,25679,25680,25681,25683,25685,25686,25687,25689,25690,25691,25692,25693,25695,25696,25697,25698,25699,25700,25701,25702,25704,25706,25707,25708,25710,25711,25712,25713,25714,25715,25716,25717,25718,25719,25723,25724,25725,25726,25727,25728,25729,25731,25734,25736,25737,25738,25739,25740,25741,25742,25743,25744,25747,25748,25751,25752,25754,25755,25756,25757,25759,25760,25761,25762,25763,25765,25766,25767,25768,25770,25771,25775,25777,25778,25779,25780,25782,25785,25787,25789,25790,25791,25793,25795,25796,25798,25799,25800,25801,25802,25803,25804,25807,25809,25811,25812,25813,25814,25817,25818,25819,25820,25821,25823,25824,25825,25827,25829,25831,25832,25833,25834,25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,25847,25848,25849,25850,25851,25852,25853,25854,25855,25857,25858,25859,25860,25861,25862,25863,25864,25866,25867,25868,25869,25870,25871,25872,25873,25875,25876,25877,25878,25879,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890,25891,25892,25894,25895,25896,25897,25898,25900,25901,25904,25905,25906,25907,25911,25914,25916,25917,25920,25921,25922,25923,25924,25926,25927,25930,25931,25933,25934,25936,25938,25939,25940,25943,25944,25946,25948,25951,25952,25953,25956,25957,25959,25960,25961,25962,25965,25966,25967,25969,25971,25973,25974,25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987,25988,25989,25990,25992,25993,25994,25997,25998,25999,26002,26004,26005,26006,26008,26010,26013,26014,26016,26018,26019,26022,26024,26026,26028,26030,26033,26034,26035,26036,26037,26038,26039,26040,26042,26043,26046,26047,26048,26050,26055,26056,26057,26058,26061,26064,26065,26067,26068,26069,26072,26073,26074,26075,26076,26077,26078,26079,26081,26083,26084,26090,26091,26098,26099,26100,26101,26104,26105,26107,26108,26109,26110,26111,26113,26116,26117,26119,26120,26121,26123,26125,26128,26129,26130,26134,26135,26136,26138,26139,26140,26142,26145,26146,26147,26148,26150,26153,26154,26155,26156,26158,26160,26162,26163,26167,26168,26169,26170,26171,26173,26175,26176,26178,26180,26181,26182,26183,26184,26185,26186,26189,26190,26192,26193,26200,26201,26203,26204,26205,26206,26208,26210,26211,26213,26215,26217,26218,26219,26220,26221,26225,26226,26227,26229,26232,26233,26235,26236,26237,26239,26240,26241,26243,26245,26246,26248,26249,26250,26251,26253,26254,26255,26256,26258,26259,26260,26261,26264,26265,26266,26267,26268,26270,26271,26272,26273,26274,26275,26276,26277,26278,26281,26282,26283,26284,26285,26287,26288,26289,26290,26291,26293,26294,26295,26296,26298,26299,26300,26301,26303,26304,26305,26306,26307,26308,26309,26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,26323,26324,26325,26326,26327,26328,26330,26334,26335,26336,26337,26338,26339,26340,26341,26343,26344,26346,26347,26348,26349,26350,26351,26353,26357,26358,26360,26362,26363,26365,26369,26370,26371,26372,26373,26374,26375,26380,26382,26383,26385,26386,26387,26390,26392,26393,26394,26396,26398,26400,26401,26402,26403,26404,26405,26407,26409,26414,26416,26418,26419,26422,26423,26424,26425,26427,26428,26430,26431,26433,26436,26437,26439,26442,26443,26445,26450,26452,26453,26455,26456,26457,26458,26459,26461,26466,26467,26468,26470,26471,26475,26476,26478,26481,26484,26486,26488,26489,26490,26491,26493,26496,26498,26499,26501,26502,26504,26506,26508,26509,26510,26511,26513,26514,26515,26516,26518,26521,26523,26527,26528,26529,26532,26534,26537,26540,26542,26545,26546,26548,26553,26554,26555,26556,26557,26558,26559,26560,26562,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26581,26582,26583,26587,26591,26593,26595,26596,26598,26599,26600,26602,26603,26605,26606,26610,26613,26614,26615,26616,26617,26618,26619,26620,26622,26625,26626,26627,26628,26630,26637,26640,26642,26644,26645,26648,26649,26650,26651,26652,26654,26655,26656,26658,26659,26660,26661,26662,26663,26664,26667,26668,26669,26670,26671,26672,26673,26676,26677,26678,26682,26683,26687,26695,26699,26701,26703,26706,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719,26730,26732,26733,26734,26735,26736,26737,26738,26739,26741,26744,26745,26746,26747,26748,26749,26750,26751,26752,26754,26756,26759,26760,26761,26762,26763,26764,26765,26766,26768,26769,26770,26772,26773,26774,26776,26777,26778,26779,26780,26781,26782,26783,26784,26785,26787,26788,26789,26793,26794,26795,26796,26798,26801,26802,26804,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815,26817,26819,26820,26821,26822,26823,26824,26826,26828,26830,26831,26832,26833,26835,26836,26838,26839,26841,26843,26844,26845,26846,26847,26849,26850,26852,26853,26854,26855,26856,26857,26858,26859,26860,26861,26863,26866,26867,26868,26870,26871,26872,26875,26877,26878,26879,26880,26882,26883,26884,26886,26887,26888,26889,26890,26892,26895,26897,26899,26900,26901,26902,26903,26904,26905,26906,26907,26908,26909,26910,26913,26914,26915,26917,26918,26919,26920,26921,26922,26923,26924,26926,26927,26929,26930,26931,26933,26934,26935,26936,26938,26939,26940,26942,26944,26945,26947,26948,26949,26950,26951,26952,26953,26954,26955,26956,26957,26958,26959,26960,26961,26962,26963,26965,26966,26968,26969,26971,26972,26975,26977,26978,26980,26981,26983,26984,26985,26986,26988,26989,26991,26992,26994,26995,26996,26997,26998,27002,27003,27005,27006,27007,27009,27011,27013,27018,27019,27020,27022,27023,27024,27025,27026,27027,27030,27031,27033,27034,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27049,27050,27052,27054,27055,27056,27058,27059,27061,27062,27064,27065,27066,27068,27069,27070,27071,27072,27074,27075,27076,27077,27078,27079,27080,27081,27083,27085,27087,27089,27090,27091,27093,27094,27095,27096,27097,27098,27100,27101,27102,27105,27106,27107,27108,27109,27110,27111,27112,27113,27114,27115,27116,27118,27119,27120,27121,27123,27124,27125,27126,27127,27128,27129,27130,27131,27132,27134,27136,27137,27138,27139,27140,27141,27142,27143,27144,27145,27147,27148,27149,27150,27151,27152,27153,27154,27155,27156,27157,27158,27161,27162,27163,27164,27165,27166,27168,27170,27171,27172,27173,27174,27175,27177,27179,27180,27181,27182,27184,27186,27187,27188,27190,27191,27192,27193,27194,27195,27196,27199,27200,27201,27202,27203,27205,27206,27208,27209,27210,27211,27212,27213,27214,27215,27217,27218,27219,27220,27221,27222,27223,27226,27228,27229,27230,27231,27232,27234,27235,27236,27238,27239,27240,27241,27242,27243,27244,27245,27246,27247,27248,27250,27251,27252,27253,27254,27255,27256,27258,27259,27261,27262,27263,27265,27266,27267,27269,27270,27271,27272,27273,27274,27275,27276,27277,27279,27282,27283,27284,27285,27286,27288,27289,27290,27291,27292,27293,27294,27295,27297,27298,27299,27300,27301,27302,27303,27304,27306,27309,27310,27311,27312,27313,27314,27315,27316,27317,27318,27319,27320,27321,27322,27323,27324,27325,27326,27327,27328,27329,27330,27331,27332,27333,27334,27335,27336,27337,27338,27339,27340,27341,27342,27343,27344,27345,27346,27347,27348,27349,27350,27351,27352,27353,27354,27355,27356,27357,27358,27359,27360,27361,27362,27363,27364,27365,27366,27367,27368,27369,27370,27371,27372,27373,27374,27375,27376,27377,27378,27379,27380,27381,27382,27383,27384,27385,27386,27387,27388,27389,27390,27391,27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,27402,27403,27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,27415,27416,27417,27418,27419,27420,27421,27422,27423,27429,27430,27432,27433,27434,27435,27436,27437,27438,27439,27440,27441,27443,27444,27445,27446,27448,27451,27452,27453,27455,27456,27457,27458,27460,27461,27464,27466,27467,27469,27470,27471,27472,27473,27474,27475,27476,27477,27478,27479,27480,27482,27483,27484,27485,27486,27487,27488,27489,27496,27497,27499,27500,27501,27502,27503,27504,27505,27506,27507,27508,27509,27510,27511,27512,27514,27517,27518,27519,27520,27525,27528,27532,27534,27535,27536,27537,27540,27541,27543,27544,27545,27548,27549,27550,27551,27552,27554,27555,27556,27557,27558,27559,27560,27561,27563,27564,27565,27566,27567,27568,27569,27570,27574,27576,27577,27578,27579,27580,27581,27582,27584,27587,27588,27590,27591,27592,27593,27594,27596,27598,27600,27601,27608,27610,27612,27613,27614,27615,27616,27618,27619,27620,27621,27622,27623,27624,27625,27628,27629,27630,27632,27633,27634,27636,27638,27639,27640,27642,27643,27644,27646,27647,27648,27649,27650,27651,27652,27656,27657,27658,27659,27660,27662,27666,27671,27676,27677,27678,27680,27683,27685,27691,27692,27693,27697,27699,27702,27703,27705,27706,27707,27708,27710,27711,27715,27716,27717,27720,27723,27724,27725,27726,27727,27729,27730,27731,27734,27736,27737,27738,27746,27747,27749,27750,27751,27755,27756,27757,27758,27759,27761,27763,27765,27767,27768,27770,27771,27772,27775,27776,27780,27783,27786,27787,27789,27790,27793,27794,27797,27798,27799,27800,27802,27804,27805,27806,27808,27810,27816,27820,27823,27824,27828,27829,27830,27831,27834,27840,27841,27842,27843,27846,27847,27848,27851,27853,27854,27855,27857,27858,27864,27865,27866,27868,27869,27871,27876,27878,27879,27881,27884,27885,27890,27892,27897,27903,27904,27906,27907,27909,27910,27912,27913,27914,27917,27919,27920,27921,27923,27924,27925,27926,27928,27932,27933,27935,27936,27937,27938,27939,27940,27942,27944,27945,27948,27949,27951,27952,27956,27958,27959,27960,27962,27967,27968,27970,27972,27977,27980,27984,27989,27990,27991,27992,27995,27997,27999,28001,28002,28004,28005,28007,28008,28011,28012,28013,28016,28017,28018,28019,28021,28022,28025,28026,28027,28029,28030,28031,28032,28033,28035,28036,28038,28039,28042,28043,28045,28047,28048,28050,28054,28055,28056,28057,28058,28060,28066,28069,28076,28077,28080,28081,28083,28084,28086,28087,28089,28090,28091,28092,28093,28094,28097,28098,28099,28104,28105,28106,28109,28110,28111,28112,28114,28115,28116,28117,28119,28122,28123,28124,28127,28130,28131,28133,28135,28136,28137,28138,28141,28143,28144,28146,28148,28149,28150,28152,28154,28157,28158,28159,28160,28161,28162,28163,28164,28166,28167,28168,28169,28171,28175,28178,28179,28181,28184,28185,28187,28188,28190,28191,28194,28198,28199,28200,28202,28204,28206,28208,28209,28211,28213,28214,28215,28217,28219,28220,28221,28222,28223,28224,28225,28226,28229,28230,28231,28232,28233,28234,28235,28236,28239,28240,28241,28242,28245,28247,28249,28250,28252,28253,28254,28256,28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28268,28269,28271,28272,28273,28274,28275,28276,28277,28278,28279,28280,28281,28282,28283,28284,28285,28288,28289,28290,28292,28295,28296,28298,28299,28300,28301,28302,28305,28306,28307,28308,28309,28310,28311,28313,28314,28315,28317,28318,28320,28321,28323,28324,28326,28328,28329,28331,28332,28333,28334,28336,28339,28341,28344,28345,28348,28350,28351,28352,28355,28356,28357,28358,28360,28361,28362,28364,28365,28366,28368,28370,28374,28376,28377,28379,28380,28381,28387,28391,28394,28395,28396,28397,28398,28399,28400,28401,28402,28403,28405,28406,28407,28408,28410,28411,28412,28413,28414,28415,28416,28417,28419,28420,28421,28423,28424,28426,28427,28428,28429,28430,28432,28433,28434,28438,28439,28440,28441,28442,28443,28444,28445,28446,28447,28449,28450,28451,28453,28454,28455,28456,28460,28462,28464,28466,28468,28469,28471,28472,28473,28474,28475,28476,28477,28479,28480,28481,28482,28483,28484,28485,28488,28489,28490,28492,28494,28495,28496,28497,28498,28499,28500,28501,28502,28503,28505,28506,28507,28509,28511,28512,28513,28515,28516,28517,28519,28520,28521,28522,28523,28524,28527,28528,28529,28531,28533,28534,28535,28537,28539,28541,28542,28543,28544,28545,28546,28547,28549,28550,28551,28554,28555,28559,28560,28561,28562,28563,28564,28565,28566,28567,28568,28569,28570,28571,28573,28574,28575,28576,28578,28579,28580,28581,28582,28584,28585,28586,28587,28588,28589,28590,28591,28592,28593,28594,28596,28597,28599,28600,28602,28603,28604,28605,28606,28607,28609,28611,28612,28613,28614,28615,28616,28618,28619,28620,28621,28622,28623,28624,28627,28628,28629,28630,28631,28632,28633,28634,28635,28636,28637,28639,28642,28643,28644,28645,28646,28647,28648,28649,28650,28651,28652,28653,28656,28657,28658,28659,28660,28661,28662,28663,28664,28665,28666,28667,28668,28669,28670,28671,28672,28673,28674,28675,28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,28686,28687,28688,28690,28691,28692,28693,28694,28695,28696,28697,28700,28701,28702,28703,28704,28705,28706,28708,28709,28710,28711,28712,28713,28714,28715,28716,28717,28718,28719,28720,28721,28722,28723,28724,28726,28727,28728,28730,28731,28732,28733,28734,28735,28736,28737,28738,28739,28740,28741,28742,28743,28744,28745,28746,28747,28749,28750,28752,28753,28754,28755,28756,28757,28758,28759,28760,28761,28762,28763,28764,28765,28767,28768,28769,28770,28771,28772,28773,28774,28775,28776,28777,28778,28782,28785,28786,28787,28788,28791,28793,28794,28795,28797,28801,28802,28803,28804,28806,28807,28808,28811,28812,28813,28815,28816,28817,28819,28823,28824,28826,28827,28830,28831,28832,28833,28834,28835,28836,28837,28838,28839,28840,28841,28842,28848,28850,28852,28853,28854,28858,28862,28863,28868,28869,28870,28871,28873,28875,28876,28877,28878,28879,28880,28881,28882,28883,28884,28885,28886,28887,28890,28892,28893,28894,28896,28897,28898,28899,28901,28906,28910,28912,28913,28914,28915,28916,28917,28918,28920,28922,28923,28924,28926,28927,28928,28929,28930,28931,28932,28933,28934,28935,28936,28939,28940,28941,28942,28943,28945,28946,28948,28951,28955,28956,28957,28958,28959,28960,28961,28962,28963,28964,28965,28967,28968,28969,28970,28971,28972,28973,28974,28978,28979,28980,28981,28983,28984,28985,28986,28987,28988,28989,28990,28991,28992,28993,28994,28995,28996,28998,28999,29000,29001,29003,29005,29007,29008,29009,29010,29011,29012,29013,29014,29015,29016,29017,29018,29019,29021,29023,29024,29025,29026,29027,29029,29033,29034,29035,29036,29037,29039,29040,29041,29044,29045,29046,29047,29049,29051,29052,29054,29055,29056,29057,29058,29059,29061,29062,29063,29064,29065,29067,29068,29069,29070,29072,29073,29074,29075,29077,29078,29079,29082,29083,29084,29085,29086,29089,29090,29091,29092,29093,29094,29095,29097,29098,29099,29101,29102,29103,29104,29105,29106,29108,29110,29111,29112,29114,29115,29116,29117,29118,29119,29120,29121,29122,29124,29125,29126,29127,29128,29129,29130,29131,29132,29133,29135,29136,29137,29138,29139,29142,29143,29144,29145,29146,29147,29148,29149,29150,29151,29153,29154,29155,29156,29158,29160,29161,29162,29163,29164,29165,29167,29168,29169,29170,29171,29172,29173,29174,29175,29176,29178,29179,29180,29181,29182,29183,29184,29185,29186,29187,29188,29189,29191,29192,29193,29194,29195,29196,29197,29198,29199,29200,29201,29202,29203,29204,29205,29206,29207,29208,29209,29210,29211,29212,29214,29215,29216,29217,29218,29219,29220,29221,29222,29223,29225,29227,29229,29230,29231,29234,29235,29236,29242,29244,29246,29248,29249,29250,29251,29252,29253,29254,29257,29258,29259,29262,29263,29264,29265,29267,29268,29269,29271,29272,29274,29276,29278,29280,29283,29284,29285,29288,29290,29291,29292,29293,29296,29297,29299,29300,29302,29303,29304,29307,29308,29309,29314,29315,29317,29318,29319,29320,29321,29324,29326,29328,29329,29331,29332,29333,29334,29335,29336,29337,29338,29339,29340,29341,29342,29344,29345,29346,29347,29348,29349,29350,29351,29352,29353,29354,29355,29358,29361,29362,29363,29365,29370,29371,29372,29373,29374,29375,29376,29381,29382,29383,29385,29386,29387,29388,29391,29393,29395,29396,29397,29398,29400,29402,29403,58566,58567,58568,58569,58570,58571,58572,58573,58574,58575,58576,58577,58578,58579,58580,58581,58582,58583,58584,58585,58586,58587,58588,58589,58590,58591,58592,58593,58594,58595,58596,58597,58598,58599,58600,58601,58602,58603,58604,58605,58606,58607,58608,58609,58610,58611,58612,58613,58614,58615,58616,58617,58618,58619,58620,58621,58622,58623,58624,58625,58626,58627,58628,58629,58630,58631,58632,58633,58634,58635,58636,58637,58638,58639,58640,58641,58642,58643,58644,58645,58646,58647,58648,58649,58650,58651,58652,58653,58654,58655,58656,58657,58658,58659,58660,58661,12288,12289,12290,183,713,711,168,12291,12293,8212,65374,8214,8230,8216,8217,8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,12310,12311,12304,12305,177,215,247,8758,8743,8744,8721,8719,8746,8745,8712,8759,8730,8869,8741,8736,8978,8857,8747,8750,8801,8780,8776,8765,8733,8800,8814,8815,8804,8805,8734,8757,8756,9794,9792,176,8242,8243,8451,65284,164,65504,65505,8240,167,8470,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,8251,8594,8592,8593,8595,12307,58662,58663,58664,58665,58666,58667,58668,58669,58670,58671,58672,58673,58674,58675,58676,58677,58678,58679,58680,58681,58682,58683,58684,58685,58686,58687,58688,58689,58690,58691,58692,58693,58694,58695,58696,58697,58698,58699,58700,58701,58702,58703,58704,58705,58706,58707,58708,58709,58710,58711,58712,58713,58714,58715,58716,58717,58718,58719,58720,58721,58722,58723,58724,58725,58726,58727,58728,58729,58730,58731,58732,58733,58734,58735,58736,58737,58738,58739,58740,58741,58742,58743,58744,58745,58746,58747,58748,58749,58750,58751,58752,58753,58754,58755,58756,58757,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,59238,59239,59240,59241,59242,59243,9352,9353,9354,9355,9356,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9371,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348,9349,9350,9351,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,8364,59245,12832,12833,12834,12835,12836,12837,12838,12839,12840,12841,59246,59247,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,59248,59249,58758,58759,58760,58761,58762,58763,58764,58765,58766,58767,58768,58769,58770,58771,58772,58773,58774,58775,58776,58777,58778,58779,58780,58781,58782,58783,58784,58785,58786,58787,58788,58789,58790,58791,58792,58793,58794,58795,58796,58797,58798,58799,58800,58801,58802,58803,58804,58805,58806,58807,58808,58809,58810,58811,58812,58813,58814,58815,58816,58817,58818,58819,58820,58821,58822,58823,58824,58825,58826,58827,58828,58829,58830,58831,58832,58833,58834,58835,58836,58837,58838,58839,58840,58841,58842,58843,58844,58845,58846,58847,58848,58849,58850,58851,58852,12288,65281,65282,65283,65509,65285,65286,65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,65310,65311,65312,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65339,65340,65341,65342,65343,65344,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373,65507,58854,58855,58856,58857,58858,58859,58860,58861,58862,58863,58864,58865,58866,58867,58868,58869,58870,58871,58872,58873,58874,58875,58876,58877,58878,58879,58880,58881,58882,58883,58884,58885,58886,58887,58888,58889,58890,58891,58892,58893,58894,58895,58896,58897,58898,58899,58900,58901,58902,58903,58904,58905,58906,58907,58908,58909,58910,58911,58912,58913,58914,58915,58916,58917,58918,58919,58920,58921,58922,58923,58924,58925,58926,58927,58928,58929,58930,58931,58932,58933,58934,58935,58936,58937,58938,58939,58940,58941,58942,58943,58944,58945,58946,58947,58948,58949,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,59250,59251,59252,59253,59254,59255,59256,59257,59258,59259,59260,58950,58951,58952,58953,58954,58955,58956,58957,58958,58959,58960,58961,58962,58963,58964,58965,58966,58967,58968,58969,58970,58971,58972,58973,58974,58975,58976,58977,58978,58979,58980,58981,58982,58983,58984,58985,58986,58987,58988,58989,58990,58991,58992,58993,58994,58995,58996,58997,58998,58999,59000,59001,59002,59003,59004,59005,59006,59007,59008,59009,59010,59011,59012,59013,59014,59015,59016,59017,59018,59019,59020,59021,59022,59023,59024,59025,59026,59027,59028,59029,59030,59031,59032,59033,59034,59035,59036,59037,59038,59039,59040,59041,59042,59043,59044,59045,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,59261,59262,59263,59264,59265,59266,59267,59268,59046,59047,59048,59049,59050,59051,59052,59053,59054,59055,59056,59057,59058,59059,59060,59061,59062,59063,59064,59065,59066,59067,59068,59069,59070,59071,59072,59073,59074,59075,59076,59077,59078,59079,59080,59081,59082,59083,59084,59085,59086,59087,59088,59089,59090,59091,59092,59093,59094,59095,59096,59097,59098,59099,59100,59101,59102,59103,59104,59105,59106,59107,59108,59109,59110,59111,59112,59113,59114,59115,59116,59117,59118,59119,59120,59121,59122,59123,59124,59125,59126,59127,59128,59129,59130,59131,59132,59133,59134,59135,59136,59137,59138,59139,59140,59141,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,59269,59270,59271,59272,59273,59274,59275,59276,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,59277,59278,59279,59280,59281,59282,59283,65077,65078,65081,65082,65087,65088,65085,65086,65089,65090,65091,65092,59284,59285,65083,65084,65079,65080,65073,59286,65075,65076,59287,59288,59289,59290,59291,59292,59293,59294,59295,59142,59143,59144,59145,59146,59147,59148,59149,59150,59151,59152,59153,59154,59155,59156,59157,59158,59159,59160,59161,59162,59163,59164,59165,59166,59167,59168,59169,59170,59171,59172,59173,59174,59175,59176,59177,59178,59179,59180,59181,59182,59183,59184,59185,59186,59187,59188,59189,59190,59191,59192,59193,59194,59195,59196,59197,59198,59199,59200,59201,59202,59203,59204,59205,59206,59207,59208,59209,59210,59211,59212,59213,59214,59215,59216,59217,59218,59219,59220,59221,59222,59223,59224,59225,59226,59227,59228,59229,59230,59231,59232,59233,59234,59235,59236,59237,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,59296,59297,59298,59299,59300,59301,59302,59303,59304,59305,59306,59307,59308,59309,59310,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,59311,59312,59313,59314,59315,59316,59317,59318,59319,59320,59321,59322,59323,714,715,729,8211,8213,8229,8245,8453,8457,8598,8599,8600,8601,8725,8735,8739,8786,8806,8807,8895,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,9585,9586,9587,9601,9602,9603,9604,9605,9606,9607,9608,9609,9610,9611,9612,9613,9614,9615,9619,9620,9621,9660,9661,9698,9699,9700,9701,9737,8853,12306,12317,12318,59324,59325,59326,59327,59328,59329,59330,59331,59332,59333,59334,257,225,462,224,275,233,283,232,299,237,464,236,333,243,466,242,363,250,468,249,470,472,474,476,252,234,593,7743,324,328,505,609,59337,59338,59339,59340,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,59341,59342,59343,59344,59345,59346,59347,59348,59349,59350,59351,59352,59353,59354,59355,59356,59357,59358,59359,59360,59361,12321,12322,12323,12324,12325,12326,12327,12328,12329,12963,13198,13199,13212,13213,13214,13217,13252,13262,13265,13266,13269,65072,65506,65508,59362,8481,12849,59363,8208,59364,59365,59366,12540,12443,12444,12541,12542,12294,12445,12446,65097,65098,65099,65100,65101,65102,65103,65104,65105,65106,65108,65109,65110,65111,65113,65114,65115,65116,65117,65118,65119,65120,65121,65122,65123,65124,65125,65126,65128,65129,65130,65131,12350,12272,12273,12274,12275,12276,12277,12278,12279,12280,12281,12282,12283,12295,59380,59381,59382,59383,59384,59385,59386,59387,59388,59389,59390,59391,59392,9472,9473,9474,9475,9476,9477,9478,9479,9480,9481,9482,9483,9484,9485,9486,9487,9488,9489,9490,9491,9492,9493,9494,9495,9496,9497,9498,9499,9500,9501,9502,9503,9504,9505,9506,9507,9508,9509,9510,9511,9512,9513,9514,9515,9516,9517,9518,9519,9520,9521,9522,9523,9524,9525,9526,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,9538,9539,9540,9541,9542,9543,9544,9545,9546,9547,59393,59394,59395,59396,59397,59398,59399,59400,59401,59402,59403,59404,59405,59406,59407,29404,29405,29407,29410,29411,29412,29413,29414,29415,29418,29419,29429,29430,29433,29437,29438,29439,29440,29442,29444,29445,29446,29447,29448,29449,29451,29452,29453,29455,29456,29457,29458,29460,29464,29465,29466,29471,29472,29475,29476,29478,29479,29480,29485,29487,29488,29490,29491,29493,29494,29498,29499,29500,29501,29504,29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29515,29516,29518,29519,29521,29523,29524,29525,29526,29528,29529,29530,29531,29532,29533,29534,29535,29537,29538,29539,29540,29541,29542,29543,29544,29545,29546,29547,29550,29552,29553,57344,57345,57346,57347,57348,57349,57350,57351,57352,57353,57354,57355,57356,57357,57358,57359,57360,57361,57362,57363,57364,57365,57366,57367,57368,57369,57370,57371,57372,57373,57374,57375,57376,57377,57378,57379,57380,57381,57382,57383,57384,57385,57386,57387,57388,57389,57390,57391,57392,57393,57394,57395,57396,57397,57398,57399,57400,57401,57402,57403,57404,57405,57406,57407,57408,57409,57410,57411,57412,57413,57414,57415,57416,57417,57418,57419,57420,57421,57422,57423,57424,57425,57426,57427,57428,57429,57430,57431,57432,57433,57434,57435,57436,57437,29554,29555,29556,29557,29558,29559,29560,29561,29562,29563,29564,29565,29567,29568,29569,29570,29571,29573,29574,29576,29578,29580,29581,29583,29584,29586,29587,29588,29589,29591,29592,29593,29594,29596,29597,29598,29600,29601,29603,29604,29605,29606,29607,29608,29610,29612,29613,29617,29620,29621,29622,29624,29625,29628,29629,29630,29631,29633,29635,29636,29637,29638,29639,29643,29644,29646,29650,29651,29652,29653,29654,29655,29656,29658,29659,29660,29661,29663,29665,29666,29667,29668,29670,29672,29674,29675,29676,29678,29679,29680,29681,29683,29684,29685,29686,29687,57438,57439,57440,57441,57442,57443,57444,57445,57446,57447,57448,57449,57450,57451,57452,57453,57454,57455,57456,57457,57458,57459,57460,57461,57462,57463,57464,57465,57466,57467,57468,57469,57470,57471,57472,57473,57474,57475,57476,57477,57478,57479,57480,57481,57482,57483,57484,57485,57486,57487,57488,57489,57490,57491,57492,57493,57494,57495,57496,57497,57498,57499,57500,57501,57502,57503,57504,57505,57506,57507,57508,57509,57510,57511,57512,57513,57514,57515,57516,57517,57518,57519,57520,57521,57522,57523,57524,57525,57526,57527,57528,57529,57530,57531,29688,29689,29690,29691,29692,29693,29694,29695,29696,29697,29698,29700,29703,29704,29707,29708,29709,29710,29713,29714,29715,29716,29717,29718,29719,29720,29721,29724,29725,29726,29727,29728,29729,29731,29732,29735,29737,29739,29741,29743,29745,29746,29751,29752,29753,29754,29755,29757,29758,29759,29760,29762,29763,29764,29765,29766,29767,29768,29769,29770,29771,29772,29773,29774,29775,29776,29777,29778,29779,29780,29782,29784,29789,29792,29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803,29804,29806,29807,29809,29810,29811,29812,29813,29816,29817,29818,57532,57533,57534,57535,57536,57537,57538,57539,57540,57541,57542,57543,57544,57545,57546,57547,57548,57549,57550,57551,57552,57553,57554,57555,57556,57557,57558,57559,57560,57561,57562,57563,57564,57565,57566,57567,57568,57569,57570,57571,57572,57573,57574,57575,57576,57577,57578,57579,57580,57581,57582,57583,57584,57585,57586,57587,57588,57589,57590,57591,57592,57593,57594,57595,57596,57597,57598,57599,57600,57601,57602,57603,57604,57605,57606,57607,57608,57609,57610,57611,57612,57613,57614,57615,57616,57617,57618,57619,57620,57621,57622,57623,57624,57625,29819,29820,29821,29823,29826,29828,29829,29830,29832,29833,29834,29836,29837,29839,29841,29842,29843,29844,29845,29846,29847,29848,29849,29850,29851,29853,29855,29856,29857,29858,29859,29860,29861,29862,29866,29867,29868,29869,29870,29871,29872,29873,29874,29875,29876,29877,29878,29879,29880,29881,29883,29884,29885,29886,29887,29888,29889,29890,29891,29892,29893,29894,29895,29896,29897,29898,29899,29900,29901,29902,29903,29904,29905,29907,29908,29909,29910,29911,29912,29913,29914,29915,29917,29919,29921,29925,29927,29928,29929,29930,29931,29932,29933,29936,29937,29938,57626,57627,57628,57629,57630,57631,57632,57633,57634,57635,57636,57637,57638,57639,57640,57641,57642,57643,57644,57645,57646,57647,57648,57649,57650,57651,57652,57653,57654,57655,57656,57657,57658,57659,57660,57661,57662,57663,57664,57665,57666,57667,57668,57669,57670,57671,57672,57673,57674,57675,57676,57677,57678,57679,57680,57681,57682,57683,57684,57685,57686,57687,57688,57689,57690,57691,57692,57693,57694,57695,57696,57697,57698,57699,57700,57701,57702,57703,57704,57705,57706,57707,57708,57709,57710,57711,57712,57713,57714,57715,57716,57717,57718,57719,29939,29941,29944,29945,29946,29947,29948,29949,29950,29952,29953,29954,29955,29957,29958,29959,29960,29961,29962,29963,29964,29966,29968,29970,29972,29973,29974,29975,29979,29981,29982,29984,29985,29986,29987,29988,29990,29991,29994,29998,30004,30006,30009,30012,30013,30015,30017,30018,30019,30020,30022,30023,30025,30026,30029,30032,30033,30034,30035,30037,30038,30039,30040,30045,30046,30047,30048,30049,30050,30051,30052,30055,30056,30057,30059,30060,30061,30062,30063,30064,30065,30067,30069,30070,30071,30074,30075,30076,30077,30078,30080,30081,30082,30084,30085,30087,57720,57721,57722,57723,57724,57725,57726,57727,57728,57729,57730,57731,57732,57733,57734,57735,57736,57737,57738,57739,57740,57741,57742,57743,57744,57745,57746,57747,57748,57749,57750,57751,57752,57753,57754,57755,57756,57757,57758,57759,57760,57761,57762,57763,57764,57765,57766,57767,57768,57769,57770,57771,57772,57773,57774,57775,57776,57777,57778,57779,57780,57781,57782,57783,57784,57785,57786,57787,57788,57789,57790,57791,57792,57793,57794,57795,57796,57797,57798,57799,57800,57801,57802,57803,57804,57805,57806,57807,57808,57809,57810,57811,57812,57813,30088,30089,30090,30092,30093,30094,30096,30099,30101,30104,30107,30108,30110,30114,30118,30119,30120,30121,30122,30125,30134,30135,30138,30139,30143,30144,30145,30150,30155,30156,30158,30159,30160,30161,30163,30167,30169,30170,30172,30173,30175,30176,30177,30181,30185,30188,30189,30190,30191,30194,30195,30197,30198,30199,30200,30202,30203,30205,30206,30210,30212,30214,30215,30216,30217,30219,30221,30222,30223,30225,30226,30227,30228,30230,30234,30236,30237,30238,30241,30243,30247,30248,30252,30254,30255,30257,30258,30262,30263,30265,30266,30267,30269,30273,30274,30276,57814,57815,57816,57817,57818,57819,57820,57821,57822,57823,57824,57825,57826,57827,57828,57829,57830,57831,57832,57833,57834,57835,57836,57837,57838,57839,57840,57841,57842,57843,57844,57845,57846,57847,57848,57849,57850,57851,57852,57853,57854,57855,57856,57857,57858,57859,57860,57861,57862,57863,57864,57865,57866,57867,57868,57869,57870,57871,57872,57873,57874,57875,57876,57877,57878,57879,57880,57881,57882,57883,57884,57885,57886,57887,57888,57889,57890,57891,57892,57893,57894,57895,57896,57897,57898,57899,57900,57901,57902,57903,57904,57905,57906,57907,30277,30278,30279,30280,30281,30282,30283,30286,30287,30288,30289,30290,30291,30293,30295,30296,30297,30298,30299,30301,30303,30304,30305,30306,30308,30309,30310,30311,30312,30313,30314,30316,30317,30318,30320,30321,30322,30323,30324,30325,30326,30327,30329,30330,30332,30335,30336,30337,30339,30341,30345,30346,30348,30349,30351,30352,30354,30356,30357,30359,30360,30362,30363,30364,30365,30366,30367,30368,30369,30370,30371,30373,30374,30375,30376,30377,30378,30379,30380,30381,30383,30384,30387,30389,30390,30391,30392,30393,30394,30395,30396,30397,30398,30400,30401,30403,21834,38463,22467,25384,21710,21769,21696,30353,30284,34108,30702,33406,30861,29233,38552,38797,27688,23433,20474,25353,26263,23736,33018,26696,32942,26114,30414,20985,25942,29100,32753,34948,20658,22885,25034,28595,33453,25420,25170,21485,21543,31494,20843,30116,24052,25300,36299,38774,25226,32793,22365,38712,32610,29240,30333,26575,30334,25670,20336,36133,25308,31255,26001,29677,25644,25203,33324,39041,26495,29256,25198,25292,20276,29923,21322,21150,32458,37030,24110,26758,27036,33152,32465,26834,30917,34444,38225,20621,35876,33502,32990,21253,35090,21093,30404,30407,30409,30411,30412,30419,30421,30425,30426,30428,30429,30430,30432,30433,30434,30435,30436,30438,30439,30440,30441,30442,30443,30444,30445,30448,30451,30453,30454,30455,30458,30459,30461,30463,30464,30466,30467,30469,30470,30474,30476,30478,30479,30480,30481,30482,30483,30484,30485,30486,30487,30488,30491,30492,30493,30494,30497,30499,30500,30501,30503,30506,30507,30508,30510,30512,30513,30514,30515,30516,30521,30523,30525,30526,30527,30530,30532,30533,30534,30536,30537,30538,30539,30540,30541,30542,30543,30546,30547,30548,30549,30550,30551,30552,30553,30556,34180,38649,20445,22561,39281,23453,25265,25253,26292,35961,40077,29190,26479,30865,24754,21329,21271,36744,32972,36125,38049,20493,29384,22791,24811,28953,34987,22868,33519,26412,31528,23849,32503,29997,27893,36454,36856,36924,40763,27604,37145,31508,24444,30887,34006,34109,27605,27609,27606,24065,24199,30201,38381,25949,24330,24517,36767,22721,33218,36991,38491,38829,36793,32534,36140,25153,20415,21464,21342,36776,36777,36779,36941,26631,24426,33176,34920,40150,24971,21035,30250,24428,25996,28626,28392,23486,25672,20853,20912,26564,19993,31177,39292,28851,30557,30558,30559,30560,30564,30567,30569,30570,30573,30574,30575,30576,30577,30578,30579,30580,30581,30582,30583,30584,30586,30587,30588,30593,30594,30595,30598,30599,30600,30601,30602,30603,30607,30608,30611,30612,30613,30614,30615,30616,30617,30618,30619,30620,30621,30622,30625,30627,30628,30630,30632,30635,30637,30638,30639,30641,30642,30644,30646,30647,30648,30649,30650,30652,30654,30656,30657,30658,30659,30660,30661,30662,30663,30664,30665,30666,30667,30668,30670,30671,30672,30673,30674,30675,30676,30677,30678,30680,30681,30682,30685,30686,30687,30688,30689,30692,30149,24182,29627,33760,25773,25320,38069,27874,21338,21187,25615,38082,31636,20271,24091,33334,33046,33162,28196,27850,39539,25429,21340,21754,34917,22496,19981,24067,27493,31807,37096,24598,25830,29468,35009,26448,25165,36130,30572,36393,37319,24425,33756,34081,39184,21442,34453,27531,24813,24808,28799,33485,33329,20179,27815,34255,25805,31961,27133,26361,33609,21397,31574,20391,20876,27979,23618,36461,25554,21449,33580,33590,26597,30900,25661,23519,23700,24046,35815,25286,26612,35962,25600,25530,34633,39307,35863,32544,38130,20135,38416,39076,26124,29462,30694,30696,30698,30703,30704,30705,30706,30708,30709,30711,30713,30714,30715,30716,30723,30724,30725,30726,30727,30728,30730,30731,30734,30735,30736,30739,30741,30745,30747,30750,30752,30753,30754,30756,30760,30762,30763,30766,30767,30769,30770,30771,30773,30774,30781,30783,30785,30786,30787,30788,30790,30792,30793,30794,30795,30797,30799,30801,30803,30804,30808,30809,30810,30811,30812,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823,30824,30825,30831,30832,30833,30834,30835,30836,30837,30838,30840,30841,30842,30843,30845,30846,30847,30848,30849,30850,30851,22330,23581,24120,38271,20607,32928,21378,25950,30021,21809,20513,36229,25220,38046,26397,22066,28526,24034,21557,28818,36710,25199,25764,25507,24443,28552,37108,33251,36784,23576,26216,24561,27785,38472,36225,34924,25745,31216,22478,27225,25104,21576,20056,31243,24809,28548,35802,25215,36894,39563,31204,21507,30196,25345,21273,27744,36831,24347,39536,32827,40831,20360,23610,36196,32709,26021,28861,20805,20914,34411,23815,23456,25277,37228,30068,36364,31264,24833,31609,20167,32504,30597,19985,33261,21021,20986,27249,21416,36487,38148,38607,28353,38500,26970,30852,30853,30854,30856,30858,30859,30863,30864,30866,30868,30869,30870,30873,30877,30878,30880,30882,30884,30886,30888,30889,30890,30891,30892,30893,30894,30895,30901,30902,30903,30904,30906,30907,30908,30909,30911,30912,30914,30915,30916,30918,30919,30920,30924,30925,30926,30927,30929,30930,30931,30934,30935,30936,30938,30939,30940,30941,30942,30943,30944,30945,30946,30947,30948,30949,30950,30951,30953,30954,30955,30957,30958,30959,30960,30961,30963,30965,30966,30968,30969,30971,30972,30973,30974,30975,30976,30978,30979,30980,30982,30983,30984,30985,30986,30987,30988,30784,20648,30679,25616,35302,22788,25571,24029,31359,26941,20256,33337,21912,20018,30126,31383,24162,24202,38383,21019,21561,28810,25462,38180,22402,26149,26943,37255,21767,28147,32431,34850,25139,32496,30133,33576,30913,38604,36766,24904,29943,35789,27492,21050,36176,27425,32874,33905,22257,21254,20174,19995,20945,31895,37259,31751,20419,36479,31713,31388,25703,23828,20652,33030,30209,31929,28140,32736,26449,23384,23544,30923,25774,25619,25514,25387,38169,25645,36798,31572,30249,25171,22823,21574,27513,20643,25140,24102,27526,20195,36151,34955,24453,36910,30989,30990,30991,30992,30993,30994,30996,30997,30998,30999,31000,31001,31002,31003,31004,31005,31007,31008,31009,31010,31011,31013,31014,31015,31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,31026,31027,31029,31030,31031,31032,31033,31037,31039,31042,31043,31044,31045,31047,31050,31051,31052,31053,31054,31055,31056,31057,31058,31060,31061,31064,31065,31073,31075,31076,31078,31081,31082,31083,31084,31086,31088,31089,31090,31091,31092,31093,31094,31097,31099,31100,31101,31102,31103,31106,31107,31110,31111,31112,31113,31115,31116,31117,31118,31120,31121,31122,24608,32829,25285,20025,21333,37112,25528,32966,26086,27694,20294,24814,28129,35806,24377,34507,24403,25377,20826,33633,26723,20992,25443,36424,20498,23707,31095,23548,21040,31291,24764,36947,30423,24503,24471,30340,36460,28783,30331,31561,30634,20979,37011,22564,20302,28404,36842,25932,31515,29380,28068,32735,23265,25269,24213,22320,33922,31532,24093,24351,36882,32532,39072,25474,28359,30872,28857,20856,38747,22443,30005,20291,30008,24215,24806,22880,28096,27583,30857,21500,38613,20939,20993,25481,21514,38035,35843,36300,29241,30879,34678,36845,35853,21472,31123,31124,31125,31126,31127,31128,31129,31131,31132,31133,31134,31135,31136,31137,31138,31139,31140,31141,31142,31144,31145,31146,31147,31148,31149,31150,31151,31152,31153,31154,31156,31157,31158,31159,31160,31164,31167,31170,31172,31173,31175,31176,31178,31180,31182,31183,31184,31187,31188,31190,31191,31193,31194,31195,31196,31197,31198,31200,31201,31202,31205,31208,31210,31212,31214,31217,31218,31219,31220,31221,31222,31223,31225,31226,31228,31230,31231,31233,31236,31237,31239,31240,31241,31242,31244,31247,31248,31249,31250,31251,31253,31254,31256,31257,31259,31260,19969,30447,21486,38025,39030,40718,38189,23450,35746,20002,19996,20908,33891,25026,21160,26635,20375,24683,20923,27934,20828,25238,26007,38497,35910,36887,30168,37117,30563,27602,29322,29420,35835,22581,30585,36172,26460,38208,32922,24230,28193,22930,31471,30701,38203,27573,26029,32526,22534,20817,38431,23545,22697,21544,36466,25958,39039,22244,38045,30462,36929,25479,21702,22810,22842,22427,36530,26421,36346,33333,21057,24816,22549,34558,23784,40517,20420,39069,35769,23077,24694,21380,25212,36943,37122,39295,24681,32780,20799,32819,23572,39285,27953,20108,31261,31263,31265,31266,31268,31269,31270,31271,31272,31273,31274,31275,31276,31277,31278,31279,31280,31281,31282,31284,31285,31286,31288,31290,31294,31296,31297,31298,31299,31300,31301,31303,31304,31305,31306,31307,31308,31309,31310,31311,31312,31314,31315,31316,31317,31318,31320,31321,31322,31323,31324,31325,31326,31327,31328,31329,31330,31331,31332,31333,31334,31335,31336,31337,31338,31339,31340,31341,31342,31343,31345,31346,31347,31349,31355,31356,31357,31358,31362,31365,31367,31369,31370,31371,31372,31374,31375,31376,31379,31380,31385,31386,31387,31390,31393,31394,36144,21457,32602,31567,20240,20047,38400,27861,29648,34281,24070,30058,32763,27146,30718,38034,32321,20961,28902,21453,36820,33539,36137,29359,39277,27867,22346,33459,26041,32938,25151,38450,22952,20223,35775,32442,25918,33778,38750,21857,39134,32933,21290,35837,21536,32954,24223,27832,36153,33452,37210,21545,27675,20998,32439,22367,28954,27774,31881,22859,20221,24575,24868,31914,20016,23553,26539,34562,23792,38155,39118,30127,28925,36898,20911,32541,35773,22857,20964,20315,21542,22827,25975,32932,23413,25206,25282,36752,24133,27679,31526,20239,20440,26381,31395,31396,31399,31401,31402,31403,31406,31407,31408,31409,31410,31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31424,31425,31426,31427,31428,31429,31430,31431,31432,31433,31434,31436,31437,31438,31439,31440,31441,31442,31443,31444,31445,31447,31448,31450,31451,31452,31453,31457,31458,31460,31463,31464,31465,31466,31467,31468,31470,31472,31473,31474,31475,31476,31477,31478,31479,31480,31483,31484,31486,31488,31489,31490,31493,31495,31497,31500,31501,31502,31504,31506,31507,31510,31511,31512,31514,31516,31517,31519,31521,31522,31523,31527,31529,31533,28014,28074,31119,34993,24343,29995,25242,36741,20463,37340,26023,33071,33105,24220,33104,36212,21103,35206,36171,22797,20613,20184,38428,29238,33145,36127,23500,35747,38468,22919,32538,21648,22134,22030,35813,25913,27010,38041,30422,28297,24178,29976,26438,26577,31487,32925,36214,24863,31174,25954,36195,20872,21018,38050,32568,32923,32434,23703,28207,26464,31705,30347,39640,33167,32660,31957,25630,38224,31295,21578,21733,27468,25601,25096,40509,33011,30105,21106,38761,33883,26684,34532,38401,38548,38124,20010,21508,32473,26681,36319,32789,26356,24218,32697,31535,31536,31538,31540,31541,31542,31543,31545,31547,31549,31551,31552,31553,31554,31555,31556,31558,31560,31562,31565,31566,31571,31573,31575,31577,31580,31582,31583,31585,31587,31588,31589,31590,31591,31592,31593,31594,31595,31596,31597,31599,31600,31603,31604,31606,31608,31610,31612,31613,31615,31617,31618,31619,31620,31622,31623,31624,31625,31626,31627,31628,31630,31631,31633,31634,31635,31638,31640,31641,31642,31643,31646,31647,31648,31651,31652,31653,31662,31663,31664,31666,31667,31669,31670,31671,31673,31674,31675,31676,31677,31678,31679,31680,31682,31683,31684,22466,32831,26775,24037,25915,21151,24685,40858,20379,36524,20844,23467,24339,24041,27742,25329,36129,20849,38057,21246,27807,33503,29399,22434,26500,36141,22815,36764,33735,21653,31629,20272,27837,23396,22993,40723,21476,34506,39592,35895,32929,25925,39038,22266,38599,21038,29916,21072,23521,25346,35074,20054,25296,24618,26874,20851,23448,20896,35266,31649,39302,32592,24815,28748,36143,20809,24191,36891,29808,35268,22317,30789,24402,40863,38394,36712,39740,35809,30328,26690,26588,36330,36149,21053,36746,28378,26829,38149,37101,22269,26524,35065,36807,21704,31685,31688,31689,31690,31691,31693,31694,31695,31696,31698,31700,31701,31702,31703,31704,31707,31708,31710,31711,31712,31714,31715,31716,31719,31720,31721,31723,31724,31725,31727,31728,31730,31731,31732,31733,31734,31736,31737,31738,31739,31741,31743,31744,31745,31746,31747,31748,31749,31750,31752,31753,31754,31757,31758,31760,31761,31762,31763,31764,31765,31767,31768,31769,31770,31771,31772,31773,31774,31776,31777,31778,31779,31780,31781,31784,31785,31787,31788,31789,31790,31791,31792,31793,31794,31795,31796,31797,31798,31799,31801,31802,31803,31804,31805,31806,31810,39608,23401,28023,27686,20133,23475,39559,37219,25000,37039,38889,21547,28085,23506,20989,21898,32597,32752,25788,25421,26097,25022,24717,28938,27735,27721,22831,26477,33322,22741,22158,35946,27627,37085,22909,32791,21495,28009,21621,21917,33655,33743,26680,31166,21644,20309,21512,30418,35977,38402,27827,28088,36203,35088,40548,36154,22079,40657,30165,24456,29408,24680,21756,20136,27178,34913,24658,36720,21700,28888,34425,40511,27946,23439,24344,32418,21897,20399,29492,21564,21402,20505,21518,21628,20046,24573,29786,22774,33899,32993,34676,29392,31946,28246,31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31822,31823,31824,31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,31836,31837,31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,31849,31850,31851,31852,31853,31854,31855,31856,31857,31858,31861,31862,31863,31864,31865,31866,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,31880,31882,31883,31884,31885,31886,31887,31888,31891,31892,31894,31897,31898,31899,31904,31905,31907,31910,31911,31912,31913,31915,31916,31917,31919,31920,31924,31925,31926,31927,31928,31930,31931,24359,34382,21804,25252,20114,27818,25143,33457,21719,21326,29502,28369,30011,21010,21270,35805,27088,24458,24576,28142,22351,27426,29615,26707,36824,32531,25442,24739,21796,30186,35938,28949,28067,23462,24187,33618,24908,40644,30970,34647,31783,30343,20976,24822,29004,26179,24140,24653,35854,28784,25381,36745,24509,24674,34516,22238,27585,24724,24935,21321,24800,26214,36159,31229,20250,28905,27719,35763,35826,32472,33636,26127,23130,39746,27985,28151,35905,27963,20249,28779,33719,25110,24785,38669,36135,31096,20987,22334,22522,26426,30072,31293,31215,31637,31935,31936,31938,31939,31940,31942,31945,31947,31950,31951,31952,31953,31954,31955,31956,31960,31962,31963,31965,31966,31969,31970,31971,31972,31973,31974,31975,31977,31978,31979,31980,31981,31982,31984,31985,31986,31987,31988,31989,31990,31991,31993,31994,31996,31997,31998,31999,32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,32011,32012,32013,32014,32015,32016,32017,32018,32019,32020,32021,32022,32023,32024,32025,32026,32027,32028,32029,32030,32031,32033,32035,32036,32037,32038,32040,32041,32042,32044,32045,32046,32048,32049,32050,32051,32052,32053,32054,32908,39269,36857,28608,35749,40481,23020,32489,32521,21513,26497,26840,36753,31821,38598,21450,24613,30142,27762,21363,23241,32423,25380,20960,33034,24049,34015,25216,20864,23395,20238,31085,21058,24760,27982,23492,23490,35745,35760,26082,24524,38469,22931,32487,32426,22025,26551,22841,20339,23478,21152,33626,39050,36158,30002,38078,20551,31292,20215,26550,39550,23233,27516,30417,22362,23574,31546,38388,29006,20860,32937,33392,22904,32516,33575,26816,26604,30897,30839,25315,25441,31616,20461,21098,20943,33616,27099,37492,36341,36145,35265,38190,31661,20214,32055,32056,32057,32058,32059,32060,32061,32062,32063,32064,32065,32066,32067,32068,32069,32070,32071,32072,32073,32074,32075,32076,32077,32078,32079,32080,32081,32082,32083,32084,32085,32086,32087,32088,32089,32090,32091,32092,32093,32094,32095,32096,32097,32098,32099,32100,32101,32102,32103,32104,32105,32106,32107,32108,32109,32111,32112,32113,32114,32115,32116,32117,32118,32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131,32132,32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143,32144,32145,32146,32147,32148,32149,32150,32151,32152,20581,33328,21073,39279,28176,28293,28071,24314,20725,23004,23558,27974,27743,30086,33931,26728,22870,35762,21280,37233,38477,34121,26898,30977,28966,33014,20132,37066,27975,39556,23047,22204,25605,38128,30699,20389,33050,29409,35282,39290,32564,32478,21119,25945,37237,36735,36739,21483,31382,25581,25509,30342,31224,34903,38454,25130,21163,33410,26708,26480,25463,30571,31469,27905,32467,35299,22992,25106,34249,33445,30028,20511,20171,30117,35819,23626,24062,31563,26020,37329,20170,27941,35167,32039,38182,20165,35880,36827,38771,26187,31105,36817,28908,28024,32153,32154,32155,32156,32157,32158,32159,32160,32161,32162,32163,32164,32165,32167,32168,32169,32170,32171,32172,32173,32175,32176,32177,32178,32179,32180,32181,32182,32183,32184,32185,32186,32187,32188,32189,32190,32191,32192,32193,32194,32195,32196,32197,32198,32199,32200,32201,32202,32203,32204,32205,32206,32207,32208,32209,32210,32211,32212,32213,32214,32215,32216,32217,32218,32219,32220,32221,32222,32223,32224,32225,32226,32227,32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,32238,32239,32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,23613,21170,33606,20834,33550,30555,26230,40120,20140,24778,31934,31923,32463,20117,35686,26223,39048,38745,22659,25964,38236,24452,30153,38742,31455,31454,20928,28847,31384,25578,31350,32416,29590,38893,20037,28792,20061,37202,21417,25937,26087,33276,33285,21646,23601,30106,38816,25304,29401,30141,23621,39545,33738,23616,21632,30697,20030,27822,32858,25298,25454,24040,20855,36317,36382,38191,20465,21477,24807,28844,21095,25424,40515,23071,20518,30519,21367,32482,25733,25899,25225,25496,20500,29237,35273,20915,35776,32477,22343,33740,38055,20891,21531,23803,32251,32252,32253,32254,32255,32256,32257,32258,32259,32260,32261,32262,32263,32264,32265,32266,32267,32268,32269,32270,32271,32272,32273,32274,32275,32276,32277,32278,32279,32280,32281,32282,32283,32284,32285,32286,32287,32288,32289,32290,32291,32292,32293,32294,32295,32296,32297,32298,32299,32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,32310,32311,32312,32313,32314,32316,32317,32318,32319,32320,32322,32323,32324,32325,32326,32328,32329,32330,32331,32332,32333,32334,32335,32336,32337,32338,32339,32340,32341,32342,32343,32344,32345,32346,32347,32348,32349,20426,31459,27994,37089,39567,21888,21654,21345,21679,24320,25577,26999,20975,24936,21002,22570,21208,22350,30733,30475,24247,24951,31968,25179,25239,20130,28821,32771,25335,28900,38752,22391,33499,26607,26869,30933,39063,31185,22771,21683,21487,28212,20811,21051,23458,35838,32943,21827,22438,24691,22353,21549,31354,24656,23380,25511,25248,21475,25187,23495,26543,21741,31391,33510,37239,24211,35044,22840,22446,25358,36328,33007,22359,31607,20393,24555,23485,27454,21281,31568,29378,26694,30719,30518,26103,20917,20111,30420,23743,31397,33909,22862,39745,20608,32350,32351,32352,32353,32354,32355,32356,32357,32358,32359,32360,32361,32362,32363,32364,32365,32366,32367,32368,32369,32370,32371,32372,32373,32374,32375,32376,32377,32378,32379,32380,32381,32382,32383,32384,32385,32387,32388,32389,32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,32400,32401,32402,32403,32404,32405,32406,32407,32408,32409,32410,32412,32413,32414,32430,32436,32443,32444,32470,32484,32492,32505,32522,32528,32542,32567,32569,32571,32572,32573,32574,32575,32576,32577,32579,32582,32583,32584,32585,32586,32587,32588,32589,32590,32591,32594,32595,39304,24871,28291,22372,26118,25414,22256,25324,25193,24275,38420,22403,25289,21895,34593,33098,36771,21862,33713,26469,36182,34013,23146,26639,25318,31726,38417,20848,28572,35888,25597,35272,25042,32518,28866,28389,29701,27028,29436,24266,37070,26391,28010,25438,21171,29282,32769,20332,23013,37226,28889,28061,21202,20048,38647,38253,34174,30922,32047,20769,22418,25794,32907,31867,27882,26865,26974,20919,21400,26792,29313,40654,31729,29432,31163,28435,29702,26446,37324,40100,31036,33673,33620,21519,26647,20029,21385,21169,30782,21382,21033,20616,20363,20432,32598,32601,32603,32604,32605,32606,32608,32611,32612,32613,32614,32615,32619,32620,32621,32623,32624,32627,32629,32630,32631,32632,32634,32635,32636,32637,32639,32640,32642,32643,32644,32645,32646,32647,32648,32649,32651,32653,32655,32656,32657,32658,32659,32661,32662,32663,32664,32665,32667,32668,32672,32674,32675,32677,32678,32680,32681,32682,32683,32684,32685,32686,32689,32691,32692,32693,32694,32695,32698,32699,32702,32704,32706,32707,32708,32710,32711,32712,32713,32715,32717,32719,32720,32721,32722,32723,32726,32727,32729,32730,32731,32732,32733,32734,32738,32739,30178,31435,31890,27813,38582,21147,29827,21737,20457,32852,33714,36830,38256,24265,24604,28063,24088,25947,33080,38142,24651,28860,32451,31918,20937,26753,31921,33391,20004,36742,37327,26238,20142,35845,25769,32842,20698,30103,29134,23525,36797,28518,20102,25730,38243,24278,26009,21015,35010,28872,21155,29454,29747,26519,30967,38678,20020,37051,40158,28107,20955,36161,21533,25294,29618,33777,38646,40836,38083,20278,32666,20940,28789,38517,23725,39046,21478,20196,28316,29705,27060,30827,39311,30041,21016,30244,27969,26611,20845,40857,32843,21657,31548,31423,32740,32743,32744,32746,32747,32748,32749,32751,32754,32756,32757,32758,32759,32760,32761,32762,32765,32766,32767,32770,32775,32776,32777,32778,32782,32783,32785,32787,32794,32795,32797,32798,32799,32801,32803,32804,32811,32812,32813,32814,32815,32816,32818,32820,32825,32826,32828,32830,32832,32833,32836,32837,32839,32840,32841,32846,32847,32848,32849,32851,32853,32854,32855,32857,32859,32860,32861,32862,32863,32864,32865,32866,32867,32868,32869,32870,32871,32872,32875,32876,32877,32878,32879,32880,32882,32883,32884,32885,32886,32887,32888,32889,32890,32891,32892,32893,38534,22404,25314,38471,27004,23044,25602,31699,28431,38475,33446,21346,39045,24208,28809,25523,21348,34383,40065,40595,30860,38706,36335,36162,40575,28510,31108,24405,38470,25134,39540,21525,38109,20387,26053,23653,23649,32533,34385,27695,24459,29575,28388,32511,23782,25371,23402,28390,21365,20081,25504,30053,25249,36718,20262,20177,27814,32438,35770,33821,34746,32599,36923,38179,31657,39585,35064,33853,27931,39558,32476,22920,40635,29595,30721,34434,39532,39554,22043,21527,22475,20080,40614,21334,36808,33033,30610,39314,34542,28385,34067,26364,24930,28459,32894,32897,32898,32901,32904,32906,32909,32910,32911,32912,32913,32914,32916,32917,32919,32921,32926,32931,32934,32935,32936,32940,32944,32947,32949,32950,32952,32953,32955,32965,32967,32968,32969,32970,32971,32975,32976,32977,32978,32979,32980,32981,32984,32991,32992,32994,32995,32998,33006,33013,33015,33017,33019,33022,33023,33024,33025,33027,33028,33029,33031,33032,33035,33036,33045,33047,33049,33051,33052,33053,33055,33056,33057,33058,33059,33060,33061,33062,33063,33064,33065,33066,33067,33069,33070,33072,33075,33076,33077,33079,33081,33082,33083,33084,33085,33087,35881,33426,33579,30450,27667,24537,33725,29483,33541,38170,27611,30683,38086,21359,33538,20882,24125,35980,36152,20040,29611,26522,26757,37238,38665,29028,27809,30473,23186,38209,27599,32654,26151,23504,22969,23194,38376,38391,20204,33804,33945,27308,30431,38192,29467,26790,23391,30511,37274,38753,31964,36855,35868,24357,31859,31192,35269,27852,34588,23494,24130,26825,30496,32501,20885,20813,21193,23081,32517,38754,33495,25551,30596,34256,31186,28218,24217,22937,34065,28781,27665,25279,30399,25935,24751,38397,26126,34719,40483,38125,21517,21629,35884,25720,33088,33089,33090,33091,33092,33093,33095,33097,33101,33102,33103,33106,33110,33111,33112,33115,33116,33117,33118,33119,33121,33122,33123,33124,33126,33128,33130,33131,33132,33135,33138,33139,33141,33142,33143,33144,33153,33155,33156,33157,33158,33159,33161,33163,33164,33165,33166,33168,33170,33171,33172,33173,33174,33175,33177,33178,33182,33183,33184,33185,33186,33188,33189,33191,33193,33195,33196,33197,33198,33199,33200,33201,33202,33204,33205,33206,33207,33208,33209,33212,33213,33214,33215,33220,33221,33223,33224,33225,33227,33229,33230,33231,33232,33233,33234,33235,25721,34321,27169,33180,30952,25705,39764,25273,26411,33707,22696,40664,27819,28448,23518,38476,35851,29279,26576,25287,29281,20137,22982,27597,22675,26286,24149,21215,24917,26408,30446,30566,29287,31302,25343,21738,21584,38048,37027,23068,32435,27670,20035,22902,32784,22856,21335,30007,38590,22218,25376,33041,24700,38393,28118,21602,39297,20869,23273,33021,22958,38675,20522,27877,23612,25311,20320,21311,33147,36870,28346,34091,25288,24180,30910,25781,25467,24565,23064,37247,40479,23615,25423,32834,23421,21870,38218,38221,28037,24744,26592,29406,20957,23425,33236,33237,33238,33239,33240,33241,33242,33243,33244,33245,33246,33247,33248,33249,33250,33252,33253,33254,33256,33257,33259,33262,33263,33264,33265,33266,33269,33270,33271,33272,33273,33274,33277,33279,33283,33287,33288,33289,33290,33291,33294,33295,33297,33299,33301,33302,33303,33304,33305,33306,33309,33312,33316,33317,33318,33319,33321,33326,33330,33338,33340,33341,33343,33344,33345,33346,33347,33349,33350,33352,33354,33356,33357,33358,33360,33361,33362,33363,33364,33365,33366,33367,33369,33371,33372,33373,33374,33376,33377,33378,33379,33380,33381,33382,33383,33385,25319,27870,29275,25197,38062,32445,33043,27987,20892,24324,22900,21162,24594,22899,26262,34384,30111,25386,25062,31983,35834,21734,27431,40485,27572,34261,21589,20598,27812,21866,36276,29228,24085,24597,29750,25293,25490,29260,24472,28227,27966,25856,28504,30424,30928,30460,30036,21028,21467,20051,24222,26049,32810,32982,25243,21638,21032,28846,34957,36305,27873,21624,32986,22521,35060,36180,38506,37197,20329,27803,21943,30406,30768,25256,28921,28558,24429,34028,26842,30844,31735,33192,26379,40527,25447,30896,22383,30738,38713,25209,25259,21128,29749,27607,33386,33387,33388,33389,33393,33397,33398,33399,33400,33403,33404,33408,33409,33411,33413,33414,33415,33417,33420,33424,33427,33428,33429,33430,33434,33435,33438,33440,33442,33443,33447,33458,33461,33462,33466,33467,33468,33471,33472,33474,33475,33477,33478,33481,33488,33494,33497,33498,33501,33506,33511,33512,33513,33514,33516,33517,33518,33520,33522,33523,33525,33526,33528,33530,33532,33533,33534,33535,33536,33546,33547,33549,33552,33554,33555,33558,33560,33561,33565,33566,33567,33568,33569,33570,33571,33572,33573,33574,33577,33578,33582,33584,33586,33591,33595,33597,21860,33086,30130,30382,21305,30174,20731,23617,35692,31687,20559,29255,39575,39128,28418,29922,31080,25735,30629,25340,39057,36139,21697,32856,20050,22378,33529,33805,24179,20973,29942,35780,23631,22369,27900,39047,23110,30772,39748,36843,31893,21078,25169,38138,20166,33670,33889,33769,33970,22484,26420,22275,26222,28006,35889,26333,28689,26399,27450,26646,25114,22971,19971,20932,28422,26578,27791,20854,26827,22855,27495,30054,23822,33040,40784,26071,31048,31041,39569,36215,23682,20062,20225,21551,22865,30732,22120,27668,36804,24323,27773,27875,35755,25488,33598,33599,33601,33602,33604,33605,33608,33610,33611,33612,33613,33614,33619,33621,33622,33623,33624,33625,33629,33634,33648,33649,33650,33651,33652,33653,33654,33657,33658,33662,33663,33664,33665,33666,33667,33668,33671,33672,33674,33675,33676,33677,33679,33680,33681,33684,33685,33686,33687,33689,33690,33693,33695,33697,33698,33699,33700,33701,33702,33703,33708,33709,33710,33711,33717,33723,33726,33727,33730,33731,33732,33734,33736,33737,33739,33741,33742,33744,33745,33746,33747,33749,33751,33753,33754,33755,33758,33762,33763,33764,33766,33767,33768,33771,33772,33773,24688,27965,29301,25190,38030,38085,21315,36801,31614,20191,35878,20094,40660,38065,38067,21069,28508,36963,27973,35892,22545,23884,27424,27465,26538,21595,33108,32652,22681,34103,24378,25250,27207,38201,25970,24708,26725,30631,20052,20392,24039,38808,25772,32728,23789,20431,31373,20999,33540,19988,24623,31363,38054,20405,20146,31206,29748,21220,33465,25810,31165,23517,27777,38738,36731,27682,20542,21375,28165,25806,26228,27696,24773,39031,35831,24198,29756,31351,31179,19992,37041,29699,27714,22234,37195,27845,36235,21306,34502,26354,36527,23624,39537,28192,33774,33775,33779,33780,33781,33782,33783,33786,33787,33788,33790,33791,33792,33794,33797,33799,33800,33801,33802,33808,33810,33811,33812,33813,33814,33815,33817,33818,33819,33822,33823,33824,33825,33826,33827,33833,33834,33835,33836,33837,33838,33839,33840,33842,33843,33844,33845,33846,33847,33849,33850,33851,33854,33855,33856,33857,33858,33859,33860,33861,33863,33864,33865,33866,33867,33868,33869,33870,33871,33872,33874,33875,33876,33877,33878,33880,33885,33886,33887,33888,33890,33892,33893,33894,33895,33896,33898,33902,33903,33904,33906,33908,33911,33913,33915,33916,21462,23094,40843,36259,21435,22280,39079,26435,37275,27849,20840,30154,25331,29356,21048,21149,32570,28820,30264,21364,40522,27063,30830,38592,35033,32676,28982,29123,20873,26579,29924,22756,25880,22199,35753,39286,25200,32469,24825,28909,22764,20161,20154,24525,38887,20219,35748,20995,22922,32427,25172,20173,26085,25102,33592,33993,33635,34701,29076,28342,23481,32466,20887,25545,26580,32905,33593,34837,20754,23418,22914,36785,20083,27741,20837,35109,36719,38446,34122,29790,38160,38384,28070,33509,24369,25746,27922,33832,33134,40131,22622,36187,19977,21441,33917,33918,33919,33920,33921,33923,33924,33925,33926,33930,33933,33935,33936,33937,33938,33939,33940,33941,33942,33944,33946,33947,33949,33950,33951,33952,33954,33955,33956,33957,33958,33959,33960,33961,33962,33963,33964,33965,33966,33968,33969,33971,33973,33974,33975,33979,33980,33982,33984,33986,33987,33989,33990,33991,33992,33995,33996,33998,33999,34002,34004,34005,34007,34008,34009,34010,34011,34012,34014,34017,34018,34020,34023,34024,34025,34026,34027,34029,34030,34031,34033,34034,34035,34036,34037,34038,34039,34040,34041,34042,34043,34045,34046,34048,34049,34050,20254,25955,26705,21971,20007,25620,39578,25195,23234,29791,33394,28073,26862,20711,33678,30722,26432,21049,27801,32433,20667,21861,29022,31579,26194,29642,33515,26441,23665,21024,29053,34923,38378,38485,25797,36193,33203,21892,27733,25159,32558,22674,20260,21830,36175,26188,19978,23578,35059,26786,25422,31245,28903,33421,21242,38902,23569,21736,37045,32461,22882,36170,34503,33292,33293,36198,25668,23556,24913,28041,31038,35774,30775,30003,21627,20280,36523,28145,23072,32453,31070,27784,23457,23158,29978,32958,24910,28183,22768,29983,29989,29298,21319,32499,34051,34052,34053,34054,34055,34056,34057,34058,34059,34061,34062,34063,34064,34066,34068,34069,34070,34072,34073,34075,34076,34077,34078,34080,34082,34083,34084,34085,34086,34087,34088,34089,34090,34093,34094,34095,34096,34097,34098,34099,34100,34101,34102,34110,34111,34112,34113,34114,34116,34117,34118,34119,34123,34124,34125,34126,34127,34128,34129,34130,34131,34132,34133,34135,34136,34138,34139,34140,34141,34143,34144,34145,34146,34147,34149,34150,34151,34153,34154,34155,34156,34157,34158,34159,34160,34161,34163,34165,34166,34167,34168,34172,34173,34175,34176,34177,30465,30427,21097,32988,22307,24072,22833,29422,26045,28287,35799,23608,34417,21313,30707,25342,26102,20160,39135,34432,23454,35782,21490,30690,20351,23630,39542,22987,24335,31034,22763,19990,26623,20107,25325,35475,36893,21183,26159,21980,22124,36866,20181,20365,37322,39280,27663,24066,24643,23460,35270,35797,25910,25163,39318,23432,23551,25480,21806,21463,30246,20861,34092,26530,26803,27530,25234,36755,21460,33298,28113,30095,20070,36174,23408,29087,34223,26257,26329,32626,34560,40653,40736,23646,26415,36848,26641,26463,25101,31446,22661,24246,25968,28465,34178,34179,34182,34184,34185,34186,34187,34188,34189,34190,34192,34193,34194,34195,34196,34197,34198,34199,34200,34201,34202,34205,34206,34207,34208,34209,34210,34211,34213,34214,34215,34217,34219,34220,34221,34225,34226,34227,34228,34229,34230,34232,34234,34235,34236,34237,34238,34239,34240,34242,34243,34244,34245,34246,34247,34248,34250,34251,34252,34253,34254,34257,34258,34260,34262,34263,34264,34265,34266,34267,34269,34270,34271,34272,34273,34274,34275,34277,34278,34279,34280,34282,34283,34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,24661,21047,32781,25684,34928,29993,24069,26643,25332,38684,21452,29245,35841,27700,30561,31246,21550,30636,39034,33308,35828,30805,26388,28865,26031,25749,22070,24605,31169,21496,19997,27515,32902,23546,21987,22235,20282,20284,39282,24051,26494,32824,24578,39042,36865,23435,35772,35829,25628,33368,25822,22013,33487,37221,20439,32032,36895,31903,20723,22609,28335,23487,35785,32899,37240,33948,31639,34429,38539,38543,32485,39635,30862,23681,31319,36930,38567,31071,23385,25439,31499,34001,26797,21766,32553,29712,32034,38145,25152,22604,20182,23427,22905,22612,34297,34298,34300,34301,34302,34304,34305,34306,34307,34308,34310,34311,34312,34313,34314,34315,34316,34317,34318,34319,34320,34322,34323,34324,34325,34327,34328,34329,34330,34331,34332,34333,34334,34335,34336,34337,34338,34339,34340,34341,34342,34344,34346,34347,34348,34349,34350,34351,34352,34353,34354,34355,34356,34357,34358,34359,34361,34362,34363,34365,34366,34367,34368,34369,34370,34371,34372,34373,34374,34375,34376,34377,34378,34379,34380,34386,34387,34389,34390,34391,34392,34393,34395,34396,34397,34399,34400,34401,34403,34404,34405,34406,34407,34408,34409,34410,29549,25374,36427,36367,32974,33492,25260,21488,27888,37214,22826,24577,27760,22349,25674,36138,30251,28393,22363,27264,30192,28525,35885,35848,22374,27631,34962,30899,25506,21497,28845,27748,22616,25642,22530,26848,33179,21776,31958,20504,36538,28108,36255,28907,25487,28059,28372,32486,33796,26691,36867,28120,38518,35752,22871,29305,34276,33150,30140,35466,26799,21076,36386,38161,25552,39064,36420,21884,20307,26367,22159,24789,28053,21059,23625,22825,28155,22635,30000,29980,24684,33300,33094,25361,26465,36834,30522,36339,36148,38081,24086,21381,21548,28867,34413,34415,34416,34418,34419,34420,34421,34422,34423,34424,34435,34436,34437,34438,34439,34440,34441,34446,34447,34448,34449,34450,34452,34454,34455,34456,34457,34458,34459,34462,34463,34464,34465,34466,34469,34470,34475,34477,34478,34482,34483,34487,34488,34489,34491,34492,34493,34494,34495,34497,34498,34499,34501,34504,34508,34509,34514,34515,34517,34518,34519,34522,34524,34525,34528,34529,34530,34531,34533,34534,34535,34536,34538,34539,34540,34543,34549,34550,34551,34554,34555,34556,34557,34559,34561,34564,34565,34566,34571,34572,34574,34575,34576,34577,34580,34582,27712,24311,20572,20141,24237,25402,33351,36890,26704,37230,30643,21516,38108,24420,31461,26742,25413,31570,32479,30171,20599,25237,22836,36879,20984,31171,31361,22270,24466,36884,28034,23648,22303,21520,20820,28237,22242,25512,39059,33151,34581,35114,36864,21534,23663,33216,25302,25176,33073,40501,38464,39534,39548,26925,22949,25299,21822,25366,21703,34521,27964,23043,29926,34972,27498,22806,35916,24367,28286,29609,39037,20024,28919,23436,30871,25405,26202,30358,24779,23451,23113,19975,33109,27754,29579,20129,26505,32593,24448,26106,26395,24536,22916,23041,34585,34587,34589,34591,34592,34596,34598,34599,34600,34602,34603,34604,34605,34607,34608,34610,34611,34613,34614,34616,34617,34618,34620,34621,34624,34625,34626,34627,34628,34629,34630,34634,34635,34637,34639,34640,34641,34642,34644,34645,34646,34648,34650,34651,34652,34653,34654,34655,34657,34658,34662,34663,34664,34665,34666,34667,34668,34669,34671,34673,34674,34675,34677,34679,34680,34681,34682,34687,34688,34689,34692,34694,34695,34697,34698,34700,34702,34703,34704,34705,34706,34708,34709,34710,34712,34713,34714,34715,34716,34717,34718,34720,34721,34722,34723,34724,24013,24494,21361,38886,36829,26693,22260,21807,24799,20026,28493,32500,33479,33806,22996,20255,20266,23614,32428,26410,34074,21619,30031,32963,21890,39759,20301,28205,35859,23561,24944,21355,30239,28201,34442,25991,38395,32441,21563,31283,32010,38382,21985,32705,29934,25373,34583,28065,31389,25105,26017,21351,25569,27779,24043,21596,38056,20044,27745,35820,23627,26080,33436,26791,21566,21556,27595,27494,20116,25410,21320,33310,20237,20398,22366,25098,38654,26212,29289,21247,21153,24735,35823,26132,29081,26512,35199,30802,30717,26224,22075,21560,38177,29306,34725,34726,34727,34729,34730,34734,34736,34737,34738,34740,34742,34743,34744,34745,34747,34748,34750,34751,34753,34754,34755,34756,34757,34759,34760,34761,34764,34765,34766,34767,34768,34772,34773,34774,34775,34776,34777,34778,34780,34781,34782,34783,34785,34786,34787,34788,34790,34791,34792,34793,34795,34796,34797,34799,34800,34801,34802,34803,34804,34805,34806,34807,34808,34810,34811,34812,34813,34815,34816,34817,34818,34820,34821,34822,34823,34824,34825,34827,34828,34829,34830,34831,34832,34833,34834,34836,34839,34840,34841,34842,34844,34845,34846,34847,34848,34851,31232,24687,24076,24713,33181,22805,24796,29060,28911,28330,27728,29312,27268,34989,24109,20064,23219,21916,38115,27927,31995,38553,25103,32454,30606,34430,21283,38686,36758,26247,23777,20384,29421,19979,21414,22799,21523,25472,38184,20808,20185,40092,32420,21688,36132,34900,33335,38386,28046,24358,23244,26174,38505,29616,29486,21439,33146,39301,32673,23466,38519,38480,32447,30456,21410,38262,39321,31665,35140,28248,20065,32724,31077,35814,24819,21709,20139,39033,24055,27233,20687,21521,35937,33831,30813,38660,21066,21742,22179,38144,28040,23477,28102,26195,34852,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34867,34868,34869,34870,34871,34872,34874,34875,34877,34878,34879,34881,34882,34883,34886,34887,34888,34889,34890,34891,34894,34895,34896,34897,34898,34899,34901,34902,34904,34906,34907,34908,34909,34910,34911,34912,34918,34919,34922,34925,34927,34929,34931,34932,34933,34934,34936,34937,34938,34939,34940,34944,34947,34950,34951,34953,34954,34956,34958,34959,34960,34961,34963,34964,34965,34967,34968,34969,34970,34971,34973,34974,34975,34976,34977,34979,34981,34982,34983,34984,34985,34986,23567,23389,26657,32918,21880,31505,25928,26964,20123,27463,34638,38795,21327,25375,25658,37034,26012,32961,35856,20889,26800,21368,34809,25032,27844,27899,35874,23633,34218,33455,38156,27427,36763,26032,24571,24515,20449,34885,26143,33125,29481,24826,20852,21009,22411,24418,37026,34892,37266,24184,26447,24615,22995,20804,20982,33016,21256,27769,38596,29066,20241,20462,32670,26429,21957,38152,31168,34966,32483,22687,25100,38656,34394,22040,39035,24464,35768,33988,37207,21465,26093,24207,30044,24676,32110,23167,32490,32493,36713,21927,23459,24748,26059,29572,34988,34990,34991,34992,34994,34995,34996,34997,34998,35000,35001,35002,35003,35005,35006,35007,35008,35011,35012,35015,35016,35018,35019,35020,35021,35023,35024,35025,35027,35030,35031,35034,35035,35036,35037,35038,35040,35041,35046,35047,35049,35050,35051,35052,35053,35054,35055,35058,35061,35062,35063,35066,35067,35069,35071,35072,35073,35075,35076,35077,35078,35079,35080,35081,35083,35084,35085,35086,35087,35089,35092,35093,35094,35095,35096,35100,35101,35102,35103,35104,35106,35107,35108,35110,35111,35112,35113,35116,35117,35118,35119,35121,35122,35123,35125,35127,36873,30307,30505,32474,38772,34203,23398,31348,38634,34880,21195,29071,24490,26092,35810,23547,39535,24033,27529,27739,35757,35759,36874,36805,21387,25276,40486,40493,21568,20011,33469,29273,34460,23830,34905,28079,38597,21713,20122,35766,28937,21693,38409,28895,28153,30416,20005,30740,34578,23721,24310,35328,39068,38414,28814,27839,22852,25513,30524,34893,28436,33395,22576,29141,21388,30746,38593,21761,24422,28976,23476,35866,39564,27523,22830,40495,31207,26472,25196,20335,30113,32650,27915,38451,27687,20208,30162,20859,26679,28478,36992,33136,22934,29814,35128,35129,35130,35131,35132,35133,35134,35135,35136,35138,35139,35141,35142,35143,35144,35145,35146,35147,35148,35149,35150,35151,35152,35153,35154,35155,35156,35157,35158,35159,35160,35161,35162,35163,35164,35165,35168,35169,35170,35171,35172,35173,35175,35176,35177,35178,35179,35180,35181,35182,35183,35184,35185,35186,35187,35188,35189,35190,35191,35192,35193,35194,35196,35197,35198,35200,35202,35204,35205,35207,35208,35209,35210,35211,35212,35213,35214,35215,35216,35217,35218,35219,35220,35221,35222,35223,35224,35225,35226,35227,35228,35229,35230,35231,35232,35233,25671,23591,36965,31377,35875,23002,21676,33280,33647,35201,32768,26928,22094,32822,29239,37326,20918,20063,39029,25494,19994,21494,26355,33099,22812,28082,19968,22777,21307,25558,38129,20381,20234,34915,39056,22839,36951,31227,20202,33008,30097,27778,23452,23016,24413,26885,34433,20506,24050,20057,30691,20197,33402,25233,26131,37009,23673,20159,24441,33222,36920,32900,30123,20134,35028,24847,27589,24518,20041,30410,28322,35811,35758,35850,35793,24322,32764,32716,32462,33589,33643,22240,27575,38899,38452,23035,21535,38134,28139,23493,39278,23609,24341,38544,35234,35235,35236,35237,35238,35239,35240,35241,35242,35243,35244,35245,35246,35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,35257,35258,35259,35260,35261,35262,35263,35264,35267,35277,35283,35284,35285,35287,35288,35289,35291,35293,35295,35296,35297,35298,35300,35303,35304,35305,35306,35308,35309,35310,35312,35313,35314,35316,35317,35318,35319,35320,35321,35322,35323,35324,35325,35326,35327,35329,35330,35331,35332,35333,35334,35336,35337,35338,35339,35340,35341,35342,35343,35344,35345,35346,35347,35348,35349,35350,35351,35352,35353,35354,35355,35356,35357,21360,33521,27185,23156,40560,24212,32552,33721,33828,33829,33639,34631,36814,36194,30408,24433,39062,30828,26144,21727,25317,20323,33219,30152,24248,38605,36362,34553,21647,27891,28044,27704,24703,21191,29992,24189,20248,24736,24551,23588,30001,37038,38080,29369,27833,28216,37193,26377,21451,21491,20305,37321,35825,21448,24188,36802,28132,20110,30402,27014,34398,24858,33286,20313,20446,36926,40060,24841,28189,28180,38533,20104,23089,38632,19982,23679,31161,23431,35821,32701,29577,22495,33419,37057,21505,36935,21947,23786,24481,24840,27442,29425,32946,35465,35358,35359,35360,35361,35362,35363,35364,35365,35366,35367,35368,35369,35370,35371,35372,35373,35374,35375,35376,35377,35378,35379,35380,35381,35382,35383,35384,35385,35386,35387,35388,35389,35391,35392,35393,35394,35395,35396,35397,35398,35399,35401,35402,35403,35404,35405,35406,35407,35408,35409,35410,35411,35412,35413,35414,35415,35416,35417,35418,35419,35420,35421,35422,35423,35424,35425,35426,35427,35428,35429,35430,35431,35432,35433,35434,35435,35436,35437,35438,35439,35440,35441,35442,35443,35444,35445,35446,35447,35448,35450,35451,35452,35453,35454,35455,35456,28020,23507,35029,39044,35947,39533,40499,28170,20900,20803,22435,34945,21407,25588,36757,22253,21592,22278,29503,28304,32536,36828,33489,24895,24616,38498,26352,32422,36234,36291,38053,23731,31908,26376,24742,38405,32792,20113,37095,21248,38504,20801,36816,34164,37213,26197,38901,23381,21277,30776,26434,26685,21705,28798,23472,36733,20877,22312,21681,25874,26242,36190,36163,33039,33900,36973,31967,20991,34299,26531,26089,28577,34468,36481,22122,36896,30338,28790,29157,36131,25321,21017,27901,36156,24590,22686,24974,26366,36192,25166,21939,28195,26413,36711,35457,35458,35459,35460,35461,35462,35463,35464,35467,35468,35469,35470,35471,35472,35473,35474,35476,35477,35478,35479,35480,35481,35482,35483,35484,35485,35486,35487,35488,35489,35490,35491,35492,35493,35494,35495,35496,35497,35498,35499,35500,35501,35502,35503,35504,35505,35506,35507,35508,35509,35510,35511,35512,35513,35514,35515,35516,35517,35518,35519,35520,35521,35522,35523,35524,35525,35526,35527,35528,35529,35530,35531,35532,35533,35534,35535,35536,35537,35538,35539,35540,35541,35542,35543,35544,35545,35546,35547,35548,35549,35550,35551,35552,35553,35554,35555,38113,38392,30504,26629,27048,21643,20045,28856,35784,25688,25995,23429,31364,20538,23528,30651,27617,35449,31896,27838,30415,26025,36759,23853,23637,34360,26632,21344,25112,31449,28251,32509,27167,31456,24432,28467,24352,25484,28072,26454,19976,24080,36134,20183,32960,30260,38556,25307,26157,25214,27836,36213,29031,32617,20806,32903,21484,36974,25240,21746,34544,36761,32773,38167,34071,36825,27993,29645,26015,30495,29956,30759,33275,36126,38024,20390,26517,30137,35786,38663,25391,38215,38453,33976,25379,30529,24449,29424,20105,24596,25972,25327,27491,25919,35556,35557,35558,35559,35560,35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584,35585,35586,35587,35588,35589,35590,35592,35593,35594,35595,35596,35597,35598,35599,35600,35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611,35612,35613,35614,35615,35616,35617,35618,35619,35620,35621,35623,35624,35625,35626,35627,35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638,35639,35640,35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651,35652,35653,24103,30151,37073,35777,33437,26525,25903,21553,34584,30693,32930,33026,27713,20043,32455,32844,30452,26893,27542,25191,20540,20356,22336,25351,27490,36286,21482,26088,32440,24535,25370,25527,33267,33268,32622,24092,23769,21046,26234,31209,31258,36136,28825,30164,28382,27835,31378,20013,30405,24544,38047,34935,32456,31181,32959,37325,20210,20247,33311,21608,24030,27954,35788,31909,36724,32920,24090,21650,30385,23449,26172,39588,29664,26666,34523,26417,29482,35832,35803,36880,31481,28891,29038,25284,30633,22065,20027,33879,26609,21161,34496,36142,38136,31569,35654,35655,35656,35657,35658,35659,35660,35661,35662,35663,35664,35665,35666,35667,35668,35669,35670,35671,35672,35673,35674,35675,35676,35677,35678,35679,35680,35681,35682,35683,35684,35685,35687,35688,35689,35690,35691,35693,35694,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,35705,35706,35707,35708,35709,35710,35711,35712,35713,35714,35715,35716,35717,35718,35719,35720,35721,35722,35723,35724,35725,35726,35727,35728,35729,35730,35731,35732,35733,35734,35735,35736,35737,35738,35739,35740,35741,35742,35743,35756,35761,35771,35783,35792,35818,35849,35870,20303,27880,31069,39547,25235,29226,25341,19987,30742,36716,25776,36186,31686,26729,24196,35013,22918,25758,22766,29366,26894,38181,36861,36184,22368,32512,35846,20934,25417,25305,21331,26700,29730,33537,37196,21828,30528,28796,27978,20857,21672,36164,23039,28363,28100,23388,32043,20180,31869,28371,23376,33258,28173,23383,39683,26837,36394,23447,32508,24635,32437,37049,36208,22863,25549,31199,36275,21330,26063,31062,35781,38459,32452,38075,32386,22068,37257,26368,32618,23562,36981,26152,24038,20304,26590,20570,20316,22352,24231,59408,59409,59410,59411,59412,35896,35897,35898,35899,35900,35901,35902,35903,35904,35906,35907,35908,35909,35912,35914,35915,35917,35918,35919,35920,35921,35922,35923,35924,35926,35927,35928,35929,35931,35932,35933,35934,35935,35936,35939,35940,35941,35942,35943,35944,35945,35948,35949,35950,35951,35952,35953,35954,35956,35957,35958,35959,35963,35964,35965,35966,35967,35968,35969,35971,35972,35974,35975,35976,35979,35981,35982,35983,35984,35985,35986,35987,35989,35990,35991,35993,35994,35995,35996,35997,35998,35999,36000,36001,36002,36003,36004,36005,36006,36007,36008,36009,36010,36011,36012,36013,20109,19980,20800,19984,24319,21317,19989,20120,19998,39730,23404,22121,20008,31162,20031,21269,20039,22829,29243,21358,27664,22239,32996,39319,27603,30590,40727,20022,20127,40720,20060,20073,20115,33416,23387,21868,22031,20164,21389,21405,21411,21413,21422,38757,36189,21274,21493,21286,21294,21310,36188,21350,21347,20994,21000,21006,21037,21043,21055,21056,21068,21086,21089,21084,33967,21117,21122,21121,21136,21139,20866,32596,20155,20163,20169,20162,20200,20193,20203,20190,20251,20211,20258,20324,20213,20261,20263,20233,20267,20318,20327,25912,20314,20317,36014,36015,36016,36017,36018,36019,36020,36021,36022,36023,36024,36025,36026,36027,36028,36029,36030,36031,36032,36033,36034,36035,36036,36037,36038,36039,36040,36041,36042,36043,36044,36045,36046,36047,36048,36049,36050,36051,36052,36053,36054,36055,36056,36057,36058,36059,36060,36061,36062,36063,36064,36065,36066,36067,36068,36069,36070,36071,36072,36073,36074,36075,36076,36077,36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088,36089,36090,36091,36092,36093,36094,36095,36096,36097,36098,36099,36100,36101,36102,36103,36104,36105,36106,36107,36108,36109,20319,20311,20274,20285,20342,20340,20369,20361,20355,20367,20350,20347,20394,20348,20396,20372,20454,20456,20458,20421,20442,20451,20444,20433,20447,20472,20521,20556,20467,20524,20495,20526,20525,20478,20508,20492,20517,20520,20606,20547,20565,20552,20558,20588,20603,20645,20647,20649,20666,20694,20742,20717,20716,20710,20718,20743,20747,20189,27709,20312,20325,20430,40864,27718,31860,20846,24061,40649,39320,20865,22804,21241,21261,35335,21264,20971,22809,20821,20128,20822,20147,34926,34980,20149,33044,35026,31104,23348,34819,32696,20907,20913,20925,20924,36110,36111,36112,36113,36114,36115,36116,36117,36118,36119,36120,36121,36122,36123,36124,36128,36177,36178,36183,36191,36197,36200,36201,36202,36204,36206,36207,36209,36210,36216,36217,36218,36219,36220,36221,36222,36223,36224,36226,36227,36230,36231,36232,36233,36236,36237,36238,36239,36240,36242,36243,36245,36246,36247,36248,36249,36250,36251,36252,36253,36254,36256,36257,36258,36260,36261,36262,36263,36264,36265,36266,36267,36268,36269,36270,36271,36272,36274,36278,36279,36281,36283,36285,36288,36289,36290,36293,36295,36296,36297,36298,36301,36304,36306,36307,36308,20935,20886,20898,20901,35744,35750,35751,35754,35764,35765,35767,35778,35779,35787,35791,35790,35794,35795,35796,35798,35800,35801,35804,35807,35808,35812,35816,35817,35822,35824,35827,35830,35833,35836,35839,35840,35842,35844,35847,35852,35855,35857,35858,35860,35861,35862,35865,35867,35864,35869,35871,35872,35873,35877,35879,35882,35883,35886,35887,35890,35891,35893,35894,21353,21370,38429,38434,38433,38449,38442,38461,38460,38466,38473,38484,38495,38503,38508,38514,38516,38536,38541,38551,38576,37015,37019,37021,37017,37036,37025,37044,37043,37046,37050,36309,36312,36313,36316,36320,36321,36322,36325,36326,36327,36329,36333,36334,36336,36337,36338,36340,36342,36348,36350,36351,36352,36353,36354,36355,36356,36358,36359,36360,36363,36365,36366,36368,36369,36370,36371,36373,36374,36375,36376,36377,36378,36379,36380,36384,36385,36388,36389,36390,36391,36392,36395,36397,36400,36402,36403,36404,36406,36407,36408,36411,36412,36414,36415,36419,36421,36422,36428,36429,36430,36431,36432,36435,36436,36437,36438,36439,36440,36442,36443,36444,36445,36446,36447,36448,36449,36450,36451,36452,36453,36455,36456,36458,36459,36462,36465,37048,37040,37071,37061,37054,37072,37060,37063,37075,37094,37090,37084,37079,37083,37099,37103,37118,37124,37154,37150,37155,37169,37167,37177,37187,37190,21005,22850,21154,21164,21165,21182,21759,21200,21206,21232,21471,29166,30669,24308,20981,20988,39727,21430,24321,30042,24047,22348,22441,22433,22654,22716,22725,22737,22313,22316,22314,22323,22329,22318,22319,22364,22331,22338,22377,22405,22379,22406,22396,22395,22376,22381,22390,22387,22445,22436,22412,22450,22479,22439,22452,22419,22432,22485,22488,22490,22489,22482,22456,22516,22511,22520,22500,22493,36467,36469,36471,36472,36473,36474,36475,36477,36478,36480,36482,36483,36484,36486,36488,36489,36490,36491,36492,36493,36494,36497,36498,36499,36501,36502,36503,36504,36505,36506,36507,36509,36511,36512,36513,36514,36515,36516,36517,36518,36519,36520,36521,36522,36525,36526,36528,36529,36531,36532,36533,36534,36535,36536,36537,36539,36540,36541,36542,36543,36544,36545,36546,36547,36548,36549,36550,36551,36552,36553,36554,36555,36556,36557,36559,36560,36561,36562,36563,36564,36565,36566,36567,36568,36569,36570,36571,36572,36573,36574,36575,36576,36577,36578,36579,36580,22539,22541,22525,22509,22528,22558,22553,22596,22560,22629,22636,22657,22665,22682,22656,39336,40729,25087,33401,33405,33407,33423,33418,33448,33412,33422,33425,33431,33433,33451,33464,33470,33456,33480,33482,33507,33432,33463,33454,33483,33484,33473,33449,33460,33441,33450,33439,33476,33486,33444,33505,33545,33527,33508,33551,33543,33500,33524,33490,33496,33548,33531,33491,33553,33562,33542,33556,33557,33504,33493,33564,33617,33627,33628,33544,33682,33596,33588,33585,33691,33630,33583,33615,33607,33603,33631,33600,33559,33632,33581,33594,33587,33638,33637,36581,36582,36583,36584,36585,36586,36587,36588,36589,36590,36591,36592,36593,36594,36595,36596,36597,36598,36599,36600,36601,36602,36603,36604,36605,36606,36607,36608,36609,36610,36611,36612,36613,36614,36615,36616,36617,36618,36619,36620,36621,36622,36623,36624,36625,36626,36627,36628,36629,36630,36631,36632,36633,36634,36635,36636,36637,36638,36639,36640,36641,36642,36643,36644,36645,36646,36647,36648,36649,36650,36651,36652,36653,36654,36655,36656,36657,36658,36659,36660,36661,36662,36663,36664,36665,36666,36667,36668,36669,36670,36671,36672,36673,36674,36675,36676,33640,33563,33641,33644,33642,33645,33646,33712,33656,33715,33716,33696,33706,33683,33692,33669,33660,33718,33705,33661,33720,33659,33688,33694,33704,33722,33724,33729,33793,33765,33752,22535,33816,33803,33757,33789,33750,33820,33848,33809,33798,33748,33759,33807,33795,33784,33785,33770,33733,33728,33830,33776,33761,33884,33873,33882,33881,33907,33927,33928,33914,33929,33912,33852,33862,33897,33910,33932,33934,33841,33901,33985,33997,34000,34022,33981,34003,33994,33983,33978,34016,33953,33977,33972,33943,34021,34019,34060,29965,34104,34032,34105,34079,34106,36677,36678,36679,36680,36681,36682,36683,36684,36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,36696,36697,36698,36699,36700,36701,36702,36703,36704,36705,36706,36707,36708,36709,36714,36736,36748,36754,36765,36768,36769,36770,36772,36773,36774,36775,36778,36780,36781,36782,36783,36786,36787,36788,36789,36791,36792,36794,36795,36796,36799,36800,36803,36806,36809,36810,36811,36812,36813,36815,36818,36822,36823,36826,36832,36833,36835,36839,36844,36847,36849,36850,36852,36853,36854,36858,36859,36860,36862,36863,36871,36872,36876,36878,36883,36885,36888,34134,34107,34047,34044,34137,34120,34152,34148,34142,34170,30626,34115,34162,34171,34212,34216,34183,34191,34169,34222,34204,34181,34233,34231,34224,34259,34241,34268,34303,34343,34309,34345,34326,34364,24318,24328,22844,22849,32823,22869,22874,22872,21263,23586,23589,23596,23604,25164,25194,25247,25275,25290,25306,25303,25326,25378,25334,25401,25419,25411,25517,25590,25457,25466,25486,25524,25453,25516,25482,25449,25518,25532,25586,25592,25568,25599,25540,25566,25550,25682,25542,25534,25669,25665,25611,25627,25632,25612,25638,25633,25694,25732,25709,25750,36889,36892,36899,36900,36901,36903,36904,36905,36906,36907,36908,36912,36913,36914,36915,36916,36919,36921,36922,36925,36927,36928,36931,36933,36934,36936,36937,36938,36939,36940,36942,36948,36949,36950,36953,36954,36956,36957,36958,36959,36960,36961,36964,36966,36967,36969,36970,36971,36972,36975,36976,36977,36978,36979,36982,36983,36984,36985,36986,36987,36988,36990,36993,36996,36997,36998,36999,37001,37002,37004,37005,37006,37007,37008,37010,37012,37014,37016,37018,37020,37022,37023,37024,37028,37029,37031,37032,37033,37035,37037,37042,37047,37052,37053,37055,37056,25722,25783,25784,25753,25786,25792,25808,25815,25828,25826,25865,25893,25902,24331,24530,29977,24337,21343,21489,21501,21481,21480,21499,21522,21526,21510,21579,21586,21587,21588,21590,21571,21537,21591,21593,21539,21554,21634,21652,21623,21617,21604,21658,21659,21636,21622,21606,21661,21712,21677,21698,21684,21714,21671,21670,21715,21716,21618,21667,21717,21691,21695,21708,21721,21722,21724,21673,21674,21668,21725,21711,21726,21787,21735,21792,21757,21780,21747,21794,21795,21775,21777,21799,21802,21863,21903,21941,21833,21869,21825,21845,21823,21840,21820,37058,37059,37062,37064,37065,37067,37068,37069,37074,37076,37077,37078,37080,37081,37082,37086,37087,37088,37091,37092,37093,37097,37098,37100,37102,37104,37105,37106,37107,37109,37110,37111,37113,37114,37115,37116,37119,37120,37121,37123,37125,37126,37127,37128,37129,37130,37131,37132,37133,37134,37135,37136,37137,37138,37139,37140,37141,37142,37143,37144,37146,37147,37148,37149,37151,37152,37153,37156,37157,37158,37159,37160,37161,37162,37163,37164,37165,37166,37168,37170,37171,37172,37173,37174,37175,37176,37178,37179,37180,37181,37182,37183,37184,37185,37186,37188,21815,21846,21877,21878,21879,21811,21808,21852,21899,21970,21891,21937,21945,21896,21889,21919,21886,21974,21905,21883,21983,21949,21950,21908,21913,21994,22007,21961,22047,21969,21995,21996,21972,21990,21981,21956,21999,21989,22002,22003,21964,21965,21992,22005,21988,36756,22046,22024,22028,22017,22052,22051,22014,22016,22055,22061,22104,22073,22103,22060,22093,22114,22105,22108,22092,22100,22150,22116,22129,22123,22139,22140,22149,22163,22191,22228,22231,22237,22241,22261,22251,22265,22271,22276,22282,22281,22300,24079,24089,24084,24081,24113,24123,24124,37189,37191,37192,37201,37203,37204,37205,37206,37208,37209,37211,37212,37215,37216,37222,37223,37224,37227,37229,37235,37242,37243,37244,37248,37249,37250,37251,37252,37254,37256,37258,37262,37263,37267,37268,37269,37270,37271,37272,37273,37276,37277,37278,37279,37280,37281,37284,37285,37286,37287,37288,37289,37291,37292,37296,37297,37298,37299,37302,37303,37304,37305,37307,37308,37309,37310,37311,37312,37313,37314,37315,37316,37317,37318,37320,37323,37328,37330,37331,37332,37333,37334,37335,37336,37337,37338,37339,37341,37342,37343,37344,37345,37346,37347,37348,37349,24119,24132,24148,24155,24158,24161,23692,23674,23693,23696,23702,23688,23704,23705,23697,23706,23708,23733,23714,23741,23724,23723,23729,23715,23745,23735,23748,23762,23780,23755,23781,23810,23811,23847,23846,23854,23844,23838,23814,23835,23896,23870,23860,23869,23916,23899,23919,23901,23915,23883,23882,23913,23924,23938,23961,23965,35955,23991,24005,24435,24439,24450,24455,24457,24460,24469,24473,24476,24488,24493,24501,24508,34914,24417,29357,29360,29364,29367,29368,29379,29377,29390,29389,29394,29416,29423,29417,29426,29428,29431,29441,29427,29443,29434,37350,37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,37361,37362,37363,37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,37374,37375,37376,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37387,37388,37389,37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,37400,37401,37402,37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,37413,37414,37415,37416,37417,37418,37419,37420,37421,37422,37423,37424,37425,37426,37427,37428,37429,37430,37431,37432,37433,37434,37435,37436,37437,37438,37439,37440,37441,37442,37443,37444,37445,29435,29463,29459,29473,29450,29470,29469,29461,29474,29497,29477,29484,29496,29489,29520,29517,29527,29536,29548,29551,29566,33307,22821,39143,22820,22786,39267,39271,39272,39273,39274,39275,39276,39284,39287,39293,39296,39300,39303,39306,39309,39312,39313,39315,39316,39317,24192,24209,24203,24214,24229,24224,24249,24245,24254,24243,36179,24274,24273,24283,24296,24298,33210,24516,24521,24534,24527,24579,24558,24580,24545,24548,24574,24581,24582,24554,24557,24568,24601,24629,24614,24603,24591,24589,24617,24619,24586,24639,24609,24696,24697,24699,24698,24642,37446,37447,37448,37449,37450,37451,37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,37464,37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,37477,37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,37490,37491,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,37504,37505,37506,37507,37508,37509,37510,37511,37512,37513,37514,37515,37516,37517,37519,37520,37521,37522,37523,37524,37525,37526,37527,37528,37529,37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,24682,24701,24726,24730,24749,24733,24707,24722,24716,24731,24812,24763,24753,24797,24792,24774,24794,24756,24864,24870,24853,24867,24820,24832,24846,24875,24906,24949,25004,24980,24999,25015,25044,25077,24541,38579,38377,38379,38385,38387,38389,38390,38396,38398,38403,38404,38406,38408,38410,38411,38412,38413,38415,38418,38421,38422,38423,38425,38426,20012,29247,25109,27701,27732,27740,27722,27811,27781,27792,27796,27788,27752,27753,27764,27766,27782,27817,27856,27860,27821,27895,27896,27889,27863,27826,27872,27862,27898,27883,27886,27825,27859,27887,27902,37544,37545,37546,37547,37548,37549,37551,37552,37553,37554,37555,37556,37557,37558,37559,37560,37561,37562,37563,37564,37565,37566,37567,37568,37569,37570,37571,37572,37573,37574,37575,37577,37578,37579,37580,37581,37582,37583,37584,37585,37586,37587,37588,37589,37590,37591,37592,37593,37594,37595,37596,37597,37598,37599,37600,37601,37602,37603,37604,37605,37606,37607,37608,37609,37610,37611,37612,37613,37614,37615,37616,37617,37618,37619,37620,37621,37622,37623,37624,37625,37626,37627,37628,37629,37630,37631,37632,37633,37634,37635,37636,37637,37638,37639,37640,37641,27961,27943,27916,27971,27976,27911,27908,27929,27918,27947,27981,27950,27957,27930,27983,27986,27988,27955,28049,28015,28062,28064,27998,28051,28052,27996,28000,28028,28003,28186,28103,28101,28126,28174,28095,28128,28177,28134,28125,28121,28182,28075,28172,28078,28203,28270,28238,28267,28338,28255,28294,28243,28244,28210,28197,28228,28383,28337,28312,28384,28461,28386,28325,28327,28349,28347,28343,28375,28340,28367,28303,28354,28319,28514,28486,28487,28452,28437,28409,28463,28470,28491,28532,28458,28425,28457,28553,28557,28556,28536,28530,28540,28538,28625,37642,37643,37644,37645,37646,37647,37648,37649,37650,37651,37652,37653,37654,37655,37656,37657,37658,37659,37660,37661,37662,37663,37664,37665,37666,37667,37668,37669,37670,37671,37672,37673,37674,37675,37676,37677,37678,37679,37680,37681,37682,37683,37684,37685,37686,37687,37688,37689,37690,37691,37692,37693,37695,37696,37697,37698,37699,37700,37701,37702,37703,37704,37705,37706,37707,37708,37709,37710,37711,37712,37713,37714,37715,37716,37717,37718,37719,37720,37721,37722,37723,37724,37725,37726,37727,37728,37729,37730,37731,37732,37733,37734,37735,37736,37737,37739,28617,28583,28601,28598,28610,28641,28654,28638,28640,28655,28698,28707,28699,28729,28725,28751,28766,23424,23428,23445,23443,23461,23480,29999,39582,25652,23524,23534,35120,23536,36423,35591,36790,36819,36821,36837,36846,36836,36841,36838,36851,36840,36869,36868,36875,36902,36881,36877,36886,36897,36917,36918,36909,36911,36932,36945,36946,36944,36968,36952,36962,36955,26297,36980,36989,36994,37000,36995,37003,24400,24407,24406,24408,23611,21675,23632,23641,23409,23651,23654,32700,24362,24361,24365,33396,24380,39739,23662,22913,22915,22925,22953,22954,22947,37740,37741,37742,37743,37744,37745,37746,37747,37748,37749,37750,37751,37752,37753,37754,37755,37756,37757,37758,37759,37760,37761,37762,37763,37764,37765,37766,37767,37768,37769,37770,37771,37772,37773,37774,37776,37777,37778,37779,37780,37781,37782,37783,37784,37785,37786,37787,37788,37789,37790,37791,37792,37793,37794,37795,37796,37797,37798,37799,37800,37801,37802,37803,37804,37805,37806,37807,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,37818,37819,37820,37821,37822,37823,37824,37825,37826,37827,37828,37829,37830,37831,37832,37833,37835,37836,37837,22935,22986,22955,22942,22948,22994,22962,22959,22999,22974,23045,23046,23005,23048,23011,23000,23033,23052,23049,23090,23092,23057,23075,23059,23104,23143,23114,23125,23100,23138,23157,33004,23210,23195,23159,23162,23230,23275,23218,23250,23252,23224,23264,23267,23281,23254,23270,23256,23260,23305,23319,23318,23346,23351,23360,23573,23580,23386,23397,23411,23377,23379,23394,39541,39543,39544,39546,39551,39549,39552,39553,39557,39560,39562,39568,39570,39571,39574,39576,39579,39580,39581,39583,39584,39586,39587,39589,39591,32415,32417,32419,32421,32424,32425,37838,37839,37840,37841,37842,37843,37844,37845,37847,37848,37849,37850,37851,37852,37853,37854,37855,37856,37857,37858,37859,37860,37861,37862,37863,37864,37865,37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,37877,37878,37879,37880,37881,37882,37883,37884,37885,37886,37887,37888,37889,37890,37891,37892,37893,37894,37895,37896,37897,37898,37899,37900,37901,37902,37903,37904,37905,37906,37907,37908,37909,37910,37911,37912,37913,37914,37915,37916,37917,37918,37919,37920,37921,37922,37923,37924,37925,37926,37927,37928,37929,37930,37931,37932,37933,37934,32429,32432,32446,32448,32449,32450,32457,32459,32460,32464,32468,32471,32475,32480,32481,32488,32491,32494,32495,32497,32498,32525,32502,32506,32507,32510,32513,32514,32515,32519,32520,32523,32524,32527,32529,32530,32535,32537,32540,32539,32543,32545,32546,32547,32548,32549,32550,32551,32554,32555,32556,32557,32559,32560,32561,32562,32563,32565,24186,30079,24027,30014,37013,29582,29585,29614,29602,29599,29647,29634,29649,29623,29619,29632,29641,29640,29669,29657,39036,29706,29673,29671,29662,29626,29682,29711,29738,29787,29734,29733,29736,29744,29742,29740,37935,37936,37937,37938,37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,37949,37951,37952,37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,37963,37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,37976,37977,37978,37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,37989,37990,37991,37992,37993,37994,37996,37997,37998,37999,38000,38001,38002,38003,38004,38005,38006,38007,38008,38009,38010,38011,38012,38013,38014,38015,38016,38017,38018,38019,38020,38033,38038,38040,38087,38095,38099,38100,38106,38118,38139,38172,38176,29723,29722,29761,29788,29783,29781,29785,29815,29805,29822,29852,29838,29824,29825,29831,29835,29854,29864,29865,29840,29863,29906,29882,38890,38891,38892,26444,26451,26462,26440,26473,26533,26503,26474,26483,26520,26535,26485,26536,26526,26541,26507,26487,26492,26608,26633,26584,26634,26601,26544,26636,26585,26549,26586,26547,26589,26624,26563,26552,26594,26638,26561,26621,26674,26675,26720,26721,26702,26722,26692,26724,26755,26653,26709,26726,26689,26727,26688,26686,26698,26697,26665,26805,26767,26740,26743,26771,26731,26818,26990,26876,26911,26912,26873,38183,38195,38205,38211,38216,38219,38229,38234,38240,38254,38260,38261,38263,38264,38265,38266,38267,38268,38269,38270,38272,38273,38274,38275,38276,38277,38278,38279,38280,38281,38282,38283,38284,38285,38286,38287,38288,38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,38299,38300,38301,38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,38312,38313,38314,38315,38316,38317,38318,38319,38320,38321,38322,38323,38324,38325,38326,38327,38328,38329,38330,38331,38332,38333,38334,38335,38336,38337,38338,38339,38340,38341,38342,38343,38344,38345,38346,38347,26916,26864,26891,26881,26967,26851,26896,26993,26937,26976,26946,26973,27012,26987,27008,27032,27000,26932,27084,27015,27016,27086,27017,26982,26979,27001,27035,27047,27067,27051,27053,27092,27057,27073,27082,27103,27029,27104,27021,27135,27183,27117,27159,27160,27237,27122,27204,27198,27296,27216,27227,27189,27278,27257,27197,27176,27224,27260,27281,27280,27305,27287,27307,29495,29522,27521,27522,27527,27524,27538,27539,27533,27546,27547,27553,27562,36715,36717,36721,36722,36723,36725,36726,36728,36727,36729,36730,36732,36734,36737,36738,36740,36743,36747,38348,38349,38350,38351,38352,38353,38354,38355,38356,38357,38358,38359,38360,38361,38362,38363,38364,38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,38375,38380,38399,38407,38419,38424,38427,38430,38432,38435,38436,38437,38438,38439,38440,38441,38443,38444,38445,38447,38448,38455,38456,38457,38458,38462,38465,38467,38474,38478,38479,38481,38482,38483,38486,38487,38488,38489,38490,38492,38493,38494,38496,38499,38501,38502,38507,38509,38510,38511,38512,38513,38515,38520,38521,38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,38532,38535,38537,38538,36749,36750,36751,36760,36762,36558,25099,25111,25115,25119,25122,25121,25125,25124,25132,33255,29935,29940,29951,29967,29969,29971,25908,26094,26095,26096,26122,26137,26482,26115,26133,26112,28805,26359,26141,26164,26161,26166,26165,32774,26207,26196,26177,26191,26198,26209,26199,26231,26244,26252,26279,26269,26302,26331,26332,26342,26345,36146,36147,36150,36155,36157,36160,36165,36166,36168,36169,36167,36173,36181,36185,35271,35274,35275,35276,35278,35279,35280,35281,29294,29343,29277,29286,29295,29310,29311,29316,29323,29325,29327,29330,25352,25394,25520,38540,38542,38545,38546,38547,38549,38550,38554,38555,38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,38568,38569,38570,38571,38572,38573,38574,38575,38577,38578,38580,38581,38583,38584,38586,38587,38591,38594,38595,38600,38602,38603,38608,38609,38611,38612,38614,38615,38616,38617,38618,38619,38620,38621,38622,38623,38625,38626,38627,38628,38629,38630,38631,38635,38636,38637,38638,38640,38641,38642,38644,38645,38648,38650,38651,38652,38653,38655,38658,38659,38661,38666,38667,38668,38672,38673,38674,38676,38677,38679,38680,38681,38682,38683,38685,38687,38688,25663,25816,32772,27626,27635,27645,27637,27641,27653,27655,27654,27661,27669,27672,27673,27674,27681,27689,27684,27690,27698,25909,25941,25963,29261,29266,29270,29232,34402,21014,32927,32924,32915,32956,26378,32957,32945,32939,32941,32948,32951,32999,33000,33001,33002,32987,32962,32964,32985,32973,32983,26384,32989,33003,33009,33012,33005,33037,33038,33010,33020,26389,33042,35930,33078,33054,33068,33048,33074,33096,33100,33107,33140,33113,33114,33137,33120,33129,33148,33149,33133,33127,22605,23221,33160,33154,33169,28373,33187,33194,33228,26406,33226,33211,38689,38690,38691,38692,38693,38694,38695,38696,38697,38699,38700,38702,38703,38705,38707,38708,38709,38710,38711,38714,38715,38716,38717,38719,38720,38721,38722,38723,38724,38725,38726,38727,38728,38729,38730,38731,38732,38733,38734,38735,38736,38737,38740,38741,38743,38744,38746,38748,38749,38751,38755,38756,38758,38759,38760,38762,38763,38764,38765,38766,38767,38768,38769,38770,38773,38775,38776,38777,38778,38779,38781,38782,38783,38784,38785,38786,38787,38788,38790,38791,38792,38793,38794,38796,38798,38799,38800,38803,38805,38806,38807,38809,38810,38811,38812,38813,33217,33190,27428,27447,27449,27459,27462,27481,39121,39122,39123,39125,39129,39130,27571,24384,27586,35315,26000,40785,26003,26044,26054,26052,26051,26060,26062,26066,26070,28800,28828,28822,28829,28859,28864,28855,28843,28849,28904,28874,28944,28947,28950,28975,28977,29043,29020,29032,28997,29042,29002,29048,29050,29080,29107,29109,29096,29088,29152,29140,29159,29177,29213,29224,28780,28952,29030,29113,25150,25149,25155,25160,25161,31035,31040,31046,31049,31067,31068,31059,31066,31074,31063,31072,31087,31079,31098,31109,31114,31130,31143,31155,24529,24528,38814,38815,38817,38818,38820,38821,38822,38823,38824,38825,38826,38828,38830,38832,38833,38835,38837,38838,38839,38840,38841,38842,38843,38844,38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,38857,38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,38870,38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,38883,38884,38885,38888,38894,38895,38896,38897,38898,38900,38903,38904,38905,38906,38907,38908,38909,38910,38911,38912,38913,38914,38915,38916,38917,38918,38919,38920,38921,38922,38923,38924,38925,38926,24636,24669,24666,24679,24641,24665,24675,24747,24838,24845,24925,25001,24989,25035,25041,25094,32896,32895,27795,27894,28156,30710,30712,30720,30729,30743,30744,30737,26027,30765,30748,30749,30777,30778,30779,30751,30780,30757,30764,30755,30761,30798,30829,30806,30807,30758,30800,30791,30796,30826,30875,30867,30874,30855,30876,30881,30883,30898,30905,30885,30932,30937,30921,30956,30962,30981,30964,30995,31012,31006,31028,40859,40697,40699,40700,30449,30468,30477,30457,30471,30472,30490,30498,30489,30509,30502,30517,30520,30544,30545,30535,30531,30554,30568,38927,38928,38929,38930,38931,38932,38933,38934,38935,38936,38937,38938,38939,38940,38941,38942,38943,38944,38945,38946,38947,38948,38949,38950,38951,38952,38953,38954,38955,38956,38957,38958,38959,38960,38961,38962,38963,38964,38965,38966,38967,38968,38969,38970,38971,38972,38973,38974,38975,38976,38977,38978,38979,38980,38981,38982,38983,38984,38985,38986,38987,38988,38989,38990,38991,38992,38993,38994,38995,38996,38997,38998,38999,39000,39001,39002,39003,39004,39005,39006,39007,39008,39009,39010,39011,39012,39013,39014,39015,39016,39017,39018,39019,39020,39021,39022,30562,30565,30591,30605,30589,30592,30604,30609,30623,30624,30640,30645,30653,30010,30016,30030,30027,30024,30043,30066,30073,30083,32600,32609,32607,35400,32616,32628,32625,32633,32641,32638,30413,30437,34866,38021,38022,38023,38027,38026,38028,38029,38031,38032,38036,38039,38037,38042,38043,38044,38051,38052,38059,38058,38061,38060,38063,38064,38066,38068,38070,38071,38072,38073,38074,38076,38077,38079,38084,38088,38089,38090,38091,38092,38093,38094,38096,38097,38098,38101,38102,38103,38105,38104,38107,38110,38111,38112,38114,38116,38117,38119,38120,38122,39023,39024,39025,39026,39027,39028,39051,39054,39058,39061,39065,39075,39080,39081,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,39092,39093,39094,39095,39096,39097,39098,39099,39100,39101,39102,39103,39104,39105,39106,39107,39108,39109,39110,39111,39112,39113,39114,39115,39116,39117,39119,39120,39124,39126,39127,39131,39132,39133,39136,39137,39138,39139,39140,39141,39142,39145,39146,39147,39148,39149,39150,39151,39152,39153,39154,39155,39156,39157,39158,39159,39160,39161,39162,39163,39164,39165,39166,39167,39168,39169,39170,39171,39172,39173,39174,39175,38121,38123,38126,38127,38131,38132,38133,38135,38137,38140,38141,38143,38147,38146,38150,38151,38153,38154,38157,38158,38159,38162,38163,38164,38165,38166,38168,38171,38173,38174,38175,38178,38186,38187,38185,38188,38193,38194,38196,38198,38199,38200,38204,38206,38207,38210,38197,38212,38213,38214,38217,38220,38222,38223,38226,38227,38228,38230,38231,38232,38233,38235,38238,38239,38237,38241,38242,38244,38245,38246,38247,38248,38249,38250,38251,38252,38255,38257,38258,38259,38202,30695,30700,38601,31189,31213,31203,31211,31238,23879,31235,31234,31262,31252,39176,39177,39178,39179,39180,39182,39183,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195,39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208,39209,39210,39211,39212,39213,39215,39216,39217,39218,39219,39220,39221,39222,39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235,39236,39237,39238,39239,39240,39241,39242,39243,39244,39245,39246,39247,39248,39249,39250,39251,39254,39255,39256,39257,39258,39259,39260,39261,39262,39263,39264,39265,39266,39268,39270,39283,39288,39289,39291,39294,39298,39299,39305,31289,31287,31313,40655,39333,31344,30344,30350,30355,30361,30372,29918,29920,29996,40480,40482,40488,40489,40490,40491,40492,40498,40497,40502,40504,40503,40505,40506,40510,40513,40514,40516,40518,40519,40520,40521,40523,40524,40526,40529,40533,40535,40538,40539,40540,40542,40547,40550,40551,40552,40553,40554,40555,40556,40561,40557,40563,30098,30100,30102,30112,30109,30124,30115,30131,30132,30136,30148,30129,30128,30147,30146,30166,30157,30179,30184,30182,30180,30187,30183,30211,30193,30204,30207,30224,30208,30213,30220,30231,30218,30245,30232,30229,30233,39308,39310,39322,39323,39324,39325,39326,39327,39328,39329,39330,39331,39332,39334,39335,39337,39338,39339,39340,39341,39342,39343,39344,39345,39346,39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,39358,39359,39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,39371,39372,39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,39384,39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,39397,39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,39410,39411,39412,39413,39414,39415,39416,39417,30235,30268,30242,30240,30272,30253,30256,30271,30261,30275,30270,30259,30285,30302,30292,30300,30294,30315,30319,32714,31462,31352,31353,31360,31366,31368,31381,31398,31392,31404,31400,31405,31411,34916,34921,34930,34941,34943,34946,34978,35014,34999,35004,35017,35042,35022,35043,35045,35057,35098,35068,35048,35070,35056,35105,35097,35091,35099,35082,35124,35115,35126,35137,35174,35195,30091,32997,30386,30388,30684,32786,32788,32790,32796,32800,32802,32805,32806,32807,32809,32808,32817,32779,32821,32835,32838,32845,32850,32873,32881,35203,39032,39040,39043,39418,39419,39420,39421,39422,39423,39424,39425,39426,39427,39428,39429,39430,39431,39432,39433,39434,39435,39436,39437,39438,39439,39440,39441,39442,39443,39444,39445,39446,39447,39448,39449,39450,39451,39452,39453,39454,39455,39456,39457,39458,39459,39460,39461,39462,39463,39464,39465,39466,39467,39468,39469,39470,39471,39472,39473,39474,39475,39476,39477,39478,39479,39480,39481,39482,39483,39484,39485,39486,39487,39488,39489,39490,39491,39492,39493,39494,39495,39496,39497,39498,39499,39500,39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,39049,39052,39053,39055,39060,39066,39067,39070,39071,39073,39074,39077,39078,34381,34388,34412,34414,34431,34426,34428,34427,34472,34445,34443,34476,34461,34471,34467,34474,34451,34473,34486,34500,34485,34510,34480,34490,34481,34479,34505,34511,34484,34537,34545,34546,34541,34547,34512,34579,34526,34548,34527,34520,34513,34563,34567,34552,34568,34570,34573,34569,34595,34619,34590,34597,34606,34586,34622,34632,34612,34609,34601,34615,34623,34690,34594,34685,34686,34683,34656,34672,34636,34670,34699,34643,34659,34684,34660,34649,34661,34707,34735,34728,34770,39514,39515,39516,39517,39518,39519,39520,39521,39522,39523,39524,39525,39526,39527,39528,39529,39530,39531,39538,39555,39561,39565,39566,39572,39573,39577,39590,39593,39594,39595,39596,39597,39598,39599,39602,39603,39604,39605,39609,39611,39613,39614,39615,39619,39620,39622,39623,39624,39625,39626,39629,39630,39631,39632,39634,39636,39637,39638,39639,39641,39642,39643,39644,39645,39646,39648,39650,39651,39652,39653,39655,39656,39657,39658,39660,39662,39664,39665,39666,39667,39668,39669,39670,39671,39672,39674,39676,39677,39678,39679,39680,39681,39682,39684,39685,39686,34758,34696,34693,34733,34711,34691,34731,34789,34732,34741,34739,34763,34771,34749,34769,34752,34762,34779,34794,34784,34798,34838,34835,34814,34826,34843,34849,34873,34876,32566,32578,32580,32581,33296,31482,31485,31496,31491,31492,31509,31498,31531,31503,31559,31544,31530,31513,31534,31537,31520,31525,31524,31539,31550,31518,31576,31578,31557,31605,31564,31581,31584,31598,31611,31586,31602,31601,31632,31654,31655,31672,31660,31645,31656,31621,31658,31644,31650,31659,31668,31697,31681,31692,31709,31706,31717,31718,31722,31756,31742,31740,31759,31766,31755,39687,39689,39690,39691,39692,39693,39694,39696,39697,39698,39700,39701,39702,39703,39704,39705,39706,39707,39708,39709,39710,39712,39713,39714,39716,39717,39718,39719,39720,39721,39722,39723,39724,39725,39726,39728,39729,39731,39732,39733,39734,39735,39736,39737,39738,39741,39742,39743,39744,39750,39754,39755,39756,39758,39760,39762,39763,39765,39766,39767,39768,39769,39770,39771,39772,39773,39774,39775,39776,39777,39778,39779,39780,39781,39782,39783,39784,39785,39786,39787,39788,39789,39790,39791,39792,39793,39794,39795,39796,39797,39798,39799,39800,39801,39802,39803,31775,31786,31782,31800,31809,31808,33278,33281,33282,33284,33260,34884,33313,33314,33315,33325,33327,33320,33323,33336,33339,33331,33332,33342,33348,33353,33355,33359,33370,33375,33384,34942,34949,34952,35032,35039,35166,32669,32671,32679,32687,32688,32690,31868,25929,31889,31901,31900,31902,31906,31922,31932,31933,31937,31943,31948,31949,31944,31941,31959,31976,33390,26280,32703,32718,32725,32741,32737,32742,32745,32750,32755,31992,32119,32166,32174,32327,32411,40632,40628,36211,36228,36244,36241,36273,36199,36205,35911,35913,37194,37200,37198,37199,37220,39804,39805,39806,39807,39808,39809,39810,39811,39812,39813,39814,39815,39816,39817,39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,39830,39831,39832,39833,39834,39835,39836,39837,39838,39839,39840,39841,39842,39843,39844,39845,39846,39847,39848,39849,39850,39851,39852,39853,39854,39855,39856,39857,39858,39859,39860,39861,39862,39863,39864,39865,39866,39867,39868,39869,39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,39882,39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,39895,39896,39897,39898,39899,37218,37217,37232,37225,37231,37245,37246,37234,37236,37241,37260,37253,37264,37261,37265,37282,37283,37290,37293,37294,37295,37301,37300,37306,35925,40574,36280,36331,36357,36441,36457,36277,36287,36284,36282,36292,36310,36311,36314,36318,36302,36303,36315,36294,36332,36343,36344,36323,36345,36347,36324,36361,36349,36372,36381,36383,36396,36398,36387,36399,36410,36416,36409,36405,36413,36401,36425,36417,36418,36433,36434,36426,36464,36470,36476,36463,36468,36485,36495,36500,36496,36508,36510,35960,35970,35978,35973,35992,35988,26011,35286,35294,35290,35292,39900,39901,39902,39903,39904,39905,39906,39907,39908,39909,39910,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,39934,39935,39936,39937,39938,39939,39940,39941,39942,39943,39944,39945,39946,39947,39948,39949,39950,39951,39952,39953,39954,39955,39956,39957,39958,39959,39960,39961,39962,39963,39964,39965,39966,39967,39968,39969,39970,39971,39972,39973,39974,39975,39976,39977,39978,39979,39980,39981,39982,39983,39984,39985,39986,39987,39988,39989,39990,39991,39992,39993,39994,39995,35301,35307,35311,35390,35622,38739,38633,38643,38639,38662,38657,38664,38671,38670,38698,38701,38704,38718,40832,40835,40837,40838,40839,40840,40841,40842,40844,40702,40715,40717,38585,38588,38589,38606,38610,30655,38624,37518,37550,37576,37694,37738,37834,37775,37950,37995,40063,40066,40069,40070,40071,40072,31267,40075,40078,40080,40081,40082,40084,40085,40090,40091,40094,40095,40096,40097,40098,40099,40101,40102,40103,40104,40105,40107,40109,40110,40112,40113,40114,40115,40116,40117,40118,40119,40122,40123,40124,40125,40132,40133,40134,40135,40138,40139,39996,39997,39998,39999,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,40010,40011,40012,40013,40014,40015,40016,40017,40018,40019,40020,40021,40022,40023,40024,40025,40026,40027,40028,40029,40030,40031,40032,40033,40034,40035,40036,40037,40038,40039,40040,40041,40042,40043,40044,40045,40046,40047,40048,40049,40050,40051,40052,40053,40054,40055,40056,40057,40058,40059,40061,40062,40064,40067,40068,40073,40074,40076,40079,40083,40086,40087,40088,40089,40093,40106,40108,40111,40121,40126,40127,40128,40129,40130,40136,40137,40145,40146,40154,40155,40160,40161,40140,40141,40142,40143,40144,40147,40148,40149,40151,40152,40153,40156,40157,40159,40162,38780,38789,38801,38802,38804,38831,38827,38819,38834,38836,39601,39600,39607,40536,39606,39610,39612,39617,39616,39621,39618,39627,39628,39633,39749,39747,39751,39753,39752,39757,39761,39144,39181,39214,39253,39252,39647,39649,39654,39663,39659,39675,39661,39673,39688,39695,39699,39711,39715,40637,40638,32315,40578,40583,40584,40587,40594,37846,40605,40607,40667,40668,40669,40672,40671,40674,40681,40679,40677,40682,40687,40738,40748,40751,40761,40759,40765,40766,40772,40163,40164,40165,40166,40167,40168,40169,40170,40171,40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,40182,40183,40184,40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,40195,40196,40197,40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,40208,40209,40210,40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,40221,40222,40223,40224,40225,40226,40227,40228,40229,40230,40231,40232,40233,40234,40235,40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,40247,40248,40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,57908,57909,57910,57911,57912,57913,57914,57915,57916,57917,57918,57919,57920,57921,57922,57923,57924,57925,57926,57927,57928,57929,57930,57931,57932,57933,57934,57935,57936,57937,57938,57939,57940,57941,57942,57943,57944,57945,57946,57947,57948,57949,57950,57951,57952,57953,57954,57955,57956,57957,57958,57959,57960,57961,57962,57963,57964,57965,57966,57967,57968,57969,57970,57971,57972,57973,57974,57975,57976,57977,57978,57979,57980,57981,57982,57983,57984,57985,57986,57987,57988,57989,57990,57991,57992,57993,57994,57995,57996,57997,57998,57999,58000,58001,40259,40260,40261,40262,40263,40264,40265,40266,40267,40268,40269,40270,40271,40272,40273,40274,40275,40276,40277,40278,40279,40280,40281,40282,40283,40284,40285,40286,40287,40288,40289,40290,40291,40292,40293,40294,40295,40296,40297,40298,40299,40300,40301,40302,40303,40304,40305,40306,40307,40308,40309,40310,40311,40312,40313,40314,40315,40316,40317,40318,40319,40320,40321,40322,40323,40324,40325,40326,40327,40328,40329,40330,40331,40332,40333,40334,40335,40336,40337,40338,40339,40340,40341,40342,40343,40344,40345,40346,40347,40348,40349,40350,40351,40352,40353,40354,58002,58003,58004,58005,58006,58007,58008,58009,58010,58011,58012,58013,58014,58015,58016,58017,58018,58019,58020,58021,58022,58023,58024,58025,58026,58027,58028,58029,58030,58031,58032,58033,58034,58035,58036,58037,58038,58039,58040,58041,58042,58043,58044,58045,58046,58047,58048,58049,58050,58051,58052,58053,58054,58055,58056,58057,58058,58059,58060,58061,58062,58063,58064,58065,58066,58067,58068,58069,58070,58071,58072,58073,58074,58075,58076,58077,58078,58079,58080,58081,58082,58083,58084,58085,58086,58087,58088,58089,58090,58091,58092,58093,58094,58095,40355,40356,40357,40358,40359,40360,40361,40362,40363,40364,40365,40366,40367,40368,40369,40370,40371,40372,40373,40374,40375,40376,40377,40378,40379,40380,40381,40382,40383,40384,40385,40386,40387,40388,40389,40390,40391,40392,40393,40394,40395,40396,40397,40398,40399,40400,40401,40402,40403,40404,40405,40406,40407,40408,40409,40410,40411,40412,40413,40414,40415,40416,40417,40418,40419,40420,40421,40422,40423,40424,40425,40426,40427,40428,40429,40430,40431,40432,40433,40434,40435,40436,40437,40438,40439,40440,40441,40442,40443,40444,40445,40446,40447,40448,40449,40450,58096,58097,58098,58099,58100,58101,58102,58103,58104,58105,58106,58107,58108,58109,58110,58111,58112,58113,58114,58115,58116,58117,58118,58119,58120,58121,58122,58123,58124,58125,58126,58127,58128,58129,58130,58131,58132,58133,58134,58135,58136,58137,58138,58139,58140,58141,58142,58143,58144,58145,58146,58147,58148,58149,58150,58151,58152,58153,58154,58155,58156,58157,58158,58159,58160,58161,58162,58163,58164,58165,58166,58167,58168,58169,58170,58171,58172,58173,58174,58175,58176,58177,58178,58179,58180,58181,58182,58183,58184,58185,58186,58187,58188,58189,40451,40452,40453,40454,40455,40456,40457,40458,40459,40460,40461,40462,40463,40464,40465,40466,40467,40468,40469,40470,40471,40472,40473,40474,40475,40476,40477,40478,40484,40487,40494,40496,40500,40507,40508,40512,40525,40528,40530,40531,40532,40534,40537,40541,40543,40544,40545,40546,40549,40558,40559,40562,40564,40565,40566,40567,40568,40569,40570,40571,40572,40573,40576,40577,40579,40580,40581,40582,40585,40586,40588,40589,40590,40591,40592,40593,40596,40597,40598,40599,40600,40601,40602,40603,40604,40606,40608,40609,40610,40611,40612,40613,40615,40616,40617,40618,58190,58191,58192,58193,58194,58195,58196,58197,58198,58199,58200,58201,58202,58203,58204,58205,58206,58207,58208,58209,58210,58211,58212,58213,58214,58215,58216,58217,58218,58219,58220,58221,58222,58223,58224,58225,58226,58227,58228,58229,58230,58231,58232,58233,58234,58235,58236,58237,58238,58239,58240,58241,58242,58243,58244,58245,58246,58247,58248,58249,58250,58251,58252,58253,58254,58255,58256,58257,58258,58259,58260,58261,58262,58263,58264,58265,58266,58267,58268,58269,58270,58271,58272,58273,58274,58275,58276,58277,58278,58279,58280,58281,58282,58283,40619,40620,40621,40622,40623,40624,40625,40626,40627,40629,40630,40631,40633,40634,40636,40639,40640,40641,40642,40643,40645,40646,40647,40648,40650,40651,40652,40656,40658,40659,40661,40662,40663,40665,40666,40670,40673,40675,40676,40678,40680,40683,40684,40685,40686,40688,40689,40690,40691,40692,40693,40694,40695,40696,40698,40701,40703,40704,40705,40706,40707,40708,40709,40710,40711,40712,40713,40714,40716,40719,40721,40722,40724,40725,40726,40728,40730,40731,40732,40733,40734,40735,40737,40739,40740,40741,40742,40743,40744,40745,40746,40747,40749,40750,40752,40753,58284,58285,58286,58287,58288,58289,58290,58291,58292,58293,58294,58295,58296,58297,58298,58299,58300,58301,58302,58303,58304,58305,58306,58307,58308,58309,58310,58311,58312,58313,58314,58315,58316,58317,58318,58319,58320,58321,58322,58323,58324,58325,58326,58327,58328,58329,58330,58331,58332,58333,58334,58335,58336,58337,58338,58339,58340,58341,58342,58343,58344,58345,58346,58347,58348,58349,58350,58351,58352,58353,58354,58355,58356,58357,58358,58359,58360,58361,58362,58363,58364,58365,58366,58367,58368,58369,58370,58371,58372,58373,58374,58375,58376,58377,40754,40755,40756,40757,40758,40760,40762,40764,40767,40768,40769,40770,40771,40773,40774,40775,40776,40777,40778,40779,40780,40781,40782,40783,40786,40787,40788,40789,40790,40791,40792,40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804,40805,40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,40819,40820,40821,40822,40823,40824,40825,40826,40827,40828,40829,40830,40833,40834,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855,40856,40860,40861,40862,40865,40866,40867,40868,40869,63788,63865,63893,63975,63985,58378,58379,58380,58381,58382,58383,58384,58385,58386,58387,58388,58389,58390,58391,58392,58393,58394,58395,58396,58397,58398,58399,58400,58401,58402,58403,58404,58405,58406,58407,58408,58409,58410,58411,58412,58413,58414,58415,58416,58417,58418,58419,58420,58421,58422,58423,58424,58425,58426,58427,58428,58429,58430,58431,58432,58433,58434,58435,58436,58437,58438,58439,58440,58441,58442,58443,58444,58445,58446,58447,58448,58449,58450,58451,58452,58453,58454,58455,58456,58457,58458,58459,58460,58461,58462,58463,58464,58465,58466,58467,58468,58469,58470,58471,64012,64013,64014,64015,64017,64019,64020,64024,64031,64032,64033,64035,64036,64039,64040,64041,11905,59414,59415,59416,11908,13427,13383,11912,11915,59422,13726,13850,13838,11916,11927,14702,14616,59430,14799,14815,14963,14800,59435,59436,15182,15470,15584,11943,59441,59442,11946,16470,16735,11950,17207,11955,11958,11959,59451,17329,17324,11963,17373,17622,18017,17996,59459,18211,18217,18300,18317,11978,18759,18810,18813,18818,18819,18821,18822,18847,18843,18871,18870,59476,59477,19619,19615,19616,19617,19575,19618,19731,19732,19733,19734,19735,19736,19737,19886,59492,58472,58473,58474,58475,58476,58477,58478,58479,58480,58481,58482,58483,58484,58485,58486,58487,58488,58489,58490,58491,58492,58493,58494,58495,58496,58497,58498,58499,58500,58501,58502,58503,58504,58505,58506,58507,58508,58509,58510,58511,58512,58513,58514,58515,58516,58517,58518,58519,58520,58521,58522,58523,58524,58525,58526,58527,58528,58529,58530,58531,58532,58533,58534,58535,58536,58537,58538,58539,58540,58541,58542,58543,58544,58545,58546,58547,58548,58549,58550,58551,58552,58553,58554,58555,58556,58557,58558,58559,58560,58561,58562,58563,58564,58565],
-  "gb18030-ranges":[[0,128],[36,165],[38,169],[45,178],[50,184],[81,216],[89,226],[95,235],[96,238],[100,244],[103,248],[104,251],[105,253],[109,258],[126,276],[133,284],[148,300],[172,325],[175,329],[179,334],[208,364],[306,463],[307,465],[308,467],[309,469],[310,471],[311,473],[312,475],[313,477],[341,506],[428,594],[443,610],[544,712],[545,716],[558,730],[741,930],[742,938],[749,962],[750,970],[805,1026],[819,1104],[820,1106],[7922,8209],[7924,8215],[7925,8218],[7927,8222],[7934,8231],[7943,8241],[7944,8244],[7945,8246],[7950,8252],[8062,8365],[8148,8452],[8149,8454],[8152,8458],[8164,8471],[8174,8482],[8236,8556],[8240,8570],[8262,8596],[8264,8602],[8374,8713],[8380,8720],[8381,8722],[8384,8726],[8388,8731],[8390,8737],[8392,8740],[8393,8742],[8394,8748],[8396,8751],[8401,8760],[8406,8766],[8416,8777],[8419,8781],[8424,8787],[8437,8802],[8439,8808],[8445,8816],[8482,8854],[8485,8858],[8496,8870],[8521,8896],[8603,8979],[8936,9322],[8946,9372],[9046,9548],[9050,9588],[9063,9616],[9066,9622],[9076,9634],[9092,9652],[9100,9662],[9108,9672],[9111,9676],[9113,9680],[9131,9702],[9162,9735],[9164,9738],[9218,9793],[9219,9795],[11329,11906],[11331,11909],[11334,11913],[11336,11917],[11346,11928],[11361,11944],[11363,11947],[11366,11951],[11370,11956],[11372,11960],[11375,11964],[11389,11979],[11682,12284],[11686,12292],[11687,12312],[11692,12319],[11694,12330],[11714,12351],[11716,12436],[11723,12447],[11725,12535],[11730,12543],[11736,12586],[11982,12842],[11989,12850],[12102,12964],[12336,13200],[12348,13215],[12350,13218],[12384,13253],[12393,13263],[12395,13267],[12397,13270],[12510,13384],[12553,13428],[12851,13727],[12962,13839],[12973,13851],[13738,14617],[13823,14703],[13919,14801],[13933,14816],[14080,14964],[14298,15183],[14585,15471],[14698,15585],[15583,16471],[15847,16736],[16318,17208],[16434,17325],[16438,17330],[16481,17374],[16729,17623],[17102,17997],[17122,18018],[17315,18212],[17320,18218],[17402,18301],[17418,18318],[17859,18760],[17909,18811],[17911,18814],[17915,18820],[17916,18823],[17936,18844],[17939,18848],[17961,18872],[18664,19576],[18703,19620],[18814,19738],[18962,19887],[19043,40870],[33469,59244],[33470,59336],[33471,59367],[33484,59413],[33485,59417],[33490,59423],[33497,59431],[33501,59437],[33505,59443],[33513,59452],[33520,59460],[33536,59478],[33550,59493],[37845,63789],[37921,63866],[37948,63894],[38029,63976],[38038,63986],[38064,64016],[38065,64018],[38066,64021],[38069,64025],[38075,64034],[38076,64037],[38078,64042],[39108,65074],[39109,65093],[39113,65107],[39114,65112],[39115,65127],[39116,65132],[39265,65375],[39394,65510],[189000,65536]],
-  "jis0208":[12288,12289,12290,65292,65294,12539,65306,65307,65311,65281,12443,12444,180,65344,168,65342,65507,65343,12541,12542,12445,12446,12291,20189,12293,12294,12295,12540,8213,8208,65295,65340,65374,8741,65372,8230,8229,8216,8217,8220,8221,65288,65289,12308,12309,65339,65341,65371,65373,12296,12297,12298,12299,12300,12301,12302,12303,12304,12305,65291,65293,177,215,247,65309,8800,65308,65310,8806,8807,8734,8756,9794,9792,176,8242,8243,8451,65509,65284,65504,65505,65285,65283,65286,65290,65312,167,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8251,12306,8594,8592,8593,8595,12307,null,null,null,null,null,null,null,null,null,null,null,8712,8715,8838,8839,8834,8835,8746,8745,null,null,null,null,null,null,null,null,8743,8744,65506,8658,8660,8704,8707,null,null,null,null,null,null,null,null,null,null,null,8736,8869,8978,8706,8711,8801,8786,8810,8811,8730,8765,8733,8757,8747,8748,null,null,null,null,null,null,null,8491,8240,9839,9837,9834,8224,8225,182,null,null,null,null,9711,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,null,null,null,null,null,null,null,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,null,null,null,null,null,null,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,null,null,null,null,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,null,null,null,null,null,null,null,null,null,null,null,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,null,null,null,null,null,null,null,null,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,null,null,null,null,null,null,null,null,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,null,null,null,null,null,null,null,null,null,null,null,null,null,9472,9474,9484,9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507,9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,9331,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,null,13129,13076,13090,13133,13080,13095,13059,13110,13137,13143,13069,13094,13091,13099,13130,13115,13212,13213,13214,13198,13199,13252,13217,null,null,null,null,null,null,null,null,13179,12317,12319,8470,13261,8481,12964,12965,12966,12967,12968,12849,12850,12857,13182,13181,13180,8786,8801,8747,8750,8721,8730,8869,8736,8735,8895,8757,8745,8746,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20124,21782,23043,38463,21696,24859,25384,23030,36898,33909,33564,31312,24746,25569,28197,26093,33894,33446,39925,26771,22311,26017,25201,23451,22992,34427,39156,32098,32190,39822,25110,31903,34999,23433,24245,25353,26263,26696,38343,38797,26447,20197,20234,20301,20381,20553,22258,22839,22996,23041,23561,24799,24847,24944,26131,26885,28858,30031,30064,31227,32173,32239,32963,33806,34915,35586,36949,36986,21307,20117,20133,22495,32946,37057,30959,19968,22769,28322,36920,31282,33576,33419,39983,20801,21360,21693,21729,22240,23035,24341,39154,28139,32996,34093,38498,38512,38560,38907,21515,21491,23431,28879,32701,36802,38632,21359,40284,31418,19985,30867,33276,28198,22040,21764,27421,34074,39995,23013,21417,28006,29916,38287,22082,20113,36939,38642,33615,39180,21473,21942,23344,24433,26144,26355,26628,27704,27891,27945,29787,30408,31310,38964,33521,34907,35424,37613,28082,30123,30410,39365,24742,35585,36234,38322,27022,21421,20870,22290,22576,22852,23476,24310,24616,25513,25588,27839,28436,28814,28948,29017,29141,29503,32257,33398,33489,34199,36960,37467,40219,22633,26044,27738,29989,20985,22830,22885,24448,24540,25276,26106,27178,27431,27572,29579,32705,35158,40236,40206,40644,23713,27798,33659,20740,23627,25014,33222,26742,29281,20057,20474,21368,24681,28201,31311,38899,19979,21270,20206,20309,20285,20385,20339,21152,21487,22025,22799,23233,23478,23521,31185,26247,26524,26550,27468,27827,28779,29634,31117,31166,31292,31623,33457,33499,33540,33655,33775,33747,34662,35506,22057,36008,36838,36942,38686,34442,20420,23784,25105,29273,30011,33253,33469,34558,36032,38597,39187,39381,20171,20250,35299,22238,22602,22730,24315,24555,24618,24724,24674,25040,25106,25296,25913,39745,26214,26800,28023,28784,30028,30342,32117,33445,34809,38283,38542,35997,20977,21182,22806,21683,23475,23830,24936,27010,28079,30861,33995,34903,35442,37799,39608,28012,39336,34521,22435,26623,34510,37390,21123,22151,21508,24275,25313,25785,26684,26680,27579,29554,30906,31339,35226,35282,36203,36611,37101,38307,38548,38761,23398,23731,27005,38989,38990,25499,31520,27179,27263,26806,39949,28511,21106,21917,24688,25324,27963,28167,28369,33883,35088,36676,19988,39993,21494,26907,27194,38788,26666,20828,31427,33970,37340,37772,22107,40232,26658,33541,33841,31909,21000,33477,29926,20094,20355,20896,23506,21002,21208,21223,24059,21914,22570,23014,23436,23448,23515,24178,24185,24739,24863,24931,25022,25563,25954,26577,26707,26874,27454,27475,27735,28450,28567,28485,29872,29976,30435,30475,31487,31649,31777,32233,32566,32752,32925,33382,33694,35251,35532,36011,36996,37969,38291,38289,38306,38501,38867,39208,33304,20024,21547,23736,24012,29609,30284,30524,23721,32747,36107,38593,38929,38996,39000,20225,20238,21361,21916,22120,22522,22855,23305,23492,23696,24076,24190,24524,25582,26426,26071,26082,26399,26827,26820,27231,24112,27589,27671,27773,30079,31048,23395,31232,32000,24509,35215,35352,36020,36215,36556,36637,39138,39438,39740,20096,20605,20736,22931,23452,25135,25216,25836,27450,29344,30097,31047,32681,34811,35516,35696,25516,33738,38816,21513,21507,21931,26708,27224,35440,30759,26485,40653,21364,23458,33050,34384,36870,19992,20037,20167,20241,21450,21560,23470,24339,24613,25937,26429,27714,27762,27875,28792,29699,31350,31406,31496,32026,31998,32102,26087,29275,21435,23621,24040,25298,25312,25369,28192,34394,35377,36317,37624,28417,31142,39770,20136,20139,20140,20379,20384,20689,20807,31478,20849,20982,21332,21281,21375,21483,21932,22659,23777,24375,24394,24623,24656,24685,25375,25945,27211,27841,29378,29421,30703,33016,33029,33288,34126,37111,37857,38911,39255,39514,20208,20957,23597,26241,26989,23616,26354,26997,29577,26704,31873,20677,21220,22343,24062,37670,26020,27427,27453,29748,31105,31165,31563,32202,33465,33740,34943,35167,35641,36817,37329,21535,37504,20061,20534,21477,21306,29399,29590,30697,33510,36527,39366,39368,39378,20855,24858,34398,21936,31354,20598,23507,36935,38533,20018,27355,37351,23633,23624,25496,31391,27795,38772,36705,31402,29066,38536,31874,26647,32368,26705,37740,21234,21531,34219,35347,32676,36557,37089,21350,34952,31041,20418,20670,21009,20804,21843,22317,29674,22411,22865,24418,24452,24693,24950,24935,25001,25522,25658,25964,26223,26690,28179,30054,31293,31995,32076,32153,32331,32619,33550,33610,34509,35336,35427,35686,36605,38938,40335,33464,36814,39912,21127,25119,25731,28608,38553,26689,20625,27424,27770,28500,31348,32080,34880,35363,26376,20214,20537,20518,20581,20860,21048,21091,21927,22287,22533,23244,24314,25010,25080,25331,25458,26908,27177,29309,29356,29486,30740,30831,32121,30476,32937,35211,35609,36066,36562,36963,37749,38522,38997,39443,40568,20803,21407,21427,24187,24358,28187,28304,29572,29694,32067,33335,35328,35578,38480,20046,20491,21476,21628,22266,22993,23396,24049,24235,24359,25144,25925,26543,28246,29392,31946,34996,32929,32993,33776,34382,35463,36328,37431,38599,39015,40723,20116,20114,20237,21320,21577,21566,23087,24460,24481,24735,26791,27278,29786,30849,35486,35492,35703,37264,20062,39881,20132,20348,20399,20505,20502,20809,20844,21151,21177,21246,21402,21475,21521,21518,21897,22353,22434,22909,23380,23389,23439,24037,24039,24055,24184,24195,24218,24247,24344,24658,24908,25239,25304,25511,25915,26114,26179,26356,26477,26657,26775,27083,27743,27946,28009,28207,28317,30002,30343,30828,31295,31968,32005,32024,32094,32177,32789,32771,32943,32945,33108,33167,33322,33618,34892,34913,35611,36002,36092,37066,37237,37489,30783,37628,38308,38477,38917,39321,39640,40251,21083,21163,21495,21512,22741,25335,28640,35946,36703,40633,20811,21051,21578,22269,31296,37239,40288,40658,29508,28425,33136,29969,24573,24794,39592,29403,36796,27492,38915,20170,22256,22372,22718,23130,24680,25031,26127,26118,26681,26801,28151,30165,32058,33390,39746,20123,20304,21449,21766,23919,24038,24046,26619,27801,29811,30722,35408,37782,35039,22352,24231,25387,20661,20652,20877,26368,21705,22622,22971,23472,24425,25165,25505,26685,27507,28168,28797,37319,29312,30741,30758,31085,25998,32048,33756,35009,36617,38555,21092,22312,26448,32618,36001,20916,22338,38442,22586,27018,32948,21682,23822,22524,30869,40442,20316,21066,21643,25662,26152,26388,26613,31364,31574,32034,37679,26716,39853,31545,21273,20874,21047,23519,25334,25774,25830,26413,27578,34217,38609,30352,39894,25420,37638,39851,30399,26194,19977,20632,21442,23665,24808,25746,25955,26719,29158,29642,29987,31639,32386,34453,35715,36059,37240,39184,26028,26283,27531,20181,20180,20282,20351,21050,21496,21490,21987,22235,22763,22987,22985,23039,23376,23629,24066,24107,24535,24605,25351,25903,23388,26031,26045,26088,26525,27490,27515,27663,29509,31049,31169,31992,32025,32043,32930,33026,33267,35222,35422,35433,35430,35468,35566,36039,36060,38604,39164,27503,20107,20284,20365,20816,23383,23546,24904,25345,26178,27425,28363,27835,29246,29885,30164,30913,31034,32780,32819,33258,33940,36766,27728,40575,24335,35672,40235,31482,36600,23437,38635,19971,21489,22519,22833,23241,23460,24713,28287,28422,30142,36074,23455,34048,31712,20594,26612,33437,23649,34122,32286,33294,20889,23556,25448,36198,26012,29038,31038,32023,32773,35613,36554,36974,34503,37034,20511,21242,23610,26451,28796,29237,37196,37320,37675,33509,23490,24369,24825,20027,21462,23432,25163,26417,27530,29417,29664,31278,33131,36259,37202,39318,20754,21463,21610,23551,25480,27193,32172,38656,22234,21454,21608,23447,23601,24030,20462,24833,25342,27954,31168,31179,32066,32333,32722,33261,33311,33936,34886,35186,35728,36468,36655,36913,37195,37228,38598,37276,20160,20303,20805,21313,24467,25102,26580,27713,28171,29539,32294,37325,37507,21460,22809,23487,28113,31069,32302,31899,22654,29087,20986,34899,36848,20426,23803,26149,30636,31459,33308,39423,20934,24490,26092,26991,27529,28147,28310,28516,30462,32020,24033,36981,37255,38918,20966,21021,25152,26257,26329,28186,24246,32210,32626,26360,34223,34295,35576,21161,21465,22899,24207,24464,24661,37604,38500,20663,20767,21213,21280,21319,21484,21736,21830,21809,22039,22888,22974,23100,23477,23558,23567,23569,23578,24196,24202,24288,24432,25215,25220,25307,25484,25463,26119,26124,26157,26230,26494,26786,27167,27189,27836,28040,28169,28248,28988,28966,29031,30151,30465,30813,30977,31077,31216,31456,31505,31911,32057,32918,33750,33931,34121,34909,35059,35359,35388,35412,35443,35937,36062,37284,37478,37758,37912,38556,38808,19978,19976,19998,20055,20887,21104,22478,22580,22732,23330,24120,24773,25854,26465,26454,27972,29366,30067,31331,33976,35698,37304,37664,22065,22516,39166,25325,26893,27542,29165,32340,32887,33394,35302,39135,34645,36785,23611,20280,20449,20405,21767,23072,23517,23529,24515,24910,25391,26032,26187,26862,27035,28024,28145,30003,30137,30495,31070,31206,32051,33251,33455,34218,35242,35386,36523,36763,36914,37341,38663,20154,20161,20995,22645,22764,23563,29978,23613,33102,35338,36805,38499,38765,31525,35535,38920,37218,22259,21416,36887,21561,22402,24101,25512,27700,28810,30561,31883,32736,34928,36930,37204,37648,37656,38543,29790,39620,23815,23913,25968,26530,36264,38619,25454,26441,26905,33733,38935,38592,35070,28548,25722,23544,19990,28716,30045,26159,20932,21046,21218,22995,24449,24615,25104,25919,25972,26143,26228,26866,26646,27491,28165,29298,29983,30427,31934,32854,22768,35069,35199,35488,35475,35531,36893,37266,38738,38745,25993,31246,33030,38587,24109,24796,25114,26021,26132,26512,30707,31309,31821,32318,33034,36012,36196,36321,36447,30889,20999,25305,25509,25666,25240,35373,31363,31680,35500,38634,32118,33292,34633,20185,20808,21315,21344,23459,23554,23574,24029,25126,25159,25776,26643,26676,27849,27973,27927,26579,28508,29006,29053,26059,31359,31661,32218,32330,32680,33146,33307,33337,34214,35438,36046,36341,36984,36983,37549,37521,38275,39854,21069,21892,28472,28982,20840,31109,32341,33203,31950,22092,22609,23720,25514,26366,26365,26970,29401,30095,30094,30990,31062,31199,31895,32032,32068,34311,35380,38459,36961,40736,20711,21109,21452,21474,20489,21930,22766,22863,29245,23435,23652,21277,24803,24819,25436,25475,25407,25531,25805,26089,26361,24035,27085,27133,28437,29157,20105,30185,30456,31379,31967,32207,32156,32865,33609,33624,33900,33980,34299,35013,36208,36865,36973,37783,38684,39442,20687,22679,24974,33235,34101,36104,36896,20419,20596,21063,21363,24687,25417,26463,28204,36275,36895,20439,23646,36042,26063,32154,21330,34966,20854,25539,23384,23403,23562,25613,26449,36956,20182,22810,22826,27760,35409,21822,22549,22949,24816,25171,26561,33333,26965,38464,39364,39464,20307,22534,23550,32784,23729,24111,24453,24608,24907,25140,26367,27888,28382,32974,33151,33492,34955,36024,36864,36910,38538,40667,39899,20195,21488,22823,31532,37261,38988,40441,28381,28711,21331,21828,23429,25176,25246,25299,27810,28655,29730,35351,37944,28609,35582,33592,20967,34552,21482,21481,20294,36948,36784,22890,33073,24061,31466,36799,26842,35895,29432,40008,27197,35504,20025,21336,22022,22374,25285,25506,26086,27470,28129,28251,28845,30701,31471,31658,32187,32829,32966,34507,35477,37723,22243,22727,24382,26029,26262,27264,27573,30007,35527,20516,30693,22320,24347,24677,26234,27744,30196,31258,32622,33268,34584,36933,39347,31689,30044,31481,31569,33988,36880,31209,31378,33590,23265,30528,20013,20210,23449,24544,25277,26172,26609,27880,34411,34935,35387,37198,37619,39376,27159,28710,29482,33511,33879,36015,19969,20806,20939,21899,23541,24086,24115,24193,24340,24373,24427,24500,25074,25361,26274,26397,28526,29266,30010,30522,32884,33081,33144,34678,35519,35548,36229,36339,37530,38263,38914,40165,21189,25431,30452,26389,27784,29645,36035,37806,38515,27941,22684,26894,27084,36861,37786,30171,36890,22618,26626,25524,27131,20291,28460,26584,36795,34086,32180,37716,26943,28528,22378,22775,23340,32044,29226,21514,37347,40372,20141,20302,20572,20597,21059,35998,21576,22564,23450,24093,24213,24237,24311,24351,24716,25269,25402,25552,26799,27712,30855,31118,31243,32224,33351,35330,35558,36420,36883,37048,37165,37336,40718,27877,25688,25826,25973,28404,30340,31515,36969,37841,28346,21746,24505,25764,36685,36845,37444,20856,22635,22825,23637,24215,28155,32399,29980,36028,36578,39003,28857,20253,27583,28593,30000,38651,20814,21520,22581,22615,22956,23648,24466,26007,26460,28193,30331,33759,36077,36884,37117,37709,30757,30778,21162,24230,22303,22900,24594,20498,20826,20908,20941,20992,21776,22612,22616,22871,23445,23798,23947,24764,25237,25645,26481,26691,26812,26847,30423,28120,28271,28059,28783,29128,24403,30168,31095,31561,31572,31570,31958,32113,21040,33891,34153,34276,35342,35588,35910,36367,36867,36879,37913,38518,38957,39472,38360,20685,21205,21516,22530,23566,24999,25758,27934,30643,31461,33012,33796,36947,37509,23776,40199,21311,24471,24499,28060,29305,30563,31167,31716,27602,29420,35501,26627,27233,20984,31361,26932,23626,40182,33515,23493,37193,28702,22136,23663,24775,25958,27788,35930,36929,38931,21585,26311,37389,22856,37027,20869,20045,20970,34201,35598,28760,25466,37707,26978,39348,32260,30071,21335,26976,36575,38627,27741,20108,23612,24336,36841,21250,36049,32905,34425,24319,26085,20083,20837,22914,23615,38894,20219,22922,24525,35469,28641,31152,31074,23527,33905,29483,29105,24180,24565,25467,25754,29123,31896,20035,24316,20043,22492,22178,24745,28611,32013,33021,33075,33215,36786,35223,34468,24052,25226,25773,35207,26487,27874,27966,29750,30772,23110,32629,33453,39340,20467,24259,25309,25490,25943,26479,30403,29260,32972,32954,36649,37197,20493,22521,23186,26757,26995,29028,29437,36023,22770,36064,38506,36889,34687,31204,30695,33833,20271,21093,21338,25293,26575,27850,30333,31636,31893,33334,34180,36843,26333,28448,29190,32283,33707,39361,40614,20989,31665,30834,31672,32903,31560,27368,24161,32908,30033,30048,20843,37474,28300,30330,37271,39658,20240,32624,25244,31567,38309,40169,22138,22617,34532,38588,20276,21028,21322,21453,21467,24070,25644,26001,26495,27710,27726,29256,29359,29677,30036,32321,33324,34281,36009,31684,37318,29033,38930,39151,25405,26217,30058,30436,30928,34115,34542,21290,21329,21542,22915,24199,24444,24754,25161,25209,25259,26000,27604,27852,30130,30382,30865,31192,32203,32631,32933,34987,35513,36027,36991,38750,39131,27147,31800,20633,23614,24494,26503,27608,29749,30473,32654,40763,26570,31255,21305,30091,39661,24422,33181,33777,32920,24380,24517,30050,31558,36924,26727,23019,23195,32016,30334,35628,20469,24426,27161,27703,28418,29922,31080,34920,35413,35961,24287,25551,30149,31186,33495,37672,37618,33948,34541,39981,21697,24428,25996,27996,28693,36007,36051,38971,25935,29942,19981,20184,22496,22827,23142,23500,20904,24067,24220,24598,25206,25975,26023,26222,28014,29238,31526,33104,33178,33433,35676,36000,36070,36212,38428,38468,20398,25771,27494,33310,33889,34154,37096,23553,26963,39080,33914,34135,20239,21103,24489,24133,26381,31119,33145,35079,35206,28149,24343,25173,27832,20175,29289,39826,20998,21563,22132,22707,24996,25198,28954,22894,31881,31966,32027,38640,25991,32862,19993,20341,20853,22592,24163,24179,24330,26564,20006,34109,38281,38491,31859,38913,20731,22721,30294,30887,21029,30629,34065,31622,20559,22793,29255,31687,32232,36794,36820,36941,20415,21193,23081,24321,38829,20445,33303,37610,22275,25429,27497,29995,35036,36628,31298,21215,22675,24917,25098,26286,27597,31807,33769,20515,20472,21253,21574,22577,22857,23453,23792,23791,23849,24214,25265,25447,25918,26041,26379,27861,27873,28921,30770,32299,32990,33459,33804,34028,34562,35090,35370,35914,37030,37586,39165,40179,40300,20047,20129,20621,21078,22346,22952,24125,24536,24537,25151,26292,26395,26576,26834,20882,32033,32938,33192,35584,35980,36031,37502,38450,21536,38956,21271,20693,21340,22696,25778,26420,29287,30566,31302,37350,21187,27809,27526,22528,24140,22868,26412,32763,20961,30406,25705,30952,39764,40635,22475,22969,26151,26522,27598,21737,27097,24149,33180,26517,39850,26622,40018,26717,20134,20451,21448,25273,26411,27819,36804,20397,32365,40639,19975,24930,28288,28459,34067,21619,26410,39749,24051,31637,23724,23494,34588,28234,34001,31252,33032,22937,31885,27665,30496,21209,22818,28961,29279,30683,38695,40289,26891,23167,23064,20901,21517,21629,26126,30431,36855,37528,40180,23018,29277,28357,20813,26825,32191,32236,38754,40634,25720,27169,33538,22916,23391,27611,29467,30450,32178,32791,33945,20786,26408,40665,30446,26466,21247,39173,23588,25147,31870,36016,21839,24758,32011,38272,21249,20063,20918,22812,29242,32822,37326,24357,30690,21380,24441,32004,34220,35379,36493,38742,26611,34222,37971,24841,24840,27833,30290,35565,36664,21807,20305,20778,21191,21451,23461,24189,24736,24962,25558,26377,26586,28263,28044,29494,29495,30001,31056,35029,35480,36938,37009,37109,38596,34701,22805,20104,20313,19982,35465,36671,38928,20653,24188,22934,23481,24248,25562,25594,25793,26332,26954,27096,27915,28342,29076,29992,31407,32650,32768,33865,33993,35201,35617,36362,36965,38525,39178,24958,25233,27442,27779,28020,32716,32764,28096,32645,34746,35064,26469,33713,38972,38647,27931,32097,33853,37226,20081,21365,23888,27396,28651,34253,34349,35239,21033,21519,23653,26446,26792,29702,29827,30178,35023,35041,37324,38626,38520,24459,29575,31435,33870,25504,30053,21129,27969,28316,29705,30041,30827,31890,38534,31452,40845,20406,24942,26053,34396,20102,20142,20698,20001,20940,23534,26009,26753,28092,29471,30274,30637,31260,31975,33391,35538,36988,37327,38517,38936,21147,32209,20523,21400,26519,28107,29136,29747,33256,36650,38563,40023,40607,29792,22593,28057,32047,39006,20196,20278,20363,20919,21169,23994,24604,29618,31036,33491,37428,38583,38646,38666,40599,40802,26278,27508,21015,21155,28872,35010,24265,24651,24976,28451,29001,31806,32244,32879,34030,36899,37676,21570,39791,27347,28809,36034,36335,38706,21172,23105,24266,24324,26391,27004,27028,28010,28431,29282,29436,31725,32769,32894,34635,37070,20845,40595,31108,32907,37682,35542,20525,21644,35441,27498,36036,33031,24785,26528,40434,20121,20120,39952,35435,34241,34152,26880,28286,30871,33109,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,24332,19984,19989,20010,20017,20022,20028,20031,20034,20054,20056,20098,20101,35947,20106,33298,24333,20110,20126,20127,20128,20130,20144,20147,20150,20174,20173,20164,20166,20162,20183,20190,20205,20191,20215,20233,20314,20272,20315,20317,20311,20295,20342,20360,20367,20376,20347,20329,20336,20369,20335,20358,20374,20760,20436,20447,20430,20440,20443,20433,20442,20432,20452,20453,20506,20520,20500,20522,20517,20485,20252,20470,20513,20521,20524,20478,20463,20497,20486,20547,20551,26371,20565,20560,20552,20570,20566,20588,20600,20608,20634,20613,20660,20658,20681,20682,20659,20674,20694,20702,20709,20717,20707,20718,20729,20725,20745,20737,20738,20758,20757,20756,20762,20769,20794,20791,20796,20795,20799,20800,20818,20812,20820,20834,31480,20841,20842,20846,20864,20866,22232,20876,20873,20879,20881,20883,20885,20886,20900,20902,20898,20905,20906,20907,20915,20913,20914,20912,20917,20925,20933,20937,20955,20960,34389,20969,20973,20976,20981,20990,20996,21003,21012,21006,21031,21034,21038,21043,21049,21071,21060,21067,21068,21086,21076,21098,21108,21097,21107,21119,21117,21133,21140,21138,21105,21128,21137,36776,36775,21164,21165,21180,21173,21185,21197,21207,21214,21219,21222,39149,21216,21235,21237,21240,21241,21254,21256,30008,21261,21264,21263,21269,21274,21283,21295,21297,21299,21304,21312,21318,21317,19991,21321,21325,20950,21342,21353,21358,22808,21371,21367,21378,21398,21408,21414,21413,21422,21424,21430,21443,31762,38617,21471,26364,29166,21486,21480,21485,21498,21505,21565,21568,21548,21549,21564,21550,21558,21545,21533,21582,21647,21621,21646,21599,21617,21623,21616,21650,21627,21632,21622,21636,21648,21638,21703,21666,21688,21669,21676,21700,21704,21672,21675,21698,21668,21694,21692,21720,21733,21734,21775,21780,21757,21742,21741,21754,21730,21817,21824,21859,21836,21806,21852,21829,21846,21847,21816,21811,21853,21913,21888,21679,21898,21919,21883,21886,21912,21918,21934,21884,21891,21929,21895,21928,21978,21957,21983,21956,21980,21988,21972,22036,22007,22038,22014,22013,22043,22009,22094,22096,29151,22068,22070,22066,22072,22123,22116,22063,22124,22122,22150,22144,22154,22176,22164,22159,22181,22190,22198,22196,22210,22204,22209,22211,22208,22216,22222,22225,22227,22231,22254,22265,22272,22271,22276,22281,22280,22283,22285,22291,22296,22294,21959,22300,22310,22327,22328,22350,22331,22336,22351,22377,22464,22408,22369,22399,22409,22419,22432,22451,22436,22442,22448,22467,22470,22484,22482,22483,22538,22486,22499,22539,22553,22557,22642,22561,22626,22603,22640,27584,22610,22589,22649,22661,22713,22687,22699,22714,22750,22715,22712,22702,22725,22739,22737,22743,22745,22744,22757,22748,22756,22751,22767,22778,22777,22779,22780,22781,22786,22794,22800,22811,26790,22821,22828,22829,22834,22840,22846,31442,22869,22864,22862,22874,22872,22882,22880,22887,22892,22889,22904,22913,22941,20318,20395,22947,22962,22982,23016,23004,22925,23001,23002,23077,23071,23057,23068,23049,23066,23104,23148,23113,23093,23094,23138,23146,23194,23228,23230,23243,23234,23229,23267,23255,23270,23273,23254,23290,23291,23308,23307,23318,23346,23248,23338,23350,23358,23363,23365,23360,23377,23381,23386,23387,23397,23401,23408,23411,23413,23416,25992,23418,23424,23427,23462,23480,23491,23495,23497,23508,23504,23524,23526,23522,23518,23525,23531,23536,23542,23539,23557,23559,23560,23565,23571,23584,23586,23592,23608,23609,23617,23622,23630,23635,23632,23631,23409,23660,23662,20066,23670,23673,23692,23697,23700,22939,23723,23739,23734,23740,23735,23749,23742,23751,23769,23785,23805,23802,23789,23948,23786,23819,23829,23831,23900,23839,23835,23825,23828,23842,23834,23833,23832,23884,23890,23886,23883,23916,23923,23926,23943,23940,23938,23970,23965,23980,23982,23997,23952,23991,23996,24009,24013,24019,24018,24022,24027,24043,24050,24053,24075,24090,24089,24081,24091,24118,24119,24132,24131,24128,24142,24151,24148,24159,24162,24164,24135,24181,24182,24186,40636,24191,24224,24257,24258,24264,24272,24271,24278,24291,24285,24282,24283,24290,24289,24296,24297,24300,24305,24307,24304,24308,24312,24318,24323,24329,24413,24412,24331,24337,24342,24361,24365,24376,24385,24392,24396,24398,24367,24401,24406,24407,24409,24417,24429,24435,24439,24451,24450,24447,24458,24456,24465,24455,24478,24473,24472,24480,24488,24493,24508,24534,24571,24548,24568,24561,24541,24755,24575,24609,24672,24601,24592,24617,24590,24625,24603,24597,24619,24614,24591,24634,24666,24641,24682,24695,24671,24650,24646,24653,24675,24643,24676,24642,24684,24683,24665,24705,24717,24807,24707,24730,24708,24731,24726,24727,24722,24743,24715,24801,24760,24800,24787,24756,24560,24765,24774,24757,24792,24909,24853,24838,24822,24823,24832,24820,24826,24835,24865,24827,24817,24845,24846,24903,24894,24872,24871,24906,24895,24892,24876,24884,24893,24898,24900,24947,24951,24920,24921,24922,24939,24948,24943,24933,24945,24927,24925,24915,24949,24985,24982,24967,25004,24980,24986,24970,24977,25003,25006,25036,25034,25033,25079,25032,25027,25030,25018,25035,32633,25037,25062,25059,25078,25082,25076,25087,25085,25084,25086,25088,25096,25097,25101,25100,25108,25115,25118,25121,25130,25134,25136,25138,25139,25153,25166,25182,25187,25179,25184,25192,25212,25218,25225,25214,25234,25235,25238,25300,25219,25236,25303,25297,25275,25295,25343,25286,25812,25288,25308,25292,25290,25282,25287,25243,25289,25356,25326,25329,25383,25346,25352,25327,25333,25424,25406,25421,25628,25423,25494,25486,25472,25515,25462,25507,25487,25481,25503,25525,25451,25449,25534,25577,25536,25542,25571,25545,25554,25590,25540,25622,25652,25606,25619,25638,25654,25885,25623,25640,25615,25703,25711,25718,25678,25898,25749,25747,25765,25769,25736,25788,25818,25810,25797,25799,25787,25816,25794,25841,25831,33289,25824,25825,25260,25827,25839,25900,25846,25844,25842,25850,25856,25853,25880,25884,25861,25892,25891,25899,25908,25909,25911,25910,25912,30027,25928,25942,25941,25933,25944,25950,25949,25970,25976,25986,25987,35722,26011,26015,26027,26039,26051,26054,26049,26052,26060,26066,26075,26073,26080,26081,26097,26482,26122,26115,26107,26483,26165,26166,26164,26140,26191,26180,26185,26177,26206,26205,26212,26215,26216,26207,26210,26224,26243,26248,26254,26249,26244,26264,26269,26305,26297,26313,26302,26300,26308,26296,26326,26330,26336,26175,26342,26345,26352,26357,26359,26383,26390,26398,26406,26407,38712,26414,26431,26422,26433,26424,26423,26438,26462,26464,26457,26467,26468,26505,26480,26537,26492,26474,26508,26507,26534,26529,26501,26551,26607,26548,26604,26547,26601,26552,26596,26590,26589,26594,26606,26553,26574,26566,26599,27292,26654,26694,26665,26688,26701,26674,26702,26803,26667,26713,26723,26743,26751,26783,26767,26797,26772,26781,26779,26755,27310,26809,26740,26805,26784,26810,26895,26765,26750,26881,26826,26888,26840,26914,26918,26849,26892,26829,26836,26855,26837,26934,26898,26884,26839,26851,26917,26873,26848,26863,26920,26922,26906,26915,26913,26822,27001,26999,26972,27000,26987,26964,27006,26990,26937,26996,26941,26969,26928,26977,26974,26973,27009,26986,27058,27054,27088,27071,27073,27091,27070,27086,23528,27082,27101,27067,27075,27047,27182,27025,27040,27036,27029,27060,27102,27112,27138,27163,27135,27402,27129,27122,27111,27141,27057,27166,27117,27156,27115,27146,27154,27329,27171,27155,27204,27148,27250,27190,27256,27207,27234,27225,27238,27208,27192,27170,27280,27277,27296,27268,27298,27299,27287,34327,27323,27331,27330,27320,27315,27308,27358,27345,27359,27306,27354,27370,27387,27397,34326,27386,27410,27414,39729,27423,27448,27447,30428,27449,39150,27463,27459,27465,27472,27481,27476,27483,27487,27489,27512,27513,27519,27520,27524,27523,27533,27544,27541,27550,27556,27562,27563,27567,27570,27569,27571,27575,27580,27590,27595,27603,27615,27628,27627,27635,27631,40638,27656,27667,27668,27675,27684,27683,27742,27733,27746,27754,27778,27789,27802,27777,27803,27774,27752,27763,27794,27792,27844,27889,27859,27837,27863,27845,27869,27822,27825,27838,27834,27867,27887,27865,27882,27935,34893,27958,27947,27965,27960,27929,27957,27955,27922,27916,28003,28051,28004,27994,28025,27993,28046,28053,28644,28037,28153,28181,28170,28085,28103,28134,28088,28102,28140,28126,28108,28136,28114,28101,28154,28121,28132,28117,28138,28142,28205,28270,28206,28185,28274,28255,28222,28195,28267,28203,28278,28237,28191,28227,28218,28238,28196,28415,28189,28216,28290,28330,28312,28361,28343,28371,28349,28335,28356,28338,28372,28373,28303,28325,28354,28319,28481,28433,28748,28396,28408,28414,28479,28402,28465,28399,28466,28364,28478,28435,28407,28550,28538,28536,28545,28544,28527,28507,28659,28525,28546,28540,28504,28558,28561,28610,28518,28595,28579,28577,28580,28601,28614,28586,28639,28629,28652,28628,28632,28657,28654,28635,28681,28683,28666,28689,28673,28687,28670,28699,28698,28532,28701,28696,28703,28720,28734,28722,28753,28771,28825,28818,28847,28913,28844,28856,28851,28846,28895,28875,28893,28889,28937,28925,28956,28953,29029,29013,29064,29030,29026,29004,29014,29036,29071,29179,29060,29077,29096,29100,29143,29113,29118,29138,29129,29140,29134,29152,29164,29159,29173,29180,29177,29183,29197,29200,29211,29224,29229,29228,29232,29234,29243,29244,29247,29248,29254,29259,29272,29300,29310,29314,29313,29319,29330,29334,29346,29351,29369,29362,29379,29382,29380,29390,29394,29410,29408,29409,29433,29431,20495,29463,29450,29468,29462,29469,29492,29487,29481,29477,29502,29518,29519,40664,29527,29546,29544,29552,29560,29557,29563,29562,29640,29619,29646,29627,29632,29669,29678,29662,29858,29701,29807,29733,29688,29746,29754,29781,29759,29791,29785,29761,29788,29801,29808,29795,29802,29814,29822,29835,29854,29863,29898,29903,29908,29681,29920,29923,29927,29929,29934,29938,29936,29937,29944,29943,29956,29955,29957,29964,29966,29965,29973,29971,29982,29990,29996,30012,30020,30029,30026,30025,30043,30022,30042,30057,30052,30055,30059,30061,30072,30070,30086,30087,30068,30090,30089,30082,30100,30106,30109,30117,30115,30146,30131,30147,30133,30141,30136,30140,30129,30157,30154,30162,30169,30179,30174,30206,30207,30204,30209,30192,30202,30194,30195,30219,30221,30217,30239,30247,30240,30241,30242,30244,30260,30256,30267,30279,30280,30278,30300,30296,30305,30306,30312,30313,30314,30311,30316,30320,30322,30326,30328,30332,30336,30339,30344,30347,30350,30358,30355,30361,30362,30384,30388,30392,30393,30394,30402,30413,30422,30418,30430,30433,30437,30439,30442,34351,30459,30472,30471,30468,30505,30500,30494,30501,30502,30491,30519,30520,30535,30554,30568,30571,30555,30565,30591,30590,30585,30606,30603,30609,30624,30622,30640,30646,30649,30655,30652,30653,30651,30663,30669,30679,30682,30684,30691,30702,30716,30732,30738,31014,30752,31018,30789,30862,30836,30854,30844,30874,30860,30883,30901,30890,30895,30929,30918,30923,30932,30910,30908,30917,30922,30956,30951,30938,30973,30964,30983,30994,30993,31001,31020,31019,31040,31072,31063,31071,31066,31061,31059,31098,31103,31114,31133,31143,40779,31146,31150,31155,31161,31162,31177,31189,31207,31212,31201,31203,31240,31245,31256,31257,31264,31263,31104,31281,31291,31294,31287,31299,31319,31305,31329,31330,31337,40861,31344,31353,31357,31368,31383,31381,31384,31382,31401,31432,31408,31414,31429,31428,31423,36995,31431,31434,31437,31439,31445,31443,31449,31450,31453,31457,31458,31462,31469,31472,31490,31503,31498,31494,31539,31512,31513,31518,31541,31528,31542,31568,31610,31492,31565,31499,31564,31557,31605,31589,31604,31591,31600,31601,31596,31598,31645,31640,31647,31629,31644,31642,31627,31634,31631,31581,31641,31691,31681,31692,31695,31668,31686,31709,31721,31761,31764,31718,31717,31840,31744,31751,31763,31731,31735,31767,31757,31734,31779,31783,31786,31775,31799,31787,31805,31820,31811,31828,31823,31808,31824,31832,31839,31844,31830,31845,31852,31861,31875,31888,31908,31917,31906,31915,31905,31912,31923,31922,31921,31918,31929,31933,31936,31941,31938,31960,31954,31964,31970,39739,31983,31986,31988,31990,31994,32006,32002,32028,32021,32010,32069,32075,32046,32050,32063,32053,32070,32115,32086,32078,32114,32104,32110,32079,32099,32147,32137,32091,32143,32125,32155,32186,32174,32163,32181,32199,32189,32171,32317,32162,32175,32220,32184,32159,32176,32216,32221,32228,32222,32251,32242,32225,32261,32266,32291,32289,32274,32305,32287,32265,32267,32290,32326,32358,32315,32309,32313,32323,32311,32306,32314,32359,32349,32342,32350,32345,32346,32377,32362,32361,32380,32379,32387,32213,32381,36782,32383,32392,32393,32396,32402,32400,32403,32404,32406,32398,32411,32412,32568,32570,32581,32588,32589,32590,32592,32593,32597,32596,32600,32607,32608,32616,32617,32615,32632,32642,32646,32643,32648,32647,32652,32660,32670,32669,32666,32675,32687,32690,32697,32686,32694,32696,35697,32709,32710,32714,32725,32724,32737,32742,32745,32755,32761,39132,32774,32772,32779,32786,32792,32793,32796,32801,32808,32831,32827,32842,32838,32850,32856,32858,32863,32866,32872,32883,32882,32880,32886,32889,32893,32895,32900,32902,32901,32923,32915,32922,32941,20880,32940,32987,32997,32985,32989,32964,32986,32982,33033,33007,33009,33051,33065,33059,33071,33099,38539,33094,33086,33107,33105,33020,33137,33134,33125,33126,33140,33155,33160,33162,33152,33154,33184,33173,33188,33187,33119,33171,33193,33200,33205,33214,33208,33213,33216,33218,33210,33225,33229,33233,33241,33240,33224,33242,33247,33248,33255,33274,33275,33278,33281,33282,33285,33287,33290,33293,33296,33302,33321,33323,33336,33331,33344,33369,33368,33373,33370,33375,33380,33378,33384,33386,33387,33326,33393,33399,33400,33406,33421,33426,33451,33439,33467,33452,33505,33507,33503,33490,33524,33523,33530,33683,33539,33531,33529,33502,33542,33500,33545,33497,33589,33588,33558,33586,33585,33600,33593,33616,33605,33583,33579,33559,33560,33669,33690,33706,33695,33698,33686,33571,33678,33671,33674,33660,33717,33651,33653,33696,33673,33704,33780,33811,33771,33742,33789,33795,33752,33803,33729,33783,33799,33760,33778,33805,33826,33824,33725,33848,34054,33787,33901,33834,33852,34138,33924,33911,33899,33965,33902,33922,33897,33862,33836,33903,33913,33845,33994,33890,33977,33983,33951,34009,33997,33979,34010,34000,33985,33990,34006,33953,34081,34047,34036,34071,34072,34092,34079,34069,34068,34044,34112,34147,34136,34120,34113,34306,34123,34133,34176,34212,34184,34193,34186,34216,34157,34196,34203,34282,34183,34204,34167,34174,34192,34249,34234,34255,34233,34256,34261,34269,34277,34268,34297,34314,34323,34315,34302,34298,34310,34338,34330,34352,34367,34381,20053,34388,34399,34407,34417,34451,34467,34473,34474,34443,34444,34486,34479,34500,34502,34480,34505,34851,34475,34516,34526,34537,34540,34527,34523,34543,34578,34566,34568,34560,34563,34555,34577,34569,34573,34553,34570,34612,34623,34615,34619,34597,34601,34586,34656,34655,34680,34636,34638,34676,34647,34664,34670,34649,34643,34659,34666,34821,34722,34719,34690,34735,34763,34749,34752,34768,38614,34731,34756,34739,34759,34758,34747,34799,34802,34784,34831,34829,34814,34806,34807,34830,34770,34833,34838,34837,34850,34849,34865,34870,34873,34855,34875,34884,34882,34898,34905,34910,34914,34923,34945,34942,34974,34933,34941,34997,34930,34946,34967,34962,34990,34969,34978,34957,34980,34992,35007,34993,35011,35012,35028,35032,35033,35037,35065,35074,35068,35060,35048,35058,35076,35084,35082,35091,35139,35102,35109,35114,35115,35137,35140,35131,35126,35128,35148,35101,35168,35166,35174,35172,35181,35178,35183,35188,35191,35198,35203,35208,35210,35219,35224,35233,35241,35238,35244,35247,35250,35258,35261,35263,35264,35290,35292,35293,35303,35316,35320,35331,35350,35344,35340,35355,35357,35365,35382,35393,35419,35410,35398,35400,35452,35437,35436,35426,35461,35458,35460,35496,35489,35473,35493,35494,35482,35491,35524,35533,35522,35546,35563,35571,35559,35556,35569,35604,35552,35554,35575,35550,35547,35596,35591,35610,35553,35606,35600,35607,35616,35635,38827,35622,35627,35646,35624,35649,35660,35663,35662,35657,35670,35675,35674,35691,35679,35692,35695,35700,35709,35712,35724,35726,35730,35731,35734,35737,35738,35898,35905,35903,35912,35916,35918,35920,35925,35938,35948,35960,35962,35970,35977,35973,35978,35981,35982,35988,35964,35992,25117,36013,36010,36029,36018,36019,36014,36022,36040,36033,36068,36067,36058,36093,36090,36091,36100,36101,36106,36103,36111,36109,36112,40782,36115,36045,36116,36118,36199,36205,36209,36211,36225,36249,36290,36286,36282,36303,36314,36310,36300,36315,36299,36330,36331,36319,36323,36348,36360,36361,36351,36381,36382,36368,36383,36418,36405,36400,36404,36426,36423,36425,36428,36432,36424,36441,36452,36448,36394,36451,36437,36470,36466,36476,36481,36487,36485,36484,36491,36490,36499,36497,36500,36505,36522,36513,36524,36528,36550,36529,36542,36549,36552,36555,36571,36579,36604,36603,36587,36606,36618,36613,36629,36626,36633,36627,36636,36639,36635,36620,36646,36659,36667,36665,36677,36674,36670,36684,36681,36678,36686,36695,36700,36706,36707,36708,36764,36767,36771,36781,36783,36791,36826,36837,36834,36842,36847,36999,36852,36869,36857,36858,36881,36885,36897,36877,36894,36886,36875,36903,36918,36917,36921,36856,36943,36944,36945,36946,36878,36937,36926,36950,36952,36958,36968,36975,36982,38568,36978,36994,36989,36993,36992,37002,37001,37007,37032,37039,37041,37045,37090,37092,25160,37083,37122,37138,37145,37170,37168,37194,37206,37208,37219,37221,37225,37235,37234,37259,37257,37250,37282,37291,37295,37290,37301,37300,37306,37312,37313,37321,37323,37328,37334,37343,37345,37339,37372,37365,37366,37406,37375,37396,37420,37397,37393,37470,37463,37445,37449,37476,37448,37525,37439,37451,37456,37532,37526,37523,37531,37466,37583,37561,37559,37609,37647,37626,37700,37678,37657,37666,37658,37667,37690,37685,37691,37724,37728,37756,37742,37718,37808,37804,37805,37780,37817,37846,37847,37864,37861,37848,37827,37853,37840,37832,37860,37914,37908,37907,37891,37895,37904,37942,37931,37941,37921,37946,37953,37970,37956,37979,37984,37986,37982,37994,37417,38000,38005,38007,38013,37978,38012,38014,38017,38015,38274,38279,38282,38292,38294,38296,38297,38304,38312,38311,38317,38332,38331,38329,38334,38346,28662,38339,38349,38348,38357,38356,38358,38364,38369,38373,38370,38433,38440,38446,38447,38466,38476,38479,38475,38519,38492,38494,38493,38495,38502,38514,38508,38541,38552,38549,38551,38570,38567,38577,38578,38576,38580,38582,38584,38585,38606,38603,38601,38605,35149,38620,38669,38613,38649,38660,38662,38664,38675,38670,38673,38671,38678,38681,38692,38698,38704,38713,38717,38718,38724,38726,38728,38722,38729,38748,38752,38756,38758,38760,21202,38763,38769,38777,38789,38780,38785,38778,38790,38795,38799,38800,38812,38824,38822,38819,38835,38836,38851,38854,38856,38859,38876,38893,40783,38898,31455,38902,38901,38927,38924,38968,38948,38945,38967,38973,38982,38991,38987,39019,39023,39024,39025,39028,39027,39082,39087,39089,39094,39108,39107,39110,39145,39147,39171,39177,39186,39188,39192,39201,39197,39198,39204,39200,39212,39214,39229,39230,39234,39241,39237,39248,39243,39249,39250,39244,39253,39319,39320,39333,39341,39342,39356,39391,39387,39389,39384,39377,39405,39406,39409,39410,39419,39416,39425,39439,39429,39394,39449,39467,39479,39493,39490,39488,39491,39486,39509,39501,39515,39511,39519,39522,39525,39524,39529,39531,39530,39597,39600,39612,39616,39631,39633,39635,39636,39646,39647,39650,39651,39654,39663,39659,39662,39668,39665,39671,39675,39686,39704,39706,39711,39714,39715,39717,39719,39720,39721,39722,39726,39727,39730,39748,39747,39759,39757,39758,39761,39768,39796,39827,39811,39825,39830,39831,39839,39840,39848,39860,39872,39882,39865,39878,39887,39889,39890,39907,39906,39908,39892,39905,39994,39922,39921,39920,39957,39956,39945,39955,39948,39942,39944,39954,39946,39940,39982,39963,39973,39972,39969,39984,40007,39986,40006,39998,40026,40032,40039,40054,40056,40167,40172,40176,40201,40200,40171,40195,40198,40234,40230,40367,40227,40223,40260,40213,40210,40257,40255,40254,40262,40264,40285,40286,40292,40273,40272,40281,40306,40329,40327,40363,40303,40314,40346,40356,40361,40370,40388,40385,40379,40376,40378,40390,40399,40386,40409,40403,40440,40422,40429,40431,40445,40474,40475,40478,40565,40569,40573,40577,40584,40587,40588,40594,40597,40593,40605,40613,40617,40632,40618,40621,38753,40652,40654,40655,40656,40660,40668,40670,40669,40672,40677,40680,40687,40692,40694,40695,40697,40699,40700,40701,40711,40712,30391,40725,40737,40748,40766,40778,40786,40788,40803,40799,40800,40801,40806,40807,40812,40810,40823,40818,40822,40853,40860,40864,22575,27079,36953,29796,20956,29081,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32394,35100,37704,37512,34012,20425,28859,26161,26824,37625,26363,24389,20008,20193,20220,20224,20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,20510,20550,20592,20546,20628,20724,20696,20810,20836,20893,20926,20972,21013,21148,21158,21184,21211,21248,21255,21284,21362,21395,21426,21469,64014,21660,21642,21673,21759,21894,22361,22373,22444,22472,22471,64015,64016,22686,22706,22795,22867,22875,22877,22883,22948,22970,23382,23488,29999,23512,23532,23582,23718,23738,23797,23847,23891,64017,23874,23917,23992,23993,24016,24353,24372,24423,24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,24880,24984,25107,25254,25589,25696,25757,25806,25934,26112,26133,26171,26121,26158,26142,26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,26382,63785,26470,26555,26706,26560,26625,26692,26831,64019,26984,64020,27032,27106,27184,27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,27866,27908,28039,28015,28054,28076,28111,28152,28146,28156,28217,28252,28199,28220,28351,28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,28998,28999,64021,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,29667,29650,29703,29685,29734,29738,29737,29742,29794,29833,29855,29953,30063,30338,30364,30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,64024,64025,64026,31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,32092,32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,33864,33972,34131,34137,34155,64031,34224,64032,64033,34823,35061,35346,35383,35449,35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,64035,36559,64036,64037,36967,37086,64038,37141,37159,37338,37335,37342,37357,37358,37348,37349,37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,37479,37543,37495,37496,37607,37591,37593,37584,64039,37589,37600,37587,37669,37665,37627,64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,37937,37957,37960,38290,63964,64041,38557,38575,38707,38715,38723,38733,38735,38737,38741,38999,39013,64042,64043,39207,64044,39326,39502,39641,39644,39797,39794,39823,39857,39867,39936,40304,40299,64045,40473,40657,null,null,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,65506,65508,65287,65282,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,65506,65508,65287,65282,12849,8470,8481,8757,32394,35100,37704,37512,34012,20425,28859,26161,26824,37625,26363,24389,20008,20193,20220,20224,20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,20510,20550,20592,20546,20628,20724,20696,20810,20836,20893,20926,20972,21013,21148,21158,21184,21211,21248,21255,21284,21362,21395,21426,21469,64014,21660,21642,21673,21759,21894,22361,22373,22444,22472,22471,64015,64016,22686,22706,22795,22867,22875,22877,22883,22948,22970,23382,23488,29999,23512,23532,23582,23718,23738,23797,23847,23891,64017,23874,23917,23992,23993,24016,24353,24372,24423,24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,24880,24984,25107,25254,25589,25696,25757,25806,25934,26112,26133,26171,26121,26158,26142,26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,26382,63785,26470,26555,26706,26560,26625,26692,26831,64019,26984,64020,27032,27106,27184,27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,27866,27908,28039,28015,28054,28076,28111,28152,28146,28156,28217,28252,28199,28220,28351,28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,28998,28999,64021,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,29667,29650,29703,29685,29734,29738,29737,29742,29794,29833,29855,29953,30063,30338,30364,30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,64024,64025,64026,31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,32092,32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,33864,33972,34131,34137,34155,64031,34224,64032,64033,34823,35061,35346,35383,35449,35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,64035,36559,64036,64037,36967,37086,64038,37141,37159,37338,37335,37342,37357,37358,37348,37349,37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,37479,37543,37495,37496,37607,37591,37593,37584,64039,37589,37600,37587,37669,37665,37627,64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,37937,37957,37960,38290,63964,64041,38557,38575,38707,38715,38723,38733,38735,38737,38741,38999,39013,64042,64043,39207,64044,39326,39502,39641,39644,39797,39794,39823,39857,39867,39936,40304,40299,64045,40473,40657,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],
-  "jis0212":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,728,711,184,729,733,175,731,730,65374,900,901,null,null,null,null,null,null,null,null,161,166,191,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,186,170,169,174,8482,164,8470,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,902,904,905,906,938,null,908,null,910,939,null,911,null,null,null,null,940,941,942,943,970,912,972,962,973,971,944,974,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1038,1039,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1118,1119,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,198,272,null,294,null,306,null,321,319,null,330,216,338,null,358,222,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,230,273,240,295,305,307,312,322,320,329,331,248,339,223,359,254,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,193,192,196,194,258,461,256,260,197,195,262,264,268,199,266,270,201,200,203,202,282,278,274,280,null,284,286,290,288,292,205,204,207,206,463,304,298,302,296,308,310,313,317,315,323,327,325,209,211,210,214,212,465,336,332,213,340,344,342,346,348,352,350,356,354,218,217,220,219,364,467,368,362,370,366,360,471,475,473,469,372,221,376,374,377,381,379,null,null,null,null,null,null,null,225,224,228,226,259,462,257,261,229,227,263,265,269,231,267,271,233,232,235,234,283,279,275,281,501,285,287,null,289,293,237,236,239,238,464,null,299,303,297,309,311,314,318,316,324,328,326,241,243,242,246,244,466,337,333,245,341,345,343,347,349,353,351,357,355,250,249,252,251,365,468,369,363,371,367,361,472,476,474,470,373,253,255,375,378,382,380,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,19970,19972,19973,19980,19986,19999,20003,20004,20008,20011,20014,20015,20016,20021,20032,20033,20036,20039,20049,20058,20060,20067,20072,20073,20084,20085,20089,20095,20109,20118,20119,20125,20143,20153,20163,20176,20186,20187,20192,20193,20194,20200,20207,20209,20211,20213,20221,20222,20223,20224,20226,20227,20232,20235,20236,20242,20245,20246,20247,20249,20270,20273,20320,20275,20277,20279,20281,20283,20286,20288,20290,20296,20297,20299,20300,20306,20308,20310,20312,20319,20323,20330,20332,20334,20337,20343,20344,20345,20346,20349,20350,20353,20354,20356,20357,20361,20362,20364,20366,20368,20370,20371,20372,20375,20377,20378,20382,20383,20402,20407,20409,20411,20412,20413,20414,20416,20417,20421,20422,20424,20425,20427,20428,20429,20431,20434,20444,20448,20450,20464,20466,20476,20477,20479,20480,20481,20484,20487,20490,20492,20494,20496,20499,20503,20504,20507,20508,20509,20510,20514,20519,20526,20528,20530,20531,20533,20544,20545,20546,20549,20550,20554,20556,20558,20561,20562,20563,20567,20569,20575,20576,20578,20579,20582,20583,20586,20589,20592,20593,20539,20609,20611,20612,20614,20618,20622,20623,20624,20626,20627,20628,20630,20635,20636,20638,20639,20640,20641,20642,20650,20655,20656,20665,20666,20669,20672,20675,20676,20679,20684,20686,20688,20691,20692,20696,20700,20701,20703,20706,20708,20710,20712,20713,20719,20721,20726,20730,20734,20739,20742,20743,20744,20747,20748,20749,20750,20722,20752,20759,20761,20763,20764,20765,20766,20771,20775,20776,20780,20781,20783,20785,20787,20788,20789,20792,20793,20802,20810,20815,20819,20821,20823,20824,20831,20836,20838,20862,20867,20868,20875,20878,20888,20893,20897,20899,20909,20920,20922,20924,20926,20927,20930,20936,20943,20945,20946,20947,20949,20952,20958,20962,20965,20974,20978,20979,20980,20983,20993,20994,20997,21010,21011,21013,21014,21016,21026,21032,21041,21042,21045,21052,21061,21065,21077,21079,21080,21082,21084,21087,21088,21089,21094,21102,21111,21112,21113,21120,21122,21125,21130,21132,21139,21141,21142,21143,21144,21146,21148,21156,21157,21158,21159,21167,21168,21174,21175,21176,21178,21179,21181,21184,21188,21190,21192,21196,21199,21201,21204,21206,21211,21212,21217,21221,21224,21225,21226,21228,21232,21233,21236,21238,21239,21248,21251,21258,21259,21260,21265,21267,21272,21275,21276,21278,21279,21285,21287,21288,21289,21291,21292,21293,21296,21298,21301,21308,21309,21310,21314,21324,21323,21337,21339,21345,21347,21349,21356,21357,21362,21369,21374,21379,21383,21384,21390,21395,21396,21401,21405,21409,21412,21418,21419,21423,21426,21428,21429,21431,21432,21434,21437,21440,21445,21455,21458,21459,21461,21466,21469,21470,21472,21478,21479,21493,21506,21523,21530,21537,21543,21544,21546,21551,21553,21556,21557,21571,21572,21575,21581,21583,21598,21602,21604,21606,21607,21609,21611,21613,21614,21620,21631,21633,21635,21637,21640,21641,21645,21649,21653,21654,21660,21663,21665,21670,21671,21673,21674,21677,21678,21681,21687,21689,21690,21691,21695,21702,21706,21709,21710,21728,21738,21740,21743,21750,21756,21758,21759,21760,21761,21765,21768,21769,21772,21773,21774,21781,21802,21803,21810,21813,21814,21819,21820,21821,21825,21831,21833,21834,21837,21840,21841,21848,21850,21851,21854,21856,21857,21860,21862,21887,21889,21890,21894,21896,21902,21903,21905,21906,21907,21908,21911,21923,21924,21933,21938,21951,21953,21955,21958,21961,21963,21964,21966,21969,21970,21971,21975,21976,21979,21982,21986,21993,22006,22015,22021,22024,22026,22029,22030,22031,22032,22033,22034,22041,22060,22064,22067,22069,22071,22073,22075,22076,22077,22079,22080,22081,22083,22084,22086,22089,22091,22093,22095,22100,22110,22112,22113,22114,22115,22118,22121,22125,22127,22129,22130,22133,22148,22149,22152,22155,22156,22165,22169,22170,22173,22174,22175,22182,22183,22184,22185,22187,22188,22189,22193,22195,22199,22206,22213,22217,22218,22219,22223,22224,22220,22221,22233,22236,22237,22239,22241,22244,22245,22246,22247,22248,22257,22251,22253,22262,22263,22273,22274,22279,22282,22284,22289,22293,22298,22299,22301,22304,22306,22307,22308,22309,22313,22314,22316,22318,22319,22323,22324,22333,22334,22335,22341,22342,22348,22349,22354,22370,22373,22375,22376,22379,22381,22382,22383,22384,22385,22387,22388,22389,22391,22393,22394,22395,22396,22398,22401,22403,22412,22420,22423,22425,22426,22428,22429,22430,22431,22433,22421,22439,22440,22441,22444,22456,22461,22471,22472,22476,22479,22485,22493,22494,22500,22502,22503,22505,22509,22512,22517,22518,22520,22525,22526,22527,22531,22532,22536,22537,22497,22540,22541,22555,22558,22559,22560,22566,22567,22573,22578,22585,22591,22601,22604,22605,22607,22608,22613,22623,22625,22628,22631,22632,22648,22652,22655,22656,22657,22663,22664,22665,22666,22668,22669,22671,22672,22676,22678,22685,22688,22689,22690,22694,22697,22705,22706,22724,22716,22722,22728,22733,22734,22736,22738,22740,22742,22746,22749,22753,22754,22761,22771,22789,22790,22795,22796,22802,22803,22804,34369,22813,22817,22819,22820,22824,22831,22832,22835,22837,22838,22847,22851,22854,22866,22867,22873,22875,22877,22878,22879,22881,22883,22891,22893,22895,22898,22901,22902,22905,22907,22908,22923,22924,22926,22930,22933,22935,22943,22948,22951,22957,22958,22959,22960,22963,22967,22970,22972,22977,22979,22980,22984,22986,22989,22994,23005,23006,23007,23011,23012,23015,23022,23023,23025,23026,23028,23031,23040,23044,23052,23053,23054,23058,23059,23070,23075,23076,23079,23080,23082,23085,23088,23108,23109,23111,23112,23116,23120,23125,23134,23139,23141,23143,23149,23159,23162,23163,23166,23179,23184,23187,23190,23193,23196,23198,23199,23200,23202,23207,23212,23217,23218,23219,23221,23224,23226,23227,23231,23236,23238,23240,23247,23258,23260,23264,23269,23274,23278,23285,23286,23293,23296,23297,23304,23319,23348,23321,23323,23325,23329,23333,23341,23352,23361,23371,23372,23378,23382,23390,23400,23406,23407,23420,23421,23422,23423,23425,23428,23430,23434,23438,23440,23441,23443,23444,23446,23464,23465,23468,23469,23471,23473,23474,23479,23482,23484,23488,23489,23501,23503,23510,23511,23512,23513,23514,23520,23535,23537,23540,23549,23564,23575,23582,23583,23587,23590,23593,23595,23596,23598,23600,23602,23605,23606,23641,23642,23644,23650,23651,23655,23656,23657,23661,23664,23668,23669,23674,23675,23676,23677,23687,23688,23690,23695,23698,23709,23711,23712,23714,23715,23718,23722,23730,23732,23733,23738,23753,23755,23762,23773,23767,23790,23793,23794,23796,23809,23814,23821,23826,23851,23843,23844,23846,23847,23857,23860,23865,23869,23871,23874,23875,23878,23880,23893,23889,23897,23882,23903,23904,23905,23906,23908,23914,23917,23920,23929,23930,23934,23935,23937,23939,23944,23946,23954,23955,23956,23957,23961,23963,23967,23968,23975,23979,23984,23988,23992,23993,24003,24007,24011,24016,24014,24024,24025,24032,24036,24041,24056,24057,24064,24071,24077,24082,24084,24085,24088,24095,24096,24110,24104,24114,24117,24126,24139,24144,24137,24145,24150,24152,24155,24156,24158,24168,24170,24171,24172,24173,24174,24176,24192,24203,24206,24226,24228,24229,24232,24234,24236,24241,24243,24253,24254,24255,24262,24268,24267,24270,24273,24274,24276,24277,24284,24286,24293,24299,24322,24326,24327,24328,24334,24345,24348,24349,24353,24354,24355,24356,24360,24363,24364,24366,24368,24372,24374,24379,24381,24383,24384,24388,24389,24391,24397,24400,24404,24408,24411,24416,24419,24420,24423,24431,24434,24436,24437,24440,24442,24445,24446,24457,24461,24463,24470,24476,24477,24482,24487,24491,24484,24492,24495,24496,24497,24504,24516,24519,24520,24521,24523,24528,24529,24530,24531,24532,24542,24545,24546,24552,24553,24554,24556,24557,24558,24559,24562,24563,24566,24570,24572,24583,24586,24589,24595,24596,24599,24600,24602,24607,24612,24621,24627,24629,24640,24647,24648,24649,24652,24657,24660,24662,24663,24669,24673,24679,24689,24702,24703,24706,24710,24712,24714,24718,24721,24723,24725,24728,24733,24734,24738,24740,24741,24744,24752,24753,24759,24763,24766,24770,24772,24776,24777,24778,24779,24782,24783,24788,24789,24793,24795,24797,24798,24802,24805,24818,24821,24824,24828,24829,24834,24839,24842,24844,24848,24849,24850,24851,24852,24854,24855,24857,24860,24862,24866,24874,24875,24880,24881,24885,24886,24887,24889,24897,24901,24902,24905,24926,24928,24940,24946,24952,24955,24956,24959,24960,24961,24963,24964,24971,24973,24978,24979,24983,24984,24988,24989,24991,24992,24997,25000,25002,25005,25016,25017,25020,25024,25025,25026,25038,25039,25045,25052,25053,25054,25055,25057,25058,25063,25065,25061,25068,25069,25071,25089,25091,25092,25095,25107,25109,25116,25120,25122,25123,25127,25129,25131,25145,25149,25154,25155,25156,25158,25164,25168,25169,25170,25172,25174,25178,25180,25188,25197,25199,25203,25210,25213,25229,25230,25231,25232,25254,25256,25267,25270,25271,25274,25278,25279,25284,25294,25301,25302,25306,25322,25330,25332,25340,25341,25347,25348,25354,25355,25357,25360,25363,25366,25368,25385,25386,25389,25397,25398,25401,25404,25409,25410,25411,25412,25414,25418,25419,25422,25426,25427,25428,25432,25435,25445,25446,25452,25453,25457,25460,25461,25464,25468,25469,25471,25474,25476,25479,25482,25488,25492,25493,25497,25498,25502,25508,25510,25517,25518,25519,25533,25537,25541,25544,25550,25553,25555,25556,25557,25564,25568,25573,25578,25580,25586,25587,25589,25592,25593,25609,25610,25616,25618,25620,25624,25630,25632,25634,25636,25637,25641,25642,25647,25648,25653,25661,25663,25675,25679,25681,25682,25683,25684,25690,25691,25692,25693,25695,25696,25697,25699,25709,25715,25716,25723,25725,25733,25735,25743,25744,25745,25752,25753,25755,25757,25759,25761,25763,25766,25768,25772,25779,25789,25790,25791,25796,25801,25802,25803,25804,25806,25808,25809,25813,25815,25828,25829,25833,25834,25837,25840,25845,25847,25851,25855,25857,25860,25864,25865,25866,25871,25875,25876,25878,25881,25883,25886,25887,25890,25894,25897,25902,25905,25914,25916,25917,25923,25927,25929,25936,25938,25940,25951,25952,25959,25963,25978,25981,25985,25989,25994,26002,26005,26008,26013,26016,26019,26022,26030,26034,26035,26036,26047,26050,26056,26057,26062,26064,26068,26070,26072,26079,26096,26098,26100,26101,26105,26110,26111,26112,26116,26120,26121,26125,26129,26130,26133,26134,26141,26142,26145,26146,26147,26148,26150,26153,26154,26155,26156,26158,26160,26161,26163,26169,26167,26176,26181,26182,26186,26188,26193,26190,26199,26200,26201,26203,26204,26208,26209,26363,26218,26219,26220,26238,26227,26229,26239,26231,26232,26233,26235,26240,26236,26251,26252,26253,26256,26258,26265,26266,26267,26268,26271,26272,26276,26285,26289,26290,26293,26299,26303,26304,26306,26307,26312,26316,26318,26319,26324,26331,26335,26344,26347,26348,26350,26362,26373,26375,26382,26387,26393,26396,26400,26402,26419,26430,26437,26439,26440,26444,26452,26453,26461,26470,26476,26478,26484,26486,26491,26497,26500,26510,26511,26513,26515,26518,26520,26521,26523,26544,26545,26546,26549,26555,26556,26557,26617,26560,26562,26563,26565,26568,26569,26578,26583,26585,26588,26593,26598,26608,26610,26614,26615,26706,26644,26649,26653,26655,26664,26663,26668,26669,26671,26672,26673,26675,26683,26687,26692,26693,26698,26700,26709,26711,26712,26715,26731,26734,26735,26736,26737,26738,26741,26745,26746,26747,26748,26754,26756,26758,26760,26774,26776,26778,26780,26785,26787,26789,26793,26794,26798,26802,26811,26821,26824,26828,26831,26832,26833,26835,26838,26841,26844,26845,26853,26856,26858,26859,26860,26861,26864,26865,26869,26870,26875,26876,26877,26886,26889,26890,26896,26897,26899,26902,26903,26929,26931,26933,26936,26939,26946,26949,26953,26958,26967,26971,26979,26980,26981,26982,26984,26985,26988,26992,26993,26994,27002,27003,27007,27008,27021,27026,27030,27032,27041,27045,27046,27048,27051,27053,27055,27063,27064,27066,27068,27077,27080,27089,27094,27095,27106,27109,27118,27119,27121,27123,27125,27134,27136,27137,27139,27151,27153,27157,27162,27165,27168,27172,27176,27184,27186,27188,27191,27195,27198,27199,27205,27206,27209,27210,27214,27216,27217,27218,27221,27222,27227,27236,27239,27242,27249,27251,27262,27265,27267,27270,27271,27273,27275,27281,27291,27293,27294,27295,27301,27307,27311,27312,27313,27316,27325,27326,27327,27334,27337,27336,27340,27344,27348,27349,27350,27356,27357,27364,27367,27372,27376,27377,27378,27388,27389,27394,27395,27398,27399,27401,27407,27408,27409,27415,27419,27422,27428,27432,27435,27436,27439,27445,27446,27451,27455,27462,27466,27469,27474,27478,27480,27485,27488,27495,27499,27502,27504,27509,27517,27518,27522,27525,27543,27547,27551,27552,27554,27555,27560,27561,27564,27565,27566,27568,27576,27577,27581,27582,27587,27588,27593,27596,27606,27610,27617,27619,27622,27623,27630,27633,27639,27641,27647,27650,27652,27653,27657,27661,27662,27664,27666,27673,27679,27686,27687,27688,27692,27694,27699,27701,27702,27706,27707,27711,27722,27723,27725,27727,27730,27732,27737,27739,27740,27755,27757,27759,27764,27766,27768,27769,27771,27781,27782,27783,27785,27796,27797,27799,27800,27804,27807,27824,27826,27828,27842,27846,27853,27855,27856,27857,27858,27860,27862,27866,27868,27872,27879,27881,27883,27884,27886,27890,27892,27908,27911,27914,27918,27919,27921,27923,27930,27942,27943,27944,27751,27950,27951,27953,27961,27964,27967,27991,27998,27999,28001,28005,28007,28015,28016,28028,28034,28039,28049,28050,28052,28054,28055,28056,28074,28076,28084,28087,28089,28093,28095,28100,28104,28106,28110,28111,28118,28123,28125,28127,28128,28130,28133,28137,28143,28144,28148,28150,28156,28160,28164,28190,28194,28199,28210,28214,28217,28219,28220,28228,28229,28232,28233,28235,28239,28241,28242,28243,28244,28247,28252,28253,28254,28258,28259,28264,28275,28283,28285,28301,28307,28313,28320,28327,28333,28334,28337,28339,28347,28351,28352,28353,28355,28359,28360,28362,28365,28366,28367,28395,28397,28398,28409,28411,28413,28420,28424,28426,28428,28429,28438,28440,28442,28443,28454,28457,28458,28463,28464,28467,28470,28475,28476,28461,28495,28497,28498,28499,28503,28505,28506,28509,28510,28513,28514,28520,28524,28541,28542,28547,28551,28552,28555,28556,28557,28560,28562,28563,28564,28566,28570,28575,28576,28581,28582,28583,28584,28590,28591,28592,28597,28598,28604,28613,28615,28616,28618,28634,28638,28648,28649,28656,28661,28665,28668,28669,28672,28677,28678,28679,28685,28695,28704,28707,28719,28724,28727,28729,28732,28739,28740,28744,28745,28746,28747,28756,28757,28765,28766,28750,28772,28773,28780,28782,28789,28790,28798,28801,28805,28806,28820,28821,28822,28823,28824,28827,28836,28843,28848,28849,28852,28855,28874,28881,28883,28884,28885,28886,28888,28892,28900,28922,28931,28932,28933,28934,28935,28939,28940,28943,28958,28960,28971,28973,28975,28976,28977,28984,28993,28997,28998,28999,29002,29003,29008,29010,29015,29018,29020,29022,29024,29032,29049,29056,29061,29063,29068,29074,29082,29083,29088,29090,29103,29104,29106,29107,29114,29119,29120,29121,29124,29131,29132,29139,29142,29145,29146,29148,29176,29182,29184,29191,29192,29193,29203,29207,29210,29213,29215,29220,29227,29231,29236,29240,29241,29249,29250,29251,29253,29262,29263,29264,29267,29269,29270,29274,29276,29278,29280,29283,29288,29291,29294,29295,29297,29303,29304,29307,29308,29311,29316,29321,29325,29326,29331,29339,29352,29357,29358,29361,29364,29374,29377,29383,29385,29388,29397,29398,29400,29407,29413,29427,29428,29434,29435,29438,29442,29444,29445,29447,29451,29453,29458,29459,29464,29465,29470,29474,29476,29479,29480,29484,29489,29490,29493,29498,29499,29501,29507,29517,29520,29522,29526,29528,29533,29534,29535,29536,29542,29543,29545,29547,29548,29550,29551,29553,29559,29561,29564,29568,29569,29571,29573,29574,29582,29584,29587,29589,29591,29592,29596,29598,29599,29600,29602,29605,29606,29610,29611,29613,29621,29623,29625,29628,29629,29631,29637,29638,29641,29643,29644,29647,29650,29651,29654,29657,29661,29665,29667,29670,29671,29673,29684,29685,29687,29689,29690,29691,29693,29695,29696,29697,29700,29703,29706,29713,29722,29723,29732,29734,29736,29737,29738,29739,29740,29741,29742,29743,29744,29745,29753,29760,29763,29764,29766,29767,29771,29773,29777,29778,29783,29789,29794,29798,29799,29800,29803,29805,29806,29809,29810,29824,29825,29829,29830,29831,29833,29839,29840,29841,29842,29848,29849,29850,29852,29855,29856,29857,29859,29862,29864,29865,29866,29867,29870,29871,29873,29874,29877,29881,29883,29887,29896,29897,29900,29904,29907,29912,29914,29915,29918,29919,29924,29928,29930,29931,29935,29940,29946,29947,29948,29951,29958,29970,29974,29975,29984,29985,29988,29991,29993,29994,29999,30006,30009,30013,30014,30015,30016,30019,30023,30024,30030,30032,30034,30039,30046,30047,30049,30063,30065,30073,30074,30075,30076,30077,30078,30081,30085,30096,30098,30099,30101,30105,30108,30114,30116,30132,30138,30143,30144,30145,30148,30150,30156,30158,30159,30167,30172,30175,30176,30177,30180,30183,30188,30190,30191,30193,30201,30208,30210,30211,30212,30215,30216,30218,30220,30223,30226,30227,30229,30230,30233,30235,30236,30237,30238,30243,30245,30246,30249,30253,30258,30259,30261,30264,30265,30266,30268,30282,30272,30273,30275,30276,30277,30281,30283,30293,30297,30303,30308,30309,30317,30318,30319,30321,30324,30337,30341,30348,30349,30357,30363,30364,30365,30367,30368,30370,30371,30372,30373,30374,30375,30376,30378,30381,30397,30401,30405,30409,30411,30412,30414,30420,30425,30432,30438,30440,30444,30448,30449,30454,30457,30460,30464,30470,30474,30478,30482,30484,30485,30487,30489,30490,30492,30498,30504,30509,30510,30511,30516,30517,30518,30521,30525,30526,30530,30533,30534,30538,30541,30542,30543,30546,30550,30551,30556,30558,30559,30560,30562,30564,30567,30570,30572,30576,30578,30579,30580,30586,30589,30592,30596,30604,30605,30612,30613,30614,30618,30623,30626,30631,30634,30638,30639,30641,30645,30654,30659,30665,30673,30674,30677,30681,30686,30687,30688,30692,30694,30698,30700,30704,30705,30708,30712,30715,30725,30726,30729,30733,30734,30737,30749,30753,30754,30755,30765,30766,30768,30773,30775,30787,30788,30791,30792,30796,30798,30802,30812,30814,30816,30817,30819,30820,30824,30826,30830,30842,30846,30858,30863,30868,30872,30881,30877,30878,30879,30884,30888,30892,30893,30896,30897,30898,30899,30907,30909,30911,30919,30920,30921,30924,30926,30930,30931,30933,30934,30948,30939,30943,30944,30945,30950,30954,30962,30963,30976,30966,30967,30970,30971,30975,30982,30988,30992,31002,31004,31006,31007,31008,31013,31015,31017,31021,31025,31028,31029,31035,31037,31039,31044,31045,31046,31050,31051,31055,31057,31060,31064,31067,31068,31079,31081,31083,31090,31097,31099,31100,31102,31115,31116,31121,31123,31124,31125,31126,31128,31131,31132,31137,31144,31145,31147,31151,31153,31156,31160,31163,31170,31172,31175,31176,31178,31183,31188,31190,31194,31197,31198,31200,31202,31205,31210,31211,31213,31217,31224,31228,31234,31235,31239,31241,31242,31244,31249,31253,31259,31262,31265,31271,31275,31277,31279,31280,31284,31285,31288,31289,31290,31300,31301,31303,31304,31308,31317,31318,31321,31324,31325,31327,31328,31333,31335,31338,31341,31349,31352,31358,31360,31362,31365,31366,31370,31371,31376,31377,31380,31390,31392,31395,31404,31411,31413,31417,31419,31420,31430,31433,31436,31438,31441,31451,31464,31465,31467,31468,31473,31476,31483,31485,31486,31495,31508,31519,31523,31527,31529,31530,31531,31533,31534,31535,31536,31537,31540,31549,31551,31552,31553,31559,31566,31573,31584,31588,31590,31593,31594,31597,31599,31602,31603,31607,31620,31625,31630,31632,31633,31638,31643,31646,31648,31653,31660,31663,31664,31666,31669,31670,31674,31675,31676,31677,31682,31685,31688,31690,31700,31702,31703,31705,31706,31707,31720,31722,31730,31732,31733,31736,31737,31738,31740,31742,31745,31746,31747,31748,31750,31753,31755,31756,31758,31759,31769,31771,31776,31781,31782,31784,31788,31793,31795,31796,31798,31801,31802,31814,31818,31829,31825,31826,31827,31833,31834,31835,31836,31837,31838,31841,31843,31847,31849,31853,31854,31856,31858,31865,31868,31869,31878,31879,31887,31892,31902,31904,31910,31920,31926,31927,31930,31931,31932,31935,31940,31943,31944,31945,31949,31951,31955,31956,31957,31959,31961,31962,31965,31974,31977,31979,31989,32003,32007,32008,32009,32015,32017,32018,32019,32022,32029,32030,32035,32038,32042,32045,32049,32060,32061,32062,32064,32065,32071,32072,32077,32081,32083,32087,32089,32090,32092,32093,32101,32103,32106,32112,32120,32122,32123,32127,32129,32130,32131,32133,32134,32136,32139,32140,32141,32145,32150,32151,32157,32158,32166,32167,32170,32179,32182,32183,32185,32194,32195,32196,32197,32198,32204,32205,32206,32215,32217,32256,32226,32229,32230,32234,32235,32237,32241,32245,32246,32249,32250,32264,32272,32273,32277,32279,32284,32285,32288,32295,32296,32300,32301,32303,32307,32310,32319,32324,32325,32327,32334,32336,32338,32344,32351,32353,32354,32357,32363,32366,32367,32371,32376,32382,32385,32390,32391,32394,32397,32401,32405,32408,32410,32413,32414,32572,32571,32573,32574,32575,32579,32580,32583,32591,32594,32595,32603,32604,32605,32609,32611,32612,32613,32614,32621,32625,32637,32638,32639,32640,32651,32653,32655,32656,32657,32662,32663,32668,32673,32674,32678,32682,32685,32692,32700,32703,32704,32707,32712,32718,32719,32731,32735,32739,32741,32744,32748,32750,32751,32754,32762,32765,32766,32767,32775,32776,32778,32781,32782,32783,32785,32787,32788,32790,32797,32798,32799,32800,32804,32806,32812,32814,32816,32820,32821,32823,32825,32826,32828,32830,32832,32836,32864,32868,32870,32877,32881,32885,32897,32904,32910,32924,32926,32934,32935,32939,32952,32953,32968,32973,32975,32978,32980,32981,32983,32984,32992,33005,33006,33008,33010,33011,33014,33017,33018,33022,33027,33035,33046,33047,33048,33052,33054,33056,33060,33063,33068,33072,33077,33082,33084,33093,33095,33098,33100,33106,33111,33120,33121,33127,33128,33129,33133,33135,33143,33153,33168,33156,33157,33158,33163,33166,33174,33176,33179,33182,33186,33198,33202,33204,33211,33227,33219,33221,33226,33230,33231,33237,33239,33243,33245,33246,33249,33252,33259,33260,33264,33265,33266,33269,33270,33272,33273,33277,33279,33280,33283,33295,33299,33300,33305,33306,33309,33313,33314,33320,33330,33332,33338,33347,33348,33349,33350,33355,33358,33359,33361,33366,33372,33376,33379,33383,33389,33396,33403,33405,33407,33408,33409,33411,33412,33415,33417,33418,33422,33425,33428,33430,33432,33434,33435,33440,33441,33443,33444,33447,33448,33449,33450,33454,33456,33458,33460,33463,33466,33468,33470,33471,33478,33488,33493,33498,33504,33506,33508,33512,33514,33517,33519,33526,33527,33533,33534,33536,33537,33543,33544,33546,33547,33620,33563,33565,33566,33567,33569,33570,33580,33581,33582,33584,33587,33591,33594,33596,33597,33602,33603,33604,33607,33613,33614,33617,33621,33622,33623,33648,33656,33661,33663,33664,33666,33668,33670,33677,33682,33684,33685,33688,33689,33691,33692,33693,33702,33703,33705,33708,33726,33727,33728,33735,33737,33743,33744,33745,33748,33757,33619,33768,33770,33782,33784,33785,33788,33793,33798,33802,33807,33809,33813,33817,33709,33839,33849,33861,33863,33864,33866,33869,33871,33873,33874,33878,33880,33881,33882,33884,33888,33892,33893,33895,33898,33904,33907,33908,33910,33912,33916,33917,33921,33925,33938,33939,33941,33950,33958,33960,33961,33962,33967,33969,33972,33978,33981,33982,33984,33986,33991,33992,33996,33999,34003,34012,34023,34026,34031,34032,34033,34034,34039,34098,34042,34043,34045,34050,34051,34055,34060,34062,34064,34076,34078,34082,34083,34084,34085,34087,34090,34091,34095,34099,34100,34102,34111,34118,34127,34128,34129,34130,34131,34134,34137,34140,34141,34142,34143,34144,34145,34146,34148,34155,34159,34169,34170,34171,34173,34175,34177,34181,34182,34185,34187,34188,34191,34195,34200,34205,34207,34208,34210,34213,34215,34228,34230,34231,34232,34236,34237,34238,34239,34242,34247,34250,34251,34254,34221,34264,34266,34271,34272,34278,34280,34285,34291,34294,34300,34303,34304,34308,34309,34317,34318,34320,34321,34322,34328,34329,34331,34334,34337,34343,34345,34358,34360,34362,34364,34365,34368,34370,34374,34386,34387,34390,34391,34392,34393,34397,34400,34401,34402,34403,34404,34409,34412,34415,34421,34422,34423,34426,34445,34449,34454,34456,34458,34460,34465,34470,34471,34472,34477,34481,34483,34484,34485,34487,34488,34489,34495,34496,34497,34499,34501,34513,34514,34517,34519,34522,34524,34528,34531,34533,34535,34440,34554,34556,34557,34564,34565,34567,34571,34574,34575,34576,34579,34580,34585,34590,34591,34593,34595,34600,34606,34607,34609,34610,34617,34618,34620,34621,34622,34624,34627,34629,34637,34648,34653,34657,34660,34661,34671,34673,34674,34683,34691,34692,34693,34694,34695,34696,34697,34699,34700,34704,34707,34709,34711,34712,34713,34718,34720,34723,34727,34732,34733,34734,34737,34741,34750,34751,34753,34760,34761,34762,34766,34773,34774,34777,34778,34780,34783,34786,34787,34788,34794,34795,34797,34801,34803,34808,34810,34815,34817,34819,34822,34825,34826,34827,34832,34841,34834,34835,34836,34840,34842,34843,34844,34846,34847,34856,34861,34862,34864,34866,34869,34874,34876,34881,34883,34885,34888,34889,34890,34891,34894,34897,34901,34902,34904,34906,34908,34911,34912,34916,34921,34929,34937,34939,34944,34968,34970,34971,34972,34975,34976,34984,34986,35002,35005,35006,35008,35018,35019,35020,35021,35022,35025,35026,35027,35035,35038,35047,35055,35056,35057,35061,35063,35073,35078,35085,35086,35087,35093,35094,35096,35097,35098,35100,35104,35110,35111,35112,35120,35121,35122,35125,35129,35130,35134,35136,35138,35141,35142,35145,35151,35154,35159,35162,35163,35164,35169,35170,35171,35179,35182,35184,35187,35189,35194,35195,35196,35197,35209,35213,35216,35220,35221,35227,35228,35231,35232,35237,35248,35252,35253,35254,35255,35260,35284,35285,35286,35287,35288,35301,35305,35307,35309,35313,35315,35318,35321,35325,35327,35332,35333,35335,35343,35345,35346,35348,35349,35358,35360,35362,35364,35366,35371,35372,35375,35381,35383,35389,35390,35392,35395,35397,35399,35401,35405,35406,35411,35414,35415,35416,35420,35421,35425,35429,35431,35445,35446,35447,35449,35450,35451,35454,35455,35456,35459,35462,35467,35471,35472,35474,35478,35479,35481,35487,35495,35497,35502,35503,35507,35510,35511,35515,35518,35523,35526,35528,35529,35530,35537,35539,35540,35541,35543,35549,35551,35564,35568,35572,35573,35574,35580,35583,35589,35590,35595,35601,35612,35614,35615,35594,35629,35632,35639,35644,35650,35651,35652,35653,35654,35656,35666,35667,35668,35673,35661,35678,35683,35693,35702,35704,35705,35708,35710,35713,35716,35717,35723,35725,35727,35732,35733,35740,35742,35743,35896,35897,35901,35902,35909,35911,35913,35915,35919,35921,35923,35924,35927,35928,35931,35933,35929,35939,35940,35942,35944,35945,35949,35955,35957,35958,35963,35966,35974,35975,35979,35984,35986,35987,35993,35995,35996,36004,36025,36026,36037,36038,36041,36043,36047,36054,36053,36057,36061,36065,36072,36076,36079,36080,36082,36085,36087,36088,36094,36095,36097,36099,36105,36114,36119,36123,36197,36201,36204,36206,36223,36226,36228,36232,36237,36240,36241,36245,36254,36255,36256,36262,36267,36268,36271,36274,36277,36279,36281,36283,36288,36293,36294,36295,36296,36298,36302,36305,36308,36309,36311,36313,36324,36325,36327,36332,36336,36284,36337,36338,36340,36349,36353,36356,36357,36358,36363,36369,36372,36374,36384,36385,36386,36387,36390,36391,36401,36403,36406,36407,36408,36409,36413,36416,36417,36427,36429,36430,36431,36436,36443,36444,36445,36446,36449,36450,36457,36460,36461,36463,36464,36465,36473,36474,36475,36482,36483,36489,36496,36498,36501,36506,36507,36509,36510,36514,36519,36521,36525,36526,36531,36533,36538,36539,36544,36545,36547,36548,36551,36559,36561,36564,36572,36584,36590,36592,36593,36599,36601,36602,36589,36608,36610,36615,36616,36623,36624,36630,36631,36632,36638,36640,36641,36643,36645,36647,36648,36652,36653,36654,36660,36661,36662,36663,36666,36672,36673,36675,36679,36687,36689,36690,36691,36692,36693,36696,36701,36702,36709,36765,36768,36769,36772,36773,36774,36789,36790,36792,36798,36800,36801,36806,36810,36811,36813,36816,36818,36819,36821,36832,36835,36836,36840,36846,36849,36853,36854,36859,36862,36866,36868,36872,36876,36888,36891,36904,36905,36911,36906,36908,36909,36915,36916,36919,36927,36931,36932,36940,36955,36957,36962,36966,36967,36972,36976,36980,36985,36997,37000,37003,37004,37006,37008,37013,37015,37016,37017,37019,37024,37025,37026,37029,37040,37042,37043,37044,37046,37053,37068,37054,37059,37060,37061,37063,37064,37077,37079,37080,37081,37084,37085,37087,37093,37074,37110,37099,37103,37104,37108,37118,37119,37120,37124,37125,37126,37128,37133,37136,37140,37142,37143,37144,37146,37148,37150,37152,37157,37154,37155,37159,37161,37166,37167,37169,37172,37174,37175,37177,37178,37180,37181,37187,37191,37192,37199,37203,37207,37209,37210,37211,37217,37220,37223,37229,37236,37241,37242,37243,37249,37251,37253,37254,37258,37262,37265,37267,37268,37269,37272,37278,37281,37286,37288,37292,37293,37294,37296,37297,37298,37299,37302,37307,37308,37309,37311,37314,37315,37317,37331,37332,37335,37337,37338,37342,37348,37349,37353,37354,37356,37357,37358,37359,37360,37361,37367,37369,37371,37373,37376,37377,37380,37381,37382,37383,37385,37386,37388,37392,37394,37395,37398,37400,37404,37405,37411,37412,37413,37414,37416,37422,37423,37424,37427,37429,37430,37432,37433,37434,37436,37438,37440,37442,37443,37446,37447,37450,37453,37454,37455,37457,37464,37465,37468,37469,37472,37473,37477,37479,37480,37481,37486,37487,37488,37493,37494,37495,37496,37497,37499,37500,37501,37503,37512,37513,37514,37517,37518,37522,37527,37529,37535,37536,37540,37541,37543,37544,37547,37551,37554,37558,37560,37562,37563,37564,37565,37567,37568,37569,37570,37571,37573,37574,37575,37576,37579,37580,37581,37582,37584,37587,37589,37591,37592,37593,37596,37597,37599,37600,37601,37603,37605,37607,37608,37612,37614,37616,37625,37627,37631,37632,37634,37640,37645,37649,37652,37653,37660,37661,37662,37663,37665,37668,37669,37671,37673,37674,37683,37684,37686,37687,37703,37704,37705,37712,37713,37714,37717,37719,37720,37722,37726,37732,37733,37735,37737,37738,37741,37743,37744,37745,37747,37748,37750,37754,37757,37759,37760,37761,37762,37768,37770,37771,37773,37775,37778,37781,37784,37787,37790,37793,37795,37796,37798,37800,37803,37812,37813,37814,37818,37801,37825,37828,37829,37830,37831,37833,37834,37835,37836,37837,37843,37849,37852,37854,37855,37858,37862,37863,37881,37879,37880,37882,37883,37885,37889,37890,37892,37896,37897,37901,37902,37903,37909,37910,37911,37919,37934,37935,37937,37938,37939,37940,37947,37951,37949,37955,37957,37960,37962,37964,37973,37977,37980,37983,37985,37987,37992,37995,37997,37998,37999,38001,38002,38020,38019,38264,38265,38270,38276,38280,38284,38285,38286,38301,38302,38303,38305,38310,38313,38315,38316,38324,38326,38330,38333,38335,38342,38344,38345,38347,38352,38353,38354,38355,38361,38362,38365,38366,38367,38368,38372,38374,38429,38430,38434,38436,38437,38438,38444,38449,38451,38455,38456,38457,38458,38460,38461,38465,38482,38484,38486,38487,38488,38497,38510,38516,38523,38524,38526,38527,38529,38530,38531,38532,38537,38545,38550,38554,38557,38559,38564,38565,38566,38569,38574,38575,38579,38586,38602,38610,23986,38616,38618,38621,38622,38623,38633,38639,38641,38650,38658,38659,38661,38665,38682,38683,38685,38689,38690,38691,38696,38705,38707,38721,38723,38730,38734,38735,38741,38743,38744,38746,38747,38755,38759,38762,38766,38771,38774,38775,38776,38779,38781,38783,38784,38793,38805,38806,38807,38809,38810,38814,38815,38818,38828,38830,38833,38834,38837,38838,38840,38841,38842,38844,38846,38847,38849,38852,38853,38855,38857,38858,38860,38861,38862,38864,38865,38868,38871,38872,38873,38877,38878,38880,38875,38881,38884,38895,38897,38900,38903,38904,38906,38919,38922,38937,38925,38926,38932,38934,38940,38942,38944,38947,38950,38955,38958,38959,38960,38962,38963,38965,38949,38974,38980,38983,38986,38993,38994,38995,38998,38999,39001,39002,39010,39011,39013,39014,39018,39020,39083,39085,39086,39088,39092,39095,39096,39098,39099,39103,39106,39109,39112,39116,39137,39139,39141,39142,39143,39146,39155,39158,39170,39175,39176,39185,39189,39190,39191,39194,39195,39196,39199,39202,39206,39207,39211,39217,39218,39219,39220,39221,39225,39226,39227,39228,39232,39233,39238,39239,39240,39245,39246,39252,39256,39257,39259,39260,39262,39263,39264,39323,39325,39327,39334,39344,39345,39346,39349,39353,39354,39357,39359,39363,39369,39379,39380,39385,39386,39388,39390,39399,39402,39403,39404,39408,39412,39413,39417,39421,39422,39426,39427,39428,39435,39436,39440,39441,39446,39454,39456,39458,39459,39460,39463,39469,39470,39475,39477,39478,39480,39495,39489,39492,39498,39499,39500,39502,39505,39508,39510,39517,39594,39596,39598,39599,39602,39604,39605,39606,39609,39611,39614,39615,39617,39619,39622,39624,39630,39632,39634,39637,39638,39639,39643,39644,39648,39652,39653,39655,39657,39660,39666,39667,39669,39673,39674,39677,39679,39680,39681,39682,39683,39684,39685,39688,39689,39691,39692,39693,39694,39696,39698,39702,39705,39707,39708,39712,39718,39723,39725,39731,39732,39733,39735,39737,39738,39741,39752,39755,39756,39765,39766,39767,39771,39774,39777,39779,39781,39782,39784,39786,39787,39788,39789,39790,39795,39797,39799,39800,39801,39807,39808,39812,39813,39814,39815,39817,39818,39819,39821,39823,39824,39828,39834,39837,39838,39846,39847,39849,39852,39856,39857,39858,39863,39864,39867,39868,39870,39871,39873,39879,39880,39886,39888,39895,39896,39901,39903,39909,39911,39914,39915,39919,39923,39927,39928,39929,39930,39933,39935,39936,39938,39947,39951,39953,39958,39960,39961,39962,39964,39966,39970,39971,39974,39975,39976,39977,39978,39985,39989,39990,39991,39997,40001,40003,40004,40005,40009,40010,40014,40015,40016,40019,40020,40022,40024,40027,40029,40030,40031,40035,40041,40042,40028,40043,40040,40046,40048,40050,40053,40055,40059,40166,40178,40183,40185,40203,40194,40209,40215,40216,40220,40221,40222,40239,40240,40242,40243,40244,40250,40252,40261,40253,40258,40259,40263,40266,40275,40276,40287,40291,40290,40293,40297,40298,40299,40304,40310,40311,40315,40316,40318,40323,40324,40326,40330,40333,40334,40338,40339,40341,40342,40343,40344,40353,40362,40364,40366,40369,40373,40377,40380,40383,40387,40391,40393,40394,40404,40405,40406,40407,40410,40414,40415,40416,40421,40423,40425,40427,40430,40432,40435,40436,40446,40458,40450,40455,40462,40464,40465,40466,40469,40470,40473,40476,40477,40570,40571,40572,40576,40578,40579,40580,40581,40583,40590,40591,40598,40600,40603,40606,40612,40616,40620,40622,40623,40624,40627,40628,40629,40646,40648,40651,40661,40671,40676,40679,40684,40685,40686,40688,40689,40690,40693,40696,40703,40706,40707,40713,40719,40720,40721,40722,40724,40726,40727,40729,40730,40731,40735,40738,40742,40746,40747,40751,40753,40754,40756,40759,40761,40762,40764,40765,40767,40769,40771,40772,40773,40774,40775,40787,40789,40790,40791,40792,40794,40797,40798,40808,40809,40813,40814,40815,40816,40817,40819,40821,40826,40829,40847,40848,40849,40850,40852,40854,40855,40862,40865,40866,40867,40869,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],
-  "ibm866":[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1025,1105,1028,1108,1031,1111,1038,1118,176,8729,183,8730,8470,164,9632,160],
-  "iso-8859-2":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,728,321,164,317,346,167,168,352,350,356,377,173,381,379,176,261,731,322,180,318,347,711,184,353,351,357,378,733,382,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],
-  "iso-8859-3":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,294,728,163,164,null,292,167,168,304,350,286,308,173,null,379,176,295,178,179,180,181,293,183,184,305,351,287,309,189,null,380,192,193,194,null,196,266,264,199,200,201,202,203,204,205,206,207,null,209,210,211,212,288,214,215,284,217,218,219,220,364,348,223,224,225,226,null,228,267,265,231,232,233,234,235,236,237,238,239,null,241,242,243,244,289,246,247,285,249,250,251,252,365,349,729],
-  "iso-8859-4":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,312,342,164,296,315,167,168,352,274,290,358,173,381,175,176,261,731,343,180,297,316,711,184,353,275,291,359,330,382,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,298,272,325,332,310,212,213,214,215,216,370,218,219,220,360,362,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,299,273,326,333,311,244,245,246,247,248,371,250,251,252,361,363,729],
-  "iso-8859-5":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,173,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,8470,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,167,1118,1119],
-  "iso-8859-6":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,null,null,164,null,null,null,null,null,null,null,1548,173,null,null,null,null,null,null,null,null,null,null,null,null,null,1563,null,null,null,1567,null,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,null,null,null,null,null,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,null,null,null,null,null,null,null,null,null,null,null,null,null],
-  "iso-8859-7":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8216,8217,163,8364,8367,166,167,168,169,890,171,172,173,null,8213,176,177,178,179,900,901,902,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],
-  "iso-8859-8":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,162,163,164,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,8215,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],
-  "iso-8859-10":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,274,290,298,296,310,167,315,272,352,358,381,173,362,330,176,261,275,291,299,297,311,183,316,273,353,359,382,8213,363,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,207,208,325,332,211,212,213,214,360,216,370,218,219,220,221,222,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,239,240,326,333,243,244,245,246,361,248,371,250,251,252,253,254,312],
-  "iso-8859-13":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8221,162,163,164,8222,166,167,216,169,342,171,172,173,174,198,176,177,178,179,8220,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,8217],
-  "iso-8859-14":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7682,7683,163,266,267,7690,167,7808,169,7810,7691,7922,173,174,376,7710,7711,288,289,7744,7745,182,7766,7809,7767,7811,7776,7923,7812,7813,7777,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,372,209,210,211,212,213,214,7786,216,217,218,219,220,221,374,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,373,241,242,243,244,245,246,7787,248,249,250,251,252,253,375,255],
-  "iso-8859-15":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,8364,165,352,167,353,169,170,171,172,173,174,175,176,177,178,179,381,181,182,183,382,185,186,187,338,339,376,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],
-  "iso-8859-16":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,261,321,8364,8222,352,167,353,169,536,171,377,173,378,379,176,177,268,322,381,8221,182,183,382,269,537,187,338,339,376,380,192,193,194,258,196,262,198,199,200,201,202,203,204,205,206,207,272,323,210,211,212,336,214,346,368,217,218,219,220,280,538,223,224,225,226,259,228,263,230,231,232,233,234,235,236,237,238,239,273,324,242,243,244,337,246,347,369,249,250,251,252,281,539,255],
-  "koi8-r":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,1025,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],
-  "koi8-u":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,1108,9556,1110,1111,9559,9560,9561,9562,9563,1169,1118,9566,9567,9568,9569,1025,1028,9571,1030,1031,9574,9575,9576,9577,9578,1168,1038,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],
-  "macintosh":[196,197,199,201,209,214,220,225,224,226,228,227,229,231,233,232,234,235,237,236,238,239,241,243,242,244,246,245,250,249,251,252,8224,176,162,163,167,8226,182,223,174,169,8482,180,168,8800,198,216,8734,177,8804,8805,165,181,8706,8721,8719,960,8747,170,186,937,230,248,191,161,172,8730,402,8776,8710,171,187,8230,160,192,195,213,338,339,8211,8212,8220,8221,8216,8217,247,9674,255,376,8260,8364,8249,8250,64257,64258,8225,183,8218,8222,8240,194,202,193,203,200,205,206,207,204,211,212,63743,210,218,219,217,305,710,732,175,728,729,730,184,733,731,711],
-  "windows-874":[8364,129,130,131,132,8230,134,135,136,137,138,139,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,153,154,155,156,157,158,159,160,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,null,null,null,null,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,null,null,null,null],
-  "windows-1250":[8364,129,8218,131,8222,8230,8224,8225,136,8240,352,8249,346,356,381,377,144,8216,8217,8220,8221,8226,8211,8212,152,8482,353,8250,347,357,382,378,160,711,728,321,164,260,166,167,168,169,350,171,172,173,174,379,176,177,731,322,180,181,182,183,184,261,351,187,317,733,318,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],
-  "windows-1251":[1026,1027,8218,1107,8222,8230,8224,8225,8364,8240,1033,8249,1034,1036,1035,1039,1106,8216,8217,8220,8221,8226,8211,8212,152,8482,1113,8250,1114,1116,1115,1119,160,1038,1118,1032,164,1168,166,167,1025,169,1028,171,172,173,174,1031,176,177,1030,1110,1169,181,182,183,1105,8470,1108,187,1112,1029,1109,1111,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103],
-  "windows-1252":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],
-  "windows-1253":[8364,129,8218,402,8222,8230,8224,8225,136,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,157,158,159,160,901,902,163,164,165,166,167,168,169,null,171,172,173,174,8213,176,177,178,179,900,181,182,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],
-  "windows-1254":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,286,209,210,211,212,213,214,215,216,217,218,219,220,304,350,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,287,241,242,243,244,245,246,247,248,249,250,251,252,305,351,255],
-  "windows-1255":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,156,157,158,159,160,161,162,163,8362,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,191,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1520,1521,1522,1523,1524,null,null,null,null,null,null,null,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],
-  "windows-1256":[8364,1662,8218,402,8222,8230,8224,8225,710,8240,1657,8249,338,1670,1688,1672,1711,8216,8217,8220,8221,8226,8211,8212,1705,8482,1681,8250,339,8204,8205,1722,160,1548,162,163,164,165,166,167,168,169,1726,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,1563,187,188,189,190,1567,1729,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,215,1591,1592,1593,1594,1600,1601,1602,1603,224,1604,226,1605,1606,1607,1608,231,232,233,234,235,1609,1610,238,239,1611,1612,1613,1614,244,1615,1616,247,1617,249,1618,251,252,8206,8207,1746],
-  "windows-1257":[8364,129,8218,131,8222,8230,8224,8225,136,8240,138,8249,140,168,711,184,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,175,731,159,160,null,162,163,164,null,166,167,216,169,342,171,172,173,174,198,176,177,178,179,180,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,729],
-  "windows-1258":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,258,196,197,198,199,200,201,202,203,768,205,206,207,272,209,777,211,212,416,214,215,216,217,218,219,220,431,771,223,224,225,226,259,228,229,230,231,232,233,234,235,769,237,238,239,273,241,803,243,244,417,246,247,248,249,250,251,252,432,8363,255],
-  "x-mac-cyrillic":[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,8224,176,1168,163,167,8226,182,1030,174,169,8482,1026,1106,8800,1027,1107,8734,177,8804,8805,1110,181,1169,1032,1028,1108,1031,1111,1033,1113,1034,1114,1112,1029,172,8730,402,8776,8710,171,187,8230,160,1035,1115,1036,1116,1109,8211,8212,8220,8221,8216,8217,247,8222,1038,1118,1039,1119,8470,1025,1105,1103,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,8364]
-};
-
-// For strict environments where `this` inside the global scope
-// is `undefined`, take a pure object instead
-}(this || {}));
\ No newline at end of file
diff --git a/server/data-import/node_modules/bson/vendor/text-encoding/lib/encoding.js b/server/data-import/node_modules/bson/vendor/text-encoding/lib/encoding.js
deleted file mode 100644
index f01991a8eebadd3de2c0a17849454133d6ffb61b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/vendor/text-encoding/lib/encoding.js
+++ /dev/null
@@ -1,3301 +0,0 @@
-// This is free and unencumbered software released into the public domain.
-// See LICENSE.md for more information.
-
-/**
- * @fileoverview Global |this| required for resolving indexes in node.
- * @suppress {globalThis}
- */
-(function(global) {
-  'use strict';
-
-  //
-  // Utilities
-  //
-
-  /**
-   * @param {number} a The number to test.
-   * @param {number} min The minimum value in the range, inclusive.
-   * @param {number} max The maximum value in the range, inclusive.
-   * @return {boolean} True if a >= min and a <= max.
-   */
-  function inRange(a, min, max) {
-    return min <= a && a <= max;
-  }
-
-  /**
-   * @param {!Array.<*>} array The array to check.
-   * @param {*} item The item to look for in the array.
-   * @return {boolean} True if the item appears in the array.
-   */
-  function includes(array, item) {
-    return array.indexOf(item) !== -1;
-  }
-
-  var floor = Math.floor;
-
-  /**
-   * @param {*} o
-   * @return {Object}
-   */
-  function ToDictionary(o) {
-    if (o === undefined) return {};
-    if (o === Object(o)) return o;
-    throw TypeError('Could not convert argument to dictionary');
-  }
-
-  /**
-   * @param {string} string Input string of UTF-16 code units.
-   * @return {!Array.<number>} Code points.
-   */
-  function stringToCodePoints(string) {
-    // https://heycam.github.io/webidl/#dfn-obtain-unicode
-
-    // 1. Let S be the DOMString value.
-    var s = String(string);
-
-    // 2. Let n be the length of S.
-    var n = s.length;
-
-    // 3. Initialize i to 0.
-    var i = 0;
-
-    // 4. Initialize U to be an empty sequence of Unicode characters.
-    var u = [];
-
-    // 5. While i < n:
-    while (i < n) {
-
-      // 1. Let c be the code unit in S at index i.
-      var c = s.charCodeAt(i);
-
-      // 2. Depending on the value of c:
-
-      // c < 0xD800 or c > 0xDFFF
-      if (c < 0xD800 || c > 0xDFFF) {
-        // Append to U the Unicode character with code point c.
-        u.push(c);
-      }
-
-      // 0xDC00 ≤ c ≤ 0xDFFF
-      else if (0xDC00 <= c && c <= 0xDFFF) {
-        // Append to U a U+FFFD REPLACEMENT CHARACTER.
-        u.push(0xFFFD);
-      }
-
-      // 0xD800 ≤ c ≤ 0xDBFF
-      else if (0xD800 <= c && c <= 0xDBFF) {
-        // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT
-        // CHARACTER.
-        if (i === n - 1) {
-          u.push(0xFFFD);
-        }
-        // 2. Otherwise, i < n−1:
-        else {
-          // 1. Let d be the code unit in S at index i+1.
-          var d = s.charCodeAt(i + 1);
-
-          // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:
-          if (0xDC00 <= d && d <= 0xDFFF) {
-            // 1. Let a be c & 0x3FF.
-            var a = c & 0x3FF;
-
-            // 2. Let b be d & 0x3FF.
-            var b = d & 0x3FF;
-
-            // 3. Append to U the Unicode character with code point
-            // 2^16+2^10*a+b.
-            u.push(0x10000 + (a << 10) + b);
-
-            // 4. Set i to i+1.
-            i += 1;
-          }
-
-          // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a
-          // U+FFFD REPLACEMENT CHARACTER.
-          else  {
-            u.push(0xFFFD);
-          }
-        }
-      }
-
-      // 3. Set i to i+1.
-      i += 1;
-    }
-
-    // 6. Return U.
-    return u;
-  }
-
-  /**
-   * @param {!Array.<number>} code_points Array of code points.
-   * @return {string} string String of UTF-16 code units.
-   */
-  function codePointsToString(code_points) {
-    var s = '';
-    for (var i = 0; i < code_points.length; ++i) {
-      var cp = code_points[i];
-      if (cp <= 0xFFFF) {
-        s += String.fromCharCode(cp);
-      } else {
-        cp -= 0x10000;
-        s += String.fromCharCode((cp >> 10) + 0xD800,
-                                 (cp & 0x3FF) + 0xDC00);
-      }
-    }
-    return s;
-  }
-
-
-  //
-  // Implementation of Encoding specification
-  // https://encoding.spec.whatwg.org/
-  //
-
-  //
-  // 4. Terminology
-  //
-
-  /**
-   * An ASCII byte is a byte in the range 0x00 to 0x7F, inclusive.
-   * @param {number} a The number to test.
-   * @return {boolean} True if a is in the range 0x00 to 0x7F, inclusive.
-   */
-  function isASCIIByte(a) {
-    return 0x00 <= a && a <= 0x7F;
-  }
-
-  /**
-   * An ASCII code point is a code point in the range U+0000 to
-   * U+007F, inclusive.
-   */
-  var isASCIICodePoint = isASCIIByte;
-
-
-  /**
-   * End-of-stream is a special token that signifies no more tokens
-   * are in the stream.
-   * @const
-   */ var end_of_stream = -1;
-
-  /**
-   * A stream represents an ordered sequence of tokens.
-   *
-   * @constructor
-   * @param {!(Array.<number>|Uint8Array)} tokens Array of tokens that provide
-   * the stream.
-   */
-  function Stream(tokens) {
-    /** @type {!Array.<number>} */
-    this.tokens = [].slice.call(tokens);
-    // Reversed as push/pop is more efficient than shift/unshift.
-    this.tokens.reverse();
-  }
-
-  Stream.prototype = {
-    /**
-     * @return {boolean} True if end-of-stream has been hit.
-     */
-    endOfStream: function() {
-      return !this.tokens.length;
-    },
-
-    /**
-     * When a token is read from a stream, the first token in the
-     * stream must be returned and subsequently removed, and
-     * end-of-stream must be returned otherwise.
-     *
-     * @return {number} Get the next token from the stream, or
-     * end_of_stream.
-     */
-     read: function() {
-      if (!this.tokens.length)
-        return end_of_stream;
-       return this.tokens.pop();
-     },
-
-    /**
-     * When one or more tokens are prepended to a stream, those tokens
-     * must be inserted, in given order, before the first token in the
-     * stream.
-     *
-     * @param {(number|!Array.<number>)} token The token(s) to prepend to the
-     * stream.
-     */
-    prepend: function(token) {
-      if (Array.isArray(token)) {
-        var tokens = /**@type {!Array.<number>}*/(token);
-        while (tokens.length)
-          this.tokens.push(tokens.pop());
-      } else {
-        this.tokens.push(token);
-      }
-    },
-
-    /**
-     * When one or more tokens are pushed to a stream, those tokens
-     * must be inserted, in given order, after the last token in the
-     * stream.
-     *
-     * @param {(number|!Array.<number>)} token The tokens(s) to push to the
-     * stream.
-     */
-    push: function(token) {
-      if (Array.isArray(token)) {
-        var tokens = /**@type {!Array.<number>}*/(token);
-        while (tokens.length)
-          this.tokens.unshift(tokens.shift());
-      } else {
-        this.tokens.unshift(token);
-      }
-    }
-  };
-
-  //
-  // 5. Encodings
-  //
-
-  // 5.1 Encoders and decoders
-
-  /** @const */
-  var finished = -1;
-
-  /**
-   * @param {boolean} fatal If true, decoding errors raise an exception.
-   * @param {number=} opt_code_point Override the standard fallback code point.
-   * @return {number} The code point to insert on a decoding error.
-   */
-  function decoderError(fatal, opt_code_point) {
-    if (fatal)
-      throw TypeError('Decoder error');
-    return opt_code_point || 0xFFFD;
-  }
-
-  /**
-   * @param {number} code_point The code point that could not be encoded.
-   * @return {number} Always throws, no value is actually returned.
-   */
-  function encoderError(code_point) {
-    throw TypeError('The code point ' + code_point + ' could not be encoded.');
-  }
-
-  /** @interface */
-  function Decoder() {}
-  Decoder.prototype = {
-    /**
-     * @param {Stream} stream The stream of bytes being decoded.
-     * @param {number} bite The next byte read from the stream.
-     * @return {?(number|!Array.<number>)} The next code point(s)
-     *     decoded, or null if not enough data exists in the input
-     *     stream to decode a complete code point, or |finished|.
-     */
-    handler: function(stream, bite) {}
-  };
-
-  /** @interface */
-  function Encoder() {}
-  Encoder.prototype = {
-    /**
-     * @param {Stream} stream The stream of code points being encoded.
-     * @param {number} code_point Next code point read from the stream.
-     * @return {(number|!Array.<number>)} Byte(s) to emit, or |finished|.
-     */
-    handler: function(stream, code_point) {}
-  };
-
-  // 5.2 Names and labels
-
-  // TODO: Define @typedef for Encoding: {name:string,labels:Array.<string>}
-  // https://github.com/google/closure-compiler/issues/247
-
-  /**
-   * @param {string} label The encoding label.
-   * @return {?{name:string,labels:Array.<string>}}
-   */
-  function getEncoding(label) {
-    // 1. Remove any leading and trailing ASCII whitespace from label.
-    label = String(label).trim().toLowerCase();
-
-    // 2. If label is an ASCII case-insensitive match for any of the
-    // labels listed in the table below, return the corresponding
-    // encoding, and failure otherwise.
-    if (Object.prototype.hasOwnProperty.call(label_to_encoding, label)) {
-      return label_to_encoding[label];
-    }
-    return null;
-  }
-
-  /**
-   * Encodings table: https://encoding.spec.whatwg.org/encodings.json
-   * @const
-   * @type {!Array.<{
-   *          heading: string,
-   *          encodings: Array.<{name:string,labels:Array.<string>}>
-   *        }>}
-   */
-  var encodings = [
-    {
-      "encodings": [
-        {
-          "labels": [
-            "unicode-1-1-utf-8",
-            "utf-8",
-            "utf8"
-          ],
-          "name": "UTF-8"
-        }
-      ],
-      "heading": "The Encoding"
-    },
-    {
-      "encodings": [
-        {
-          "labels": [
-            "866",
-            "cp866",
-            "csibm866",
-            "ibm866"
-          ],
-          "name": "IBM866"
-        },
-        {
-          "labels": [
-            "csisolatin2",
-            "iso-8859-2",
-            "iso-ir-101",
-            "iso8859-2",
-            "iso88592",
-            "iso_8859-2",
-            "iso_8859-2:1987",
-            "l2",
-            "latin2"
-          ],
-          "name": "ISO-8859-2"
-        },
-        {
-          "labels": [
-            "csisolatin3",
-            "iso-8859-3",
-            "iso-ir-109",
-            "iso8859-3",
-            "iso88593",
-            "iso_8859-3",
-            "iso_8859-3:1988",
-            "l3",
-            "latin3"
-          ],
-          "name": "ISO-8859-3"
-        },
-        {
-          "labels": [
-            "csisolatin4",
-            "iso-8859-4",
-            "iso-ir-110",
-            "iso8859-4",
-            "iso88594",
-            "iso_8859-4",
-            "iso_8859-4:1988",
-            "l4",
-            "latin4"
-          ],
-          "name": "ISO-8859-4"
-        },
-        {
-          "labels": [
-            "csisolatincyrillic",
-            "cyrillic",
-            "iso-8859-5",
-            "iso-ir-144",
-            "iso8859-5",
-            "iso88595",
-            "iso_8859-5",
-            "iso_8859-5:1988"
-          ],
-          "name": "ISO-8859-5"
-        },
-        {
-          "labels": [
-            "arabic",
-            "asmo-708",
-            "csiso88596e",
-            "csiso88596i",
-            "csisolatinarabic",
-            "ecma-114",
-            "iso-8859-6",
-            "iso-8859-6-e",
-            "iso-8859-6-i",
-            "iso-ir-127",
-            "iso8859-6",
-            "iso88596",
-            "iso_8859-6",
-            "iso_8859-6:1987"
-          ],
-          "name": "ISO-8859-6"
-        },
-        {
-          "labels": [
-            "csisolatingreek",
-            "ecma-118",
-            "elot_928",
-            "greek",
-            "greek8",
-            "iso-8859-7",
-            "iso-ir-126",
-            "iso8859-7",
-            "iso88597",
-            "iso_8859-7",
-            "iso_8859-7:1987",
-            "sun_eu_greek"
-          ],
-          "name": "ISO-8859-7"
-        },
-        {
-          "labels": [
-            "csiso88598e",
-            "csisolatinhebrew",
-            "hebrew",
-            "iso-8859-8",
-            "iso-8859-8-e",
-            "iso-ir-138",
-            "iso8859-8",
-            "iso88598",
-            "iso_8859-8",
-            "iso_8859-8:1988",
-            "visual"
-          ],
-          "name": "ISO-8859-8"
-        },
-        {
-          "labels": [
-            "csiso88598i",
-            "iso-8859-8-i",
-            "logical"
-          ],
-          "name": "ISO-8859-8-I"
-        },
-        {
-          "labels": [
-            "csisolatin6",
-            "iso-8859-10",
-            "iso-ir-157",
-            "iso8859-10",
-            "iso885910",
-            "l6",
-            "latin6"
-          ],
-          "name": "ISO-8859-10"
-        },
-        {
-          "labels": [
-            "iso-8859-13",
-            "iso8859-13",
-            "iso885913"
-          ],
-          "name": "ISO-8859-13"
-        },
-        {
-          "labels": [
-            "iso-8859-14",
-            "iso8859-14",
-            "iso885914"
-          ],
-          "name": "ISO-8859-14"
-        },
-        {
-          "labels": [
-            "csisolatin9",
-            "iso-8859-15",
-            "iso8859-15",
-            "iso885915",
-            "iso_8859-15",
-            "l9"
-          ],
-          "name": "ISO-8859-15"
-        },
-        {
-          "labels": [
-            "iso-8859-16"
-          ],
-          "name": "ISO-8859-16"
-        },
-        {
-          "labels": [
-            "cskoi8r",
-            "koi",
-            "koi8",
-            "koi8-r",
-            "koi8_r"
-          ],
-          "name": "KOI8-R"
-        },
-        {
-          "labels": [
-            "koi8-ru",
-            "koi8-u"
-          ],
-          "name": "KOI8-U"
-        },
-        {
-          "labels": [
-            "csmacintosh",
-            "mac",
-            "macintosh",
-            "x-mac-roman"
-          ],
-          "name": "macintosh"
-        },
-        {
-          "labels": [
-            "dos-874",
-            "iso-8859-11",
-            "iso8859-11",
-            "iso885911",
-            "tis-620",
-            "windows-874"
-          ],
-          "name": "windows-874"
-        },
-        {
-          "labels": [
-            "cp1250",
-            "windows-1250",
-            "x-cp1250"
-          ],
-          "name": "windows-1250"
-        },
-        {
-          "labels": [
-            "cp1251",
-            "windows-1251",
-            "x-cp1251"
-          ],
-          "name": "windows-1251"
-        },
-        {
-          "labels": [
-            "ansi_x3.4-1968",
-            "ascii",
-            "cp1252",
-            "cp819",
-            "csisolatin1",
-            "ibm819",
-            "iso-8859-1",
-            "iso-ir-100",
-            "iso8859-1",
-            "iso88591",
-            "iso_8859-1",
-            "iso_8859-1:1987",
-            "l1",
-            "latin1",
-            "us-ascii",
-            "windows-1252",
-            "x-cp1252"
-          ],
-          "name": "windows-1252"
-        },
-        {
-          "labels": [
-            "cp1253",
-            "windows-1253",
-            "x-cp1253"
-          ],
-          "name": "windows-1253"
-        },
-        {
-          "labels": [
-            "cp1254",
-            "csisolatin5",
-            "iso-8859-9",
-            "iso-ir-148",
-            "iso8859-9",
-            "iso88599",
-            "iso_8859-9",
-            "iso_8859-9:1989",
-            "l5",
-            "latin5",
-            "windows-1254",
-            "x-cp1254"
-          ],
-          "name": "windows-1254"
-        },
-        {
-          "labels": [
-            "cp1255",
-            "windows-1255",
-            "x-cp1255"
-          ],
-          "name": "windows-1255"
-        },
-        {
-          "labels": [
-            "cp1256",
-            "windows-1256",
-            "x-cp1256"
-          ],
-          "name": "windows-1256"
-        },
-        {
-          "labels": [
-            "cp1257",
-            "windows-1257",
-            "x-cp1257"
-          ],
-          "name": "windows-1257"
-        },
-        {
-          "labels": [
-            "cp1258",
-            "windows-1258",
-            "x-cp1258"
-          ],
-          "name": "windows-1258"
-        },
-        {
-          "labels": [
-            "x-mac-cyrillic",
-            "x-mac-ukrainian"
-          ],
-          "name": "x-mac-cyrillic"
-        }
-      ],
-      "heading": "Legacy single-byte encodings"
-    },
-    {
-      "encodings": [
-        {
-          "labels": [
-            "chinese",
-            "csgb2312",
-            "csiso58gb231280",
-            "gb2312",
-            "gb_2312",
-            "gb_2312-80",
-            "gbk",
-            "iso-ir-58",
-            "x-gbk"
-          ],
-          "name": "GBK"
-        },
-        {
-          "labels": [
-            "gb18030"
-          ],
-          "name": "gb18030"
-        }
-      ],
-      "heading": "Legacy multi-byte Chinese (simplified) encodings"
-    },
-    {
-      "encodings": [
-        {
-          "labels": [
-            "big5",
-            "big5-hkscs",
-            "cn-big5",
-            "csbig5",
-            "x-x-big5"
-          ],
-          "name": "Big5"
-        }
-      ],
-      "heading": "Legacy multi-byte Chinese (traditional) encodings"
-    },
-    {
-      "encodings": [
-        {
-          "labels": [
-            "cseucpkdfmtjapanese",
-            "euc-jp",
-            "x-euc-jp"
-          ],
-          "name": "EUC-JP"
-        },
-        {
-          "labels": [
-            "csiso2022jp",
-            "iso-2022-jp"
-          ],
-          "name": "ISO-2022-JP"
-        },
-        {
-          "labels": [
-            "csshiftjis",
-            "ms932",
-            "ms_kanji",
-            "shift-jis",
-            "shift_jis",
-            "sjis",
-            "windows-31j",
-            "x-sjis"
-          ],
-          "name": "Shift_JIS"
-        }
-      ],
-      "heading": "Legacy multi-byte Japanese encodings"
-    },
-    {
-      "encodings": [
-        {
-          "labels": [
-            "cseuckr",
-            "csksc56011987",
-            "euc-kr",
-            "iso-ir-149",
-            "korean",
-            "ks_c_5601-1987",
-            "ks_c_5601-1989",
-            "ksc5601",
-            "ksc_5601",
-            "windows-949"
-          ],
-          "name": "EUC-KR"
-        }
-      ],
-      "heading": "Legacy multi-byte Korean encodings"
-    },
-    {
-      "encodings": [
-        {
-          "labels": [
-            "csiso2022kr",
-            "hz-gb-2312",
-            "iso-2022-cn",
-            "iso-2022-cn-ext",
-            "iso-2022-kr"
-          ],
-          "name": "replacement"
-        },
-        {
-          "labels": [
-            "utf-16be"
-          ],
-          "name": "UTF-16BE"
-        },
-        {
-          "labels": [
-            "utf-16",
-            "utf-16le"
-          ],
-          "name": "UTF-16LE"
-        },
-        {
-          "labels": [
-            "x-user-defined"
-          ],
-          "name": "x-user-defined"
-        }
-      ],
-      "heading": "Legacy miscellaneous encodings"
-    }
-  ];
-
-  // Label to encoding registry.
-  /** @type {Object.<string,{name:string,labels:Array.<string>}>} */
-  var label_to_encoding = {};
-  encodings.forEach(function(category) {
-    category.encodings.forEach(function(encoding) {
-      encoding.labels.forEach(function(label) {
-        label_to_encoding[label] = encoding;
-      });
-    });
-  });
-
-  // Registry of of encoder/decoder factories, by encoding name.
-  /** @type {Object.<string, function({fatal:boolean}): Encoder>} */
-  var encoders = {};
-  /** @type {Object.<string, function({fatal:boolean}): Decoder>} */
-  var decoders = {};
-
-  //
-  // 6. Indexes
-  //
-
-  /**
-   * @param {number} pointer The |pointer| to search for.
-   * @param {(!Array.<?number>|undefined)} index The |index| to search within.
-   * @return {?number} The code point corresponding to |pointer| in |index|,
-   *     or null if |code point| is not in |index|.
-   */
-  function indexCodePointFor(pointer, index) {
-    if (!index) return null;
-    return index[pointer] || null;
-  }
-
-  /**
-   * @param {number} code_point The |code point| to search for.
-   * @param {!Array.<?number>} index The |index| to search within.
-   * @return {?number} The first pointer corresponding to |code point| in
-   *     |index|, or null if |code point| is not in |index|.
-   */
-  function indexPointerFor(code_point, index) {
-    var pointer = index.indexOf(code_point);
-    return pointer === -1 ? null : pointer;
-  }
-
-  /**
-   * @param {string} name Name of the index.
-   * @return {(!Array.<number>|!Array.<Array.<number>>)}
-   *  */
-  function index(name) {
-    if (!('encoding-indexes' in global)) {
-      throw Error("Indexes missing." +
-                  " Did you forget to include encoding-indexes.js first?");
-    }
-    return global['encoding-indexes'][name];
-  }
-
-  /**
-   * @param {number} pointer The |pointer| to search for in the gb18030 index.
-   * @return {?number} The code point corresponding to |pointer| in |index|,
-   *     or null if |code point| is not in the gb18030 index.
-   */
-  function indexGB18030RangesCodePointFor(pointer) {
-    // 1. If pointer is greater than 39419 and less than 189000, or
-    // pointer is greater than 1237575, return null.
-    if ((pointer > 39419 && pointer < 189000) || (pointer > 1237575))
-      return null;
-
-    // 2. If pointer is 7457, return code point U+E7C7.
-    if (pointer === 7457) return 0xE7C7;
-
-    // 3. Let offset be the last pointer in index gb18030 ranges that
-    // is equal to or less than pointer and let code point offset be
-    // its corresponding code point.
-    var offset = 0;
-    var code_point_offset = 0;
-    var idx = index('gb18030-ranges');
-    var i;
-    for (i = 0; i < idx.length; ++i) {
-      /** @type {!Array.<number>} */
-      var entry = idx[i];
-      if (entry[0] <= pointer) {
-        offset = entry[0];
-        code_point_offset = entry[1];
-      } else {
-        break;
-      }
-    }
-
-    // 4. Return a code point whose value is code point offset +
-    // pointer − offset.
-    return code_point_offset + pointer - offset;
-  }
-
-  /**
-   * @param {number} code_point The |code point| to locate in the gb18030 index.
-   * @return {number} The first pointer corresponding to |code point| in the
-   *     gb18030 index.
-   */
-  function indexGB18030RangesPointerFor(code_point) {
-    // 1. If code point is U+E7C7, return pointer 7457.
-    if (code_point === 0xE7C7) return 7457;
-
-    // 2. Let offset be the last code point in index gb18030 ranges
-    // that is equal to or less than code point and let pointer offset
-    // be its corresponding pointer.
-    var offset = 0;
-    var pointer_offset = 0;
-    var idx = index('gb18030-ranges');
-    var i;
-    for (i = 0; i < idx.length; ++i) {
-      /** @type {!Array.<number>} */
-      var entry = idx[i];
-      if (entry[1] <= code_point) {
-        offset = entry[1];
-        pointer_offset = entry[0];
-      } else {
-        break;
-      }
-    }
-
-    // 3. Return a pointer whose value is pointer offset + code point
-    // − offset.
-    return pointer_offset + code_point - offset;
-  }
-
-  /**
-   * @param {number} code_point The |code_point| to search for in the Shift_JIS
-   *     index.
-   * @return {?number} The code point corresponding to |pointer| in |index|,
-   *     or null if |code point| is not in the Shift_JIS index.
-   */
-  function indexShiftJISPointerFor(code_point) {
-    // 1. Let index be index jis0208 excluding all entries whose
-    // pointer is in the range 8272 to 8835, inclusive.
-    shift_jis_index = shift_jis_index ||
-      index('jis0208').map(function(code_point, pointer) {
-        return inRange(pointer, 8272, 8835) ? null : code_point;
-      });
-    var index_ = shift_jis_index;
-
-    // 2. Return the index pointer for code point in index.
-    return index_.indexOf(code_point);
-  }
-  var shift_jis_index;
-
-  /**
-   * @param {number} code_point The |code_point| to search for in the big5
-   *     index.
-   * @return {?number} The code point corresponding to |pointer| in |index|,
-   *     or null if |code point| is not in the big5 index.
-   */
-  function indexBig5PointerFor(code_point) {
-    // 1. Let index be index Big5 excluding all entries whose pointer
-    big5_index_no_hkscs = big5_index_no_hkscs ||
-      index('big5').map(function(code_point, pointer) {
-        return (pointer < (0xA1 - 0x81) * 157) ? null : code_point;
-      });
-    var index_ = big5_index_no_hkscs;
-
-    // 2. If code point is U+2550, U+255E, U+2561, U+256A, U+5341, or
-    // U+5345, return the last pointer corresponding to code point in
-    // index.
-    if (code_point === 0x2550 || code_point === 0x255E ||
-        code_point === 0x2561 || code_point === 0x256A ||
-        code_point === 0x5341 || code_point === 0x5345) {
-      return index_.lastIndexOf(code_point);
-    }
-
-    // 3. Return the index pointer for code point in index.
-    return indexPointerFor(code_point, index_);
-  }
-  var big5_index_no_hkscs;
-
-  //
-  // 8. API
-  //
-
-  /** @const */ var DEFAULT_ENCODING = 'utf-8';
-
-  // 8.1 Interface TextDecoder
-
-  /**
-   * @constructor
-   * @param {string=} label The label of the encoding;
-   *     defaults to 'utf-8'.
-   * @param {Object=} options
-   */
-  function TextDecoder(label, options) {
-    // Web IDL conventions
-    if (!(this instanceof TextDecoder))
-      throw TypeError('Called as a function. Did you forget \'new\'?');
-    label = label !== undefined ? String(label) : DEFAULT_ENCODING;
-    options = ToDictionary(options);
-
-    // A TextDecoder object has an associated encoding, decoder,
-    // stream, ignore BOM flag (initially unset), BOM seen flag
-    // (initially unset), error mode (initially replacement), and do
-    // not flush flag (initially unset).
-
-    /** @private */
-    this._encoding = null;
-    /** @private @type {?Decoder} */
-    this._decoder = null;
-    /** @private @type {boolean} */
-    this._ignoreBOM = false;
-    /** @private @type {boolean} */
-    this._BOMseen = false;
-    /** @private @type {string} */
-    this._error_mode = 'replacement';
-    /** @private @type {boolean} */
-    this._do_not_flush = false;
-
-
-    // 1. Let encoding be the result of getting an encoding from
-    // label.
-    var encoding = getEncoding(label);
-
-    // 2. If encoding is failure or replacement, throw a RangeError.
-    if (encoding === null || encoding.name === 'replacement')
-      throw RangeError('Unknown encoding: ' + label);
-    if (!decoders[encoding.name]) {
-      throw Error('Decoder not present.' +
-                  ' Did you forget to include encoding-indexes.js first?');
-    }
-
-    // 3. Let dec be a new TextDecoder object.
-    var dec = this;
-
-    // 4. Set dec's encoding to encoding.
-    dec._encoding = encoding;
-
-    // 5. If options's fatal member is true, set dec's error mode to
-    // fatal.
-    if (Boolean(options['fatal']))
-      dec._error_mode = 'fatal';
-
-    // 6. If options's ignoreBOM member is true, set dec's ignore BOM
-    // flag.
-    if (Boolean(options['ignoreBOM']))
-      dec._ignoreBOM = true;
-
-    // For pre-ES5 runtimes:
-    if (!Object.defineProperty) {
-      this.encoding = dec._encoding.name.toLowerCase();
-      this.fatal = dec._error_mode === 'fatal';
-      this.ignoreBOM = dec._ignoreBOM;
-    }
-
-    // 7. Return dec.
-    return dec;
-  }
-
-  if (Object.defineProperty) {
-    // The encoding attribute's getter must return encoding's name.
-    Object.defineProperty(TextDecoder.prototype, 'encoding', {
-      /** @this {TextDecoder} */
-      get: function() { return this._encoding.name.toLowerCase(); }
-    });
-
-    // The fatal attribute's getter must return true if error mode
-    // is fatal, and false otherwise.
-    Object.defineProperty(TextDecoder.prototype, 'fatal', {
-      /** @this {TextDecoder} */
-      get: function() { return this._error_mode === 'fatal'; }
-    });
-
-    // The ignoreBOM attribute's getter must return true if ignore
-    // BOM flag is set, and false otherwise.
-    Object.defineProperty(TextDecoder.prototype, 'ignoreBOM', {
-      /** @this {TextDecoder} */
-      get: function() { return this._ignoreBOM; }
-    });
-  }
-
-  /**
-   * @param {BufferSource=} input The buffer of bytes to decode.
-   * @param {Object=} options
-   * @return {string} The decoded string.
-   */
-  TextDecoder.prototype.decode = function decode(input, options) {
-    var bytes;
-    if (typeof input === 'object' && input instanceof ArrayBuffer) {
-      bytes = new Uint8Array(input);
-    } else if (typeof input === 'object' && 'buffer' in input &&
-               input.buffer instanceof ArrayBuffer) {
-      bytes = new Uint8Array(input.buffer,
-                             input.byteOffset,
-                             input.byteLength);
-    } else {
-      bytes = new Uint8Array(0);
-    }
-
-    options = ToDictionary(options);
-
-    // 1. If the do not flush flag is unset, set decoder to a new
-    // encoding's decoder, set stream to a new stream, and unset the
-    // BOM seen flag.
-    if (!this._do_not_flush) {
-      this._decoder = decoders[this._encoding.name]({
-        fatal: this._error_mode === 'fatal'});
-      this._BOMseen = false;
-    }
-
-    // 2. If options's stream is true, set the do not flush flag, and
-    // unset the do not flush flag otherwise.
-    this._do_not_flush = Boolean(options['stream']);
-
-    // 3. If input is given, push a copy of input to stream.
-    // TODO: Align with spec algorithm - maintain stream on instance.
-    var input_stream = new Stream(bytes);
-
-    // 4. Let output be a new stream.
-    var output = [];
-
-    /** @type {?(number|!Array.<number>)} */
-    var result;
-
-    // 5. While true:
-    while (true) {
-      // 1. Let token be the result of reading from stream.
-      var token = input_stream.read();
-
-      // 2. If token is end-of-stream and the do not flush flag is
-      // set, return output, serialized.
-      // TODO: Align with spec algorithm.
-      if (token === end_of_stream)
-        break;
-
-      // 3. Otherwise, run these subsubsteps:
-
-      // 1. Let result be the result of processing token for decoder,
-      // stream, output, and error mode.
-      result = this._decoder.handler(input_stream, token);
-
-      // 2. If result is finished, return output, serialized.
-      if (result === finished)
-        break;
-
-      if (result !== null) {
-        if (Array.isArray(result))
-          output.push.apply(output, /**@type {!Array.<number>}*/(result));
-        else
-          output.push(result);
-      }
-
-      // 3. Otherwise, if result is error, throw a TypeError.
-      // (Thrown in handler)
-
-      // 4. Otherwise, do nothing.
-    }
-    // TODO: Align with spec algorithm.
-    if (!this._do_not_flush) {
-      do {
-        result = this._decoder.handler(input_stream, input_stream.read());
-        if (result === finished)
-          break;
-        if (result === null)
-          continue;
-        if (Array.isArray(result))
-          output.push.apply(output, /**@type {!Array.<number>}*/(result));
-        else
-          output.push(result);
-      } while (!input_stream.endOfStream());
-      this._decoder = null;
-    }
-
-    // A TextDecoder object also has an associated serialize stream
-    // algorithm...
-    /**
-     * @param {!Array.<number>} stream
-     * @return {string}
-     * @this {TextDecoder}
-     */
-    function serializeStream(stream) {
-      // 1. Let token be the result of reading from stream.
-      // (Done in-place on array, rather than as a stream)
-
-      // 2. If encoding is UTF-8, UTF-16BE, or UTF-16LE, and ignore
-      // BOM flag and BOM seen flag are unset, run these subsubsteps:
-      if (includes(['UTF-8', 'UTF-16LE', 'UTF-16BE'], this._encoding.name) &&
-          !this._ignoreBOM && !this._BOMseen) {
-        if (stream.length > 0 && stream[0] === 0xFEFF) {
-          // 1. If token is U+FEFF, set BOM seen flag.
-          this._BOMseen = true;
-          stream.shift();
-        } else if (stream.length > 0) {
-          // 2. Otherwise, if token is not end-of-stream, set BOM seen
-          // flag and append token to stream.
-          this._BOMseen = true;
-        } else {
-          // 3. Otherwise, if token is not end-of-stream, append token
-          // to output.
-          // (no-op)
-        }
-      }
-      // 4. Otherwise, return output.
-      return codePointsToString(stream);
-    }
-
-    return serializeStream.call(this, output);
-  };
-
-  // 8.2 Interface TextEncoder
-
-  /**
-   * @constructor
-   * @param {string=} label The label of the encoding. NONSTANDARD.
-   * @param {Object=} options NONSTANDARD.
-   */
-  function TextEncoder(label, options) {
-    // Web IDL conventions
-    if (!(this instanceof TextEncoder))
-      throw TypeError('Called as a function. Did you forget \'new\'?');
-    options = ToDictionary(options);
-
-    // A TextEncoder object has an associated encoding and encoder.
-
-    /** @private */
-    this._encoding = null;
-    /** @private @type {?Encoder} */
-    this._encoder = null;
-
-    // Non-standard
-    /** @private @type {boolean} */
-    this._do_not_flush = false;
-    /** @private @type {string} */
-    this._fatal = Boolean(options['fatal']) ? 'fatal' : 'replacement';
-
-    // 1. Let enc be a new TextEncoder object.
-    var enc = this;
-
-    // 2. Set enc's encoding to UTF-8's encoder.
-    if (Boolean(options['NONSTANDARD_allowLegacyEncoding'])) {
-      // NONSTANDARD behavior.
-      label = label !== undefined ? String(label) : DEFAULT_ENCODING;
-      var encoding = getEncoding(label);
-      if (encoding === null || encoding.name === 'replacement')
-        throw RangeError('Unknown encoding: ' + label);
-      if (!encoders[encoding.name]) {
-        throw Error('Encoder not present.' +
-                    ' Did you forget to include encoding-indexes.js first?');
-      }
-      enc._encoding = encoding;
-    } else {
-      // Standard behavior.
-      enc._encoding = getEncoding('utf-8');
-
-      if (label !== undefined && 'console' in global) {
-        console.warn('TextEncoder constructor called with encoding label, '
-                     + 'which is ignored.');
-      }
-    }
-
-    // For pre-ES5 runtimes:
-    if (!Object.defineProperty)
-      this.encoding = enc._encoding.name.toLowerCase();
-
-    // 3. Return enc.
-    return enc;
-  }
-
-  if (Object.defineProperty) {
-    // The encoding attribute's getter must return encoding's name.
-    Object.defineProperty(TextEncoder.prototype, 'encoding', {
-      /** @this {TextEncoder} */
-      get: function() { return this._encoding.name.toLowerCase(); }
-    });
-  }
-
-  /**
-   * @param {string=} opt_string The string to encode.
-   * @param {Object=} options
-   * @return {!Uint8Array} Encoded bytes, as a Uint8Array.
-   */
-  TextEncoder.prototype.encode = function encode(opt_string, options) {
-    opt_string = opt_string === undefined ? '' : String(opt_string);
-    options = ToDictionary(options);
-
-    // NOTE: This option is nonstandard. None of the encodings
-    // permitted for encoding (i.e. UTF-8, UTF-16) are stateful when
-    // the input is a USVString so streaming is not necessary.
-    if (!this._do_not_flush)
-      this._encoder = encoders[this._encoding.name]({
-        fatal: this._fatal === 'fatal'});
-    this._do_not_flush = Boolean(options['stream']);
-
-    // 1. Convert input to a stream.
-    var input = new Stream(stringToCodePoints(opt_string));
-
-    // 2. Let output be a new stream
-    var output = [];
-
-    /** @type {?(number|!Array.<number>)} */
-    var result;
-    // 3. While true, run these substeps:
-    while (true) {
-      // 1. Let token be the result of reading from input.
-      var token = input.read();
-      if (token === end_of_stream)
-        break;
-      // 2. Let result be the result of processing token for encoder,
-      // input, output.
-      result = this._encoder.handler(input, token);
-      if (result === finished)
-        break;
-      if (Array.isArray(result))
-        output.push.apply(output, /**@type {!Array.<number>}*/(result));
-      else
-        output.push(result);
-    }
-    // TODO: Align with spec algorithm.
-    if (!this._do_not_flush) {
-      while (true) {
-        result = this._encoder.handler(input, input.read());
-        if (result === finished)
-          break;
-        if (Array.isArray(result))
-          output.push.apply(output, /**@type {!Array.<number>}*/(result));
-        else
-          output.push(result);
-      }
-      this._encoder = null;
-    }
-    // 3. If result is finished, convert output into a byte sequence,
-    // and then return a Uint8Array object wrapping an ArrayBuffer
-    // containing output.
-    return new Uint8Array(output);
-  };
-
-
-  //
-  // 9. The encoding
-  //
-
-  // 9.1 utf-8
-
-  // 9.1.1 utf-8 decoder
-  /**
-   * @constructor
-   * @implements {Decoder}
-   * @param {{fatal: boolean}} options
-   */
-  function UTF8Decoder(options) {
-    var fatal = options.fatal;
-
-    // utf-8's decoder's has an associated utf-8 code point, utf-8
-    // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8
-    // lower boundary (initially 0x80), and a utf-8 upper boundary
-    // (initially 0xBF).
-    var /** @type {number} */ utf8_code_point = 0,
-        /** @type {number} */ utf8_bytes_seen = 0,
-        /** @type {number} */ utf8_bytes_needed = 0,
-        /** @type {number} */ utf8_lower_boundary = 0x80,
-        /** @type {number} */ utf8_upper_boundary = 0xBF;
-
-    /**
-     * @param {Stream} stream The stream of bytes being decoded.
-     * @param {number} bite The next byte read from the stream.
-     * @return {?(number|!Array.<number>)} The next code point(s)
-     *     decoded, or null if not enough data exists in the input
-     *     stream to decode a complete code point.
-     */
-    this.handler = function(stream, bite) {
-      // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,
-      // set utf-8 bytes needed to 0 and return error.
-      if (bite === end_of_stream && utf8_bytes_needed !== 0) {
-        utf8_bytes_needed = 0;
-        return decoderError(fatal);
-      }
-
-      // 2. If byte is end-of-stream, return finished.
-      if (bite === end_of_stream)
-        return finished;
-
-      // 3. If utf-8 bytes needed is 0, based on byte:
-      if (utf8_bytes_needed === 0) {
-
-        // 0x00 to 0x7F
-        if (inRange(bite, 0x00, 0x7F)) {
-          // Return a code point whose value is byte.
-          return bite;
-        }
-
-        // 0xC2 to 0xDF
-        else if (inRange(bite, 0xC2, 0xDF)) {
-          // 1. Set utf-8 bytes needed to 1.
-          utf8_bytes_needed = 1;
-
-          // 2. Set UTF-8 code point to byte & 0x1F.
-          utf8_code_point = bite & 0x1F;
-        }
-
-        // 0xE0 to 0xEF
-        else if (inRange(bite, 0xE0, 0xEF)) {
-          // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.
-          if (bite === 0xE0)
-            utf8_lower_boundary = 0xA0;
-          // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.
-          if (bite === 0xED)
-            utf8_upper_boundary = 0x9F;
-          // 3. Set utf-8 bytes needed to 2.
-          utf8_bytes_needed = 2;
-          // 4. Set UTF-8 code point to byte & 0xF.
-          utf8_code_point = bite & 0xF;
-        }
-
-        // 0xF0 to 0xF4
-        else if (inRange(bite, 0xF0, 0xF4)) {
-          // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.
-          if (bite === 0xF0)
-            utf8_lower_boundary = 0x90;
-          // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.
-          if (bite === 0xF4)
-            utf8_upper_boundary = 0x8F;
-          // 3. Set utf-8 bytes needed to 3.
-          utf8_bytes_needed = 3;
-          // 4. Set UTF-8 code point to byte & 0x7.
-          utf8_code_point = bite & 0x7;
-        }
-
-        // Otherwise
-        else {
-          // Return error.
-          return decoderError(fatal);
-        }
-
-        // Return continue.
-        return null;
-      }
-
-      // 4. If byte is not in the range utf-8 lower boundary to utf-8
-      // upper boundary, inclusive, run these substeps:
-      if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {
-
-        // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8
-        // bytes seen to 0, set utf-8 lower boundary to 0x80, and set
-        // utf-8 upper boundary to 0xBF.
-        utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;
-        utf8_lower_boundary = 0x80;
-        utf8_upper_boundary = 0xBF;
-
-        // 2. Prepend byte to stream.
-        stream.prepend(bite);
-
-        // 3. Return error.
-        return decoderError(fatal);
-      }
-
-      // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary
-      // to 0xBF.
-      utf8_lower_boundary = 0x80;
-      utf8_upper_boundary = 0xBF;
-
-      // 6. Set UTF-8 code point to (UTF-8 code point << 6) | (byte &
-      // 0x3F)
-      utf8_code_point = (utf8_code_point << 6) | (bite & 0x3F);
-
-      // 7. Increase utf-8 bytes seen by one.
-      utf8_bytes_seen += 1;
-
-      // 8. If utf-8 bytes seen is not equal to utf-8 bytes needed,
-      // continue.
-      if (utf8_bytes_seen !== utf8_bytes_needed)
-        return null;
-
-      // 9. Let code point be utf-8 code point.
-      var code_point = utf8_code_point;
-
-      // 10. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes
-      // seen to 0.
-      utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;
-
-      // 11. Return a code point whose value is code point.
-      return code_point;
-    };
-  }
-
-  // 9.1.2 utf-8 encoder
-  /**
-   * @constructor
-   * @implements {Encoder}
-   * @param {{fatal: boolean}} options
-   */
-  function UTF8Encoder(options) {
-    var fatal = options.fatal;
-    /**
-     * @param {Stream} stream Input stream.
-     * @param {number} code_point Next code point read from the stream.
-     * @return {(number|!Array.<number>)} Byte(s) to emit.
-     */
-    this.handler = function(stream, code_point) {
-      // 1. If code point is end-of-stream, return finished.
-      if (code_point === end_of_stream)
-        return finished;
-
-      // 2. If code point is an ASCII code point, return a byte whose
-      // value is code point.
-      if (isASCIICodePoint(code_point))
-        return code_point;
-
-      // 3. Set count and offset based on the range code point is in:
-      var count, offset;
-      // U+0080 to U+07FF, inclusive:
-      if (inRange(code_point, 0x0080, 0x07FF)) {
-        // 1 and 0xC0
-        count = 1;
-        offset = 0xC0;
-      }
-      // U+0800 to U+FFFF, inclusive:
-      else if (inRange(code_point, 0x0800, 0xFFFF)) {
-        // 2 and 0xE0
-        count = 2;
-        offset = 0xE0;
-      }
-      // U+10000 to U+10FFFF, inclusive:
-      else if (inRange(code_point, 0x10000, 0x10FFFF)) {
-        // 3 and 0xF0
-        count = 3;
-        offset = 0xF0;
-      }
-
-      // 4. Let bytes be a byte sequence whose first byte is (code
-      // point >> (6 × count)) + offset.
-      var bytes = [(code_point >> (6 * count)) + offset];
-
-      // 5. Run these substeps while count is greater than 0:
-      while (count > 0) {
-
-        // 1. Set temp to code point >> (6 × (count − 1)).
-        var temp = code_point >> (6 * (count - 1));
-
-        // 2. Append to bytes 0x80 | (temp & 0x3F).
-        bytes.push(0x80 | (temp & 0x3F));
-
-        // 3. Decrease count by one.
-        count -= 1;
-      }
-
-      // 6. Return bytes bytes, in order.
-      return bytes;
-    };
-  }
-
-  /** @param {{fatal: boolean}} options */
-  encoders['UTF-8'] = function(options) {
-    return new UTF8Encoder(options);
-  };
-  /** @param {{fatal: boolean}} options */
-  decoders['UTF-8'] = function(options) {
-    return new UTF8Decoder(options);
-  };
-
-  //
-  // 10. Legacy single-byte encodings
-  //
-
-  // 10.1 single-byte decoder
-  /**
-   * @constructor
-   * @implements {Decoder}
-   * @param {!Array.<number>} index The encoding index.
-   * @param {{fatal: boolean}} options
-   */
-  function SingleByteDecoder(index, options) {
-    var fatal = options.fatal;
-    /**
-     * @param {Stream} stream The stream of bytes being decoded.
-     * @param {number} bite The next byte read from the stream.
-     * @return {?(number|!Array.<number>)} The next code point(s)
-     *     decoded, or null if not enough data exists in the input
-     *     stream to decode a complete code point.
-     */
-    this.handler = function(stream, bite) {
-      // 1. If byte is end-of-stream, return finished.
-      if (bite === end_of_stream)
-        return finished;
-
-      // 2. If byte is an ASCII byte, return a code point whose value
-      // is byte.
-      if (isASCIIByte(bite))
-        return bite;
-
-      // 3. Let code point be the index code point for byte − 0x80 in
-      // index single-byte.
-      var code_point = index[bite - 0x80];
-
-      // 4. If code point is null, return error.
-      if (code_point === null)
-        return decoderError(fatal);
-
-      // 5. Return a code point whose value is code point.
-      return code_point;
-    };
-  }
-
-  // 10.2 single-byte encoder
-  /**
-   * @constructor
-   * @implements {Encoder}
-   * @param {!Array.<?number>} index The encoding index.
-   * @param {{fatal: boolean}} options
-   */
-  function SingleByteEncoder(index, options) {
-    var fatal = options.fatal;
-    /**
-     * @param {Stream} stream Input stream.
-     * @param {number} code_point Next code point read from the stream.
-     * @return {(number|!Array.<number>)} Byte(s) to emit.
-     */
-    this.handler = function(stream, code_point) {
-      // 1. If code point is end-of-stream, return finished.
-      if (code_point === end_of_stream)
-        return finished;
-
-      // 2. If code point is an ASCII code point, return a byte whose
-      // value is code point.
-      if (isASCIICodePoint(code_point))
-        return code_point;
-
-      // 3. Let pointer be the index pointer for code point in index
-      // single-byte.
-      var pointer = indexPointerFor(code_point, index);
-
-      // 4. If pointer is null, return error with code point.
-      if (pointer === null)
-        encoderError(code_point);
-
-      // 5. Return a byte whose value is pointer + 0x80.
-      return pointer + 0x80;
-    };
-  }
-
-  (function() {
-    if (!('encoding-indexes' in global))
-      return;
-    encodings.forEach(function(category) {
-      if (category.heading !== 'Legacy single-byte encodings')
-        return;
-      category.encodings.forEach(function(encoding) {
-        var name = encoding.name;
-        var idx = index(name.toLowerCase());
-        /** @param {{fatal: boolean}} options */
-        decoders[name] = function(options) {
-          return new SingleByteDecoder(idx, options);
-        };
-        /** @param {{fatal: boolean}} options */
-        encoders[name] = function(options) {
-          return new SingleByteEncoder(idx, options);
-        };
-      });
-    });
-  }());
-
-  //
-  // 11. Legacy multi-byte Chinese (simplified) encodings
-  //
-
-  // 11.1 gbk
-
-  // 11.1.1 gbk decoder
-  // gbk's decoder is gb18030's decoder.
-  /** @param {{fatal: boolean}} options */
-  decoders['GBK'] = function(options) {
-    return new GB18030Decoder(options);
-  };
-
-  // 11.1.2 gbk encoder
-  // gbk's encoder is gb18030's encoder with its gbk flag set.
-  /** @param {{fatal: boolean}} options */
-  encoders['GBK'] = function(options) {
-    return new GB18030Encoder(options, true);
-  };
-
-  // 11.2 gb18030
-
-  // 11.2.1 gb18030 decoder
-  /**
-   * @constructor
-   * @implements {Decoder}
-   * @param {{fatal: boolean}} options
-   */
-  function GB18030Decoder(options) {
-    var fatal = options.fatal;
-    // gb18030's decoder has an associated gb18030 first, gb18030
-    // second, and gb18030 third (all initially 0x00).
-    var /** @type {number} */ gb18030_first = 0x00,
-        /** @type {number} */ gb18030_second = 0x00,
-        /** @type {number} */ gb18030_third = 0x00;
-    /**
-     * @param {Stream} stream The stream of bytes being decoded.
-     * @param {number} bite The next byte read from the stream.
-     * @return {?(number|!Array.<number>)} The next code point(s)
-     *     decoded, or null if not enough data exists in the input
-     *     stream to decode a complete code point.
-     */
-    this.handler = function(stream, bite) {
-      // 1. If byte is end-of-stream and gb18030 first, gb18030
-      // second, and gb18030 third are 0x00, return finished.
-      if (bite === end_of_stream && gb18030_first === 0x00 &&
-          gb18030_second === 0x00 && gb18030_third === 0x00) {
-        return finished;
-      }
-      // 2. If byte is end-of-stream, and gb18030 first, gb18030
-      // second, or gb18030 third is not 0x00, set gb18030 first,
-      // gb18030 second, and gb18030 third to 0x00, and return error.
-      if (bite === end_of_stream &&
-          (gb18030_first !== 0x00 || gb18030_second !== 0x00 ||
-           gb18030_third !== 0x00)) {
-        gb18030_first = 0x00;
-        gb18030_second = 0x00;
-        gb18030_third = 0x00;
-        decoderError(fatal);
-      }
-      var code_point;
-      // 3. If gb18030 third is not 0x00, run these substeps:
-      if (gb18030_third !== 0x00) {
-        // 1. Let code point be null.
-        code_point = null;
-        // 2. If byte is in the range 0x30 to 0x39, inclusive, set
-        // code point to the index gb18030 ranges code point for
-        // (((gb18030 first − 0x81) × 10 + gb18030 second − 0x30) ×
-        // 126 + gb18030 third − 0x81) × 10 + byte − 0x30.
-        if (inRange(bite, 0x30, 0x39)) {
-          code_point = indexGB18030RangesCodePointFor(
-              (((gb18030_first - 0x81) * 10 + gb18030_second - 0x30) * 126 +
-               gb18030_third - 0x81) * 10 + bite - 0x30);
-        }
-
-        // 3. Let buffer be a byte sequence consisting of gb18030
-        // second, gb18030 third, and byte, in order.
-        var buffer = [gb18030_second, gb18030_third, bite];
-
-        // 4. Set gb18030 first, gb18030 second, and gb18030 third to
-        // 0x00.
-        gb18030_first = 0x00;
-        gb18030_second = 0x00;
-        gb18030_third = 0x00;
-
-        // 5. If code point is null, prepend buffer to stream and
-        // return error.
-        if (code_point === null) {
-          stream.prepend(buffer);
-          return decoderError(fatal);
-        }
-
-        // 6. Return a code point whose value is code point.
-        return code_point;
-      }
-
-      // 4. If gb18030 second is not 0x00, run these substeps:
-      if (gb18030_second !== 0x00) {
-
-        // 1. If byte is in the range 0x81 to 0xFE, inclusive, set
-        // gb18030 third to byte and return continue.
-        if (inRange(bite, 0x81, 0xFE)) {
-          gb18030_third = bite;
-          return null;
-        }
-
-        // 2. Prepend gb18030 second followed by byte to stream, set
-        // gb18030 first and gb18030 second to 0x00, and return error.
-        stream.prepend([gb18030_second, bite]);
-        gb18030_first = 0x00;
-        gb18030_second = 0x00;
-        return decoderError(fatal);
-      }
-
-      // 5. If gb18030 first is not 0x00, run these substeps:
-      if (gb18030_first !== 0x00) {
-
-        // 1. If byte is in the range 0x30 to 0x39, inclusive, set
-        // gb18030 second to byte and return continue.
-        if (inRange(bite, 0x30, 0x39)) {
-          gb18030_second = bite;
-          return null;
-        }
-
-        // 2. Let lead be gb18030 first, let pointer be null, and set
-        // gb18030 first to 0x00.
-        var lead = gb18030_first;
-        var pointer = null;
-        gb18030_first = 0x00;
-
-        // 3. Let offset be 0x40 if byte is less than 0x7F and 0x41
-        // otherwise.
-        var offset = bite < 0x7F ? 0x40 : 0x41;
-
-        // 4. If byte is in the range 0x40 to 0x7E, inclusive, or 0x80
-        // to 0xFE, inclusive, set pointer to (lead − 0x81) × 190 +
-        // (byte − offset).
-        if (inRange(bite, 0x40, 0x7E) || inRange(bite, 0x80, 0xFE))
-          pointer = (lead - 0x81) * 190 + (bite - offset);
-
-        // 5. Let code point be null if pointer is null and the index
-        // code point for pointer in index gb18030 otherwise.
-        code_point = pointer === null ? null :
-            indexCodePointFor(pointer, index('gb18030'));
-
-        // 6. If code point is null and byte is an ASCII byte, prepend
-        // byte to stream.
-        if (code_point === null && isASCIIByte(bite))
-          stream.prepend(bite);
-
-        // 7. If code point is null, return error.
-        if (code_point === null)
-          return decoderError(fatal);
-
-        // 8. Return a code point whose value is code point.
-        return code_point;
-      }
-
-      // 6. If byte is an ASCII byte, return a code point whose value
-      // is byte.
-      if (isASCIIByte(bite))
-        return bite;
-
-      // 7. If byte is 0x80, return code point U+20AC.
-      if (bite === 0x80)
-        return 0x20AC;
-
-      // 8. If byte is in the range 0x81 to 0xFE, inclusive, set
-      // gb18030 first to byte and return continue.
-      if (inRange(bite, 0x81, 0xFE)) {
-        gb18030_first = bite;
-        return null;
-      }
-
-      // 9. Return error.
-      return decoderError(fatal);
-    };
-  }
-
-  // 11.2.2 gb18030 encoder
-  /**
-   * @constructor
-   * @implements {Encoder}
-   * @param {{fatal: boolean}} options
-   * @param {boolean=} gbk_flag
-   */
-  function GB18030Encoder(options, gbk_flag) {
-    var fatal = options.fatal;
-    // gb18030's decoder has an associated gbk flag (initially unset).
-    /**
-     * @param {Stream} stream Input stream.
-     * @param {number} code_point Next code point read from the stream.
-     * @return {(number|!Array.<number>)} Byte(s) to emit.
-     */
-    this.handler = function(stream, code_point) {
-      // 1. If code point is end-of-stream, return finished.
-      if (code_point === end_of_stream)
-        return finished;
-
-      // 2. If code point is an ASCII code point, return a byte whose
-      // value is code point.
-      if (isASCIICodePoint(code_point))
-        return code_point;
-
-      // 3. If code point is U+E5E5, return error with code point.
-      if (code_point === 0xE5E5)
-        return encoderError(code_point);
-
-      // 4. If the gbk flag is set and code point is U+20AC, return
-      // byte 0x80.
-      if (gbk_flag && code_point === 0x20AC)
-        return 0x80;
-
-      // 5. Let pointer be the index pointer for code point in index
-      // gb18030.
-      var pointer = indexPointerFor(code_point, index('gb18030'));
-
-      // 6. If pointer is not null, run these substeps:
-      if (pointer !== null) {
-
-        // 1. Let lead be floor(pointer / 190) + 0x81.
-        var lead = floor(pointer / 190) + 0x81;
-
-        // 2. Let trail be pointer % 190.
-        var trail = pointer % 190;
-
-        // 3. Let offset be 0x40 if trail is less than 0x3F and 0x41 otherwise.
-        var offset = trail < 0x3F ? 0x40 : 0x41;
-
-        // 4. Return two bytes whose values are lead and trail + offset.
-        return [lead, trail + offset];
-      }
-
-      // 7. If gbk flag is set, return error with code point.
-      if (gbk_flag)
-        return encoderError(code_point);
-
-      // 8. Set pointer to the index gb18030 ranges pointer for code
-      // point.
-      pointer = indexGB18030RangesPointerFor(code_point);
-
-      // 9. Let byte1 be floor(pointer / 10 / 126 / 10).
-      var byte1 = floor(pointer / 10 / 126 / 10);
-
-      // 10. Set pointer to pointer − byte1 × 10 × 126 × 10.
-      pointer = pointer - byte1 * 10 * 126 * 10;
-
-      // 11. Let byte2 be floor(pointer / 10 / 126).
-      var byte2 = floor(pointer / 10 / 126);
-
-      // 12. Set pointer to pointer − byte2 × 10 × 126.
-      pointer = pointer - byte2 * 10 * 126;
-
-      // 13. Let byte3 be floor(pointer / 10).
-      var byte3 = floor(pointer / 10);
-
-      // 14. Let byte4 be pointer − byte3 × 10.
-      var byte4 = pointer - byte3 * 10;
-
-      // 15. Return four bytes whose values are byte1 + 0x81, byte2 +
-      // 0x30, byte3 + 0x81, byte4 + 0x30.
-      return [byte1 + 0x81,
-              byte2 + 0x30,
-              byte3 + 0x81,
-              byte4 + 0x30];
-    };
-  }
-
-  /** @param {{fatal: boolean}} options */
-  encoders['gb18030'] = function(options) {
-    return new GB18030Encoder(options);
-  };
-  /** @param {{fatal: boolean}} options */
-  decoders['gb18030'] = function(options) {
-    return new GB18030Decoder(options);
-  };
-
-
-  //
-  // 12. Legacy multi-byte Chinese (traditional) encodings
-  //
-
-  // 12.1 Big5
-
-  // 12.1.1 Big5 decoder
-  /**
-   * @constructor
-   * @implements {Decoder}
-   * @param {{fatal: boolean}} options
-   */
-  function Big5Decoder(options) {
-    var fatal = options.fatal;
-    // Big5's decoder has an associated Big5 lead (initially 0x00).
-    var /** @type {number} */ Big5_lead = 0x00;
-
-    /**
-     * @param {Stream} stream The stream of bytes being decoded.
-     * @param {number} bite The next byte read from the stream.
-     * @return {?(number|!Array.<number>)} The next code point(s)
-     *     decoded, or null if not enough data exists in the input
-     *     stream to decode a complete code point.
-     */
-    this.handler = function(stream, bite) {
-      // 1. If byte is end-of-stream and Big5 lead is not 0x00, set
-      // Big5 lead to 0x00 and return error.
-      if (bite === end_of_stream && Big5_lead !== 0x00) {
-        Big5_lead = 0x00;
-        return decoderError(fatal);
-      }
-
-      // 2. If byte is end-of-stream and Big5 lead is 0x00, return
-      // finished.
-      if (bite === end_of_stream && Big5_lead === 0x00)
-        return finished;
-
-      // 3. If Big5 lead is not 0x00, let lead be Big5 lead, let
-      // pointer be null, set Big5 lead to 0x00, and then run these
-      // substeps:
-      if (Big5_lead !== 0x00) {
-        var lead = Big5_lead;
-        var pointer = null;
-        Big5_lead = 0x00;
-
-        // 1. Let offset be 0x40 if byte is less than 0x7F and 0x62
-        // otherwise.
-        var offset = bite < 0x7F ? 0x40 : 0x62;
-
-        // 2. If byte is in the range 0x40 to 0x7E, inclusive, or 0xA1
-        // to 0xFE, inclusive, set pointer to (lead − 0x81) × 157 +
-        // (byte − offset).
-        if (inRange(bite, 0x40, 0x7E) || inRange(bite, 0xA1, 0xFE))
-          pointer = (lead - 0x81) * 157 + (bite - offset);
-
-        // 3. If there is a row in the table below whose first column
-        // is pointer, return the two code points listed in its second
-        // column
-        // Pointer | Code points
-        // --------+--------------
-        // 1133    | U+00CA U+0304
-        // 1135    | U+00CA U+030C
-        // 1164    | U+00EA U+0304
-        // 1166    | U+00EA U+030C
-        switch (pointer) {
-          case 1133: return [0x00CA, 0x0304];
-          case 1135: return [0x00CA, 0x030C];
-          case 1164: return [0x00EA, 0x0304];
-          case 1166: return [0x00EA, 0x030C];
-        }
-
-        // 4. Let code point be null if pointer is null and the index
-        // code point for pointer in index Big5 otherwise.
-        var code_point = (pointer === null) ? null :
-            indexCodePointFor(pointer, index('big5'));
-
-        // 5. If code point is null and byte is an ASCII byte, prepend
-        // byte to stream.
-        if (code_point === null && isASCIIByte(bite))
-          stream.prepend(bite);
-
-        // 6. If code point is null, return error.
-        if (code_point === null)
-          return decoderError(fatal);
-
-        // 7. Return a code point whose value is code point.
-        return code_point;
-      }
-
-      // 4. If byte is an ASCII byte, return a code point whose value
-      // is byte.
-      if (isASCIIByte(bite))
-        return bite;
-
-      // 5. If byte is in the range 0x81 to 0xFE, inclusive, set Big5
-      // lead to byte and return continue.
-      if (inRange(bite, 0x81, 0xFE)) {
-        Big5_lead = bite;
-        return null;
-      }
-
-      // 6. Return error.
-      return decoderError(fatal);
-    };
-  }
-
-  // 12.1.2 Big5 encoder
-  /**
-   * @constructor
-   * @implements {Encoder}
-   * @param {{fatal: boolean}} options
-   */
-  function Big5Encoder(options) {
-    var fatal = options.fatal;
-    /**
-     * @param {Stream} stream Input stream.
-     * @param {number} code_point Next code point read from the stream.
-     * @return {(number|!Array.<number>)} Byte(s) to emit.
-     */
-    this.handler = function(stream, code_point) {
-      // 1. If code point is end-of-stream, return finished.
-      if (code_point === end_of_stream)
-        return finished;
-
-      // 2. If code point is an ASCII code point, return a byte whose
-      // value is code point.
-      if (isASCIICodePoint(code_point))
-        return code_point;
-
-      // 3. Let pointer be the index Big5 pointer for code point.
-      var pointer = indexBig5PointerFor(code_point);
-
-      // 4. If pointer is null, return error with code point.
-      if (pointer === null)
-        return encoderError(code_point);
-
-      // 5. Let lead be floor(pointer / 157) + 0x81.
-      var lead = floor(pointer / 157) + 0x81;
-
-      // 6. If lead is less than 0xA1, return error with code point.
-      if (lead < 0xA1)
-        return encoderError(code_point);
-
-      // 7. Let trail be pointer % 157.
-      var trail = pointer % 157;
-
-      // 8. Let offset be 0x40 if trail is less than 0x3F and 0x62
-      // otherwise.
-      var offset = trail < 0x3F ? 0x40 : 0x62;
-
-      // Return two bytes whose values are lead and trail + offset.
-      return [lead, trail + offset];
-    };
-  }
-
-  /** @param {{fatal: boolean}} options */
-  encoders['Big5'] = function(options) {
-    return new Big5Encoder(options);
-  };
-  /** @param {{fatal: boolean}} options */
-  decoders['Big5'] = function(options) {
-    return new Big5Decoder(options);
-  };
-
-
-  //
-  // 13. Legacy multi-byte Japanese encodings
-  //
-
-  // 13.1 euc-jp
-
-  // 13.1.1 euc-jp decoder
-  /**
-   * @constructor
-   * @implements {Decoder}
-   * @param {{fatal: boolean}} options
-   */
-  function EUCJPDecoder(options) {
-    var fatal = options.fatal;
-
-    // euc-jp's decoder has an associated euc-jp jis0212 flag
-    // (initially unset) and euc-jp lead (initially 0x00).
-    var /** @type {boolean} */ eucjp_jis0212_flag = false,
-        /** @type {number} */ eucjp_lead = 0x00;
-
-    /**
-     * @param {Stream} stream The stream of bytes being decoded.
-     * @param {number} bite The next byte read from the stream.
-     * @return {?(number|!Array.<number>)} The next code point(s)
-     *     decoded, or null if not enough data exists in the input
-     *     stream to decode a complete code point.
-     */
-    this.handler = function(stream, bite) {
-      // 1. If byte is end-of-stream and euc-jp lead is not 0x00, set
-      // euc-jp lead to 0x00, and return error.
-      if (bite === end_of_stream && eucjp_lead !== 0x00) {
-        eucjp_lead = 0x00;
-        return decoderError(fatal);
-      }
-
-      // 2. If byte is end-of-stream and euc-jp lead is 0x00, return
-      // finished.
-      if (bite === end_of_stream && eucjp_lead === 0x00)
-        return finished;
-
-      // 3. If euc-jp lead is 0x8E and byte is in the range 0xA1 to
-      // 0xDF, inclusive, set euc-jp lead to 0x00 and return a code
-      // point whose value is 0xFF61 − 0xA1 + byte.
-      if (eucjp_lead === 0x8E && inRange(bite, 0xA1, 0xDF)) {
-        eucjp_lead = 0x00;
-        return 0xFF61 - 0xA1 + bite;
-      }
-
-      // 4. If euc-jp lead is 0x8F and byte is in the range 0xA1 to
-      // 0xFE, inclusive, set the euc-jp jis0212 flag, set euc-jp lead
-      // to byte, and return continue.
-      if (eucjp_lead === 0x8F && inRange(bite, 0xA1, 0xFE)) {
-        eucjp_jis0212_flag = true;
-        eucjp_lead = bite;
-        return null;
-      }
-
-      // 5. If euc-jp lead is not 0x00, let lead be euc-jp lead, set
-      // euc-jp lead to 0x00, and run these substeps:
-      if (eucjp_lead !== 0x00) {
-        var lead = eucjp_lead;
-        eucjp_lead = 0x00;
-
-        // 1. Let code point be null.
-        var code_point = null;
-
-        // 2. If lead and byte are both in the range 0xA1 to 0xFE,
-        // inclusive, set code point to the index code point for (lead
-        // − 0xA1) × 94 + byte − 0xA1 in index jis0208 if the euc-jp
-        // jis0212 flag is unset and in index jis0212 otherwise.
-        if (inRange(lead, 0xA1, 0xFE) && inRange(bite, 0xA1, 0xFE)) {
-          code_point = indexCodePointFor(
-            (lead - 0xA1) * 94 + (bite - 0xA1),
-            index(!eucjp_jis0212_flag ? 'jis0208' : 'jis0212'));
-        }
-
-        // 3. Unset the euc-jp jis0212 flag.
-        eucjp_jis0212_flag = false;
-
-        // 4. If byte is not in the range 0xA1 to 0xFE, inclusive,
-        // prepend byte to stream.
-        if (!inRange(bite, 0xA1, 0xFE))
-          stream.prepend(bite);
-
-        // 5. If code point is null, return error.
-        if (code_point === null)
-          return decoderError(fatal);
-
-        // 6. Return a code point whose value is code point.
-        return code_point;
-      }
-
-      // 6. If byte is an ASCII byte, return a code point whose value
-      // is byte.
-      if (isASCIIByte(bite))
-        return bite;
-
-      // 7. If byte is 0x8E, 0x8F, or in the range 0xA1 to 0xFE,
-      // inclusive, set euc-jp lead to byte and return continue.
-      if (bite === 0x8E || bite === 0x8F || inRange(bite, 0xA1, 0xFE)) {
-        eucjp_lead = bite;
-        return null;
-      }
-
-      // 8. Return error.
-      return decoderError(fatal);
-    };
-  }
-
-  // 13.1.2 euc-jp encoder
-  /**
-   * @constructor
-   * @implements {Encoder}
-   * @param {{fatal: boolean}} options
-   */
-  function EUCJPEncoder(options) {
-    var fatal = options.fatal;
-    /**
-     * @param {Stream} stream Input stream.
-     * @param {number} code_point Next code point read from the stream.
-     * @return {(number|!Array.<number>)} Byte(s) to emit.
-     */
-    this.handler = function(stream, code_point) {
-      // 1. If code point is end-of-stream, return finished.
-      if (code_point === end_of_stream)
-        return finished;
-
-      // 2. If code point is an ASCII code point, return a byte whose
-      // value is code point.
-      if (isASCIICodePoint(code_point))
-        return code_point;
-
-      // 3. If code point is U+00A5, return byte 0x5C.
-      if (code_point === 0x00A5)
-        return 0x5C;
-
-      // 4. If code point is U+203E, return byte 0x7E.
-      if (code_point === 0x203E)
-        return 0x7E;
-
-      // 5. If code point is in the range U+FF61 to U+FF9F, inclusive,
-      // return two bytes whose values are 0x8E and code point −
-      // 0xFF61 + 0xA1.
-      if (inRange(code_point, 0xFF61, 0xFF9F))
-        return [0x8E, code_point - 0xFF61 + 0xA1];
-
-      // 6. If code point is U+2212, set it to U+FF0D.
-      if (code_point === 0x2212)
-        code_point = 0xFF0D;
-
-      // 7. Let pointer be the index pointer for code point in index
-      // jis0208.
-      var pointer = indexPointerFor(code_point, index('jis0208'));
-
-      // 8. If pointer is null, return error with code point.
-      if (pointer === null)
-        return encoderError(code_point);
-
-      // 9. Let lead be floor(pointer / 94) + 0xA1.
-      var lead = floor(pointer / 94) + 0xA1;
-
-      // 10. Let trail be pointer % 94 + 0xA1.
-      var trail = pointer % 94 + 0xA1;
-
-      // 11. Return two bytes whose values are lead and trail.
-      return [lead, trail];
-    };
-  }
-
-  /** @param {{fatal: boolean}} options */
-  encoders['EUC-JP'] = function(options) {
-    return new EUCJPEncoder(options);
-  };
-  /** @param {{fatal: boolean}} options */
-  decoders['EUC-JP'] = function(options) {
-    return new EUCJPDecoder(options);
-  };
-
-  // 13.2 iso-2022-jp
-
-  // 13.2.1 iso-2022-jp decoder
-  /**
-   * @constructor
-   * @implements {Decoder}
-   * @param {{fatal: boolean}} options
-   */
-  function ISO2022JPDecoder(options) {
-    var fatal = options.fatal;
-    /** @enum */
-    var states = {
-      ASCII: 0,
-      Roman: 1,
-      Katakana: 2,
-      LeadByte: 3,
-      TrailByte: 4,
-      EscapeStart: 5,
-      Escape: 6
-    };
-    // iso-2022-jp's decoder has an associated iso-2022-jp decoder
-    // state (initially ASCII), iso-2022-jp decoder output state
-    // (initially ASCII), iso-2022-jp lead (initially 0x00), and
-    // iso-2022-jp output flag (initially unset).
-    var /** @type {number} */ iso2022jp_decoder_state = states.ASCII,
-        /** @type {number} */ iso2022jp_decoder_output_state = states.ASCII,
-        /** @type {number} */ iso2022jp_lead = 0x00,
-        /** @type {boolean} */ iso2022jp_output_flag = false;
-    /**
-     * @param {Stream} stream The stream of bytes being decoded.
-     * @param {number} bite The next byte read from the stream.
-     * @return {?(number|!Array.<number>)} The next code point(s)
-     *     decoded, or null if not enough data exists in the input
-     *     stream to decode a complete code point.
-     */
-    this.handler = function(stream, bite) {
-      // switching on iso-2022-jp decoder state:
-      switch (iso2022jp_decoder_state) {
-      default:
-      case states.ASCII:
-        // ASCII
-        // Based on byte:
-
-        // 0x1B
-        if (bite === 0x1B) {
-          // Set iso-2022-jp decoder state to escape start and return
-          // continue.
-          iso2022jp_decoder_state = states.EscapeStart;
-          return null;
-        }
-
-        // 0x00 to 0x7F, excluding 0x0E, 0x0F, and 0x1B
-        if (inRange(bite, 0x00, 0x7F) && bite !== 0x0E
-            && bite !== 0x0F && bite !== 0x1B) {
-          // Unset the iso-2022-jp output flag and return a code point
-          // whose value is byte.
-          iso2022jp_output_flag = false;
-          return bite;
-        }
-
-        // end-of-stream
-        if (bite === end_of_stream) {
-          // Return finished.
-          return finished;
-        }
-
-        // Otherwise
-        // Unset the iso-2022-jp output flag and return error.
-        iso2022jp_output_flag = false;
-        return decoderError(fatal);
-
-      case states.Roman:
-        // Roman
-        // Based on byte:
-
-        // 0x1B
-        if (bite === 0x1B) {
-          // Set iso-2022-jp decoder state to escape start and return
-          // continue.
-          iso2022jp_decoder_state = states.EscapeStart;
-          return null;
-        }
-
-        // 0x5C
-        if (bite === 0x5C) {
-          // Unset the iso-2022-jp output flag and return code point
-          // U+00A5.
-          iso2022jp_output_flag = false;
-          return 0x00A5;
-        }
-
-        // 0x7E
-        if (bite === 0x7E) {
-          // Unset the iso-2022-jp output flag and return code point
-          // U+203E.
-          iso2022jp_output_flag = false;
-          return 0x203E;
-        }
-
-        // 0x00 to 0x7F, excluding 0x0E, 0x0F, 0x1B, 0x5C, and 0x7E
-        if (inRange(bite, 0x00, 0x7F) && bite !== 0x0E && bite !== 0x0F
-            && bite !== 0x1B && bite !== 0x5C && bite !== 0x7E) {
-          // Unset the iso-2022-jp output flag and return a code point
-          // whose value is byte.
-          iso2022jp_output_flag = false;
-          return bite;
-        }
-
-        // end-of-stream
-        if (bite === end_of_stream) {
-          // Return finished.
-          return finished;
-        }
-
-        // Otherwise
-        // Unset the iso-2022-jp output flag and return error.
-        iso2022jp_output_flag = false;
-        return decoderError(fatal);
-
-      case states.Katakana:
-        // Katakana
-        // Based on byte:
-
-        // 0x1B
-        if (bite === 0x1B) {
-          // Set iso-2022-jp decoder state to escape start and return
-          // continue.
-          iso2022jp_decoder_state = states.EscapeStart;
-          return null;
-        }
-
-        // 0x21 to 0x5F
-        if (inRange(bite, 0x21, 0x5F)) {
-          // Unset the iso-2022-jp output flag and return a code point
-          // whose value is 0xFF61 − 0x21 + byte.
-          iso2022jp_output_flag = false;
-          return 0xFF61 - 0x21 + bite;
-        }
-
-        // end-of-stream
-        if (bite === end_of_stream) {
-          // Return finished.
-          return finished;
-        }
-
-        // Otherwise
-        // Unset the iso-2022-jp output flag and return error.
-        iso2022jp_output_flag = false;
-        return decoderError(fatal);
-
-      case states.LeadByte:
-        // Lead byte
-        // Based on byte:
-
-        // 0x1B
-        if (bite === 0x1B) {
-          // Set iso-2022-jp decoder state to escape start and return
-          // continue.
-          iso2022jp_decoder_state = states.EscapeStart;
-          return null;
-        }
-
-        // 0x21 to 0x7E
-        if (inRange(bite, 0x21, 0x7E)) {
-          // Unset the iso-2022-jp output flag, set iso-2022-jp lead
-          // to byte, iso-2022-jp decoder state to trail byte, and
-          // return continue.
-          iso2022jp_output_flag = false;
-          iso2022jp_lead = bite;
-          iso2022jp_decoder_state = states.TrailByte;
-          return null;
-        }
-
-        // end-of-stream
-        if (bite === end_of_stream) {
-          // Return finished.
-          return finished;
-        }
-
-        // Otherwise
-        // Unset the iso-2022-jp output flag and return error.
-        iso2022jp_output_flag = false;
-        return decoderError(fatal);
-
-      case states.TrailByte:
-        // Trail byte
-        // Based on byte:
-
-        // 0x1B
-        if (bite === 0x1B) {
-          // Set iso-2022-jp decoder state to escape start and return
-          // continue.
-          iso2022jp_decoder_state = states.EscapeStart;
-          return decoderError(fatal);
-        }
-
-        // 0x21 to 0x7E
-        if (inRange(bite, 0x21, 0x7E)) {
-          // 1. Set the iso-2022-jp decoder state to lead byte.
-          iso2022jp_decoder_state = states.LeadByte;
-
-          // 2. Let pointer be (iso-2022-jp lead − 0x21) × 94 + byte − 0x21.
-          var pointer = (iso2022jp_lead - 0x21) * 94 + bite - 0x21;
-
-          // 3. Let code point be the index code point for pointer in
-          // index jis0208.
-          var code_point = indexCodePointFor(pointer, index('jis0208'));
-
-          // 4. If code point is null, return error.
-          if (code_point === null)
-            return decoderError(fatal);
-
-          // 5. Return a code point whose value is code point.
-          return code_point;
-        }
-
-        // end-of-stream
-        if (bite === end_of_stream) {
-          // Set the iso-2022-jp decoder state to lead byte, prepend
-          // byte to stream, and return error.
-          iso2022jp_decoder_state = states.LeadByte;
-          stream.prepend(bite);
-          return decoderError(fatal);
-        }
-
-        // Otherwise
-        // Set iso-2022-jp decoder state to lead byte and return
-        // error.
-        iso2022jp_decoder_state = states.LeadByte;
-        return decoderError(fatal);
-
-      case states.EscapeStart:
-        // Escape start
-
-        // 1. If byte is either 0x24 or 0x28, set iso-2022-jp lead to
-        // byte, iso-2022-jp decoder state to escape, and return
-        // continue.
-        if (bite === 0x24 || bite === 0x28) {
-          iso2022jp_lead = bite;
-          iso2022jp_decoder_state = states.Escape;
-          return null;
-        }
-
-        // 2. Prepend byte to stream.
-        stream.prepend(bite);
-
-        // 3. Unset the iso-2022-jp output flag, set iso-2022-jp
-        // decoder state to iso-2022-jp decoder output state, and
-        // return error.
-        iso2022jp_output_flag = false;
-        iso2022jp_decoder_state = iso2022jp_decoder_output_state;
-        return decoderError(fatal);
-
-      case states.Escape:
-        // Escape
-
-        // 1. Let lead be iso-2022-jp lead and set iso-2022-jp lead to
-        // 0x00.
-        var lead = iso2022jp_lead;
-        iso2022jp_lead = 0x00;
-
-        // 2. Let state be null.
-        var state = null;
-
-        // 3. If lead is 0x28 and byte is 0x42, set state to ASCII.
-        if (lead === 0x28 && bite === 0x42)
-          state = states.ASCII;
-
-        // 4. If lead is 0x28 and byte is 0x4A, set state to Roman.
-        if (lead === 0x28 && bite === 0x4A)
-          state = states.Roman;
-
-        // 5. If lead is 0x28 and byte is 0x49, set state to Katakana.
-        if (lead === 0x28 && bite === 0x49)
-          state = states.Katakana;
-
-        // 6. If lead is 0x24 and byte is either 0x40 or 0x42, set
-        // state to lead byte.
-        if (lead === 0x24 && (bite === 0x40 || bite === 0x42))
-          state = states.LeadByte;
-
-        // 7. If state is non-null, run these substeps:
-        if (state !== null) {
-          // 1. Set iso-2022-jp decoder state and iso-2022-jp decoder
-          // output state to states.
-          iso2022jp_decoder_state = iso2022jp_decoder_state = state;
-
-          // 2. Let output flag be the iso-2022-jp output flag.
-          var output_flag = iso2022jp_output_flag;
-
-          // 3. Set the iso-2022-jp output flag.
-          iso2022jp_output_flag = true;
-
-          // 4. Return continue, if output flag is unset, and error
-          // otherwise.
-          return !output_flag ? null : decoderError(fatal);
-        }
-
-        // 8. Prepend lead and byte to stream.
-        stream.prepend([lead, bite]);
-
-        // 9. Unset the iso-2022-jp output flag, set iso-2022-jp
-        // decoder state to iso-2022-jp decoder output state and
-        // return error.
-        iso2022jp_output_flag = false;
-        iso2022jp_decoder_state = iso2022jp_decoder_output_state;
-        return decoderError(fatal);
-      }
-    };
-  }
-
-  // 13.2.2 iso-2022-jp encoder
-  /**
-   * @constructor
-   * @implements {Encoder}
-   * @param {{fatal: boolean}} options
-   */
-  function ISO2022JPEncoder(options) {
-    var fatal = options.fatal;
-    // iso-2022-jp's encoder has an associated iso-2022-jp encoder
-    // state which is one of ASCII, Roman, and jis0208 (initially
-    // ASCII).
-    /** @enum */
-    var states = {
-      ASCII: 0,
-      Roman: 1,
-      jis0208: 2
-    };
-    var /** @type {number} */ iso2022jp_state = states.ASCII;
-    /**
-     * @param {Stream} stream Input stream.
-     * @param {number} code_point Next code point read from the stream.
-     * @return {(number|!Array.<number>)} Byte(s) to emit.
-     */
-    this.handler = function(stream, code_point) {
-      // 1. If code point is end-of-stream and iso-2022-jp encoder
-      // state is not ASCII, prepend code point to stream, set
-      // iso-2022-jp encoder state to ASCII, and return three bytes
-      // 0x1B 0x28 0x42.
-      if (code_point === end_of_stream &&
-          iso2022jp_state !== states.ASCII) {
-        stream.prepend(code_point);
-        iso2022jp_state = states.ASCII;
-        return [0x1B, 0x28, 0x42];
-      }
-
-      // 2. If code point is end-of-stream and iso-2022-jp encoder
-      // state is ASCII, return finished.
-      if (code_point === end_of_stream && iso2022jp_state === states.ASCII)
-        return finished;
-
-      // 3. If ISO-2022-JP encoder state is ASCII or Roman, and code
-      // point is U+000E, U+000F, or U+001B, return error with U+FFFD.
-      if ((iso2022jp_state === states.ASCII ||
-           iso2022jp_state === states.Roman) &&
-          (code_point === 0x000E || code_point === 0x000F ||
-           code_point === 0x001B)) {
-        return encoderError(0xFFFD);
-      }
-
-      // 4. If iso-2022-jp encoder state is ASCII and code point is an
-      // ASCII code point, return a byte whose value is code point.
-      if (iso2022jp_state === states.ASCII &&
-          isASCIICodePoint(code_point))
-        return code_point;
-
-      // 5. If iso-2022-jp encoder state is Roman and code point is an
-      // ASCII code point, excluding U+005C and U+007E, or is U+00A5
-      // or U+203E, run these substeps:
-      if (iso2022jp_state === states.Roman &&
-          ((isASCIICodePoint(code_point) &&
-           code_point !== 0x005C && code_point !== 0x007E) ||
-          (code_point == 0x00A5 || code_point == 0x203E))) {
-
-        // 1. If code point is an ASCII code point, return a byte
-        // whose value is code point.
-        if (isASCIICodePoint(code_point))
-          return code_point;
-
-        // 2. If code point is U+00A5, return byte 0x5C.
-        if (code_point === 0x00A5)
-          return 0x5C;
-
-        // 3. If code point is U+203E, return byte 0x7E.
-        if (code_point === 0x203E)
-          return 0x7E;
-      }
-
-      // 6. If code point is an ASCII code point, and iso-2022-jp
-      // encoder state is not ASCII, prepend code point to stream, set
-      // iso-2022-jp encoder state to ASCII, and return three bytes
-      // 0x1B 0x28 0x42.
-      if (isASCIICodePoint(code_point) &&
-          iso2022jp_state !== states.ASCII) {
-        stream.prepend(code_point);
-        iso2022jp_state = states.ASCII;
-        return [0x1B, 0x28, 0x42];
-      }
-
-      // 7. If code point is either U+00A5 or U+203E, and iso-2022-jp
-      // encoder state is not Roman, prepend code point to stream, set
-      // iso-2022-jp encoder state to Roman, and return three bytes
-      // 0x1B 0x28 0x4A.
-      if ((code_point === 0x00A5 || code_point === 0x203E) &&
-          iso2022jp_state !== states.Roman) {
-        stream.prepend(code_point);
-        iso2022jp_state = states.Roman;
-        return [0x1B, 0x28, 0x4A];
-      }
-
-      // 8. If code point is U+2212, set it to U+FF0D.
-      if (code_point === 0x2212)
-        code_point = 0xFF0D;
-
-      // 9. Let pointer be the index pointer for code point in index
-      // jis0208.
-      var pointer = indexPointerFor(code_point, index('jis0208'));
-
-      // 10. If pointer is null, return error with code point.
-      if (pointer === null)
-        return encoderError(code_point);
-
-      // 11. If iso-2022-jp encoder state is not jis0208, prepend code
-      // point to stream, set iso-2022-jp encoder state to jis0208,
-      // and return three bytes 0x1B 0x24 0x42.
-      if (iso2022jp_state !== states.jis0208) {
-        stream.prepend(code_point);
-        iso2022jp_state = states.jis0208;
-        return [0x1B, 0x24, 0x42];
-      }
-
-      // 12. Let lead be floor(pointer / 94) + 0x21.
-      var lead = floor(pointer / 94) + 0x21;
-
-      // 13. Let trail be pointer % 94 + 0x21.
-      var trail = pointer % 94 + 0x21;
-
-      // 14. Return two bytes whose values are lead and trail.
-      return [lead, trail];
-    };
-  }
-
-  /** @param {{fatal: boolean}} options */
-  encoders['ISO-2022-JP'] = function(options) {
-    return new ISO2022JPEncoder(options);
-  };
-  /** @param {{fatal: boolean}} options */
-  decoders['ISO-2022-JP'] = function(options) {
-    return new ISO2022JPDecoder(options);
-  };
-
-  // 13.3 Shift_JIS
-
-  // 13.3.1 Shift_JIS decoder
-  /**
-   * @constructor
-   * @implements {Decoder}
-   * @param {{fatal: boolean}} options
-   */
-  function ShiftJISDecoder(options) {
-    var fatal = options.fatal;
-    // Shift_JIS's decoder has an associated Shift_JIS lead (initially
-    // 0x00).
-    var /** @type {number} */ Shift_JIS_lead = 0x00;
-    /**
-     * @param {Stream} stream The stream of bytes being decoded.
-     * @param {number} bite The next byte read from the stream.
-     * @return {?(number|!Array.<number>)} The next code point(s)
-     *     decoded, or null if not enough data exists in the input
-     *     stream to decode a complete code point.
-     */
-    this.handler = function(stream, bite) {
-      // 1. If byte is end-of-stream and Shift_JIS lead is not 0x00,
-      // set Shift_JIS lead to 0x00 and return error.
-      if (bite === end_of_stream && Shift_JIS_lead !== 0x00) {
-        Shift_JIS_lead = 0x00;
-        return decoderError(fatal);
-      }
-
-      // 2. If byte is end-of-stream and Shift_JIS lead is 0x00,
-      // return finished.
-      if (bite === end_of_stream && Shift_JIS_lead === 0x00)
-        return finished;
-
-      // 3. If Shift_JIS lead is not 0x00, let lead be Shift_JIS lead,
-      // let pointer be null, set Shift_JIS lead to 0x00, and then run
-      // these substeps:
-      if (Shift_JIS_lead !== 0x00) {
-        var lead = Shift_JIS_lead;
-        var pointer = null;
-        Shift_JIS_lead = 0x00;
-
-        // 1. Let offset be 0x40, if byte is less than 0x7F, and 0x41
-        // otherwise.
-        var offset = (bite < 0x7F) ? 0x40 : 0x41;
-
-        // 2. Let lead offset be 0x81, if lead is less than 0xA0, and
-        // 0xC1 otherwise.
-        var lead_offset = (lead < 0xA0) ? 0x81 : 0xC1;
-
-        // 3. If byte is in the range 0x40 to 0x7E, inclusive, or 0x80
-        // to 0xFC, inclusive, set pointer to (lead − lead offset) ×
-        // 188 + byte − offset.
-        if (inRange(bite, 0x40, 0x7E) || inRange(bite, 0x80, 0xFC))
-          pointer = (lead - lead_offset) * 188 + bite - offset;
-
-        // 4. If pointer is in the range 8836 to 10715, inclusive,
-        // return a code point whose value is 0xE000 − 8836 + pointer.
-        if (inRange(pointer, 8836, 10715))
-          return 0xE000 - 8836 + pointer;
-
-        // 5. Let code point be null, if pointer is null, and the
-        // index code point for pointer in index jis0208 otherwise.
-        var code_point = (pointer === null) ? null :
-              indexCodePointFor(pointer, index('jis0208'));
-
-        // 6. If code point is null and byte is an ASCII byte, prepend
-        // byte to stream.
-        if (code_point === null && isASCIIByte(bite))
-          stream.prepend(bite);
-
-        // 7. If code point is null, return error.
-        if (code_point === null)
-          return decoderError(fatal);
-
-        // 8. Return a code point whose value is code point.
-        return code_point;
-      }
-
-      // 4. If byte is an ASCII byte or 0x80, return a code point
-      // whose value is byte.
-      if (isASCIIByte(bite) || bite === 0x80)
-        return bite;
-
-      // 5. If byte is in the range 0xA1 to 0xDF, inclusive, return a
-      // code point whose value is 0xFF61 − 0xA1 + byte.
-      if (inRange(bite, 0xA1, 0xDF))
-        return 0xFF61 - 0xA1 + bite;
-
-      // 6. If byte is in the range 0x81 to 0x9F, inclusive, or 0xE0
-      // to 0xFC, inclusive, set Shift_JIS lead to byte and return
-      // continue.
-      if (inRange(bite, 0x81, 0x9F) || inRange(bite, 0xE0, 0xFC)) {
-        Shift_JIS_lead = bite;
-        return null;
-      }
-
-      // 7. Return error.
-      return decoderError(fatal);
-    };
-  }
-
-  // 13.3.2 Shift_JIS encoder
-  /**
-   * @constructor
-   * @implements {Encoder}
-   * @param {{fatal: boolean}} options
-   */
-  function ShiftJISEncoder(options) {
-    var fatal = options.fatal;
-    /**
-     * @param {Stream} stream Input stream.
-     * @param {number} code_point Next code point read from the stream.
-     * @return {(number|!Array.<number>)} Byte(s) to emit.
-     */
-    this.handler = function(stream, code_point) {
-      // 1. If code point is end-of-stream, return finished.
-      if (code_point === end_of_stream)
-        return finished;
-
-      // 2. If code point is an ASCII code point or U+0080, return a
-      // byte whose value is code point.
-      if (isASCIICodePoint(code_point) || code_point === 0x0080)
-        return code_point;
-
-      // 3. If code point is U+00A5, return byte 0x5C.
-      if (code_point === 0x00A5)
-        return 0x5C;
-
-      // 4. If code point is U+203E, return byte 0x7E.
-      if (code_point === 0x203E)
-        return 0x7E;
-
-      // 5. If code point is in the range U+FF61 to U+FF9F, inclusive,
-      // return a byte whose value is code point − 0xFF61 + 0xA1.
-      if (inRange(code_point, 0xFF61, 0xFF9F))
-        return code_point - 0xFF61 + 0xA1;
-
-      // 6. If code point is U+2212, set it to U+FF0D.
-      if (code_point === 0x2212)
-        code_point = 0xFF0D;
-
-      // 7. Let pointer be the index Shift_JIS pointer for code point.
-      var pointer = indexShiftJISPointerFor(code_point);
-
-      // 8. If pointer is null, return error with code point.
-      if (pointer === null)
-        return encoderError(code_point);
-
-      // 9. Let lead be floor(pointer / 188).
-      var lead = floor(pointer / 188);
-
-      // 10. Let lead offset be 0x81, if lead is less than 0x1F, and
-      // 0xC1 otherwise.
-      var lead_offset = (lead < 0x1F) ? 0x81 : 0xC1;
-
-      // 11. Let trail be pointer % 188.
-      var trail = pointer % 188;
-
-      // 12. Let offset be 0x40, if trail is less than 0x3F, and 0x41
-      // otherwise.
-      var offset = (trail < 0x3F) ? 0x40 : 0x41;
-
-      // 13. Return two bytes whose values are lead + lead offset and
-      // trail + offset.
-      return [lead + lead_offset, trail + offset];
-    };
-  }
-
-  /** @param {{fatal: boolean}} options */
-  encoders['Shift_JIS'] = function(options) {
-    return new ShiftJISEncoder(options);
-  };
-  /** @param {{fatal: boolean}} options */
-  decoders['Shift_JIS'] = function(options) {
-    return new ShiftJISDecoder(options);
-  };
-
-  //
-  // 14. Legacy multi-byte Korean encodings
-  //
-
-  // 14.1 euc-kr
-
-  // 14.1.1 euc-kr decoder
-  /**
-   * @constructor
-   * @implements {Decoder}
-   * @param {{fatal: boolean}} options
-   */
-  function EUCKRDecoder(options) {
-    var fatal = options.fatal;
-
-    // euc-kr's decoder has an associated euc-kr lead (initially 0x00).
-    var /** @type {number} */ euckr_lead = 0x00;
-    /**
-     * @param {Stream} stream The stream of bytes being decoded.
-     * @param {number} bite The next byte read from the stream.
-     * @return {?(number|!Array.<number>)} The next code point(s)
-     *     decoded, or null if not enough data exists in the input
-     *     stream to decode a complete code point.
-     */
-    this.handler = function(stream, bite) {
-      // 1. If byte is end-of-stream and euc-kr lead is not 0x00, set
-      // euc-kr lead to 0x00 and return error.
-      if (bite === end_of_stream && euckr_lead !== 0) {
-        euckr_lead = 0x00;
-        return decoderError(fatal);
-      }
-
-      // 2. If byte is end-of-stream and euc-kr lead is 0x00, return
-      // finished.
-      if (bite === end_of_stream && euckr_lead === 0)
-        return finished;
-
-      // 3. If euc-kr lead is not 0x00, let lead be euc-kr lead, let
-      // pointer be null, set euc-kr lead to 0x00, and then run these
-      // substeps:
-      if (euckr_lead !== 0x00) {
-        var lead = euckr_lead;
-        var pointer = null;
-        euckr_lead = 0x00;
-
-        // 1. If byte is in the range 0x41 to 0xFE, inclusive, set
-        // pointer to (lead − 0x81) × 190 + (byte − 0x41).
-        if (inRange(bite, 0x41, 0xFE))
-          pointer = (lead - 0x81) * 190 + (bite - 0x41);
-
-        // 2. Let code point be null, if pointer is null, and the
-        // index code point for pointer in index euc-kr otherwise.
-        var code_point = (pointer === null)
-              ? null : indexCodePointFor(pointer, index('euc-kr'));
-
-        // 3. If code point is null and byte is an ASCII byte, prepend
-        // byte to stream.
-        if (pointer === null && isASCIIByte(bite))
-          stream.prepend(bite);
-
-        // 4. If code point is null, return error.
-        if (code_point === null)
-          return decoderError(fatal);
-
-        // 5. Return a code point whose value is code point.
-        return code_point;
-      }
-
-      // 4. If byte is an ASCII byte, return a code point whose value
-      // is byte.
-      if (isASCIIByte(bite))
-        return bite;
-
-      // 5. If byte is in the range 0x81 to 0xFE, inclusive, set
-      // euc-kr lead to byte and return continue.
-      if (inRange(bite, 0x81, 0xFE)) {
-        euckr_lead = bite;
-        return null;
-      }
-
-      // 6. Return error.
-      return decoderError(fatal);
-    };
-  }
-
-  // 14.1.2 euc-kr encoder
-  /**
-   * @constructor
-   * @implements {Encoder}
-   * @param {{fatal: boolean}} options
-   */
-  function EUCKREncoder(options) {
-    var fatal = options.fatal;
-    /**
-     * @param {Stream} stream Input stream.
-     * @param {number} code_point Next code point read from the stream.
-     * @return {(number|!Array.<number>)} Byte(s) to emit.
-     */
-    this.handler = function(stream, code_point) {
-      // 1. If code point is end-of-stream, return finished.
-      if (code_point === end_of_stream)
-        return finished;
-
-      // 2. If code point is an ASCII code point, return a byte whose
-      // value is code point.
-      if (isASCIICodePoint(code_point))
-        return code_point;
-
-      // 3. Let pointer be the index pointer for code point in index
-      // euc-kr.
-      var pointer = indexPointerFor(code_point, index('euc-kr'));
-
-      // 4. If pointer is null, return error with code point.
-      if (pointer === null)
-        return encoderError(code_point);
-
-      // 5. Let lead be floor(pointer / 190) + 0x81.
-      var lead = floor(pointer / 190) + 0x81;
-
-      // 6. Let trail be pointer % 190 + 0x41.
-      var trail = (pointer % 190) + 0x41;
-
-      // 7. Return two bytes whose values are lead and trail.
-      return [lead, trail];
-    };
-  }
-
-  /** @param {{fatal: boolean}} options */
-  encoders['EUC-KR'] = function(options) {
-    return new EUCKREncoder(options);
-  };
-  /** @param {{fatal: boolean}} options */
-  decoders['EUC-KR'] = function(options) {
-    return new EUCKRDecoder(options);
-  };
-
-
-  //
-  // 15. Legacy miscellaneous encodings
-  //
-
-  // 15.1 replacement
-
-  // Not needed - API throws RangeError
-
-  // 15.2 Common infrastructure for utf-16be and utf-16le
-
-  /**
-   * @param {number} code_unit
-   * @param {boolean} utf16be
-   * @return {!Array.<number>} bytes
-   */
-  function convertCodeUnitToBytes(code_unit, utf16be) {
-    // 1. Let byte1 be code unit >> 8.
-    var byte1 = code_unit >> 8;
-
-    // 2. Let byte2 be code unit & 0x00FF.
-    var byte2 = code_unit & 0x00FF;
-
-    // 3. Then return the bytes in order:
-        // utf-16be flag is set: byte1, then byte2.
-    if (utf16be)
-      return [byte1, byte2];
-    // utf-16be flag is unset: byte2, then byte1.
-    return [byte2, byte1];
-  }
-
-  // 15.2.1 shared utf-16 decoder
-  /**
-   * @constructor
-   * @implements {Decoder}
-   * @param {boolean} utf16_be True if big-endian, false if little-endian.
-   * @param {{fatal: boolean}} options
-   */
-  function UTF16Decoder(utf16_be, options) {
-    var fatal = options.fatal;
-    var /** @type {?number} */ utf16_lead_byte = null,
-        /** @type {?number} */ utf16_lead_surrogate = null;
-    /**
-     * @param {Stream} stream The stream of bytes being decoded.
-     * @param {number} bite The next byte read from the stream.
-     * @return {?(number|!Array.<number>)} The next code point(s)
-     *     decoded, or null if not enough data exists in the input
-     *     stream to decode a complete code point.
-     */
-    this.handler = function(stream, bite) {
-      // 1. If byte is end-of-stream and either utf-16 lead byte or
-      // utf-16 lead surrogate is not null, set utf-16 lead byte and
-      // utf-16 lead surrogate to null, and return error.
-      if (bite === end_of_stream && (utf16_lead_byte !== null ||
-                                utf16_lead_surrogate !== null)) {
-        return decoderError(fatal);
-      }
-
-      // 2. If byte is end-of-stream and utf-16 lead byte and utf-16
-      // lead surrogate are null, return finished.
-      if (bite === end_of_stream && utf16_lead_byte === null &&
-          utf16_lead_surrogate === null) {
-        return finished;
-      }
-
-      // 3. If utf-16 lead byte is null, set utf-16 lead byte to byte
-      // and return continue.
-      if (utf16_lead_byte === null) {
-        utf16_lead_byte = bite;
-        return null;
-      }
-
-      // 4. Let code unit be the result of:
-      var code_unit;
-      if (utf16_be) {
-        // utf-16be decoder flag is set
-        //   (utf-16 lead byte << 8) + byte.
-        code_unit = (utf16_lead_byte << 8) + bite;
-      } else {
-        // utf-16be decoder flag is unset
-        //   (byte << 8) + utf-16 lead byte.
-        code_unit = (bite << 8) + utf16_lead_byte;
-      }
-      // Then set utf-16 lead byte to null.
-      utf16_lead_byte = null;
-
-      // 5. If utf-16 lead surrogate is not null, let lead surrogate
-      // be utf-16 lead surrogate, set utf-16 lead surrogate to null,
-      // and then run these substeps:
-      if (utf16_lead_surrogate !== null) {
-        var lead_surrogate = utf16_lead_surrogate;
-        utf16_lead_surrogate = null;
-
-        // 1. If code unit is in the range U+DC00 to U+DFFF,
-        // inclusive, return a code point whose value is 0x10000 +
-        // ((lead surrogate − 0xD800) << 10) + (code unit − 0xDC00).
-        if (inRange(code_unit, 0xDC00, 0xDFFF)) {
-          return 0x10000 + (lead_surrogate - 0xD800) * 0x400 +
-              (code_unit - 0xDC00);
-        }
-
-        // 2. Prepend the sequence resulting of converting code unit
-        // to bytes using utf-16be decoder flag to stream and return
-        // error.
-        stream.prepend(convertCodeUnitToBytes(code_unit, utf16_be));
-        return decoderError(fatal);
-      }
-
-      // 6. If code unit is in the range U+D800 to U+DBFF, inclusive,
-      // set utf-16 lead surrogate to code unit and return continue.
-      if (inRange(code_unit, 0xD800, 0xDBFF)) {
-        utf16_lead_surrogate = code_unit;
-        return null;
-      }
-
-      // 7. If code unit is in the range U+DC00 to U+DFFF, inclusive,
-      // return error.
-      if (inRange(code_unit, 0xDC00, 0xDFFF))
-        return decoderError(fatal);
-
-      // 8. Return code point code unit.
-      return code_unit;
-    };
-  }
-
-  // 15.2.2 shared utf-16 encoder
-  /**
-   * @constructor
-   * @implements {Encoder}
-   * @param {boolean} utf16_be True if big-endian, false if little-endian.
-   * @param {{fatal: boolean}} options
-   */
-  function UTF16Encoder(utf16_be, options) {
-    var fatal = options.fatal;
-    /**
-     * @param {Stream} stream Input stream.
-     * @param {number} code_point Next code point read from the stream.
-     * @return {(number|!Array.<number>)} Byte(s) to emit.
-     */
-    this.handler = function(stream, code_point) {
-      // 1. If code point is end-of-stream, return finished.
-      if (code_point === end_of_stream)
-        return finished;
-
-      // 2. If code point is in the range U+0000 to U+FFFF, inclusive,
-      // return the sequence resulting of converting code point to
-      // bytes using utf-16be encoder flag.
-      if (inRange(code_point, 0x0000, 0xFFFF))
-        return convertCodeUnitToBytes(code_point, utf16_be);
-
-      // 3. Let lead be ((code point − 0x10000) >> 10) + 0xD800,
-      // converted to bytes using utf-16be encoder flag.
-      var lead = convertCodeUnitToBytes(
-        ((code_point - 0x10000) >> 10) + 0xD800, utf16_be);
-
-      // 4. Let trail be ((code point − 0x10000) & 0x3FF) + 0xDC00,
-      // converted to bytes using utf-16be encoder flag.
-      var trail = convertCodeUnitToBytes(
-        ((code_point - 0x10000) & 0x3FF) + 0xDC00, utf16_be);
-
-      // 5. Return a byte sequence of lead followed by trail.
-      return lead.concat(trail);
-    };
-  }
-
-  // 15.3 utf-16be
-  // 15.3.1 utf-16be decoder
-  /** @param {{fatal: boolean}} options */
-  encoders['UTF-16BE'] = function(options) {
-    return new UTF16Encoder(true, options);
-  };
-  // 15.3.2 utf-16be encoder
-  /** @param {{fatal: boolean}} options */
-  decoders['UTF-16BE'] = function(options) {
-    return new UTF16Decoder(true, options);
-  };
-
-  // 15.4 utf-16le
-  // 15.4.1 utf-16le decoder
-  /** @param {{fatal: boolean}} options */
-  encoders['UTF-16LE'] = function(options) {
-    return new UTF16Encoder(false, options);
-  };
-  // 15.4.2 utf-16le encoder
-  /** @param {{fatal: boolean}} options */
-  decoders['UTF-16LE'] = function(options) {
-    return new UTF16Decoder(false, options);
-  };
-
-  // 15.5 x-user-defined
-
-  // 15.5.1 x-user-defined decoder
-  /**
-   * @constructor
-   * @implements {Decoder}
-   * @param {{fatal: boolean}} options
-   */
-  function XUserDefinedDecoder(options) {
-    var fatal = options.fatal;
-    /**
-     * @param {Stream} stream The stream of bytes being decoded.
-     * @param {number} bite The next byte read from the stream.
-     * @return {?(number|!Array.<number>)} The next code point(s)
-     *     decoded, or null if not enough data exists in the input
-     *     stream to decode a complete code point.
-     */
-    this.handler = function(stream, bite) {
-      // 1. If byte is end-of-stream, return finished.
-      if (bite === end_of_stream)
-        return finished;
-
-      // 2. If byte is an ASCII byte, return a code point whose value
-      // is byte.
-      if (isASCIIByte(bite))
-        return bite;
-
-      // 3. Return a code point whose value is 0xF780 + byte − 0x80.
-      return 0xF780 + bite - 0x80;
-    };
-  }
-
-  // 15.5.2 x-user-defined encoder
-  /**
-   * @constructor
-   * @implements {Encoder}
-   * @param {{fatal: boolean}} options
-   */
-  function XUserDefinedEncoder(options) {
-    var fatal = options.fatal;
-    /**
-     * @param {Stream} stream Input stream.
-     * @param {number} code_point Next code point read from the stream.
-     * @return {(number|!Array.<number>)} Byte(s) to emit.
-     */
-    this.handler = function(stream, code_point) {
-      // 1.If code point is end-of-stream, return finished.
-      if (code_point === end_of_stream)
-        return finished;
-
-      // 2. If code point is an ASCII code point, return a byte whose
-      // value is code point.
-      if (isASCIICodePoint(code_point))
-        return code_point;
-
-      // 3. If code point is in the range U+F780 to U+F7FF, inclusive,
-      // return a byte whose value is code point − 0xF780 + 0x80.
-      if (inRange(code_point, 0xF780, 0xF7FF))
-        return code_point - 0xF780 + 0x80;
-
-      // 4. Return error with code point.
-      return encoderError(code_point);
-    };
-  }
-
-  /** @param {{fatal: boolean}} options */
-  encoders['x-user-defined'] = function(options) {
-    return new XUserDefinedEncoder(options);
-  };
-  /** @param {{fatal: boolean}} options */
-  decoders['x-user-defined'] = function(options) {
-    return new XUserDefinedDecoder(options);
-  };
-
-  if (typeof module !== "undefined" && module.exports) {
-    module.exports = {
-      TextEncoder: TextEncoder,
-      TextDecoder: TextDecoder,
-      EncodingIndexes: require("./encoding-indexes.js")["encoding-indexes"]
-    };
-  }
-
-// For strict environments where `this` inside the global scope
-// is `undefined`, take a pure object instead
-}(this || {}));
diff --git a/server/data-import/node_modules/bson/vendor/text-encoding/package.json b/server/data-import/node_modules/bson/vendor/text-encoding/package.json
deleted file mode 100644
index ffc3155aab93770a568486923722c7cd658bcd7b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/bson/vendor/text-encoding/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-  "name": "text-encoding",
-  "author": "Joshua Bell <inexorabletash@gmail.com>",
-  "contributors": [
-    "Joshua Bell <inexorabletash@gmail.com>",
-    "Rick Eyre <rick.eyre@outlook.com>",
-    "Eugen Podaru <eugen.podaru@live.com>",
-    "Filip Dupanović <filip.dupanovic@gmail.com>",
-    "Anne van Kesteren <annevk@annevk.nl>",
-    "Author: Francis Avila <francisga@gmail.com>",
-    "Michael J. Ryan <tracker1@gmail.com>",
-    "Pierre Queinnec <pierre@queinnec.org>",
-    "Zack Weinberg <zackw@panix.com>"
-  ],
-  "version": "0.7.0",
-  "description": "Polyfill for the Encoding Living Standard's API.",
-  "main": "index.js",
-  "files": [
-    "index.js",
-    "lib/encoding.js",
-    "lib/encoding-indexes.js"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/inexorabletash/text-encoding.git"
-  },
-  "keywords": [
-    "encoding",
-    "decoding",
-    "living standard"
-  ],
-  "bugs": {
-    "url": "https://github.com/inexorabletash/text-encoding/issues"
-  },
-  "homepage": "https://github.com/inexorabletash/text-encoding",
-  "license": "(Unlicense OR Apache-2.0)"
-}
diff --git a/server/data-import/node_modules/memory-pager/.travis.yml b/server/data-import/node_modules/memory-pager/.travis.yml
deleted file mode 100644
index 1c4ab31e974d37bcfd286980ffa53891b2e5b608..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/memory-pager/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
-  - '4'
-  - '6'
diff --git a/server/data-import/node_modules/memory-pager/LICENSE b/server/data-import/node_modules/memory-pager/LICENSE
deleted file mode 100644
index 56fce0895e13ffe83650a7274d79fbcfb80d3e2f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/memory-pager/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2017 Mathias Buus
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/server/data-import/node_modules/memory-pager/README.md b/server/data-import/node_modules/memory-pager/README.md
deleted file mode 100644
index aed176140ca3a3d6ca2d73128a588600b3240299..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/memory-pager/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# memory-pager
-
-Access memory using small fixed sized buffers instead of allocating a huge buffer.
-Useful if you are implementing sparse data structures (such as large bitfield).
-
-![travis](https://travis-ci.org/mafintosh/memory-pager.svg?branch=master)
-
-```
-npm install memory-pager
-```
-
-## Usage
-
-``` js
-var pager = require('paged-memory')
-
-var pages = pager(1024) // use 1kb per page
-
-var page = pages.get(10) // get page #10
-
-console.log(page.offset) // 10240
-console.log(page.buffer) // a blank 1kb buffer
-```
-
-## API
-
-#### `var pages = pager(pageSize)`
-
-Create a new pager. `pageSize` defaults to `1024`.
-
-#### `var page = pages.get(pageNumber, [noAllocate])`
-
-Get a page. The page will be allocated at first access.
-
-Optionally you can set the `noAllocate` flag which will make the
-method return undefined if no page has been allocated already
-
-A page looks like this
-
-``` js
-{
-  offset: byteOffset,
-  buffer: bufferWithPageSize
-}
-```
-
-#### `pages.set(pageNumber, buffer)`
-
-Explicitly set the buffer for a page.
-
-#### `pages.updated(page)`
-
-Mark a page as updated.
-
-#### `pages.lastUpdate()`
-
-Get the last page that was updated.
-
-#### `var buf = pages.toBuffer()`
-
-Concat all pages allocated pages into a single buffer
-
-## License
-
-MIT
diff --git a/server/data-import/node_modules/memory-pager/index.js b/server/data-import/node_modules/memory-pager/index.js
deleted file mode 100644
index 687f346f30e6e8e6f3247f06c4946643ae2baba8..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/memory-pager/index.js
+++ /dev/null
@@ -1,160 +0,0 @@
-module.exports = Pager
-
-function Pager (pageSize, opts) {
-  if (!(this instanceof Pager)) return new Pager(pageSize, opts)
-
-  this.length = 0
-  this.updates = []
-  this.path = new Uint16Array(4)
-  this.pages = new Array(32768)
-  this.maxPages = this.pages.length
-  this.level = 0
-  this.pageSize = pageSize || 1024
-  this.deduplicate = opts ? opts.deduplicate : null
-  this.zeros = this.deduplicate ? alloc(this.deduplicate.length) : null
-}
-
-Pager.prototype.updated = function (page) {
-  while (this.deduplicate && page.buffer[page.deduplicate] === this.deduplicate[page.deduplicate]) {
-    page.deduplicate++
-    if (page.deduplicate === this.deduplicate.length) {
-      page.deduplicate = 0
-      if (page.buffer.equals && page.buffer.equals(this.deduplicate)) page.buffer = this.deduplicate
-      break
-    }
-  }
-  if (page.updated || !this.updates) return
-  page.updated = true
-  this.updates.push(page)
-}
-
-Pager.prototype.lastUpdate = function () {
-  if (!this.updates || !this.updates.length) return null
-  var page = this.updates.pop()
-  page.updated = false
-  return page
-}
-
-Pager.prototype._array = function (i, noAllocate) {
-  if (i >= this.maxPages) {
-    if (noAllocate) return
-    grow(this, i)
-  }
-
-  factor(i, this.path)
-
-  var arr = this.pages
-
-  for (var j = this.level; j > 0; j--) {
-    var p = this.path[j]
-    var next = arr[p]
-
-    if (!next) {
-      if (noAllocate) return
-      next = arr[p] = new Array(32768)
-    }
-
-    arr = next
-  }
-
-  return arr
-}
-
-Pager.prototype.get = function (i, noAllocate) {
-  var arr = this._array(i, noAllocate)
-  var first = this.path[0]
-  var page = arr && arr[first]
-
-  if (!page && !noAllocate) {
-    page = arr[first] = new Page(i, alloc(this.pageSize))
-    if (i >= this.length) this.length = i + 1
-  }
-
-  if (page && page.buffer === this.deduplicate && this.deduplicate && !noAllocate) {
-    page.buffer = copy(page.buffer)
-    page.deduplicate = 0
-  }
-
-  return page
-}
-
-Pager.prototype.set = function (i, buf) {
-  var arr = this._array(i, false)
-  var first = this.path[0]
-
-  if (i >= this.length) this.length = i + 1
-
-  if (!buf || (this.zeros && buf.equals && buf.equals(this.zeros))) {
-    arr[first] = undefined
-    return
-  }
-
-  if (this.deduplicate && buf.equals && buf.equals(this.deduplicate)) {
-    buf = this.deduplicate
-  }
-
-  var page = arr[first]
-  var b = truncate(buf, this.pageSize)
-
-  if (page) page.buffer = b
-  else arr[first] = new Page(i, b)
-}
-
-Pager.prototype.toBuffer = function () {
-  var list = new Array(this.length)
-  var empty = alloc(this.pageSize)
-  var ptr = 0
-
-  while (ptr < list.length) {
-    var arr = this._array(ptr, true)
-    for (var i = 0; i < 32768 && ptr < list.length; i++) {
-      list[ptr++] = (arr && arr[i]) ? arr[i].buffer : empty
-    }
-  }
-
-  return Buffer.concat(list)
-}
-
-function grow (pager, index) {
-  while (pager.maxPages < index) {
-    var old = pager.pages
-    pager.pages = new Array(32768)
-    pager.pages[0] = old
-    pager.level++
-    pager.maxPages *= 32768
-  }
-}
-
-function truncate (buf, len) {
-  if (buf.length === len) return buf
-  if (buf.length > len) return buf.slice(0, len)
-  var cpy = alloc(len)
-  buf.copy(cpy)
-  return cpy
-}
-
-function alloc (size) {
-  if (Buffer.alloc) return Buffer.alloc(size)
-  var buf = new Buffer(size)
-  buf.fill(0)
-  return buf
-}
-
-function copy (buf) {
-  var cpy = Buffer.allocUnsafe ? Buffer.allocUnsafe(buf.length) : new Buffer(buf.length)
-  buf.copy(cpy)
-  return cpy
-}
-
-function Page (i, buf) {
-  this.offset = i * buf.length
-  this.buffer = buf
-  this.updated = false
-  this.deduplicate = 0
-}
-
-function factor (n, out) {
-  n = (n - (out[0] = (n & 32767))) / 32768
-  n = (n - (out[1] = (n & 32767))) / 32768
-  out[3] = ((n - (out[2] = (n & 32767))) / 32768) & 32767
-}
diff --git a/server/data-import/node_modules/memory-pager/package.json b/server/data-import/node_modules/memory-pager/package.json
deleted file mode 100644
index f4847e8cd8415d5b70c907dc090e9803f352783d..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/memory-pager/package.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "name": "memory-pager",
-  "version": "1.5.0",
-  "description": "Access memory using small fixed sized buffers",
-  "main": "index.js",
-  "dependencies": {},
-  "devDependencies": {
-    "standard": "^9.0.0",
-    "tape": "^4.6.3"
-  },
-  "scripts": {
-    "test": "standard && tape test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mafintosh/memory-pager.git"
-  },
-  "author": "Mathias Buus (@mafintosh)",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/mafintosh/memory-pager/issues"
-  },
-  "homepage": "https://github.com/mafintosh/memory-pager"
-}
diff --git a/server/data-import/node_modules/memory-pager/test.js b/server/data-import/node_modules/memory-pager/test.js
deleted file mode 100644
index 16382100376b99a29f748969ba419c1b200080d9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/memory-pager/test.js
+++ /dev/null
@@ -1,80 +0,0 @@
-var tape = require('tape')
-var pager = require('./')
-
-tape('get page', function (t) {
-  var pages = pager(1024)
-
-  var page = pages.get(0)
-
-  t.same(page.offset, 0)
-  t.same(page.buffer, Buffer.alloc(1024))
-  t.end()
-})
-
-tape('get page twice', function (t) {
-  var pages = pager(1024)
-  t.same(pages.length, 0)
-
-  var page = pages.get(0)
-
-  t.same(page.offset, 0)
-  t.same(page.buffer, Buffer.alloc(1024))
-  t.same(pages.length, 1)
-
-  var other = pages.get(0)
-
-  t.same(other, page)
-  t.end()
-})
-
-tape('get no mutable page', function (t) {
-  var pages = pager(1024)
-
-  t.ok(!pages.get(141, true))
-  t.ok(pages.get(141))
-  t.ok(pages.get(141, true))
-
-  t.end()
-})
-
-tape('get far out page', function (t) {
-  var pages = pager(1024)
-
-  var page = pages.get(1000000)
-
-  t.same(page.offset, 1000000 * 1024)
-  t.same(page.buffer, Buffer.alloc(1024))
-  t.same(pages.length, 1000000 + 1)
-
-  var other = pages.get(1)
-
-  t.same(other.offset, 1024)
-  t.same(other.buffer, Buffer.alloc(1024))
-  t.same(pages.length, 1000000 + 1)
-  t.ok(other !== page)
-
-  t.end()
-})
-
-tape('updates', function (t) {
-  var pages = pager(1024)
-
-  t.same(pages.lastUpdate(), null)
-
-  var page = pages.get(10)
-
-  page.buffer[42] = 1
-  pages.updated(page)
-
-  t.same(pages.lastUpdate(), page)
-  t.same(pages.lastUpdate(), null)
-
-  page.buffer[42] = 2
-  pages.updated(page)
-  pages.updated(page)
-
-  t.same(pages.lastUpdate(), page)
-  t.same(pages.lastUpdate(), null)
-
-  t.end()
-})
diff --git a/server/data-import/node_modules/mongodb-connection-string-url/.esm-wrapper.mjs b/server/data-import/node_modules/mongodb-connection-string-url/.esm-wrapper.mjs
deleted file mode 100644
index a0f5be52ef20436fac7014c8340436f129ee1ab6..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb-connection-string-url/.esm-wrapper.mjs
+++ /dev/null
@@ -1,6 +0,0 @@
-import mod from "./lib/index.js";
-
-export default mod["default"];
-export const CommaAndColonSeparatedRecord = mod.CommaAndColonSeparatedRecord;
-export const ConnectionString = mod.ConnectionString;
-export const redactConnectionString = mod.redactConnectionString;
diff --git a/server/data-import/node_modules/mongodb-connection-string-url/LICENSE b/server/data-import/node_modules/mongodb-connection-string-url/LICENSE
deleted file mode 100644
index d57f55f4e6010ea1fe2cdf9392cdee40d3ed2d71..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb-connection-string-url/LICENSE
+++ /dev/null
@@ -1,192 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   Copyright 2020 MongoDB Inc.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
diff --git a/server/data-import/node_modules/mongodb-connection-string-url/README.md b/server/data-import/node_modules/mongodb-connection-string-url/README.md
deleted file mode 100644
index 0eb65d00fcc31242d01a09024eff5713d814173c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb-connection-string-url/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# mongodb-connection-string-url
-
-MongoDB connection strings, based on the WhatWG URL API
-
-```js
-import ConnectionString from 'mongodb-connection-string-url';
-
-const cs = new ConnectionString('mongodb://localhost');
-cs.searchParams.set('readPreference', 'secondary');
-console.log(cs.href); // 'mongodb://localhost/?readPreference=secondary'
-```
-
-## Deviations from the WhatWG URL package
-
-- URL parameters are case-insensitive
-- The `.host`, `.hostname` and `.port` properties cannot be set, and reading
-  them does not return meaningful results (and are typed as `never`in TypeScript)
-- The `.hosts` property contains a list of all hosts in the connection string
-- The `.href` property cannot be set, only read
-- There is an additional `.isSRV` property, set to `true` for `mongodb+srv://`
-- There is an additional `.clone()` utility method on the prototype
-
-## LICENSE
-
-Apache-2.0
diff --git a/server/data-import/node_modules/mongodb-connection-string-url/lib/index.d.ts b/server/data-import/node_modules/mongodb-connection-string-url/lib/index.d.ts
deleted file mode 100644
index 49c18ea2973e823d12a227845e6d9970f531d83d..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb-connection-string-url/lib/index.d.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import { URL } from 'whatwg-url';
-import { redactConnectionString, ConnectionStringRedactionOptions } from './redact';
-export { redactConnectionString, ConnectionStringRedactionOptions };
-declare class CaseInsensitiveMap<K extends string = string> extends Map<K, string> {
-    delete(name: K): boolean;
-    get(name: K): string | undefined;
-    has(name: K): boolean;
-    set(name: K, value: any): this;
-    _normalizeKey(name: any): K;
-}
-declare abstract class URLWithoutHost extends URL {
-    abstract get host(): never;
-    abstract set host(value: never);
-    abstract get hostname(): never;
-    abstract set hostname(value: never);
-    abstract get port(): never;
-    abstract set port(value: never);
-    abstract get href(): string;
-    abstract set href(value: string);
-}
-export interface ConnectionStringParsingOptions {
-    looseValidation?: boolean;
-}
-export declare class ConnectionString extends URLWithoutHost {
-    _hosts: string[];
-    constructor(uri: string, options?: ConnectionStringParsingOptions);
-    get host(): never;
-    set host(_ignored: never);
-    get hostname(): never;
-    set hostname(_ignored: never);
-    get port(): never;
-    set port(_ignored: never);
-    get href(): string;
-    set href(_ignored: string);
-    get isSRV(): boolean;
-    get hosts(): string[];
-    set hosts(list: string[]);
-    toString(): string;
-    clone(): ConnectionString;
-    redact(options?: ConnectionStringRedactionOptions): ConnectionString;
-    typedSearchParams<T extends {}>(): {
-        append(name: keyof T & string, value: any): void;
-        delete(name: keyof T & string): void;
-        get(name: keyof T & string): string | null;
-        getAll(name: keyof T & string): string[];
-        has(name: keyof T & string): boolean;
-        set(name: keyof T & string, value: any): void;
-        keys(): IterableIterator<keyof T & string>;
-        values(): IterableIterator<string>;
-        entries(): IterableIterator<[keyof T & string, string]>;
-        _normalizeKey(name: keyof T & string): string;
-        [Symbol.iterator](): IterableIterator<[keyof T & string, string]>;
-        sort(): void;
-        forEach<THIS_ARG = void>(callback: (this: THIS_ARG, value: string, name: string, searchParams: any) => void, thisArg?: THIS_ARG | undefined): void;
-        readonly [Symbol.toStringTag]: "URLSearchParams";
-    };
-}
-export declare class CommaAndColonSeparatedRecord<K extends {} = Record<string, unknown>> extends CaseInsensitiveMap<keyof K & string> {
-    constructor(from?: string | null);
-    toString(): string;
-}
-export default ConnectionString;
diff --git a/server/data-import/node_modules/mongodb-connection-string-url/lib/index.js b/server/data-import/node_modules/mongodb-connection-string-url/lib/index.js
deleted file mode 100644
index 8e4864d20caa8c1ffc3d52a4f04abada7b70aa34..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb-connection-string-url/lib/index.js
+++ /dev/null
@@ -1,213 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.CommaAndColonSeparatedRecord = exports.ConnectionString = exports.redactConnectionString = void 0;
-const whatwg_url_1 = require("whatwg-url");
-const redact_1 = require("./redact");
-Object.defineProperty(exports, "redactConnectionString", { enumerable: true, get: function () { return redact_1.redactConnectionString; } });
-const DUMMY_HOSTNAME = '__this_is_a_placeholder__';
-function connectionStringHasValidScheme(connectionString) {
-    return (connectionString.startsWith('mongodb://') ||
-        connectionString.startsWith('mongodb+srv://'));
-}
-const HOSTS_REGEX = /^(?<protocol>[^/]+):\/\/(?:(?<username>[^:@]*)(?::(?<password>[^@]*))?@)?(?<hosts>(?!:)[^/?@]*)(?<rest>.*)/;
-class CaseInsensitiveMap extends Map {
-    delete(name) {
-        return super.delete(this._normalizeKey(name));
-    }
-    get(name) {
-        return super.get(this._normalizeKey(name));
-    }
-    has(name) {
-        return super.has(this._normalizeKey(name));
-    }
-    set(name, value) {
-        return super.set(this._normalizeKey(name), value);
-    }
-    _normalizeKey(name) {
-        name = `${name}`;
-        for (const key of this.keys()) {
-            if (key.toLowerCase() === name.toLowerCase()) {
-                name = key;
-                break;
-            }
-        }
-        return name;
-    }
-}
-function caseInsenstiveURLSearchParams(Ctor) {
-    return class CaseInsenstiveURLSearchParams extends Ctor {
-        append(name, value) {
-            return super.append(this._normalizeKey(name), value);
-        }
-        delete(name) {
-            return super.delete(this._normalizeKey(name));
-        }
-        get(name) {
-            return super.get(this._normalizeKey(name));
-        }
-        getAll(name) {
-            return super.getAll(this._normalizeKey(name));
-        }
-        has(name) {
-            return super.has(this._normalizeKey(name));
-        }
-        set(name, value) {
-            return super.set(this._normalizeKey(name), value);
-        }
-        keys() {
-            return super.keys();
-        }
-        values() {
-            return super.values();
-        }
-        entries() {
-            return super.entries();
-        }
-        [Symbol.iterator]() {
-            return super[Symbol.iterator]();
-        }
-        _normalizeKey(name) {
-            return CaseInsensitiveMap.prototype._normalizeKey.call(this, name);
-        }
-    };
-}
-class URLWithoutHost extends whatwg_url_1.URL {
-}
-class MongoParseError extends Error {
-    get name() {
-        return 'MongoParseError';
-    }
-}
-class ConnectionString extends URLWithoutHost {
-    constructor(uri, options = {}) {
-        var _a;
-        const { looseValidation } = options;
-        if (!looseValidation && !connectionStringHasValidScheme(uri)) {
-            throw new MongoParseError('Invalid scheme, expected connection string to start with "mongodb://" or "mongodb+srv://"');
-        }
-        const match = uri.match(HOSTS_REGEX);
-        if (!match) {
-            throw new MongoParseError(`Invalid connection string "${uri}"`);
-        }
-        const { protocol, username, password, hosts, rest } = (_a = match.groups) !== null && _a !== void 0 ? _a : {};
-        if (!looseValidation) {
-            if (!protocol || !hosts) {
-                throw new MongoParseError(`Protocol and host list are required in "${uri}"`);
-            }
-            try {
-                decodeURIComponent(username !== null && username !== void 0 ? username : '');
-                decodeURIComponent(password !== null && password !== void 0 ? password : '');
-            }
-            catch (err) {
-                throw new MongoParseError(err.message);
-            }
-            const illegalCharacters = /[:/?#[\]@]/gi;
-            if (username === null || username === void 0 ? void 0 : username.match(illegalCharacters)) {
-                throw new MongoParseError(`Username contains unescaped characters ${username}`);
-            }
-            if (!username || !password) {
-                const uriWithoutProtocol = uri.replace(`${protocol}://`, '');
-                if (uriWithoutProtocol.startsWith('@') || uriWithoutProtocol.startsWith(':')) {
-                    throw new MongoParseError('URI contained empty userinfo section');
-                }
-            }
-            if (password === null || password === void 0 ? void 0 : password.match(illegalCharacters)) {
-                throw new MongoParseError('Password contains unescaped characters');
-            }
-        }
-        let authString = '';
-        if (typeof username === 'string')
-            authString += username;
-        if (typeof password === 'string')
-            authString += `:${password}`;
-        if (authString)
-            authString += '@';
-        try {
-            super(`${protocol.toLowerCase()}://${authString}${DUMMY_HOSTNAME}${rest}`);
-        }
-        catch (err) {
-            if (looseValidation) {
-                new ConnectionString(uri, {
-                    ...options,
-                    looseValidation: false
-                });
-            }
-            if (typeof err.message === 'string') {
-                err.message = err.message.replace(DUMMY_HOSTNAME, hosts);
-            }
-            throw err;
-        }
-        this._hosts = hosts.split(',');
-        if (!looseValidation) {
-            if (this.isSRV && this.hosts.length !== 1) {
-                throw new MongoParseError('mongodb+srv URI cannot have multiple service names');
-            }
-            if (this.isSRV && this.hosts.some(host => host.includes(':'))) {
-                throw new MongoParseError('mongodb+srv URI cannot have port number');
-            }
-        }
-        if (!this.pathname) {
-            this.pathname = '/';
-        }
-        Object.setPrototypeOf(this.searchParams, caseInsenstiveURLSearchParams(this.searchParams.constructor).prototype);
-    }
-    get host() { return DUMMY_HOSTNAME; }
-    set host(_ignored) { throw new Error('No single host for connection string'); }
-    get hostname() { return DUMMY_HOSTNAME; }
-    set hostname(_ignored) { throw new Error('No single host for connection string'); }
-    get port() { return ''; }
-    set port(_ignored) { throw new Error('No single host for connection string'); }
-    get href() { return this.toString(); }
-    set href(_ignored) { throw new Error('Cannot set href for connection strings'); }
-    get isSRV() {
-        return this.protocol.includes('srv');
-    }
-    get hosts() {
-        return this._hosts;
-    }
-    set hosts(list) {
-        this._hosts = list;
-    }
-    toString() {
-        return super.toString().replace(DUMMY_HOSTNAME, this.hosts.join(','));
-    }
-    clone() {
-        return new ConnectionString(this.toString(), {
-            looseValidation: true
-        });
-    }
-    redact(options) {
-        return (0, redact_1.redactValidConnectionString)(this, options);
-    }
-    typedSearchParams() {
-        const sametype = false && new (caseInsenstiveURLSearchParams(whatwg_url_1.URLSearchParams))();
-        return this.searchParams;
-    }
-    [Symbol.for('nodejs.util.inspect.custom')]() {
-        const { href, origin, protocol, username, password, hosts, pathname, search, searchParams, hash } = this;
-        return { href, origin, protocol, username, password, hosts, pathname, search, searchParams, hash };
-    }
-}
-exports.ConnectionString = ConnectionString;
-class CommaAndColonSeparatedRecord extends CaseInsensitiveMap {
-    constructor(from) {
-        super();
-        for (const entry of (from !== null && from !== void 0 ? from : '').split(',')) {
-            if (!entry)
-                continue;
-            const colonIndex = entry.indexOf(':');
-            if (colonIndex === -1) {
-                this.set(entry, '');
-            }
-            else {
-                this.set(entry.slice(0, colonIndex), entry.slice(colonIndex + 1));
-            }
-        }
-    }
-    toString() {
-        return [...this].map(entry => entry.join(':')).join(',');
-    }
-}
-exports.CommaAndColonSeparatedRecord = CommaAndColonSeparatedRecord;
-exports.default = ConnectionString;
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb-connection-string-url/lib/index.js.map b/server/data-import/node_modules/mongodb-connection-string-url/lib/index.js.map
deleted file mode 100644
index d325062aa47453ce1eb06a152c86b4f0e6bbc0e3..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb-connection-string-url/lib/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAAkD;AAClD,qCAIkB;AACT,uGAHP,+BAAsB,OAGO;AAE/B,MAAM,cAAc,GAAG,2BAA2B,CAAC;AAEnD,SAAS,8BAA8B,CAAC,gBAAwB;IAC9D,OAAO,CACL,gBAAgB,CAAC,UAAU,CAAC,YAAY,CAAC;QACzC,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAC9C,CAAC;AACJ,CAAC;AAID,MAAM,WAAW,GACf,4GAA4G,CAAC;AAE/G,MAAM,kBAA8C,SAAQ,GAAc;IACxE,MAAM,CAAC,IAAO;QACZ,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,IAAO;QACT,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,IAAO;QACT,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,IAAO,EAAE,KAAU;QACrB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,aAAa,CAAC,IAAS;QACrB,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;gBAC5C,IAAI,GAAG,GAAG,CAAC;gBACX,MAAM;aACP;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,SAAS,6BAA6B,CAA4B,IAA4B;IAC5F,OAAO,MAAM,6BAA8B,SAAQ,IAAI;QACrD,MAAM,CAAC,IAAO,EAAE,KAAU;YACxB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,IAAO;YACZ,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,GAAG,CAAC,IAAO;YACT,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,CAAC,IAAO;YACZ,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,GAAG,CAAC,IAAO;YACT,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,GAAG,CAAC,IAAO,EAAE,KAAU;YACrB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;QAED,IAAI;YACF,OAAO,KAAK,CAAC,IAAI,EAAyB,CAAC;QAC7C,CAAC;QAED,MAAM;YACJ,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC;QAED,OAAO;YACL,OAAO,KAAK,CAAC,OAAO,EAAmC,CAAC;QAC1D,CAAC;QAED,CAAC,MAAM,CAAC,QAAQ,CAAC;YACf,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAmC,CAAC;QACnE,CAAC;QAED,aAAa,CAAC,IAAO;YACnB,OAAO,kBAAkB,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrE,CAAC;KACF,CAAC;AACJ,CAAC;AAGD,MAAe,cAAe,SAAQ,gBAAG;CASxC;AAED,MAAM,eAAgB,SAAQ,KAAK;IACjC,IAAI,IAAI;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF;AAUD,MAAa,gBAAiB,SAAQ,cAAc;IAIlD,YAAY,GAAW,EAAE,UAA0C,EAAE;;QACnE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QACpC,IAAI,CAAC,eAAe,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,EAAE;YAC5D,MAAM,IAAI,eAAe,CAAC,2FAA2F,CAAC,CAAC;SACxH;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,eAAe,CAAC,8BAA8B,GAAG,GAAG,CAAC,CAAC;SACjE;QAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,EAAE,CAAC;QAEzE,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE;gBACvB,MAAM,IAAI,eAAe,CAAC,2CAA2C,GAAG,GAAG,CAAC,CAAC;aAC9E;YAED,IAAI;gBACF,kBAAkB,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;gBACnC,kBAAkB,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;aACpC;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,IAAI,eAAe,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;aACnD;YAGD,MAAM,iBAAiB,GAAG,cAAc,CAAC;YACzC,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE;gBACtC,MAAM,IAAI,eAAe,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;aACjF;YACD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBAC1B,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,QAAQ,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC7D,IAAI,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBAC5E,MAAM,IAAI,eAAe,CAAC,sCAAsC,CAAC,CAAC;iBACnE;aACF;YAED,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE;gBACtC,MAAM,IAAI,eAAe,CAAC,wCAAwC,CAAC,CAAC;aACrE;SACF;QAED,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,UAAU,IAAI,QAAQ,CAAC;QACzD,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,UAAU,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC/D,IAAI,UAAU;YAAE,UAAU,IAAI,GAAG,CAAC;QAElC,IAAI;YACF,KAAK,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,MAAM,UAAU,GAAG,cAAc,GAAG,IAAI,EAAE,CAAC,CAAC;SAC5E;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,eAAe,EAAE;gBAInB,IAAI,gBAAgB,CAAC,GAAG,EAAE;oBACxB,GAAG,OAAO;oBACV,eAAe,EAAE,KAAK;iBACvB,CAAC,CAAC;aACJ;YACD,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE;gBACnC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;aAC1D;YACD,MAAM,GAAG,CAAC;SACX;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzC,MAAM,IAAI,eAAe,CAAC,oDAAoD,CAAC,CAAC;aACjF;YACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC7D,MAAM,IAAI,eAAe,CAAC,yCAAyC,CAAC,CAAC;aACtE;SACF;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;SACrB;QACD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,6BAA6B,CAAC,IAAI,CAAC,YAAY,CAAC,WAAkB,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1H,CAAC;IAKD,IAAI,IAAI,KAAY,OAAO,cAAuB,CAAC,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,QAAe,IAAI,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,QAAQ,KAAY,OAAO,cAAuB,CAAC,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,QAAe,IAAI,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC;IAC1F,IAAI,IAAI,KAAY,OAAO,EAAW,CAAC,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,QAAe,IAAI,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,QAAgB,IAAI,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC;IAEzF,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,IAAc;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,QAAQ;QACN,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,KAAK;QACH,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YAC3C,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,OAA0C;QAC/C,OAAO,IAAA,oCAA2B,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAGD,iBAAiB;QACf,MAAM,QAAQ,GAAI,KAAc,IAAI,IAAI,CAAC,6BAA6B,CAAmB,4BAAe,CAAC,CAAC,EAAE,CAAC;QAC7G,OAAO,IAAI,CAAC,YAA0C,CAAC;IACzD,CAAC;IAED,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACxC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACzG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACrG,CAAC;CACF;AArID,4CAqIC;AAOD,MAAa,4BAAqE,SAAQ,kBAAoC;IAC5H,YAAY,IAAoB;QAC9B,KAAK,EAAE,CAAC;QACR,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC3C,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEtC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;gBACrB,IAAI,CAAC,GAAG,CAAC,KAA2B,EAAE,EAAE,CAAC,CAAC;aAC3C;iBAAM;gBACL,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAuB,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;aACzF;SACF;IACH,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC;CACF;AAlBD,oEAkBC;AAED,kBAAe,gBAAgB,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb-connection-string-url/lib/redact.d.ts b/server/data-import/node_modules/mongodb-connection-string-url/lib/redact.d.ts
deleted file mode 100644
index 94a64defc1bd2df81792a91e3ce3271e60e44ec8..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb-connection-string-url/lib/redact.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import ConnectionString from './index';
-export interface ConnectionStringRedactionOptions {
-    redactUsernames?: boolean;
-    replacementString?: string;
-}
-export declare function redactValidConnectionString(inputUrl: Readonly<ConnectionString>, options?: ConnectionStringRedactionOptions): ConnectionString;
-export declare function redactConnectionString(uri: string, options?: ConnectionStringRedactionOptions): string;
diff --git a/server/data-import/node_modules/mongodb-connection-string-url/lib/redact.js b/server/data-import/node_modules/mongodb-connection-string-url/lib/redact.js
deleted file mode 100644
index 62c7ba71c06e0948eb17fba21fc5540d25c7c376..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb-connection-string-url/lib/redact.js
+++ /dev/null
@@ -1,86 +0,0 @@
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    var desc = Object.getOwnPropertyDescriptor(m, k);
-    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
-      desc = { enumerable: true, get: function() { return m[k]; } };
-    }
-    Object.defineProperty(o, k2, desc);
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
-    Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
-    o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-    __setModuleDefault(result, mod);
-    return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.redactConnectionString = exports.redactValidConnectionString = void 0;
-const index_1 = __importStar(require("./index"));
-function redactValidConnectionString(inputUrl, options) {
-    var _a, _b;
-    const url = inputUrl.clone();
-    const replacementString = (_a = options === null || options === void 0 ? void 0 : options.replacementString) !== null && _a !== void 0 ? _a : '_credentials_';
-    const redactUsernames = (_b = options === null || options === void 0 ? void 0 : options.redactUsernames) !== null && _b !== void 0 ? _b : true;
-    if ((url.username || url.password) && redactUsernames) {
-        url.username = replacementString;
-        url.password = '';
-    }
-    else if (url.password) {
-        url.password = replacementString;
-    }
-    if (url.searchParams.has('authMechanismProperties')) {
-        const props = new index_1.CommaAndColonSeparatedRecord(url.searchParams.get('authMechanismProperties'));
-        if (props.get('AWS_SESSION_TOKEN')) {
-            props.set('AWS_SESSION_TOKEN', replacementString);
-            url.searchParams.set('authMechanismProperties', props.toString());
-        }
-    }
-    if (url.searchParams.has('tlsCertificateKeyFilePassword')) {
-        url.searchParams.set('tlsCertificateKeyFilePassword', replacementString);
-    }
-    if (url.searchParams.has('proxyUsername') && redactUsernames) {
-        url.searchParams.set('proxyUsername', replacementString);
-    }
-    if (url.searchParams.has('proxyPassword')) {
-        url.searchParams.set('proxyPassword', replacementString);
-    }
-    return url;
-}
-exports.redactValidConnectionString = redactValidConnectionString;
-function redactConnectionString(uri, options) {
-    var _a, _b;
-    const replacementString = (_a = options === null || options === void 0 ? void 0 : options.replacementString) !== null && _a !== void 0 ? _a : '<credentials>';
-    const redactUsernames = (_b = options === null || options === void 0 ? void 0 : options.redactUsernames) !== null && _b !== void 0 ? _b : true;
-    let parsed;
-    try {
-        parsed = new index_1.default(uri);
-    }
-    catch (_c) { }
-    if (parsed) {
-        options = { ...options, replacementString: '___credentials___' };
-        return parsed.redact(options).toString().replace(/___credentials___/g, replacementString);
-    }
-    const R = replacementString;
-    const replacements = [
-        uri => uri.replace(redactUsernames ? /(\/\/)(.*)(@)/g : /(\/\/[^@]*:)(.*)(@)/g, `$1${R}$3`),
-        uri => uri.replace(/(AWS_SESSION_TOKEN(:|%3A))([^,&]+)/gi, `$1${R}`),
-        uri => uri.replace(/(tlsCertificateKeyFilePassword=)([^&]+)/gi, `$1${R}`),
-        uri => redactUsernames ? uri.replace(/(proxyUsername=)([^&]+)/gi, `$1${R}`) : uri,
-        uri => uri.replace(/(proxyPassword=)([^&]+)/gi, `$1${R}`)
-    ];
-    for (const replacer of replacements) {
-        uri = replacer(uri);
-    }
-    return uri;
-}
-exports.redactConnectionString = redactConnectionString;
-//# sourceMappingURL=redact.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb-connection-string-url/lib/redact.js.map b/server/data-import/node_modules/mongodb-connection-string-url/lib/redact.js.map
deleted file mode 100644
index 24a282b9c381dd9ff446ba2d60282f67458a7075..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb-connection-string-url/lib/redact.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb-connection-string-url/package.json b/server/data-import/node_modules/mongodb-connection-string-url/package.json
deleted file mode 100644
index 457eadce9029159f54d4e3fcf9ba3ca99f027443..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb-connection-string-url/package.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "name": "mongodb-connection-string-url",
-  "version": "3.0.0",
-  "description": "MongoDB connection strings, based on the WhatWG URL API",
-  "keywords": [
-    "password",
-    "prompt",
-    "tty"
-  ],
-  "homepage": "https://github.com/mongodb-js/mongodb-connection-string-url",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mongodb-js/mongodb-connection-string-url.git"
-  },
-  "bugs": {
-    "url": "https://github.com/mongodb-js/mongodb-connection-string-url/issues"
-  },
-  "main": "lib/index.js",
-  "exports": {
-    "require": "./lib/index.js",
-    "import": "./.esm-wrapper.mjs"
-  },
-  "files": [
-    "LICENSE",
-    "lib",
-    "package.json",
-    "README.md",
-    ".esm-wrapper.mjs"
-  ],
-  "scripts": {
-    "lint": "eslint \"{src,test}/**/*.ts\"",
-    "test": "npm run lint && npm run build && nyc mocha --colors -r ts-node/register test/*.ts",
-    "build": "npm run compile-ts && gen-esm-wrapper . ./.esm-wrapper.mjs",
-    "prepack": "npm run build",
-    "compile-ts": "tsc -p tsconfig.json"
-  },
-  "license": "Apache-2.0",
-  "devDependencies": {
-    "@types/chai": "^4.2.5",
-    "@types/mocha": "^8.0.3",
-    "@types/node": "^14.11.1",
-    "@typescript-eslint/eslint-plugin": "^4.2.0",
-    "@typescript-eslint/parser": "^4.2.0",
-    "chai": "^4.2.0",
-    "eslint": "^7.9.0",
-    "eslint-config-semistandard": "^15.0.1",
-    "eslint-config-standard": "^14.1.1",
-    "eslint-plugin-import": "^2.22.0",
-    "eslint-plugin-node": "^11.1.0",
-    "eslint-plugin-promise": "^4.2.1",
-    "eslint-plugin-standard": "^4.0.1",
-    "gen-esm-wrapper": "^1.1.3",
-    "mocha": "^8.1.3",
-    "nyc": "^15.1.0",
-    "ts-node": "^10.9.1",
-    "typescript": "^4.7.4"
-  },
-  "dependencies": {
-    "@types/whatwg-url": "^11.0.2",
-    "whatwg-url": "^13.0.0"
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/LICENSE.md b/server/data-import/node_modules/mongodb/LICENSE.md
deleted file mode 100644
index ad410e11302107da9aa47ce3d46bd5ad011c4c43..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/LICENSE.md
+++ /dev/null
@@ -1,201 +0,0 @@
-Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "{}"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright {yyyy} {name of copyright owner}
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/README.md b/server/data-import/node_modules/mongodb/README.md
deleted file mode 100644
index d58a969ed3c946cfc928d25307fbf282bbcbbec4..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/README.md
+++ /dev/null
@@ -1,323 +0,0 @@
-# MongoDB Node.js Driver
-
-The official [MongoDB](https://www.mongodb.com/) driver for Node.js.
-
-**Upgrading to version 6? Take a look at our [upgrade guide here](https://github.com/mongodb/node-mongodb-native/blob/HEAD/etc/notes/CHANGES_6.0.0.md)!**
-
-## Quick Links
-
-| Site                     | Link                                                                                                                                  |
-| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
-| Documentation            | [www.mongodb.com/docs/drivers/node](https://www.mongodb.com/docs/drivers/node)                                                        |
-| API Docs                 | [mongodb.github.io/node-mongodb-native](https://mongodb.github.io/node-mongodb-native)                                                |
-| `npm` package            | [www.npmjs.com/package/mongodb](https://www.npmjs.com/package/mongodb)                                                                |
-| MongoDB                  | [www.mongodb.com](https://www.mongodb.com)                                                                                            |
-| MongoDB University       | [learn.mongodb.com](https://learn.mongodb.com/catalog?labels=%5B%22Language%22%5D&values=%5B%22Node.js%22%5D)                         |
-| MongoDB Developer Center | [www.mongodb.com/developer](https://www.mongodb.com/developer/languages/javascript/)                                                  |
-| Stack Overflow           | [stackoverflow.com](https://stackoverflow.com/search?q=%28%5Btypescript%5D+or+%5Bjavascript%5D+or+%5Bnode.js%5D%29+and+%5Bmongodb%5D) |
-| Source Code              | [github.com/mongodb/node-mongodb-native](https://github.com/mongodb/node-mongodb-native)                                              |
-| Upgrade to v6            | [etc/notes/CHANGES_6.0.0.md](https://github.com/mongodb/node-mongodb-native/blob/HEAD/etc/notes/CHANGES_6.0.0.md)                     |
-| Contributing             | [CONTRIBUTING.md](https://github.com/mongodb/node-mongodb-native/blob/HEAD/CONTRIBUTING.md)                                           |
-| Changelog                | [HISTORY.md](https://github.com/mongodb/node-mongodb-native/blob/HEAD/HISTORY.md)                                                     |
-
-### Bugs / Feature Requests
-
-Think you’ve found a bug? Want to see a new feature in `node-mongodb-native`? Please open a
-case in our issue management tool, JIRA:
-
-- Create an account and login [jira.mongodb.org](https://jira.mongodb.org).
-- Navigate to the NODE project [jira.mongodb.org/browse/NODE](https://jira.mongodb.org/browse/NODE).
-- Click **Create Issue** - Please provide as much information as possible about the issue type and how to reproduce it.
-
-Bug reports in JIRA for all driver projects (i.e. NODE, PYTHON, CSHARP, JAVA) and the
-Core Server (i.e. SERVER) project are **public**.
-
-### Support / Feedback
-
-For issues with, questions about, or feedback for the Node.js driver, please look into our [support channels](https://www.mongodb.com/docs/manual/support). Please do not email any of the driver developers directly with issues or questions - you're more likely to get an answer on the [MongoDB Community Forums](https://community.mongodb.com/tags/c/drivers-odms-connectors/7/node-js-driver).
-
-### Change Log
-
-Change history can be found in [`HISTORY.md`](https://github.com/mongodb/node-mongodb-native/blob/HEAD/HISTORY.md).
-
-### Compatibility
-
-For server and runtime version compatibility matrices, please refer to the following links:
-
-- [MongoDB](https://www.mongodb.com/docs/drivers/node/current/compatibility/#mongodb-compatibility)
-- [NodeJS](https://www.mongodb.com/docs/drivers/node/current/compatibility/#language-compatibility)
-
-#### Component Support Matrix
-
-The following table describes add-on component version compatibility for the Node.js driver. Only packages with versions in these supported ranges are stable when used in combination.
-
-| Component                                                                            | `mongodb@3.x`      | `mongodb@4.x`      | `mongodb@5.x`      | `mongodb@6.x` |
-| ------------------------------------------------------------------------------------ | ------------------ | ------------------ | ------------------ | ------------- |
-| [bson](https://www.npmjs.com/package/bson)                                           | ^1.0.0             | ^4.0.0             | ^5.0.0             | ^6.0.0        |
-| [bson-ext](https://www.npmjs.com/package/bson-ext)                                   | ^1.0.0 \|\| ^2.0.0 | ^4.0.0             | N/A                | N/A           |
-| [kerberos](https://www.npmjs.com/package/kerberos)                                   | ^1.0.0             | ^1.0.0 \|\| ^2.0.0 | ^1.0.0 \|\| ^2.0.0 | ^2.0.1        |
-| [mongodb-client-encryption](https://www.npmjs.com/package/mongodb-client-encryption) | ^1.0.0             | ^1.0.0 \|\| ^2.0.0 | ^2.3.0             | ^6.0.0        |
-| [mongodb-legacy](https://www.npmjs.com/package/mongodb-legacy)                       | N/A                | ^4.0.0             | ^5.0.0             | ^6.0.0        |
-| [@mongodb-js/zstd](https://www.npmjs.com/package/@mongodb-js/zstd)                   | N/A                | ^1.0.0             | ^1.0.0             | ^1.1.0        |
-
-#### Typescript Version
-
-We recommend using the latest version of typescript, however we currently ensure the driver's public types compile against `typescript@4.1.6`.
-This is the lowest typescript version guaranteed to work with our driver: older versions may or may not work - use at your own risk.
-Since typescript [does not restrict breaking changes to major versions](https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes) we consider this support best effort.
-If you run into any unexpected compiler failures against our supported TypeScript versions please let us know by filing an issue on our [JIRA](https://jira.mongodb.org/browse/NODE).
-
-## Installation
-
-The recommended way to get started using the Node.js 5.x driver is by using the `npm` (Node Package Manager) to install the dependency in your project.
-
-After you've created your own project using `npm init`, you can run:
-
-```bash
-npm install mongodb
-# or ...
-yarn add mongodb
-```
-
-This will download the MongoDB driver and add a dependency entry in your `package.json` file.
-
-If you are a Typescript user, you will need the Node.js type definitions to use the driver's definitions:
-
-```sh
-npm install -D @types/node
-```
-
-## Driver Extensions
-
-The MongoDB driver can optionally be enhanced by the following feature packages:
-
-Maintained by MongoDB:
-
-- Zstd network compression - [@mongodb-js/zstd](https://github.com/mongodb-js/zstd)
-- MongoDB field level and queryable encryption - [mongodb-client-encryption](https://github.com/mongodb/libmongocrypt#readme)
-- GSSAPI / SSPI / Kerberos authentication - [kerberos](https://github.com/mongodb-js/kerberos)
-
-Some of these packages include native C++ extensions.
-Consult the [trouble shooting guide here](https://github.com/mongodb/node-mongodb-native/blob/HEAD/etc/notes/native-extensions.md) if you run into compilation issues.
-
-Third party:
-
-- Snappy network compression - [snappy](https://github.com/Brooooooklyn/snappy)
-- AWS authentication - [@aws-sdk/credential-providers](https://github.com/aws/aws-sdk-js-v3/tree/main/packages/credential-providers)
-
-## Quick Start
-
-This guide will show you how to set up a simple application using Node.js and MongoDB. Its scope is only how to set up the driver and perform the simple CRUD operations. For more in-depth coverage, see the [official documentation](https://www.mongodb.com/docs/drivers/node/).
-
-### Create the `package.json` file
-
-First, create a directory where your application will live.
-
-```bash
-mkdir myProject
-cd myProject
-```
-
-Enter the following command and answer the questions to create the initial structure for your new project:
-
-```bash
-npm init -y
-```
-
-Next, install the driver as a dependency.
-
-```bash
-npm install mongodb
-```
-
-### Start a MongoDB Server
-
-For complete MongoDB installation instructions, see [the manual](https://www.mongodb.com/docs/manual/installation/).
-
-1. Download the right MongoDB version from [MongoDB](https://www.mongodb.org/downloads)
-2. Create a database directory (in this case under **/data**).
-3. Install and start a `mongod` process.
-
-```bash
-mongod --dbpath=/data
-```
-
-You should see the **mongod** process start up and print some status information.
-
-### Connect to MongoDB
-
-Create a new **app.js** file and add the following code to try out some basic CRUD
-operations using the MongoDB driver.
-
-Add code to connect to the server and the database **myProject**:
-
-> **NOTE:** Resolving DNS Connection issues
->
-> Node.js 18 changed the default DNS resolution ordering from always prioritizing ipv4 to the ordering
-> returned by the DNS provider. In some environments, this can result in `localhost` resolving to
-> an ipv6 address instead of ipv4 and a consequent failure to connect to the server.
->
-> This can be resolved by:
->
-> - specifying the ip address family using the MongoClient `family` option (`MongoClient(<uri>, { family: 4 } )`)
-> - launching mongod or mongos with the ipv6 flag enabled ([--ipv6 mongod option documentation](https://www.mongodb.com/docs/manual/reference/program/mongod/#std-option-mongod.--ipv6))
-> - using a host of `127.0.0.1` in place of localhost
-> - specifying the DNS resolution ordering with the `--dns-resolution-order` Node.js command line argument (e.g. `node --dns-resolution-order=ipv4first`)
-
-```js
-const { MongoClient } = require('mongodb');
-// or as an es module:
-// import { MongoClient } from 'mongodb'
-
-// Connection URL
-const url = 'mongodb://localhost:27017';
-const client = new MongoClient(url);
-
-// Database Name
-const dbName = 'myProject';
-
-async function main() {
-  // Use connect method to connect to the server
-  await client.connect();
-  console.log('Connected successfully to server');
-  const db = client.db(dbName);
-  const collection = db.collection('documents');
-
-  // the following code examples can be pasted here...
-
-  return 'done.';
-}
-
-main()
-  .then(console.log)
-  .catch(console.error)
-  .finally(() => client.close());
-```
-
-Run your app from the command line with:
-
-```bash
-node app.js
-```
-
-The application should print **Connected successfully to server** to the console.
-
-### Insert a Document
-
-Add to **app.js** the following function which uses the **insertMany**
-method to add three documents to the **documents** collection.
-
-```js
-const insertResult = await collection.insertMany([{ a: 1 }, { a: 2 }, { a: 3 }]);
-console.log('Inserted documents =>', insertResult);
-```
-
-The **insertMany** command returns an object with information about the insert operations.
-
-### Find All Documents
-
-Add a query that returns all the documents.
-
-```js
-const findResult = await collection.find({}).toArray();
-console.log('Found documents =>', findResult);
-```
-
-This query returns all the documents in the **documents** collection.
-If you add this below the insertMany example you'll see the document's you've inserted.
-
-### Find Documents with a Query Filter
-
-Add a query filter to find only documents which meet the query criteria.
-
-```js
-const filteredDocs = await collection.find({ a: 3 }).toArray();
-console.log('Found documents filtered by { a: 3 } =>', filteredDocs);
-```
-
-Only the documents which match `'a' : 3` should be returned.
-
-### Update a document
-
-The following operation updates a document in the **documents** collection.
-
-```js
-const updateResult = await collection.updateOne({ a: 3 }, { $set: { b: 1 } });
-console.log('Updated documents =>', updateResult);
-```
-
-The method updates the first document where the field **a** is equal to **3** by adding a new field **b** to the document set to **1**. `updateResult` contains information about whether there was a matching document to update or not.
-
-### Remove a document
-
-Remove the document where the field **a** is equal to **3**.
-
-```js
-const deleteResult = await collection.deleteMany({ a: 3 });
-console.log('Deleted documents =>', deleteResult);
-```
-
-### Index a Collection
-
-[Indexes](https://www.mongodb.com/docs/manual/indexes/) can improve your application's
-performance. The following function creates an index on the **a** field in the
-**documents** collection.
-
-```js
-const indexName = await collection.createIndex({ a: 1 });
-console.log('index name =', indexName);
-```
-
-For more detailed information, see the [indexing strategies page](https://www.mongodb.com/docs/manual/applications/indexes/).
-
-## Error Handling
-
-If you need to filter certain errors from our driver we have a helpful tree of errors described in [etc/notes/errors.md](https://github.com/mongodb/node-mongodb-native/blob/HEAD/etc/notes/errors.md).
-
-It is our recommendation to use `instanceof` checks on errors and to avoid relying on parsing `error.message` and `error.name` strings in your code.
-We guarantee `instanceof` checks will pass according to semver guidelines, but errors may be sub-classed or their messages may change at any time, even patch releases, as we see fit to increase the helpfulness of the errors.
-
-Any new errors we add to the driver will directly extend an existing error class and no existing error will be moved to a different parent class outside of a major release.
-This means `instanceof` will always be able to accurately capture the errors that our driver throws.
-
-```typescript
-const client = new MongoClient(url);
-await client.connect();
-const collection = client.db().collection('collection');
-
-try {
-  await collection.insertOne({ _id: 1 });
-  await collection.insertOne({ _id: 1 }); // duplicate key error
-} catch (error) {
-  if (error instanceof MongoServerError) {
-    console.log(`Error worth logging: ${error}`); // special case for some reason
-  }
-  throw error; // still want to crash
-}
-```
-
-## Nightly releases
-
-If you need to test with a change from the latest `main` branch our `mongodb` npm package has nightly versions released under the `nightly` tag.
-
-```sh
-npm install mongodb@nightly
-```
-
-Nightly versions are published regardless of testing outcome.
-This means there could be sematic breakages or partially implemented features.
-The nightly build is not suitable for production use.
-
-## Next Steps
-
-- [MongoDB Documentation](https://www.mongodb.com/docs/manual/)
-- [MongoDB Node Driver Documentation](https://www.mongodb.com/docs/drivers/node/)
-- [Read about Schemas](https://www.mongodb.com/docs/manual/core/data-modeling-introduction/)
-- [Star us on GitHub](https://github.com/mongodb/node-mongodb-native)
-
-## License
-
-[Apache 2.0](LICENSE.md)
-
-© 2012-present MongoDB [Contributors](https://github.com/mongodb/node-mongodb-native/blob/HEAD/CONTRIBUTORS.md) \
-© 2009-2012 Christian Amor Kvalheim
diff --git a/server/data-import/node_modules/mongodb/etc/prepare.js b/server/data-import/node_modules/mongodb/etc/prepare.js
deleted file mode 100644
index 2039d0b33ade270ab661f33a9d72e6b6af863443..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/etc/prepare.js
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /usr/bin/env node
-var cp = require('child_process');
-var fs = require('fs');
-var os = require('os');
-
-if (fs.existsSync('src')) {
-  cp.spawn('npm', ['run', 'build:dts'], { stdio: 'inherit', shell: os.platform() === 'win32' });
-} else {
-  if (!fs.existsSync('lib')) {
-    console.warn('MongoDB: No compiled javascript present, the driver is not installed correctly.');
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/lib/admin.js b/server/data-import/node_modules/mongodb/lib/admin.js
deleted file mode 100644
index bab543b9cdd734c89eb6838678347212c3425d6c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/admin.js
+++ /dev/null
@@ -1,134 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Admin = void 0;
-const bson_1 = require("./bson");
-const execute_operation_1 = require("./operations/execute_operation");
-const list_databases_1 = require("./operations/list_databases");
-const remove_user_1 = require("./operations/remove_user");
-const run_command_1 = require("./operations/run_command");
-const validate_collection_1 = require("./operations/validate_collection");
-/**
- * The **Admin** class is an internal class that allows convenient access to
- * the admin functionality and commands for MongoDB.
- *
- * **ADMIN Cannot directly be instantiated**
- * @public
- *
- * @example
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * const client = new MongoClient('mongodb://localhost:27017');
- * const admin = client.db().admin();
- * const dbInfo = await admin.listDatabases();
- * for (const db of dbInfo.databases) {
- *   console.log(db.name);
- * }
- * ```
- */
-class Admin {
-    /**
-     * Create a new Admin instance
-     * @internal
-     */
-    constructor(db) {
-        this.s = { db };
-    }
-    /**
-     * Execute a command
-     *
-     * The driver will ensure the following fields are attached to the command sent to the server:
-     * - `lsid` - sourced from an implicit session or options.session
-     * - `$readPreference` - defaults to primary or can be configured by options.readPreference
-     * - `$db` - sourced from the name of this database
-     *
-     * If the client has a serverApi setting:
-     * - `apiVersion`
-     * - `apiStrict`
-     * - `apiDeprecationErrors`
-     *
-     * When in a transaction:
-     * - `readConcern` - sourced from readConcern set on the TransactionOptions
-     * - `writeConcern` - sourced from writeConcern set on the TransactionOptions
-     *
-     * Attaching any of the above fields to the command will have no effect as the driver will overwrite the value.
-     *
-     * @param command - The command to execute
-     * @param options - Optional settings for the command
-     */
-    async command(command, options) {
-        return (0, execute_operation_1.executeOperation)(this.s.db.client, new run_command_1.RunAdminCommandOperation(command, {
-            ...(0, bson_1.resolveBSONOptions)(options),
-            session: options?.session,
-            readPreference: options?.readPreference
-        }));
-    }
-    /**
-     * Retrieve the server build information
-     *
-     * @param options - Optional settings for the command
-     */
-    async buildInfo(options) {
-        return this.command({ buildinfo: 1 }, options);
-    }
-    /**
-     * Retrieve the server build information
-     *
-     * @param options - Optional settings for the command
-     */
-    async serverInfo(options) {
-        return this.command({ buildinfo: 1 }, options);
-    }
-    /**
-     * Retrieve this db's server status.
-     *
-     * @param options - Optional settings for the command
-     */
-    async serverStatus(options) {
-        return this.command({ serverStatus: 1 }, options);
-    }
-    /**
-     * Ping the MongoDB server and retrieve results
-     *
-     * @param options - Optional settings for the command
-     */
-    async ping(options) {
-        return this.command({ ping: 1 }, options);
-    }
-    /**
-     * Remove a user from a database
-     *
-     * @param username - The username to remove
-     * @param options - Optional settings for the command
-     */
-    async removeUser(username, options) {
-        return (0, execute_operation_1.executeOperation)(this.s.db.client, new remove_user_1.RemoveUserOperation(this.s.db, username, { dbName: 'admin', ...options }));
-    }
-    /**
-     * Validate an existing collection
-     *
-     * @param collectionName - The name of the collection to validate.
-     * @param options - Optional settings for the command
-     */
-    async validateCollection(collectionName, options = {}) {
-        return (0, execute_operation_1.executeOperation)(this.s.db.client, new validate_collection_1.ValidateCollectionOperation(this, collectionName, options));
-    }
-    /**
-     * List the available databases
-     *
-     * @param options - Optional settings for the command
-     */
-    async listDatabases(options) {
-        return (0, execute_operation_1.executeOperation)(this.s.db.client, new list_databases_1.ListDatabasesOperation(this.s.db, options));
-    }
-    /**
-     * Get ReplicaSet status
-     *
-     * @param options - Optional settings for the command
-     */
-    async replSetGetStatus(options) {
-        return this.command({ replSetGetStatus: 1 }, options);
-    }
-}
-exports.Admin = Admin;
-//# sourceMappingURL=admin.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/admin.js.map b/server/data-import/node_modules/mongodb/lib/admin.js.map
deleted file mode 100644
index 939b4b499b7d8cef389e7e1617b2798c6e1a954a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/admin.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"admin.js","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":";;;AAAA,iCAA2D;AAG3D,sEAAkE;AAClE,gEAIqC;AACrC,0DAAuF;AACvF,0DAA4F;AAC5F,0EAG0C;AAO1C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,KAAK;IAIhB;;;OAGG;IACH,YAAY,EAAM;QAChB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;IAClB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE,OAA2B;QAC1D,OAAO,IAAA,oCAAgB,EACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAChB,IAAI,sCAAwB,CAAC,OAAO,EAAE;YACpC,GAAG,IAAA,yBAAkB,EAAC,OAAO,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,cAAc,EAAE,OAAO,EAAE,cAAc;SACxC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,OAAiC;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,OAAiC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,OAAiC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,OAAiC;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,OAA2B;QAC5D,OAAO,IAAA,oCAAgB,EACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAChB,IAAI,iCAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAC9E,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CACtB,cAAsB,EACtB,UAAqC,EAAE;QAEvC,OAAO,IAAA,oCAAgB,EACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAChB,IAAI,iDAA2B,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,CAC/D,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,OAA8B;QAChD,OAAO,IAAA,oCAAgB,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,uCAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAC,OAAiC;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;CACF;AA/HD,sBA+HC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/bson.js b/server/data-import/node_modules/mongodb/lib/bson.js
deleted file mode 100644
index fc02391f53d0c6e1bcb8210779859ef327e6c7ba..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/bson.js
+++ /dev/null
@@ -1,62 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.resolveBSONOptions = exports.pluckBSONSerializeOptions = exports.UUID = exports.Timestamp = exports.serialize = exports.ObjectId = exports.MinKey = exports.MaxKey = exports.Long = exports.Int32 = exports.Double = exports.deserialize = exports.Decimal128 = exports.DBRef = exports.Code = exports.calculateObjectSize = exports.BSONType = exports.BSONSymbol = exports.BSONRegExp = exports.BSON = exports.Binary = void 0;
-var bson_1 = require("bson");
-Object.defineProperty(exports, "Binary", { enumerable: true, get: function () { return bson_1.Binary; } });
-Object.defineProperty(exports, "BSON", { enumerable: true, get: function () { return bson_1.BSON; } });
-Object.defineProperty(exports, "BSONRegExp", { enumerable: true, get: function () { return bson_1.BSONRegExp; } });
-Object.defineProperty(exports, "BSONSymbol", { enumerable: true, get: function () { return bson_1.BSONSymbol; } });
-Object.defineProperty(exports, "BSONType", { enumerable: true, get: function () { return bson_1.BSONType; } });
-Object.defineProperty(exports, "calculateObjectSize", { enumerable: true, get: function () { return bson_1.calculateObjectSize; } });
-Object.defineProperty(exports, "Code", { enumerable: true, get: function () { return bson_1.Code; } });
-Object.defineProperty(exports, "DBRef", { enumerable: true, get: function () { return bson_1.DBRef; } });
-Object.defineProperty(exports, "Decimal128", { enumerable: true, get: function () { return bson_1.Decimal128; } });
-Object.defineProperty(exports, "deserialize", { enumerable: true, get: function () { return bson_1.deserialize; } });
-Object.defineProperty(exports, "Double", { enumerable: true, get: function () { return bson_1.Double; } });
-Object.defineProperty(exports, "Int32", { enumerable: true, get: function () { return bson_1.Int32; } });
-Object.defineProperty(exports, "Long", { enumerable: true, get: function () { return bson_1.Long; } });
-Object.defineProperty(exports, "MaxKey", { enumerable: true, get: function () { return bson_1.MaxKey; } });
-Object.defineProperty(exports, "MinKey", { enumerable: true, get: function () { return bson_1.MinKey; } });
-Object.defineProperty(exports, "ObjectId", { enumerable: true, get: function () { return bson_1.ObjectId; } });
-Object.defineProperty(exports, "serialize", { enumerable: true, get: function () { return bson_1.serialize; } });
-Object.defineProperty(exports, "Timestamp", { enumerable: true, get: function () { return bson_1.Timestamp; } });
-Object.defineProperty(exports, "UUID", { enumerable: true, get: function () { return bson_1.UUID; } });
-function pluckBSONSerializeOptions(options) {
-    const { fieldsAsRaw, useBigInt64, promoteValues, promoteBuffers, promoteLongs, serializeFunctions, ignoreUndefined, bsonRegExp, raw, enableUtf8Validation } = options;
-    return {
-        fieldsAsRaw,
-        useBigInt64,
-        promoteValues,
-        promoteBuffers,
-        promoteLongs,
-        serializeFunctions,
-        ignoreUndefined,
-        bsonRegExp,
-        raw,
-        enableUtf8Validation
-    };
-}
-exports.pluckBSONSerializeOptions = pluckBSONSerializeOptions;
-/**
- * Merge the given BSONSerializeOptions, preferring options over the parent's options, and
- * substituting defaults for values not set.
- *
- * @internal
- */
-function resolveBSONOptions(options, parent) {
-    const parentOptions = parent?.bsonOptions;
-    return {
-        raw: options?.raw ?? parentOptions?.raw ?? false,
-        useBigInt64: options?.useBigInt64 ?? parentOptions?.useBigInt64 ?? false,
-        promoteLongs: options?.promoteLongs ?? parentOptions?.promoteLongs ?? true,
-        promoteValues: options?.promoteValues ?? parentOptions?.promoteValues ?? true,
-        promoteBuffers: options?.promoteBuffers ?? parentOptions?.promoteBuffers ?? false,
-        ignoreUndefined: options?.ignoreUndefined ?? parentOptions?.ignoreUndefined ?? false,
-        bsonRegExp: options?.bsonRegExp ?? parentOptions?.bsonRegExp ?? false,
-        serializeFunctions: options?.serializeFunctions ?? parentOptions?.serializeFunctions ?? false,
-        fieldsAsRaw: options?.fieldsAsRaw ?? parentOptions?.fieldsAsRaw ?? {},
-        enableUtf8Validation: options?.enableUtf8Validation ?? parentOptions?.enableUtf8Validation ?? true
-    };
-}
-exports.resolveBSONOptions = resolveBSONOptions;
-//# sourceMappingURL=bson.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/bson.js.map b/server/data-import/node_modules/mongodb/lib/bson.js.map
deleted file mode 100644
index af0d8f17e36a34044a4ea3ab0510079344d931b5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/bson.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"bson.js","sourceRoot":"","sources":["../src/bson.ts"],"names":[],"mappings":";;;AAEA,6BAqBc;AApBZ,8FAAA,MAAM,OAAA;AACN,4FAAA,IAAI,OAAA;AACJ,kGAAA,UAAU,OAAA;AACV,kGAAA,UAAU,OAAA;AACV,gGAAA,QAAQ,OAAA;AACR,2GAAA,mBAAmB,OAAA;AACnB,4FAAA,IAAI,OAAA;AACJ,6FAAA,KAAK,OAAA;AACL,kGAAA,UAAU,OAAA;AACV,mGAAA,WAAW,OAAA;AAEX,8FAAA,MAAM,OAAA;AACN,6FAAA,KAAK,OAAA;AACL,4FAAA,IAAI,OAAA;AACJ,8FAAA,MAAM,OAAA;AACN,8FAAA,MAAM,OAAA;AACN,gGAAA,QAAQ,OAAA;AACR,iGAAA,SAAS,OAAA;AACT,iGAAA,SAAS,OAAA;AACT,4FAAA,IAAI,OAAA;AA4CN,SAAgB,yBAAyB,CAAC,OAA6B;IACrE,MAAM,EACJ,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,GAAG,EACH,oBAAoB,EACrB,GAAG,OAAO,CAAC;IACZ,OAAO;QACL,WAAW;QACX,WAAW;QACX,aAAa;QACb,cAAc;QACd,YAAY;QACZ,kBAAkB;QAClB,eAAe;QACf,UAAU;QACV,GAAG;QACH,oBAAoB;KACrB,CAAC;AACJ,CAAC;AAzBD,8DAyBC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,OAA8B,EAC9B,MAA+C;IAE/C,MAAM,aAAa,GAAG,MAAM,EAAE,WAAW,CAAC;IAC1C,OAAO;QACL,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,aAAa,EAAE,GAAG,IAAI,KAAK;QAChD,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,aAAa,EAAE,WAAW,IAAI,KAAK;QACxE,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,aAAa,EAAE,YAAY,IAAI,IAAI;QAC1E,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,aAAa,EAAE,aAAa,IAAI,IAAI;QAC7E,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,aAAa,EAAE,cAAc,IAAI,KAAK;QACjF,eAAe,EAAE,OAAO,EAAE,eAAe,IAAI,aAAa,EAAE,eAAe,IAAI,KAAK;QACpF,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,UAAU,IAAI,KAAK;QACrE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,IAAI,aAAa,EAAE,kBAAkB,IAAI,KAAK;QAC7F,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,aAAa,EAAE,WAAW,IAAI,EAAE;QACrE,oBAAoB,EAClB,OAAO,EAAE,oBAAoB,IAAI,aAAa,EAAE,oBAAoB,IAAI,IAAI;KAC/E,CAAC;AACJ,CAAC;AAlBD,gDAkBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/bulk/common.js b/server/data-import/node_modules/mongodb/lib/bulk/common.js
deleted file mode 100644
index 637a34b6429cac84488cf4561b782dbbb91e0283..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/bulk/common.js
+++ /dev/null
@@ -1,870 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.BulkOperationBase = exports.FindOperators = exports.MongoBulkWriteError = exports.mergeBatchResults = exports.WriteError = exports.WriteConcernError = exports.BulkWriteResult = exports.Batch = exports.BatchType = void 0;
-const util_1 = require("util");
-const bson_1 = require("../bson");
-const error_1 = require("../error");
-const delete_1 = require("../operations/delete");
-const execute_operation_1 = require("../operations/execute_operation");
-const insert_1 = require("../operations/insert");
-const operation_1 = require("../operations/operation");
-const update_1 = require("../operations/update");
-const utils_1 = require("../utils");
-const write_concern_1 = require("../write_concern");
-/** @internal */
-const kServerError = Symbol('serverError');
-/** @public */
-exports.BatchType = Object.freeze({
-    INSERT: 1,
-    UPDATE: 2,
-    DELETE: 3
-});
-/**
- * Keeps the state of a unordered batch so we can rewrite the results
- * correctly after command execution
- *
- * @public
- */
-class Batch {
-    constructor(batchType, originalZeroIndex) {
-        this.originalZeroIndex = originalZeroIndex;
-        this.currentIndex = 0;
-        this.originalIndexes = [];
-        this.batchType = batchType;
-        this.operations = [];
-        this.size = 0;
-        this.sizeBytes = 0;
-    }
-}
-exports.Batch = Batch;
-/**
- * @public
- * The result of a bulk write.
- */
-class BulkWriteResult {
-    static generateIdMap(ids) {
-        const idMap = {};
-        for (const doc of ids) {
-            idMap[doc.index] = doc._id;
-        }
-        return idMap;
-    }
-    /**
-     * Create a new BulkWriteResult instance
-     * @internal
-     */
-    constructor(bulkResult, isOrdered) {
-        this.result = bulkResult;
-        this.insertedCount = this.result.nInserted ?? 0;
-        this.matchedCount = this.result.nMatched ?? 0;
-        this.modifiedCount = this.result.nModified ?? 0;
-        this.deletedCount = this.result.nRemoved ?? 0;
-        this.upsertedCount = this.result.upserted.length ?? 0;
-        this.upsertedIds = BulkWriteResult.generateIdMap(this.result.upserted);
-        this.insertedIds = BulkWriteResult.generateIdMap(this.getSuccessfullyInsertedIds(bulkResult, isOrdered));
-        Object.defineProperty(this, 'result', { value: this.result, enumerable: false });
-    }
-    /** Evaluates to true if the bulk operation correctly executes */
-    get ok() {
-        return this.result.ok;
-    }
-    /**
-     * Returns document_ids that were actually inserted
-     * @internal
-     */
-    getSuccessfullyInsertedIds(bulkResult, isOrdered) {
-        if (bulkResult.writeErrors.length === 0)
-            return bulkResult.insertedIds;
-        if (isOrdered) {
-            return bulkResult.insertedIds.slice(0, bulkResult.writeErrors[0].index);
-        }
-        return bulkResult.insertedIds.filter(({ index }) => !bulkResult.writeErrors.some(writeError => index === writeError.index));
-    }
-    /** Returns the upserted id at the given index */
-    getUpsertedIdAt(index) {
-        return this.result.upserted[index];
-    }
-    /** Returns raw internal result */
-    getRawResponse() {
-        return this.result;
-    }
-    /** Returns true if the bulk operation contains a write error */
-    hasWriteErrors() {
-        return this.result.writeErrors.length > 0;
-    }
-    /** Returns the number of write errors off the bulk operation */
-    getWriteErrorCount() {
-        return this.result.writeErrors.length;
-    }
-    /** Returns a specific write error object */
-    getWriteErrorAt(index) {
-        return index < this.result.writeErrors.length ? this.result.writeErrors[index] : undefined;
-    }
-    /** Retrieve all write errors */
-    getWriteErrors() {
-        return this.result.writeErrors;
-    }
-    /** Retrieve the write concern error if one exists */
-    getWriteConcernError() {
-        if (this.result.writeConcernErrors.length === 0) {
-            return;
-        }
-        else if (this.result.writeConcernErrors.length === 1) {
-            // Return the error
-            return this.result.writeConcernErrors[0];
-        }
-        else {
-            // Combine the errors
-            let errmsg = '';
-            for (let i = 0; i < this.result.writeConcernErrors.length; i++) {
-                const err = this.result.writeConcernErrors[i];
-                errmsg = errmsg + err.errmsg;
-                // TODO: Something better
-                if (i === 0)
-                    errmsg = errmsg + ' and ';
-            }
-            return new WriteConcernError({ errmsg, code: error_1.MONGODB_ERROR_CODES.WriteConcernFailed });
-        }
-    }
-    toString() {
-        return `BulkWriteResult(${this.result})`;
-    }
-    isOk() {
-        return this.result.ok === 1;
-    }
-}
-exports.BulkWriteResult = BulkWriteResult;
-/**
- * An error representing a failure by the server to apply the requested write concern to the bulk operation.
- * @public
- * @category Error
- */
-class WriteConcernError {
-    constructor(error) {
-        this[kServerError] = error;
-    }
-    /** Write concern error code. */
-    get code() {
-        return this[kServerError].code;
-    }
-    /** Write concern error message. */
-    get errmsg() {
-        return this[kServerError].errmsg;
-    }
-    /** Write concern error info. */
-    get errInfo() {
-        return this[kServerError].errInfo;
-    }
-    toJSON() {
-        return this[kServerError];
-    }
-    toString() {
-        return `WriteConcernError(${this.errmsg})`;
-    }
-}
-exports.WriteConcernError = WriteConcernError;
-/**
- * An error that occurred during a BulkWrite on the server.
- * @public
- * @category Error
- */
-class WriteError {
-    constructor(err) {
-        this.err = err;
-    }
-    /** WriteError code. */
-    get code() {
-        return this.err.code;
-    }
-    /** WriteError original bulk operation index. */
-    get index() {
-        return this.err.index;
-    }
-    /** WriteError message. */
-    get errmsg() {
-        return this.err.errmsg;
-    }
-    /** WriteError details. */
-    get errInfo() {
-        return this.err.errInfo;
-    }
-    /** Returns the underlying operation that caused the error */
-    getOperation() {
-        return this.err.op;
-    }
-    toJSON() {
-        return { code: this.err.code, index: this.err.index, errmsg: this.err.errmsg, op: this.err.op };
-    }
-    toString() {
-        return `WriteError(${JSON.stringify(this.toJSON())})`;
-    }
-}
-exports.WriteError = WriteError;
-/** Merges results into shared data structure */
-function mergeBatchResults(batch, bulkResult, err, result) {
-    // If we have an error set the result to be the err object
-    if (err) {
-        result = err;
-    }
-    else if (result && result.result) {
-        result = result.result;
-    }
-    if (result == null) {
-        return;
-    }
-    // Do we have a top level error stop processing and return
-    if (result.ok === 0 && bulkResult.ok === 1) {
-        bulkResult.ok = 0;
-        const writeError = {
-            index: 0,
-            code: result.code || 0,
-            errmsg: result.message,
-            errInfo: result.errInfo,
-            op: batch.operations[0]
-        };
-        bulkResult.writeErrors.push(new WriteError(writeError));
-        return;
-    }
-    else if (result.ok === 0 && bulkResult.ok === 0) {
-        return;
-    }
-    // If we have an insert Batch type
-    if (isInsertBatch(batch) && result.n) {
-        bulkResult.nInserted = bulkResult.nInserted + result.n;
-    }
-    // If we have an insert Batch type
-    if (isDeleteBatch(batch) && result.n) {
-        bulkResult.nRemoved = bulkResult.nRemoved + result.n;
-    }
-    let nUpserted = 0;
-    // We have an array of upserted values, we need to rewrite the indexes
-    if (Array.isArray(result.upserted)) {
-        nUpserted = result.upserted.length;
-        for (let i = 0; i < result.upserted.length; i++) {
-            bulkResult.upserted.push({
-                index: result.upserted[i].index + batch.originalZeroIndex,
-                _id: result.upserted[i]._id
-            });
-        }
-    }
-    else if (result.upserted) {
-        nUpserted = 1;
-        bulkResult.upserted.push({
-            index: batch.originalZeroIndex,
-            _id: result.upserted
-        });
-    }
-    // If we have an update Batch type
-    if (isUpdateBatch(batch) && result.n) {
-        const nModified = result.nModified;
-        bulkResult.nUpserted = bulkResult.nUpserted + nUpserted;
-        bulkResult.nMatched = bulkResult.nMatched + (result.n - nUpserted);
-        if (typeof nModified === 'number') {
-            bulkResult.nModified = bulkResult.nModified + nModified;
-        }
-        else {
-            bulkResult.nModified = 0;
-        }
-    }
-    if (Array.isArray(result.writeErrors)) {
-        for (let i = 0; i < result.writeErrors.length; i++) {
-            const writeError = {
-                index: batch.originalIndexes[result.writeErrors[i].index],
-                code: result.writeErrors[i].code,
-                errmsg: result.writeErrors[i].errmsg,
-                errInfo: result.writeErrors[i].errInfo,
-                op: batch.operations[result.writeErrors[i].index]
-            };
-            bulkResult.writeErrors.push(new WriteError(writeError));
-        }
-    }
-    if (result.writeConcernError) {
-        bulkResult.writeConcernErrors.push(new WriteConcernError(result.writeConcernError));
-    }
-}
-exports.mergeBatchResults = mergeBatchResults;
-function executeCommands(bulkOperation, options, callback) {
-    if (bulkOperation.s.batches.length === 0) {
-        return callback(undefined, new BulkWriteResult(bulkOperation.s.bulkResult, bulkOperation.isOrdered));
-    }
-    const batch = bulkOperation.s.batches.shift();
-    function resultHandler(err, result) {
-        // Error is a driver related error not a bulk op error, return early
-        if (err && 'message' in err && !(err instanceof error_1.MongoWriteConcernError)) {
-            return callback(new MongoBulkWriteError(err, new BulkWriteResult(bulkOperation.s.bulkResult, bulkOperation.isOrdered)));
-        }
-        if (err instanceof error_1.MongoWriteConcernError) {
-            return handleMongoWriteConcernError(batch, bulkOperation.s.bulkResult, bulkOperation.isOrdered, err, callback);
-        }
-        // Merge the results together
-        mergeBatchResults(batch, bulkOperation.s.bulkResult, err, result);
-        const writeResult = new BulkWriteResult(bulkOperation.s.bulkResult, bulkOperation.isOrdered);
-        if (bulkOperation.handleWriteError(callback, writeResult))
-            return;
-        // Execute the next command in line
-        executeCommands(bulkOperation, options, callback);
-    }
-    const finalOptions = (0, utils_1.resolveOptions)(bulkOperation, {
-        ...options,
-        ordered: bulkOperation.isOrdered
-    });
-    if (finalOptions.bypassDocumentValidation !== true) {
-        delete finalOptions.bypassDocumentValidation;
-    }
-    // Set an operationIf if provided
-    if (bulkOperation.operationId) {
-        resultHandler.operationId = bulkOperation.operationId;
-    }
-    // Is the bypassDocumentValidation options specific
-    if (bulkOperation.s.bypassDocumentValidation === true) {
-        finalOptions.bypassDocumentValidation = true;
-    }
-    // Is the checkKeys option disabled
-    if (bulkOperation.s.checkKeys === false) {
-        finalOptions.checkKeys = false;
-    }
-    if (finalOptions.retryWrites) {
-        if (isUpdateBatch(batch)) {
-            finalOptions.retryWrites = finalOptions.retryWrites && !batch.operations.some(op => op.multi);
-        }
-        if (isDeleteBatch(batch)) {
-            finalOptions.retryWrites =
-                finalOptions.retryWrites && !batch.operations.some(op => op.limit === 0);
-        }
-    }
-    try {
-        if (isInsertBatch(batch)) {
-            (0, execute_operation_1.executeOperation)(bulkOperation.s.collection.client, new insert_1.InsertOperation(bulkOperation.s.namespace, batch.operations, finalOptions), resultHandler);
-        }
-        else if (isUpdateBatch(batch)) {
-            (0, execute_operation_1.executeOperation)(bulkOperation.s.collection.client, new update_1.UpdateOperation(bulkOperation.s.namespace, batch.operations, finalOptions), resultHandler);
-        }
-        else if (isDeleteBatch(batch)) {
-            (0, execute_operation_1.executeOperation)(bulkOperation.s.collection.client, new delete_1.DeleteOperation(bulkOperation.s.namespace, batch.operations, finalOptions), resultHandler);
-        }
-    }
-    catch (err) {
-        // Force top level error
-        err.ok = 0;
-        // Merge top level error and return
-        mergeBatchResults(batch, bulkOperation.s.bulkResult, err, undefined);
-        callback();
-    }
-}
-function handleMongoWriteConcernError(batch, bulkResult, isOrdered, err, callback) {
-    mergeBatchResults(batch, bulkResult, undefined, err.result);
-    callback(new MongoBulkWriteError({
-        message: err.result?.writeConcernError.errmsg,
-        code: err.result?.writeConcernError.result
-    }, new BulkWriteResult(bulkResult, isOrdered)));
-}
-/**
- * An error indicating an unsuccessful Bulk Write
- * @public
- * @category Error
- */
-class MongoBulkWriteError extends error_1.MongoServerError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(error, result) {
-        super(error);
-        this.writeErrors = [];
-        if (error instanceof WriteConcernError)
-            this.err = error;
-        else if (!(error instanceof Error)) {
-            this.message = error.message;
-            this.code = error.code;
-            this.writeErrors = error.writeErrors ?? [];
-        }
-        this.result = result;
-        Object.assign(this, error);
-    }
-    get name() {
-        return 'MongoBulkWriteError';
-    }
-    /** Number of documents inserted. */
-    get insertedCount() {
-        return this.result.insertedCount;
-    }
-    /** Number of documents matched for update. */
-    get matchedCount() {
-        return this.result.matchedCount;
-    }
-    /** Number of documents modified. */
-    get modifiedCount() {
-        return this.result.modifiedCount;
-    }
-    /** Number of documents deleted. */
-    get deletedCount() {
-        return this.result.deletedCount;
-    }
-    /** Number of documents upserted. */
-    get upsertedCount() {
-        return this.result.upsertedCount;
-    }
-    /** Inserted document generated Id's, hash key is the index of the originating operation */
-    get insertedIds() {
-        return this.result.insertedIds;
-    }
-    /** Upserted document generated Id's, hash key is the index of the originating operation */
-    get upsertedIds() {
-        return this.result.upsertedIds;
-    }
-}
-exports.MongoBulkWriteError = MongoBulkWriteError;
-/**
- * A builder object that is returned from {@link BulkOperationBase#find}.
- * Is used to build a write operation that involves a query filter.
- *
- * @public
- */
-class FindOperators {
-    /**
-     * Creates a new FindOperators object.
-     * @internal
-     */
-    constructor(bulkOperation) {
-        this.bulkOperation = bulkOperation;
-    }
-    /** Add a multiple update operation to the bulk operation */
-    update(updateDocument) {
-        const currentOp = buildCurrentOp(this.bulkOperation);
-        return this.bulkOperation.addToOperationsList(exports.BatchType.UPDATE, (0, update_1.makeUpdateStatement)(currentOp.selector, updateDocument, {
-            ...currentOp,
-            multi: true
-        }));
-    }
-    /** Add a single update operation to the bulk operation */
-    updateOne(updateDocument) {
-        if (!(0, utils_1.hasAtomicOperators)(updateDocument)) {
-            throw new error_1.MongoInvalidArgumentError('Update document requires atomic operators');
-        }
-        const currentOp = buildCurrentOp(this.bulkOperation);
-        return this.bulkOperation.addToOperationsList(exports.BatchType.UPDATE, (0, update_1.makeUpdateStatement)(currentOp.selector, updateDocument, { ...currentOp, multi: false }));
-    }
-    /** Add a replace one operation to the bulk operation */
-    replaceOne(replacement) {
-        if ((0, utils_1.hasAtomicOperators)(replacement)) {
-            throw new error_1.MongoInvalidArgumentError('Replacement document must not use atomic operators');
-        }
-        const currentOp = buildCurrentOp(this.bulkOperation);
-        return this.bulkOperation.addToOperationsList(exports.BatchType.UPDATE, (0, update_1.makeUpdateStatement)(currentOp.selector, replacement, { ...currentOp, multi: false }));
-    }
-    /** Add a delete one operation to the bulk operation */
-    deleteOne() {
-        const currentOp = buildCurrentOp(this.bulkOperation);
-        return this.bulkOperation.addToOperationsList(exports.BatchType.DELETE, (0, delete_1.makeDeleteStatement)(currentOp.selector, { ...currentOp, limit: 1 }));
-    }
-    /** Add a delete many operation to the bulk operation */
-    delete() {
-        const currentOp = buildCurrentOp(this.bulkOperation);
-        return this.bulkOperation.addToOperationsList(exports.BatchType.DELETE, (0, delete_1.makeDeleteStatement)(currentOp.selector, { ...currentOp, limit: 0 }));
-    }
-    /** Upsert modifier for update bulk operation, noting that this operation is an upsert. */
-    upsert() {
-        if (!this.bulkOperation.s.currentOp) {
-            this.bulkOperation.s.currentOp = {};
-        }
-        this.bulkOperation.s.currentOp.upsert = true;
-        return this;
-    }
-    /** Specifies the collation for the query condition. */
-    collation(collation) {
-        if (!this.bulkOperation.s.currentOp) {
-            this.bulkOperation.s.currentOp = {};
-        }
-        this.bulkOperation.s.currentOp.collation = collation;
-        return this;
-    }
-    /** Specifies arrayFilters for UpdateOne or UpdateMany bulk operations. */
-    arrayFilters(arrayFilters) {
-        if (!this.bulkOperation.s.currentOp) {
-            this.bulkOperation.s.currentOp = {};
-        }
-        this.bulkOperation.s.currentOp.arrayFilters = arrayFilters;
-        return this;
-    }
-    /** Specifies hint for the bulk operation. */
-    hint(hint) {
-        if (!this.bulkOperation.s.currentOp) {
-            this.bulkOperation.s.currentOp = {};
-        }
-        this.bulkOperation.s.currentOp.hint = hint;
-        return this;
-    }
-}
-exports.FindOperators = FindOperators;
-const executeCommandsAsync = (0, util_1.promisify)(executeCommands);
-/**
- * TODO(NODE-4063)
- * BulkWrites merge complexity is implemented in executeCommands
- * This provides a vehicle to treat bulkOperations like any other operation (hence "shim")
- * We would like this logic to simply live inside the BulkWriteOperation class
- * @internal
- */
-class BulkWriteShimOperation extends operation_1.AbstractOperation {
-    constructor(bulkOperation, options) {
-        super(options);
-        this.bulkOperation = bulkOperation;
-    }
-    execute(_server, session) {
-        if (this.options.session == null) {
-            // An implicit session could have been created by 'executeOperation'
-            // So if we stick it on finalOptions here, each bulk operation
-            // will use this same session, it'll be passed in the same way
-            // an explicit session would be
-            this.options.session = session;
-        }
-        return executeCommandsAsync(this.bulkOperation, this.options);
-    }
-}
-/** @public */
-class BulkOperationBase {
-    /**
-     * Create a new OrderedBulkOperation or UnorderedBulkOperation instance
-     * @internal
-     */
-    constructor(collection, options, isOrdered) {
-        // determine whether bulkOperation is ordered or unordered
-        this.isOrdered = isOrdered;
-        const topology = (0, utils_1.getTopology)(collection);
-        options = options == null ? {} : options;
-        // TODO Bring from driver information in hello
-        // Get the namespace for the write operations
-        const namespace = collection.s.namespace;
-        // Used to mark operation as executed
-        const executed = false;
-        // Current item
-        const currentOp = undefined;
-        // Set max byte size
-        const hello = topology.lastHello();
-        // If we have autoEncryption on, batch-splitting must be done on 2mb chunks, but single documents
-        // over 2mb are still allowed
-        const usingAutoEncryption = !!(topology.s.options && topology.s.options.autoEncrypter);
-        const maxBsonObjectSize = hello && hello.maxBsonObjectSize ? hello.maxBsonObjectSize : 1024 * 1024 * 16;
-        const maxBatchSizeBytes = usingAutoEncryption ? 1024 * 1024 * 2 : maxBsonObjectSize;
-        const maxWriteBatchSize = hello && hello.maxWriteBatchSize ? hello.maxWriteBatchSize : 1000;
-        // Calculates the largest possible size of an Array key, represented as a BSON string
-        // element. This calculation:
-        //     1 byte for BSON type
-        //     # of bytes = length of (string representation of (maxWriteBatchSize - 1))
-        //   + 1 bytes for null terminator
-        const maxKeySize = (maxWriteBatchSize - 1).toString(10).length + 2;
-        // Final options for retryable writes
-        let finalOptions = Object.assign({}, options);
-        finalOptions = (0, utils_1.applyRetryableWrites)(finalOptions, collection.s.db);
-        // Final results
-        const bulkResult = {
-            ok: 1,
-            writeErrors: [],
-            writeConcernErrors: [],
-            insertedIds: [],
-            nInserted: 0,
-            nUpserted: 0,
-            nMatched: 0,
-            nModified: 0,
-            nRemoved: 0,
-            upserted: []
-        };
-        // Internal state
-        this.s = {
-            // Final result
-            bulkResult,
-            // Current batch state
-            currentBatch: undefined,
-            currentIndex: 0,
-            // ordered specific
-            currentBatchSize: 0,
-            currentBatchSizeBytes: 0,
-            // unordered specific
-            currentInsertBatch: undefined,
-            currentUpdateBatch: undefined,
-            currentRemoveBatch: undefined,
-            batches: [],
-            // Write concern
-            writeConcern: write_concern_1.WriteConcern.fromOptions(options),
-            // Max batch size options
-            maxBsonObjectSize,
-            maxBatchSizeBytes,
-            maxWriteBatchSize,
-            maxKeySize,
-            // Namespace
-            namespace,
-            // Topology
-            topology,
-            // Options
-            options: finalOptions,
-            // BSON options
-            bsonOptions: (0, bson_1.resolveBSONOptions)(options),
-            // Current operation
-            currentOp,
-            // Executed
-            executed,
-            // Collection
-            collection,
-            // Fundamental error
-            err: undefined,
-            // check keys
-            checkKeys: typeof options.checkKeys === 'boolean' ? options.checkKeys : false
-        };
-        // bypass Validation
-        if (options.bypassDocumentValidation === true) {
-            this.s.bypassDocumentValidation = true;
-        }
-    }
-    /**
-     * Add a single insert document to the bulk operation
-     *
-     * @example
-     * ```ts
-     * const bulkOp = collection.initializeOrderedBulkOp();
-     *
-     * // Adds three inserts to the bulkOp.
-     * bulkOp
-     *   .insert({ a: 1 })
-     *   .insert({ b: 2 })
-     *   .insert({ c: 3 });
-     * await bulkOp.execute();
-     * ```
-     */
-    insert(document) {
-        if (document._id == null && !shouldForceServerObjectId(this)) {
-            document._id = new bson_1.ObjectId();
-        }
-        return this.addToOperationsList(exports.BatchType.INSERT, document);
-    }
-    /**
-     * Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne.
-     * Returns a builder object used to complete the definition of the operation.
-     *
-     * @example
-     * ```ts
-     * const bulkOp = collection.initializeOrderedBulkOp();
-     *
-     * // Add an updateOne to the bulkOp
-     * bulkOp.find({ a: 1 }).updateOne({ $set: { b: 2 } });
-     *
-     * // Add an updateMany to the bulkOp
-     * bulkOp.find({ c: 3 }).update({ $set: { d: 4 } });
-     *
-     * // Add an upsert
-     * bulkOp.find({ e: 5 }).upsert().updateOne({ $set: { f: 6 } });
-     *
-     * // Add a deletion
-     * bulkOp.find({ g: 7 }).deleteOne();
-     *
-     * // Add a multi deletion
-     * bulkOp.find({ h: 8 }).delete();
-     *
-     * // Add a replaceOne
-     * bulkOp.find({ i: 9 }).replaceOne({writeConcern: { j: 10 }});
-     *
-     * // Update using a pipeline (requires Mongodb 4.2 or higher)
-     * bulk.find({ k: 11, y: { $exists: true }, z: { $exists: true } }).updateOne([
-     *   { $set: { total: { $sum: [ '$y', '$z' ] } } }
-     * ]);
-     *
-     * // All of the ops will now be executed
-     * await bulkOp.execute();
-     * ```
-     */
-    find(selector) {
-        if (!selector) {
-            throw new error_1.MongoInvalidArgumentError('Bulk find operation must specify a selector');
-        }
-        // Save a current selector
-        this.s.currentOp = {
-            selector: selector
-        };
-        return new FindOperators(this);
-    }
-    /** Specifies a raw operation to perform in the bulk write. */
-    raw(op) {
-        if (op == null || typeof op !== 'object') {
-            throw new error_1.MongoInvalidArgumentError('Operation must be an object with an operation key');
-        }
-        if ('insertOne' in op) {
-            const forceServerObjectId = shouldForceServerObjectId(this);
-            if (op.insertOne && op.insertOne.document == null) {
-                // NOTE: provided for legacy support, but this is a malformed operation
-                if (forceServerObjectId !== true && op.insertOne._id == null) {
-                    op.insertOne._id = new bson_1.ObjectId();
-                }
-                return this.addToOperationsList(exports.BatchType.INSERT, op.insertOne);
-            }
-            if (forceServerObjectId !== true && op.insertOne.document._id == null) {
-                op.insertOne.document._id = new bson_1.ObjectId();
-            }
-            return this.addToOperationsList(exports.BatchType.INSERT, op.insertOne.document);
-        }
-        if ('replaceOne' in op || 'updateOne' in op || 'updateMany' in op) {
-            if ('replaceOne' in op) {
-                if ('q' in op.replaceOne) {
-                    throw new error_1.MongoInvalidArgumentError('Raw operations are not allowed');
-                }
-                const updateStatement = (0, update_1.makeUpdateStatement)(op.replaceOne.filter, op.replaceOne.replacement, { ...op.replaceOne, multi: false });
-                if ((0, utils_1.hasAtomicOperators)(updateStatement.u)) {
-                    throw new error_1.MongoInvalidArgumentError('Replacement document must not use atomic operators');
-                }
-                return this.addToOperationsList(exports.BatchType.UPDATE, updateStatement);
-            }
-            if ('updateOne' in op) {
-                if ('q' in op.updateOne) {
-                    throw new error_1.MongoInvalidArgumentError('Raw operations are not allowed');
-                }
-                const updateStatement = (0, update_1.makeUpdateStatement)(op.updateOne.filter, op.updateOne.update, {
-                    ...op.updateOne,
-                    multi: false
-                });
-                if (!(0, utils_1.hasAtomicOperators)(updateStatement.u)) {
-                    throw new error_1.MongoInvalidArgumentError('Update document requires atomic operators');
-                }
-                return this.addToOperationsList(exports.BatchType.UPDATE, updateStatement);
-            }
-            if ('updateMany' in op) {
-                if ('q' in op.updateMany) {
-                    throw new error_1.MongoInvalidArgumentError('Raw operations are not allowed');
-                }
-                const updateStatement = (0, update_1.makeUpdateStatement)(op.updateMany.filter, op.updateMany.update, {
-                    ...op.updateMany,
-                    multi: true
-                });
-                if (!(0, utils_1.hasAtomicOperators)(updateStatement.u)) {
-                    throw new error_1.MongoInvalidArgumentError('Update document requires atomic operators');
-                }
-                return this.addToOperationsList(exports.BatchType.UPDATE, updateStatement);
-            }
-        }
-        if ('deleteOne' in op) {
-            if ('q' in op.deleteOne) {
-                throw new error_1.MongoInvalidArgumentError('Raw operations are not allowed');
-            }
-            return this.addToOperationsList(exports.BatchType.DELETE, (0, delete_1.makeDeleteStatement)(op.deleteOne.filter, { ...op.deleteOne, limit: 1 }));
-        }
-        if ('deleteMany' in op) {
-            if ('q' in op.deleteMany) {
-                throw new error_1.MongoInvalidArgumentError('Raw operations are not allowed');
-            }
-            return this.addToOperationsList(exports.BatchType.DELETE, (0, delete_1.makeDeleteStatement)(op.deleteMany.filter, { ...op.deleteMany, limit: 0 }));
-        }
-        // otherwise an unknown operation was provided
-        throw new error_1.MongoInvalidArgumentError('bulkWrite only supports insertOne, updateOne, updateMany, deleteOne, deleteMany');
-    }
-    get bsonOptions() {
-        return this.s.bsonOptions;
-    }
-    get writeConcern() {
-        return this.s.writeConcern;
-    }
-    get batches() {
-        const batches = [...this.s.batches];
-        if (this.isOrdered) {
-            if (this.s.currentBatch)
-                batches.push(this.s.currentBatch);
-        }
-        else {
-            if (this.s.currentInsertBatch)
-                batches.push(this.s.currentInsertBatch);
-            if (this.s.currentUpdateBatch)
-                batches.push(this.s.currentUpdateBatch);
-            if (this.s.currentRemoveBatch)
-                batches.push(this.s.currentRemoveBatch);
-        }
-        return batches;
-    }
-    async execute(options = {}) {
-        if (this.s.executed) {
-            throw new error_1.MongoBatchReExecutionError();
-        }
-        const writeConcern = write_concern_1.WriteConcern.fromOptions(options);
-        if (writeConcern) {
-            this.s.writeConcern = writeConcern;
-        }
-        // If we have current batch
-        if (this.isOrdered) {
-            if (this.s.currentBatch)
-                this.s.batches.push(this.s.currentBatch);
-        }
-        else {
-            if (this.s.currentInsertBatch)
-                this.s.batches.push(this.s.currentInsertBatch);
-            if (this.s.currentUpdateBatch)
-                this.s.batches.push(this.s.currentUpdateBatch);
-            if (this.s.currentRemoveBatch)
-                this.s.batches.push(this.s.currentRemoveBatch);
-        }
-        // If we have no operations in the bulk raise an error
-        if (this.s.batches.length === 0) {
-            throw new error_1.MongoInvalidArgumentError('Invalid BulkOperation, Batch cannot be empty');
-        }
-        this.s.executed = true;
-        const finalOptions = { ...this.s.options, ...options };
-        const operation = new BulkWriteShimOperation(this, finalOptions);
-        return (0, execute_operation_1.executeOperation)(this.s.collection.client, operation);
-    }
-    /**
-     * Handles the write error before executing commands
-     * @internal
-     */
-    handleWriteError(callback, writeResult) {
-        if (this.s.bulkResult.writeErrors.length > 0) {
-            const msg = this.s.bulkResult.writeErrors[0].errmsg
-                ? this.s.bulkResult.writeErrors[0].errmsg
-                : 'write operation failed';
-            callback(new MongoBulkWriteError({
-                message: msg,
-                code: this.s.bulkResult.writeErrors[0].code,
-                writeErrors: this.s.bulkResult.writeErrors
-            }, writeResult));
-            return true;
-        }
-        const writeConcernError = writeResult.getWriteConcernError();
-        if (writeConcernError) {
-            callback(new MongoBulkWriteError(writeConcernError, writeResult));
-            return true;
-        }
-        return false;
-    }
-}
-exports.BulkOperationBase = BulkOperationBase;
-Object.defineProperty(BulkOperationBase.prototype, 'length', {
-    enumerable: true,
-    get() {
-        return this.s.currentIndex;
-    }
-});
-function shouldForceServerObjectId(bulkOperation) {
-    if (typeof bulkOperation.s.options.forceServerObjectId === 'boolean') {
-        return bulkOperation.s.options.forceServerObjectId;
-    }
-    if (typeof bulkOperation.s.collection.s.db.options?.forceServerObjectId === 'boolean') {
-        return bulkOperation.s.collection.s.db.options?.forceServerObjectId;
-    }
-    return false;
-}
-function isInsertBatch(batch) {
-    return batch.batchType === exports.BatchType.INSERT;
-}
-function isUpdateBatch(batch) {
-    return batch.batchType === exports.BatchType.UPDATE;
-}
-function isDeleteBatch(batch) {
-    return batch.batchType === exports.BatchType.DELETE;
-}
-function buildCurrentOp(bulkOp) {
-    let { currentOp } = bulkOp.s;
-    bulkOp.s.currentOp = undefined;
-    if (!currentOp)
-        currentOp = {};
-    return currentOp;
-}
-//# sourceMappingURL=common.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/bulk/common.js.map b/server/data-import/node_modules/mongodb/lib/bulk/common.js.map
deleted file mode 100644
index 9418646b61db2c8988d65ca61d0035b89285a4b1..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/bulk/common.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/bulk/common.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/bulk/ordered.js b/server/data-import/node_modules/mongodb/lib/bulk/ordered.js
deleted file mode 100644
index 667f724f12a0320610279037d08b9d54408eceff..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/bulk/ordered.js
+++ /dev/null
@@ -1,67 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.OrderedBulkOperation = void 0;
-const BSON = require("../bson");
-const error_1 = require("../error");
-const common_1 = require("./common");
-/** @public */
-class OrderedBulkOperation extends common_1.BulkOperationBase {
-    /** @internal */
-    constructor(collection, options) {
-        super(collection, options, true);
-    }
-    addToOperationsList(batchType, document) {
-        // Get the bsonSize
-        const bsonSize = BSON.calculateObjectSize(document, {
-            checkKeys: false,
-            // Since we don't know what the user selected for BSON options here,
-            // err on the safe side, and check the size with ignoreUndefined: false.
-            ignoreUndefined: false
-        });
-        // Throw error if the doc is bigger than the max BSON size
-        if (bsonSize >= this.s.maxBsonObjectSize)
-            // TODO(NODE-3483): Change this to MongoBSONError
-            throw new error_1.MongoInvalidArgumentError(`Document is larger than the maximum size ${this.s.maxBsonObjectSize}`);
-        // Create a new batch object if we don't have a current one
-        if (this.s.currentBatch == null) {
-            this.s.currentBatch = new common_1.Batch(batchType, this.s.currentIndex);
-        }
-        const maxKeySize = this.s.maxKeySize;
-        // Check if we need to create a new batch
-        if (
-        // New batch if we exceed the max batch op size
-        this.s.currentBatchSize + 1 >= this.s.maxWriteBatchSize ||
-            // New batch if we exceed the maxBatchSizeBytes. Only matters if batch already has a doc,
-            // since we can't sent an empty batch
-            (this.s.currentBatchSize > 0 &&
-                this.s.currentBatchSizeBytes + maxKeySize + bsonSize >= this.s.maxBatchSizeBytes) ||
-            // New batch if the new op does not have the same op type as the current batch
-            this.s.currentBatch.batchType !== batchType) {
-            // Save the batch to the execution stack
-            this.s.batches.push(this.s.currentBatch);
-            // Create a new batch
-            this.s.currentBatch = new common_1.Batch(batchType, this.s.currentIndex);
-            // Reset the current size trackers
-            this.s.currentBatchSize = 0;
-            this.s.currentBatchSizeBytes = 0;
-        }
-        if (batchType === common_1.BatchType.INSERT) {
-            this.s.bulkResult.insertedIds.push({
-                index: this.s.currentIndex,
-                _id: document._id
-            });
-        }
-        // We have an array of documents
-        if (Array.isArray(document)) {
-            throw new error_1.MongoInvalidArgumentError('Operation passed in cannot be an Array');
-        }
-        this.s.currentBatch.originalIndexes.push(this.s.currentIndex);
-        this.s.currentBatch.operations.push(document);
-        this.s.currentBatchSize += 1;
-        this.s.currentBatchSizeBytes += maxKeySize + bsonSize;
-        this.s.currentIndex += 1;
-        return this;
-    }
-}
-exports.OrderedBulkOperation = OrderedBulkOperation;
-//# sourceMappingURL=ordered.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/bulk/ordered.js.map b/server/data-import/node_modules/mongodb/lib/bulk/ordered.js.map
deleted file mode 100644
index 7f8fde0d7791193774789bce375700be66fcb974..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/bulk/ordered.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"ordered.js","sourceRoot":"","sources":["../../src/bulk/ordered.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/bulk/unordered.js b/server/data-import/node_modules/mongodb/lib/bulk/unordered.js
deleted file mode 100644
index 14b8f038fca0f1df72487f4912fa3ab62dded4e5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/bulk/unordered.js
+++ /dev/null
@@ -1,92 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.UnorderedBulkOperation = void 0;
-const BSON = require("../bson");
-const error_1 = require("../error");
-const common_1 = require("./common");
-/** @public */
-class UnorderedBulkOperation extends common_1.BulkOperationBase {
-    /** @internal */
-    constructor(collection, options) {
-        super(collection, options, false);
-    }
-    handleWriteError(callback, writeResult) {
-        if (this.s.batches.length) {
-            return false;
-        }
-        return super.handleWriteError(callback, writeResult);
-    }
-    addToOperationsList(batchType, document) {
-        // Get the bsonSize
-        const bsonSize = BSON.calculateObjectSize(document, {
-            checkKeys: false,
-            // Since we don't know what the user selected for BSON options here,
-            // err on the safe side, and check the size with ignoreUndefined: false.
-            ignoreUndefined: false
-        });
-        // Throw error if the doc is bigger than the max BSON size
-        if (bsonSize >= this.s.maxBsonObjectSize) {
-            // TODO(NODE-3483): Change this to MongoBSONError
-            throw new error_1.MongoInvalidArgumentError(`Document is larger than the maximum size ${this.s.maxBsonObjectSize}`);
-        }
-        // Holds the current batch
-        this.s.currentBatch = undefined;
-        // Get the right type of batch
-        if (batchType === common_1.BatchType.INSERT) {
-            this.s.currentBatch = this.s.currentInsertBatch;
-        }
-        else if (batchType === common_1.BatchType.UPDATE) {
-            this.s.currentBatch = this.s.currentUpdateBatch;
-        }
-        else if (batchType === common_1.BatchType.DELETE) {
-            this.s.currentBatch = this.s.currentRemoveBatch;
-        }
-        const maxKeySize = this.s.maxKeySize;
-        // Create a new batch object if we don't have a current one
-        if (this.s.currentBatch == null) {
-            this.s.currentBatch = new common_1.Batch(batchType, this.s.currentIndex);
-        }
-        // Check if we need to create a new batch
-        if (
-        // New batch if we exceed the max batch op size
-        this.s.currentBatch.size + 1 >= this.s.maxWriteBatchSize ||
-            // New batch if we exceed the maxBatchSizeBytes. Only matters if batch already has a doc,
-            // since we can't sent an empty batch
-            (this.s.currentBatch.size > 0 &&
-                this.s.currentBatch.sizeBytes + maxKeySize + bsonSize >= this.s.maxBatchSizeBytes) ||
-            // New batch if the new op does not have the same op type as the current batch
-            this.s.currentBatch.batchType !== batchType) {
-            // Save the batch to the execution stack
-            this.s.batches.push(this.s.currentBatch);
-            // Create a new batch
-            this.s.currentBatch = new common_1.Batch(batchType, this.s.currentIndex);
-        }
-        // We have an array of documents
-        if (Array.isArray(document)) {
-            throw new error_1.MongoInvalidArgumentError('Operation passed in cannot be an Array');
-        }
-        this.s.currentBatch.operations.push(document);
-        this.s.currentBatch.originalIndexes.push(this.s.currentIndex);
-        this.s.currentIndex = this.s.currentIndex + 1;
-        // Save back the current Batch to the right type
-        if (batchType === common_1.BatchType.INSERT) {
-            this.s.currentInsertBatch = this.s.currentBatch;
-            this.s.bulkResult.insertedIds.push({
-                index: this.s.bulkResult.insertedIds.length,
-                _id: document._id
-            });
-        }
-        else if (batchType === common_1.BatchType.UPDATE) {
-            this.s.currentUpdateBatch = this.s.currentBatch;
-        }
-        else if (batchType === common_1.BatchType.DELETE) {
-            this.s.currentRemoveBatch = this.s.currentBatch;
-        }
-        // Update current batch size
-        this.s.currentBatch.size += 1;
-        this.s.currentBatch.sizeBytes += maxKeySize + bsonSize;
-        return this;
-    }
-}
-exports.UnorderedBulkOperation = UnorderedBulkOperation;
-//# sourceMappingURL=unordered.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/bulk/unordered.js.map b/server/data-import/node_modules/mongodb/lib/bulk/unordered.js.map
deleted file mode 100644
index a510ddd808a6efeadf37c443f6e2c2257aa53744..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/bulk/unordered.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"unordered.js","sourceRoot":"","sources":["../../src/bulk/unordered.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/change_stream.js b/server/data-import/node_modules/mongodb/lib/change_stream.js
deleted file mode 100644
index ae650b9bb12593ac2a9795be6d566dc4f327267c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/change_stream.js
+++ /dev/null
@@ -1,397 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ChangeStream = void 0;
-const collection_1 = require("./collection");
-const constants_1 = require("./constants");
-const change_stream_cursor_1 = require("./cursor/change_stream_cursor");
-const db_1 = require("./db");
-const error_1 = require("./error");
-const mongo_client_1 = require("./mongo_client");
-const mongo_types_1 = require("./mongo_types");
-const utils_1 = require("./utils");
-/** @internal */
-const kCursorStream = Symbol('cursorStream');
-/** @internal */
-const kClosed = Symbol('closed');
-/** @internal */
-const kMode = Symbol('mode');
-const CHANGE_STREAM_OPTIONS = [
-    'resumeAfter',
-    'startAfter',
-    'startAtOperationTime',
-    'fullDocument',
-    'fullDocumentBeforeChange',
-    'showExpandedEvents'
-];
-const CHANGE_DOMAIN_TYPES = {
-    COLLECTION: Symbol('Collection'),
-    DATABASE: Symbol('Database'),
-    CLUSTER: Symbol('Cluster')
-};
-const CHANGE_STREAM_EVENTS = [constants_1.RESUME_TOKEN_CHANGED, constants_1.END, constants_1.CLOSE];
-const NO_RESUME_TOKEN_ERROR = 'A change stream document has been received that lacks a resume token (_id).';
-const CHANGESTREAM_CLOSED_ERROR = 'ChangeStream is closed';
-/**
- * Creates a new Change Stream instance. Normally created using {@link Collection#watch|Collection.watch()}.
- * @public
- */
-class ChangeStream extends mongo_types_1.TypedEventEmitter {
-    /**
-     * @internal
-     *
-     * @param parent - The parent object that created this change stream
-     * @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents
-     */
-    constructor(parent, pipeline = [], options = {}) {
-        super();
-        this.pipeline = pipeline;
-        this.options = { ...options };
-        delete this.options.writeConcern;
-        if (parent instanceof collection_1.Collection) {
-            this.type = CHANGE_DOMAIN_TYPES.COLLECTION;
-        }
-        else if (parent instanceof db_1.Db) {
-            this.type = CHANGE_DOMAIN_TYPES.DATABASE;
-        }
-        else if (parent instanceof mongo_client_1.MongoClient) {
-            this.type = CHANGE_DOMAIN_TYPES.CLUSTER;
-        }
-        else {
-            throw new error_1.MongoChangeStreamError('Parent provided to ChangeStream constructor must be an instance of Collection, Db, or MongoClient');
-        }
-        this.parent = parent;
-        this.namespace = parent.s.namespace;
-        if (!this.options.readPreference && parent.readPreference) {
-            this.options.readPreference = parent.readPreference;
-        }
-        // Create contained Change Stream cursor
-        this.cursor = this._createChangeStreamCursor(options);
-        this[kClosed] = false;
-        this[kMode] = false;
-        // Listen for any `change` listeners being added to ChangeStream
-        this.on('newListener', eventName => {
-            if (eventName === 'change' && this.cursor && this.listenerCount('change') === 0) {
-                this._streamEvents(this.cursor);
-            }
-        });
-        this.on('removeListener', eventName => {
-            if (eventName === 'change' && this.listenerCount('change') === 0 && this.cursor) {
-                this[kCursorStream]?.removeAllListeners('data');
-            }
-        });
-    }
-    /** @internal */
-    get cursorStream() {
-        return this[kCursorStream];
-    }
-    /** The cached resume token that is used to resume after the most recently returned change. */
-    get resumeToken() {
-        return this.cursor?.resumeToken;
-    }
-    /** Check if there is any document still available in the Change Stream */
-    async hasNext() {
-        this._setIsIterator();
-        // Change streams must resume indefinitely while each resume event succeeds.
-        // This loop continues until either a change event is received or until a resume attempt
-        // fails.
-        // eslint-disable-next-line no-constant-condition
-        while (true) {
-            try {
-                const hasNext = await this.cursor.hasNext();
-                return hasNext;
-            }
-            catch (error) {
-                try {
-                    await this._processErrorIteratorMode(error);
-                }
-                catch (error) {
-                    try {
-                        await this.close();
-                    }
-                    catch {
-                        // We are not concerned with errors from close()
-                    }
-                    throw error;
-                }
-            }
-        }
-    }
-    /** Get the next available document from the Change Stream. */
-    async next() {
-        this._setIsIterator();
-        // Change streams must resume indefinitely while each resume event succeeds.
-        // This loop continues until either a change event is received or until a resume attempt
-        // fails.
-        // eslint-disable-next-line no-constant-condition
-        while (true) {
-            try {
-                const change = await this.cursor.next();
-                const processedChange = this._processChange(change ?? null);
-                return processedChange;
-            }
-            catch (error) {
-                try {
-                    await this._processErrorIteratorMode(error);
-                }
-                catch (error) {
-                    try {
-                        await this.close();
-                    }
-                    catch {
-                        // We are not concerned with errors from close()
-                    }
-                    throw error;
-                }
-            }
-        }
-    }
-    /**
-     * Try to get the next available document from the Change Stream's cursor or `null` if an empty batch is returned
-     */
-    async tryNext() {
-        this._setIsIterator();
-        // Change streams must resume indefinitely while each resume event succeeds.
-        // This loop continues until either a change event is received or until a resume attempt
-        // fails.
-        // eslint-disable-next-line no-constant-condition
-        while (true) {
-            try {
-                const change = await this.cursor.tryNext();
-                return change ?? null;
-            }
-            catch (error) {
-                try {
-                    await this._processErrorIteratorMode(error);
-                }
-                catch (error) {
-                    try {
-                        await this.close();
-                    }
-                    catch {
-                        // We are not concerned with errors from close()
-                    }
-                    throw error;
-                }
-            }
-        }
-    }
-    async *[Symbol.asyncIterator]() {
-        if (this.closed) {
-            return;
-        }
-        try {
-            // Change streams run indefinitely as long as errors are resumable
-            // So the only loop breaking condition is if `next()` throws
-            while (true) {
-                yield await this.next();
-            }
-        }
-        finally {
-            try {
-                await this.close();
-            }
-            catch {
-                // we're not concerned with errors from close()
-            }
-        }
-    }
-    /** Is the cursor closed */
-    get closed() {
-        return this[kClosed] || this.cursor.closed;
-    }
-    /** Close the Change Stream */
-    async close() {
-        this[kClosed] = true;
-        const cursor = this.cursor;
-        try {
-            await cursor.close();
-        }
-        finally {
-            this._endStream();
-        }
-    }
-    /**
-     * Return a modified Readable stream including a possible transform method.
-     *
-     * NOTE: When using a Stream to process change stream events, the stream will
-     * NOT automatically resume in the case a resumable error is encountered.
-     *
-     * @throws MongoChangeStreamError if the underlying cursor or the change stream is closed
-     */
-    stream(options) {
-        if (this.closed) {
-            throw new error_1.MongoChangeStreamError(CHANGESTREAM_CLOSED_ERROR);
-        }
-        this.streamOptions = options;
-        return this.cursor.stream(options);
-    }
-    /** @internal */
-    _setIsEmitter() {
-        if (this[kMode] === 'iterator') {
-            // TODO(NODE-3485): Replace with MongoChangeStreamModeError
-            throw new error_1.MongoAPIError('ChangeStream cannot be used as an EventEmitter after being used as an iterator');
-        }
-        this[kMode] = 'emitter';
-    }
-    /** @internal */
-    _setIsIterator() {
-        if (this[kMode] === 'emitter') {
-            // TODO(NODE-3485): Replace with MongoChangeStreamModeError
-            throw new error_1.MongoAPIError('ChangeStream cannot be used as an iterator after being used as an EventEmitter');
-        }
-        this[kMode] = 'iterator';
-    }
-    /**
-     * Create a new change stream cursor based on self's configuration
-     * @internal
-     */
-    _createChangeStreamCursor(options) {
-        const changeStreamStageOptions = (0, utils_1.filterOptions)(options, CHANGE_STREAM_OPTIONS);
-        if (this.type === CHANGE_DOMAIN_TYPES.CLUSTER) {
-            changeStreamStageOptions.allChangesForCluster = true;
-        }
-        const pipeline = [{ $changeStream: changeStreamStageOptions }, ...this.pipeline];
-        const client = this.type === CHANGE_DOMAIN_TYPES.CLUSTER
-            ? this.parent
-            : this.type === CHANGE_DOMAIN_TYPES.DATABASE
-                ? this.parent.client
-                : this.type === CHANGE_DOMAIN_TYPES.COLLECTION
-                    ? this.parent.client
-                    : null;
-        if (client == null) {
-            // This should never happen because of the assertion in the constructor
-            throw new error_1.MongoRuntimeError(`Changestream type should only be one of cluster, database, collection. Found ${this.type.toString()}`);
-        }
-        const changeStreamCursor = new change_stream_cursor_1.ChangeStreamCursor(client, this.namespace, pipeline, options);
-        for (const event of CHANGE_STREAM_EVENTS) {
-            changeStreamCursor.on(event, e => this.emit(event, e));
-        }
-        if (this.listenerCount(ChangeStream.CHANGE) > 0) {
-            this._streamEvents(changeStreamCursor);
-        }
-        return changeStreamCursor;
-    }
-    /** @internal */
-    _closeEmitterModeWithError(error) {
-        this.emit(ChangeStream.ERROR, error);
-        this.close().catch(() => null);
-    }
-    /** @internal */
-    _streamEvents(cursor) {
-        this._setIsEmitter();
-        const stream = this[kCursorStream] ?? cursor.stream();
-        this[kCursorStream] = stream;
-        stream.on('data', change => {
-            try {
-                const processedChange = this._processChange(change);
-                this.emit(ChangeStream.CHANGE, processedChange);
-            }
-            catch (error) {
-                this.emit(ChangeStream.ERROR, error);
-            }
-        });
-        stream.on('error', error => this._processErrorStreamMode(error));
-    }
-    /** @internal */
-    _endStream() {
-        const cursorStream = this[kCursorStream];
-        if (cursorStream) {
-            ['data', 'close', 'end', 'error'].forEach(event => cursorStream.removeAllListeners(event));
-            cursorStream.destroy();
-        }
-        this[kCursorStream] = undefined;
-    }
-    /** @internal */
-    _processChange(change) {
-        if (this[kClosed]) {
-            // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
-            throw new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR);
-        }
-        // a null change means the cursor has been notified, implicitly closing the change stream
-        if (change == null) {
-            // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
-            throw new error_1.MongoRuntimeError(CHANGESTREAM_CLOSED_ERROR);
-        }
-        if (change && !change._id) {
-            throw new error_1.MongoChangeStreamError(NO_RESUME_TOKEN_ERROR);
-        }
-        // cache the resume token
-        this.cursor.cacheResumeToken(change._id);
-        // wipe the startAtOperationTime if there was one so that there won't be a conflict
-        // between resumeToken and startAtOperationTime if we need to reconnect the cursor
-        this.options.startAtOperationTime = undefined;
-        return change;
-    }
-    /** @internal */
-    _processErrorStreamMode(changeStreamError) {
-        // If the change stream has been closed explicitly, do not process error.
-        if (this[kClosed])
-            return;
-        if ((0, error_1.isResumableError)(changeStreamError, this.cursor.maxWireVersion)) {
-            this._endStream();
-            this.cursor.close().catch(() => null);
-            const topology = (0, utils_1.getTopology)(this.parent);
-            topology.selectServer(this.cursor.readPreference, {}, serverSelectionError => {
-                if (serverSelectionError)
-                    return this._closeEmitterModeWithError(changeStreamError);
-                this.cursor = this._createChangeStreamCursor(this.cursor.resumeOptions);
-            });
-        }
-        else {
-            this._closeEmitterModeWithError(changeStreamError);
-        }
-    }
-    /** @internal */
-    async _processErrorIteratorMode(changeStreamError) {
-        if (this[kClosed]) {
-            // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
-            throw new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR);
-        }
-        if (!(0, error_1.isResumableError)(changeStreamError, this.cursor.maxWireVersion)) {
-            try {
-                await this.close();
-            }
-            catch {
-                // ignore errors from close
-            }
-            throw changeStreamError;
-        }
-        await this.cursor.close().catch(() => null);
-        const topology = (0, utils_1.getTopology)(this.parent);
-        try {
-            await topology.selectServerAsync(this.cursor.readPreference, {});
-            this.cursor = this._createChangeStreamCursor(this.cursor.resumeOptions);
-        }
-        catch {
-            // if the topology can't reconnect, close the stream
-            await this.close();
-            throw changeStreamError;
-        }
-    }
-}
-/** @event */
-ChangeStream.RESPONSE = constants_1.RESPONSE;
-/** @event */
-ChangeStream.MORE = constants_1.MORE;
-/** @event */
-ChangeStream.INIT = constants_1.INIT;
-/** @event */
-ChangeStream.CLOSE = constants_1.CLOSE;
-/**
- * Fired for each new matching change in the specified namespace. Attaching a `change`
- * event listener to a Change Stream will switch the stream into flowing mode. Data will
- * then be passed as soon as it is available.
- * @event
- */
-ChangeStream.CHANGE = constants_1.CHANGE;
-/** @event */
-ChangeStream.END = constants_1.END;
-/** @event */
-ChangeStream.ERROR = constants_1.ERROR;
-/**
- * Emitted each time the change stream stores a new resume token.
- * @event
- */
-ChangeStream.RESUME_TOKEN_CHANGED = constants_1.RESUME_TOKEN_CHANGED;
-exports.ChangeStream = ChangeStream;
-//# sourceMappingURL=change_stream.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/change_stream.js.map b/server/data-import/node_modules/mongodb/lib/change_stream.js.map
deleted file mode 100644
index b27e65904404e06aa7b532e447eb3027ed41206b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/change_stream.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"change_stream.js","sourceRoot":"","sources":["../src/change_stream.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js b/server/data-import/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js
deleted file mode 100644
index 9f10223b62598a0d02527b1a121428ab9d60e78c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js
+++ /dev/null
@@ -1,307 +0,0 @@
-"use strict";
-var _a;
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.AutoEncrypter = exports.AutoEncryptionLoggerLevel = void 0;
-const bson_1 = require("../bson");
-const deps_1 = require("../deps");
-const error_1 = require("../error");
-const mongo_client_1 = require("../mongo_client");
-const utils_1 = require("../utils");
-const cryptoCallbacks = require("./crypto_callbacks");
-const errors_1 = require("./errors");
-const mongocryptd_manager_1 = require("./mongocryptd_manager");
-const providers_1 = require("./providers");
-const state_machine_1 = require("./state_machine");
-/** @public */
-exports.AutoEncryptionLoggerLevel = Object.freeze({
-    FatalError: 0,
-    Error: 1,
-    Warning: 2,
-    Info: 3,
-    Trace: 4
-});
-// Typescript errors if we index objects with `Symbol.for(...)`, so
-// to avoid TS errors we pull them out into variables.  Then we can type
-// the objects (and class) that we expect to see them on and prevent TS
-// errors.
-/** @internal */
-const kDecorateResult = Symbol.for('@@mdb.decorateDecryptionResult');
-/** @internal */
-const kDecoratedKeys = Symbol.for('@@mdb.decryptedKeys');
-/**
- * @internal An internal class to be used by the driver for auto encryption
- * **NOTE**: Not meant to be instantiated directly, this is for internal use only.
- */
-class AutoEncrypter {
-    /** @internal */
-    static getMongoCrypt() {
-        const encryption = (0, deps_1.getMongoDBClientEncryption)();
-        if ('kModuleError' in encryption) {
-            throw encryption.kModuleError;
-        }
-        return encryption.MongoCrypt;
-    }
-    /**
-     * Create an AutoEncrypter
-     *
-     * **Note**: Do not instantiate this class directly. Rather, supply the relevant options to a MongoClient
-     *
-     * **Note**: Supplying `options.schemaMap` provides more security than relying on JSON Schemas obtained from the server.
-     * It protects against a malicious server advertising a false JSON Schema, which could trick the client into sending unencrypted data that should be encrypted.
-     * Schemas supplied in the schemaMap only apply to configuring automatic encryption for Client-Side Field Level Encryption.
-     * Other validation rules in the JSON schema will not be enforced by the driver and will result in an error.
-     *
-     * @example <caption>Create an AutoEncrypter that makes use of mongocryptd</caption>
-     * ```ts
-     * // Enabling autoEncryption via a MongoClient using mongocryptd
-     * const { MongoClient } = require('mongodb');
-     * const client = new MongoClient(URL, {
-     *   autoEncryption: {
-     *     kmsProviders: {
-     *       aws: {
-     *         accessKeyId: AWS_ACCESS_KEY,
-     *         secretAccessKey: AWS_SECRET_KEY
-     *       }
-     *     }
-     *   }
-     * });
-     * ```
-     *
-     * await client.connect();
-     * // From here on, the client will be encrypting / decrypting automatically
-     * @example <caption>Create an AutoEncrypter that makes use of libmongocrypt's CSFLE shared library</caption>
-     * ```ts
-     * // Enabling autoEncryption via a MongoClient using CSFLE shared library
-     * const { MongoClient } = require('mongodb');
-     * const client = new MongoClient(URL, {
-     *   autoEncryption: {
-     *     kmsProviders: {
-     *       aws: {}
-     *     },
-     *     extraOptions: {
-     *       cryptSharedLibPath: '/path/to/local/crypt/shared/lib',
-     *       cryptSharedLibRequired: true
-     *     }
-     *   }
-     * });
-     * ```
-     *
-     * await client.connect();
-     * // From here on, the client will be encrypting / decrypting automatically
-     */
-    constructor(client, options) {
-        /**
-         * Used by devtools to enable decorating decryption results.
-         *
-         * When set and enabled, `decrypt` will automatically recursively
-         * traverse a decrypted document and if a field has been decrypted,
-         * it will mark it as decrypted.  Compass uses this to determine which
-         * fields were decrypted.
-         */
-        this[_a] = false;
-        this._client = client;
-        this._bypassEncryption = options.bypassAutoEncryption === true;
-        this._keyVaultNamespace = options.keyVaultNamespace || 'admin.datakeys';
-        this._keyVaultClient = options.keyVaultClient || client;
-        this._metaDataClient = options.metadataClient || client;
-        this._proxyOptions = options.proxyOptions || {};
-        this._tlsOptions = options.tlsOptions || {};
-        this._kmsProviders = options.kmsProviders || {};
-        const mongoCryptOptions = {
-            cryptoCallbacks
-        };
-        if (options.schemaMap) {
-            mongoCryptOptions.schemaMap = Buffer.isBuffer(options.schemaMap)
-                ? options.schemaMap
-                : (0, bson_1.serialize)(options.schemaMap);
-        }
-        if (options.encryptedFieldsMap) {
-            mongoCryptOptions.encryptedFieldsMap = Buffer.isBuffer(options.encryptedFieldsMap)
-                ? options.encryptedFieldsMap
-                : (0, bson_1.serialize)(options.encryptedFieldsMap);
-        }
-        mongoCryptOptions.kmsProviders = !Buffer.isBuffer(this._kmsProviders)
-            ? (0, bson_1.serialize)(this._kmsProviders)
-            : this._kmsProviders;
-        if (options.options?.logger) {
-            mongoCryptOptions.logger = options.options.logger;
-        }
-        if (options.extraOptions && options.extraOptions.cryptSharedLibPath) {
-            mongoCryptOptions.cryptSharedLibPath = options.extraOptions.cryptSharedLibPath;
-        }
-        if (options.bypassQueryAnalysis) {
-            mongoCryptOptions.bypassQueryAnalysis = options.bypassQueryAnalysis;
-        }
-        this._bypassMongocryptdAndCryptShared = this._bypassEncryption || !!options.bypassQueryAnalysis;
-        if (options.extraOptions && options.extraOptions.cryptSharedLibSearchPaths) {
-            // Only for driver testing
-            mongoCryptOptions.cryptSharedLibSearchPaths = options.extraOptions.cryptSharedLibSearchPaths;
-        }
-        else if (!this._bypassMongocryptdAndCryptShared) {
-            mongoCryptOptions.cryptSharedLibSearchPaths = ['$SYSTEM'];
-        }
-        const MongoCrypt = AutoEncrypter.getMongoCrypt();
-        this._mongocrypt = new MongoCrypt(mongoCryptOptions);
-        this._contextCounter = 0;
-        if (options.extraOptions &&
-            options.extraOptions.cryptSharedLibRequired &&
-            !this.cryptSharedLibVersionInfo) {
-            throw new errors_1.MongoCryptInvalidArgumentError('`cryptSharedLibRequired` set but no crypt_shared library loaded');
-        }
-        // Only instantiate mongocryptd manager/client once we know for sure
-        // that we are not using the CSFLE shared library.
-        if (!this._bypassMongocryptdAndCryptShared && !this.cryptSharedLibVersionInfo) {
-            this._mongocryptdManager = new mongocryptd_manager_1.MongocryptdManager(options.extraOptions);
-            const clientOptions = {
-                serverSelectionTimeoutMS: 10000
-            };
-            if (options.extraOptions == null || typeof options.extraOptions.mongocryptdURI !== 'string') {
-                clientOptions.family = 4;
-            }
-            this._mongocryptdClient = new mongo_client_1.MongoClient(this._mongocryptdManager.uri, clientOptions);
-        }
-    }
-    /**
-     * Initializes the auto encrypter by spawning a mongocryptd and connecting to it.
-     *
-     * This function is a no-op when bypassSpawn is set or the crypt shared library is used.
-     */
-    async init() {
-        if (this._bypassMongocryptdAndCryptShared || this.cryptSharedLibVersionInfo) {
-            return;
-        }
-        if (!this._mongocryptdManager) {
-            throw new error_1.MongoRuntimeError('Reached impossible state: mongocryptdManager is undefined when neither bypassSpawn nor the shared lib are specified.');
-        }
-        if (!this._mongocryptdClient) {
-            throw new error_1.MongoRuntimeError('Reached impossible state: mongocryptdClient is undefined when neither bypassSpawn nor the shared lib are specified.');
-        }
-        if (!this._mongocryptdManager.bypassSpawn) {
-            await this._mongocryptdManager.spawn();
-        }
-        try {
-            const client = await this._mongocryptdClient.connect();
-            return client;
-        }
-        catch (error) {
-            const { message } = error;
-            if (message && (message.match(/timed out after/) || message.match(/ENOTFOUND/))) {
-                throw new error_1.MongoRuntimeError('Unable to connect to `mongocryptd`, please make sure it is running or in your PATH for auto-spawn', { cause: error });
-            }
-            throw error;
-        }
-    }
-    /**
-     * Cleans up the `_mongocryptdClient`, if present.
-     */
-    async teardown(force) {
-        await this._mongocryptdClient?.close(force);
-    }
-    /**
-     * Encrypt a command for a given namespace.
-     */
-    async encrypt(ns, cmd, options = {}) {
-        if (this._bypassEncryption) {
-            // If `bypassAutoEncryption` has been specified, don't encrypt
-            return cmd;
-        }
-        const commandBuffer = Buffer.isBuffer(cmd) ? cmd : (0, bson_1.serialize)(cmd, options);
-        const context = this._mongocrypt.makeEncryptionContext(utils_1.MongoDBCollectionNamespace.fromString(ns).db, commandBuffer);
-        context.id = this._contextCounter++;
-        context.ns = ns;
-        context.document = cmd;
-        const stateMachine = new state_machine_1.StateMachine({
-            promoteValues: false,
-            promoteLongs: false,
-            proxyOptions: this._proxyOptions,
-            tlsOptions: this._tlsOptions
-        });
-        return stateMachine.execute(this, context);
-    }
-    /**
-     * Decrypt a command response
-     */
-    async decrypt(response, options = {}) {
-        const buffer = Buffer.isBuffer(response) ? response : (0, bson_1.serialize)(response, options);
-        const context = this._mongocrypt.makeDecryptionContext(buffer);
-        context.id = this._contextCounter++;
-        const stateMachine = new state_machine_1.StateMachine({
-            ...options,
-            proxyOptions: this._proxyOptions,
-            tlsOptions: this._tlsOptions
-        });
-        const decorateResult = this[kDecorateResult];
-        const result = await stateMachine.execute(this, context);
-        if (decorateResult) {
-            decorateDecryptionResult(result, response);
-        }
-        return result;
-    }
-    /**
-     * Ask the user for KMS credentials.
-     *
-     * This returns anything that looks like the kmsProviders original input
-     * option. It can be empty, and any provider specified here will override
-     * the original ones.
-     */
-    async askForKMSCredentials() {
-        return (0, providers_1.refreshKMSCredentials)(this._kmsProviders);
-    }
-    /**
-     * Return the current libmongocrypt's CSFLE shared library version
-     * as `{ version: bigint, versionStr: string }`, or `null` if no CSFLE
-     * shared library was loaded.
-     */
-    get cryptSharedLibVersionInfo() {
-        return this._mongocrypt.cryptSharedLibVersionInfo;
-    }
-    static get libmongocryptVersion() {
-        return AutoEncrypter.getMongoCrypt().libmongocryptVersion;
-    }
-}
-exports.AutoEncrypter = AutoEncrypter;
-_a = kDecorateResult;
-/**
- * Recurse through the (identically-shaped) `decrypted` and `original`
- * objects and attach a `decryptedKeys` property on each sub-object that
- * contained encrypted fields. Because we only call this on BSON responses,
- * we do not need to worry about circular references.
- *
- * @internal
- */
-function decorateDecryptionResult(decrypted, original, isTopLevelDecorateCall = true) {
-    if (isTopLevelDecorateCall) {
-        // The original value could have been either a JS object or a BSON buffer
-        if (Buffer.isBuffer(original)) {
-            original = (0, bson_1.deserialize)(original);
-        }
-        if (Buffer.isBuffer(decrypted)) {
-            throw new error_1.MongoRuntimeError('Expected result of decryption to be deserialized BSON object');
-        }
-    }
-    if (!decrypted || typeof decrypted !== 'object')
-        return;
-    for (const k of Object.keys(decrypted)) {
-        const originalValue = original[k];
-        // An object was decrypted by libmongocrypt if and only if it was
-        // a BSON Binary object with subtype 6.
-        if (originalValue && originalValue._bsontype === 'Binary' && originalValue.sub_type === 6) {
-            if (!decrypted[kDecoratedKeys]) {
-                Object.defineProperty(decrypted, kDecoratedKeys, {
-                    value: [],
-                    configurable: true,
-                    enumerable: false,
-                    writable: false
-                });
-            }
-            // this is defined in the preceding if-statement
-            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-            decrypted[kDecoratedKeys].push(k);
-            // Do not recurse into this decrypted value. It could be a sub-document/array,
-            // in which case there is no original value associated with its subfields.
-            continue;
-        }
-        decorateDecryptionResult(decrypted[k], originalValue, false);
-    }
-}
-//# sourceMappingURL=auto_encrypter.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js.map b/server/data-import/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js.map
deleted file mode 100644
index 04aab3f2edd840084423da8f96fa0b98ff74197a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"auto_encrypter.js","sourceRoot":"","sources":["../../src/client-side-encryption/auto_encrypter.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/client_encryption.js b/server/data-import/node_modules/mongodb/lib/client-side-encryption/client_encryption.js
deleted file mode 100644
index b88b03c12b31069101975582f96cc14ba68a6b85..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/client_encryption.js
+++ /dev/null
@@ -1,555 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ClientEncryption = void 0;
-const bson_1 = require("../bson");
-const deps_1 = require("../deps");
-const utils_1 = require("../utils");
-const cryptoCallbacks = require("./crypto_callbacks");
-const errors_1 = require("./errors");
-const index_1 = require("./providers/index");
-const state_machine_1 = require("./state_machine");
-/**
- * @public
- * The public interface for explicit in-use encryption
- */
-class ClientEncryption {
-    /** @internal */
-    static getMongoCrypt() {
-        const encryption = (0, deps_1.getMongoDBClientEncryption)();
-        if ('kModuleError' in encryption) {
-            throw encryption.kModuleError;
-        }
-        return encryption.MongoCrypt;
-    }
-    /**
-     * Create a new encryption instance
-     *
-     * @example
-     * ```ts
-     * new ClientEncryption(mongoClient, {
-     *   keyVaultNamespace: 'client.encryption',
-     *   kmsProviders: {
-     *     local: {
-     *       key: masterKey // The master key used for encryption/decryption. A 96-byte long Buffer
-     *     }
-     *   }
-     * });
-     * ```
-     *
-     * @example
-     * ```ts
-     * new ClientEncryption(mongoClient, {
-     *   keyVaultNamespace: 'client.encryption',
-     *   kmsProviders: {
-     *     aws: {
-     *       accessKeyId: AWS_ACCESS_KEY,
-     *       secretAccessKey: AWS_SECRET_KEY
-     *     }
-     *   }
-     * });
-     * ```
-     */
-    constructor(client, options) {
-        this._client = client;
-        this._proxyOptions = options.proxyOptions ?? {};
-        this._tlsOptions = options.tlsOptions ?? {};
-        this._kmsProviders = options.kmsProviders || {};
-        if (options.keyVaultNamespace == null) {
-            throw new errors_1.MongoCryptInvalidArgumentError('Missing required option `keyVaultNamespace`');
-        }
-        const mongoCryptOptions = {
-            ...options,
-            cryptoCallbacks,
-            kmsProviders: !Buffer.isBuffer(this._kmsProviders)
-                ? (0, bson_1.serialize)(this._kmsProviders)
-                : this._kmsProviders
-        };
-        this._keyVaultNamespace = options.keyVaultNamespace;
-        this._keyVaultClient = options.keyVaultClient || client;
-        const MongoCrypt = ClientEncryption.getMongoCrypt();
-        this._mongoCrypt = new MongoCrypt(mongoCryptOptions);
-    }
-    /**
-     * Creates a data key used for explicit encryption and inserts it into the key vault namespace
-     *
-     * @example
-     * ```ts
-     * // Using async/await to create a local key
-     * const dataKeyId = await clientEncryption.createDataKey('local');
-     * ```
-     *
-     * @example
-     * ```ts
-     * // Using async/await to create an aws key
-     * const dataKeyId = await clientEncryption.createDataKey('aws', {
-     *   masterKey: {
-     *     region: 'us-east-1',
-     *     key: 'xxxxxxxxxxxxxx' // CMK ARN here
-     *   }
-     * });
-     * ```
-     *
-     * @example
-     * ```ts
-     * // Using async/await to create an aws key with a keyAltName
-     * const dataKeyId = await clientEncryption.createDataKey('aws', {
-     *   masterKey: {
-     *     region: 'us-east-1',
-     *     key: 'xxxxxxxxxxxxxx' // CMK ARN here
-     *   },
-     *   keyAltNames: [ 'mySpecialKey' ]
-     * });
-     * ```
-     */
-    async createDataKey(provider, options = {}) {
-        if (options.keyAltNames && !Array.isArray(options.keyAltNames)) {
-            throw new errors_1.MongoCryptInvalidArgumentError(`Option "keyAltNames" must be an array of strings, but was of type ${typeof options.keyAltNames}.`);
-        }
-        let keyAltNames = undefined;
-        if (options.keyAltNames && options.keyAltNames.length > 0) {
-            keyAltNames = options.keyAltNames.map((keyAltName, i) => {
-                if (typeof keyAltName !== 'string') {
-                    throw new errors_1.MongoCryptInvalidArgumentError(`Option "keyAltNames" must be an array of strings, but item at index ${i} was of type ${typeof keyAltName}`);
-                }
-                return (0, bson_1.serialize)({ keyAltName });
-            });
-        }
-        let keyMaterial = undefined;
-        if (options.keyMaterial) {
-            keyMaterial = (0, bson_1.serialize)({ keyMaterial: options.keyMaterial });
-        }
-        const dataKeyBson = (0, bson_1.serialize)({
-            provider,
-            ...options.masterKey
-        });
-        const context = this._mongoCrypt.makeDataKeyContext(dataKeyBson, {
-            keyAltNames,
-            keyMaterial
-        });
-        const stateMachine = new state_machine_1.StateMachine({
-            proxyOptions: this._proxyOptions,
-            tlsOptions: this._tlsOptions
-        });
-        const dataKey = await stateMachine.execute(this, context);
-        const { db: dbName, collection: collectionName } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
-        const { insertedId } = await this._keyVaultClient
-            .db(dbName)
-            .collection(collectionName)
-            .insertOne(dataKey, { writeConcern: { w: 'majority' } });
-        return insertedId;
-    }
-    /**
-     * Searches the keyvault for any data keys matching the provided filter.  If there are matches, rewrapManyDataKey then attempts to re-wrap the data keys using the provided options.
-     *
-     * If no matches are found, then no bulk write is performed.
-     *
-     * @example
-     * ```ts
-     * // rewrapping all data data keys (using a filter that matches all documents)
-     * const filter = {};
-     *
-     * const result = await clientEncryption.rewrapManyDataKey(filter);
-     * if (result.bulkWriteResult != null) {
-     *  // keys were re-wrapped, results will be available in the bulkWrite object.
-     * }
-     * ```
-     *
-     * @example
-     * ```ts
-     * // attempting to rewrap all data keys with no matches
-     * const filter = { _id: new Binary() } // assume _id matches no documents in the database
-     * const result = await clientEncryption.rewrapManyDataKey(filter);
-     *
-     * if (result.bulkWriteResult == null) {
-     *  // no keys matched, `bulkWriteResult` does not exist on the result object
-     * }
-     * ```
-     */
-    async rewrapManyDataKey(filter, options) {
-        let keyEncryptionKeyBson = undefined;
-        if (options) {
-            const keyEncryptionKey = Object.assign({ provider: options.provider }, options.masterKey);
-            keyEncryptionKeyBson = (0, bson_1.serialize)(keyEncryptionKey);
-        }
-        const filterBson = (0, bson_1.serialize)(filter);
-        const context = this._mongoCrypt.makeRewrapManyDataKeyContext(filterBson, keyEncryptionKeyBson);
-        const stateMachine = new state_machine_1.StateMachine({
-            proxyOptions: this._proxyOptions,
-            tlsOptions: this._tlsOptions
-        });
-        const { v: dataKeys } = await stateMachine.execute(this, context);
-        if (dataKeys.length === 0) {
-            return {};
-        }
-        const { db: dbName, collection: collectionName } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
-        const replacements = dataKeys.map((key) => ({
-            updateOne: {
-                filter: { _id: key._id },
-                update: {
-                    $set: {
-                        masterKey: key.masterKey,
-                        keyMaterial: key.keyMaterial
-                    },
-                    $currentDate: {
-                        updateDate: true
-                    }
-                }
-            }
-        }));
-        const result = await this._keyVaultClient
-            .db(dbName)
-            .collection(collectionName)
-            .bulkWrite(replacements, {
-            writeConcern: { w: 'majority' }
-        });
-        return { bulkWriteResult: result };
-    }
-    /**
-     * Deletes the key with the provided id from the keyvault, if it exists.
-     *
-     * @example
-     * ```ts
-     * // delete a key by _id
-     * const id = new Binary(); // id is a bson binary subtype 4 object
-     * const { deletedCount } = await clientEncryption.deleteKey(id);
-     *
-     * if (deletedCount != null && deletedCount > 0) {
-     *   // successful deletion
-     * }
-     * ```
-     *
-     */
-    async deleteKey(_id) {
-        const { db: dbName, collection: collectionName } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
-        return this._keyVaultClient
-            .db(dbName)
-            .collection(collectionName)
-            .deleteOne({ _id }, { writeConcern: { w: 'majority' } });
-    }
-    /**
-     * Finds all the keys currently stored in the keyvault.
-     *
-     * This method will not throw.
-     *
-     * @returns a FindCursor over all keys in the keyvault.
-     * @example
-     * ```ts
-     * // fetching all keys
-     * const keys = await clientEncryption.getKeys().toArray();
-     * ```
-     */
-    getKeys() {
-        const { db: dbName, collection: collectionName } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
-        return this._keyVaultClient
-            .db(dbName)
-            .collection(collectionName)
-            .find({}, { readConcern: { level: 'majority' } });
-    }
-    /**
-     * Finds a key in the keyvault with the specified _id.
-     *
-     * Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
-     * match the id.  The promise rejects with an error if an error is thrown.
-     * @example
-     * ```ts
-     * // getting a key by id
-     * const id = new Binary(); // id is a bson binary subtype 4 object
-     * const key = await clientEncryption.getKey(id);
-     * if (!key) {
-     *  // key is null if there was no matching key
-     * }
-     * ```
-     */
-    async getKey(_id) {
-        const { db: dbName, collection: collectionName } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
-        return this._keyVaultClient
-            .db(dbName)
-            .collection(collectionName)
-            .findOne({ _id }, { readConcern: { level: 'majority' } });
-    }
-    /**
-     * Finds a key in the keyvault which has the specified keyAltName.
-     *
-     * @param keyAltName - a keyAltName to search for a key
-     * @returns Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
-     * match the keyAltName.  The promise rejects with an error if an error is thrown.
-     * @example
-     * ```ts
-     * // get a key by alt name
-     * const keyAltName = 'keyAltName';
-     * const key = await clientEncryption.getKeyByAltName(keyAltName);
-     * if (!key) {
-     *  // key is null if there is no matching key
-     * }
-     * ```
-     */
-    async getKeyByAltName(keyAltName) {
-        const { db: dbName, collection: collectionName } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
-        return this._keyVaultClient
-            .db(dbName)
-            .collection(collectionName)
-            .findOne({ keyAltNames: keyAltName }, { readConcern: { level: 'majority' } });
-    }
-    /**
-     * Adds a keyAltName to a key identified by the provided _id.
-     *
-     * This method resolves to/returns the *old* key value (prior to adding the new altKeyName).
-     *
-     * @param _id - The id of the document to update.
-     * @param keyAltName - a keyAltName to search for a key
-     * @returns Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
-     * match the id.  The promise rejects with an error if an error is thrown.
-     * @example
-     * ```ts
-     * // adding an keyAltName to a data key
-     * const id = new Binary();  // id is a bson binary subtype 4 object
-     * const keyAltName = 'keyAltName';
-     * const oldKey = await clientEncryption.addKeyAltName(id, keyAltName);
-     * if (!oldKey) {
-     *  // null is returned if there is no matching document with an id matching the supplied id
-     * }
-     * ```
-     */
-    async addKeyAltName(_id, keyAltName) {
-        const { db: dbName, collection: collectionName } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
-        const value = await this._keyVaultClient
-            .db(dbName)
-            .collection(collectionName)
-            .findOneAndUpdate({ _id }, { $addToSet: { keyAltNames: keyAltName } }, { writeConcern: { w: 'majority' }, returnDocument: 'before' });
-        return value;
-    }
-    /**
-     * Adds a keyAltName to a key identified by the provided _id.
-     *
-     * This method resolves to/returns the *old* key value (prior to removing the new altKeyName).
-     *
-     * If the removed keyAltName is the last keyAltName for that key, the `altKeyNames` property is unset from the document.
-     *
-     * @param _id - The id of the document to update.
-     * @param keyAltName - a keyAltName to search for a key
-     * @returns Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
-     * match the id.  The promise rejects with an error if an error is thrown.
-     * @example
-     * ```ts
-     * // removing a key alt name from a data key
-     * const id = new Binary();  // id is a bson binary subtype 4 object
-     * const keyAltName = 'keyAltName';
-     * const oldKey = await clientEncryption.removeKeyAltName(id, keyAltName);
-     *
-     * if (!oldKey) {
-     *  // null is returned if there is no matching document with an id matching the supplied id
-     * }
-     * ```
-     */
-    async removeKeyAltName(_id, keyAltName) {
-        const { db: dbName, collection: collectionName } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
-        const pipeline = [
-            {
-                $set: {
-                    keyAltNames: {
-                        $cond: [
-                            {
-                                $eq: ['$keyAltNames', [keyAltName]]
-                            },
-                            '$$REMOVE',
-                            {
-                                $filter: {
-                                    input: '$keyAltNames',
-                                    cond: {
-                                        $ne: ['$$this', keyAltName]
-                                    }
-                                }
-                            }
-                        ]
-                    }
-                }
-            }
-        ];
-        const value = await this._keyVaultClient
-            .db(dbName)
-            .collection(collectionName)
-            .findOneAndUpdate({ _id }, pipeline, {
-            writeConcern: { w: 'majority' },
-            returnDocument: 'before'
-        });
-        return value;
-    }
-    /**
-     * A convenience method for creating an encrypted collection.
-     * This method will create data keys for any encryptedFields that do not have a `keyId` defined
-     * and then create a new collection with the full set of encryptedFields.
-     *
-     * @param db - A Node.js driver Db object with which to create the collection
-     * @param name - The name of the collection to be created
-     * @param options - Options for createDataKey and for createCollection
-     * @returns created collection and generated encryptedFields
-     * @throws MongoCryptCreateDataKeyError - If part way through the process a createDataKey invocation fails, an error will be rejected that has the partial `encryptedFields` that were created.
-     * @throws MongoCryptCreateEncryptedCollectionError - If creating the collection fails, an error will be rejected that has the entire `encryptedFields` that were created.
-     */
-    async createEncryptedCollection(db, name, options) {
-        const { provider, masterKey, createCollectionOptions: { encryptedFields: { ...encryptedFields }, ...createCollectionOptions } } = options;
-        if (Array.isArray(encryptedFields.fields)) {
-            const createDataKeyPromises = encryptedFields.fields.map(async (field) => field == null || typeof field !== 'object' || field.keyId != null
-                ? field
-                : {
-                    ...field,
-                    keyId: await this.createDataKey(provider, { masterKey })
-                });
-            const createDataKeyResolutions = await Promise.allSettled(createDataKeyPromises);
-            encryptedFields.fields = createDataKeyResolutions.map((resolution, index) => resolution.status === 'fulfilled' ? resolution.value : encryptedFields.fields[index]);
-            const rejection = createDataKeyResolutions.find((result) => result.status === 'rejected');
-            if (rejection != null) {
-                throw new errors_1.MongoCryptCreateDataKeyError(encryptedFields, { cause: rejection.reason });
-            }
-        }
-        try {
-            const collection = await db.createCollection(name, {
-                ...createCollectionOptions,
-                encryptedFields
-            });
-            return { collection, encryptedFields };
-        }
-        catch (cause) {
-            throw new errors_1.MongoCryptCreateEncryptedCollectionError(encryptedFields, { cause });
-        }
-    }
-    /**
-     * Explicitly encrypt a provided value. Note that either `options.keyId` or `options.keyAltName` must
-     * be specified. Specifying both `options.keyId` and `options.keyAltName` is considered an error.
-     *
-     * @param value - The value that you wish to serialize. Must be of a type that can be serialized into BSON
-     * @param options -
-     * @returns a Promise that either resolves with the encrypted value, or rejects with an error.
-     *
-     * @example
-     * ```ts
-     * // Encryption with async/await api
-     * async function encryptMyData(value) {
-     *   const keyId = await clientEncryption.createDataKey('local');
-     *   return clientEncryption.encrypt(value, { keyId, algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' });
-     * }
-     * ```
-     *
-     * @example
-     * ```ts
-     * // Encryption using a keyAltName
-     * async function encryptMyData(value) {
-     *   await clientEncryption.createDataKey('local', { keyAltNames: 'mySpecialKey' });
-     *   return clientEncryption.encrypt(value, { keyAltName: 'mySpecialKey', algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' });
-     * }
-     * ```
-     */
-    async encrypt(value, options) {
-        return this._encrypt(value, false, options);
-    }
-    /**
-     * Encrypts a Match Expression or Aggregate Expression to query a range index.
-     *
-     * Only supported when queryType is "rangePreview" and algorithm is "RangePreview".
-     *
-     * @experimental The Range algorithm is experimental only. It is not intended for production use. It is subject to breaking changes.
-     *
-     * @param expression - a BSON document of one of the following forms:
-     *  1. A Match Expression of this form:
-     *      `{$and: [{<field>: {$gt: <value1>}}, {<field>: {$lt: <value2> }}]}`
-     *  2. An Aggregate Expression of this form:
-     *      `{$and: [{$gt: [<fieldpath>, <value1>]}, {$lt: [<fieldpath>, <value2>]}]}`
-     *
-     *    `$gt` may also be `$gte`. `$lt` may also be `$lte`.
-     *
-     * @param options -
-     * @returns Returns a Promise that either resolves with the encrypted value or rejects with an error.
-     */
-    async encryptExpression(expression, options) {
-        return this._encrypt(expression, true, options);
-    }
-    /**
-     * Explicitly decrypt a provided encrypted value
-     *
-     * @param value - An encrypted value
-     * @returns a Promise that either resolves with the decrypted value, or rejects with an error
-     *
-     * @example
-     * ```ts
-     * // Decrypting value with async/await API
-     * async function decryptMyValue(value) {
-     *   return clientEncryption.decrypt(value);
-     * }
-     * ```
-     */
-    async decrypt(value) {
-        const valueBuffer = (0, bson_1.serialize)({ v: value });
-        const context = this._mongoCrypt.makeExplicitDecryptionContext(valueBuffer);
-        const stateMachine = new state_machine_1.StateMachine({
-            proxyOptions: this._proxyOptions,
-            tlsOptions: this._tlsOptions
-        });
-        const { v } = await stateMachine.execute(this, context);
-        return v;
-    }
-    /**
-     * @internal
-     * Ask the user for KMS credentials.
-     *
-     * This returns anything that looks like the kmsProviders original input
-     * option. It can be empty, and any provider specified here will override
-     * the original ones.
-     */
-    async askForKMSCredentials() {
-        return (0, index_1.refreshKMSCredentials)(this._kmsProviders);
-    }
-    static get libmongocryptVersion() {
-        return ClientEncryption.getMongoCrypt().libmongocryptVersion;
-    }
-    /**
-     * @internal
-     * A helper that perform explicit encryption of values and expressions.
-     * Explicitly encrypt a provided value. Note that either `options.keyId` or `options.keyAltName` must
-     * be specified. Specifying both `options.keyId` and `options.keyAltName` is considered an error.
-     *
-     * @param value - The value that you wish to encrypt. Must be of a type that can be serialized into BSON
-     * @param expressionMode - a boolean that indicates whether or not to encrypt the value as an expression
-     * @param options - options to pass to encrypt
-     * @returns the raw result of the call to stateMachine.execute().  When expressionMode is set to true, the return
-     *          value will be a bson document.  When false, the value will be a BSON Binary.
-     *
-     */
-    async _encrypt(value, expressionMode, options) {
-        const { algorithm, keyId, keyAltName, contentionFactor, queryType, rangeOptions } = options;
-        const contextOptions = {
-            expressionMode,
-            algorithm
-        };
-        if (keyId) {
-            contextOptions.keyId = keyId.buffer;
-        }
-        if (keyAltName) {
-            if (keyId) {
-                throw new errors_1.MongoCryptInvalidArgumentError(`"options" cannot contain both "keyId" and "keyAltName"`);
-            }
-            if (typeof keyAltName !== 'string') {
-                throw new errors_1.MongoCryptInvalidArgumentError(`"options.keyAltName" must be of type string, but was of type ${typeof keyAltName}`);
-            }
-            contextOptions.keyAltName = (0, bson_1.serialize)({ keyAltName });
-        }
-        if (typeof contentionFactor === 'number' || typeof contentionFactor === 'bigint') {
-            contextOptions.contentionFactor = contentionFactor;
-        }
-        if (typeof queryType === 'string') {
-            contextOptions.queryType = queryType;
-        }
-        if (typeof rangeOptions === 'object') {
-            contextOptions.rangeOptions = (0, bson_1.serialize)(rangeOptions);
-        }
-        const valueBuffer = (0, bson_1.serialize)({ v: value });
-        const stateMachine = new state_machine_1.StateMachine({
-            proxyOptions: this._proxyOptions,
-            tlsOptions: this._tlsOptions
-        });
-        const context = this._mongoCrypt.makeExplicitEncryptionContext(valueBuffer, contextOptions);
-        const result = await stateMachine.execute(this, context);
-        return result.v;
-    }
-}
-exports.ClientEncryption = ClientEncryption;
-//# sourceMappingURL=client_encryption.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/client_encryption.js.map b/server/data-import/node_modules/mongodb/lib/client-side-encryption/client_encryption.js.map
deleted file mode 100644
index dd836227ecf1ae7d36676159d209a7ba03d5d3ca..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/client_encryption.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"client_encryption.js","sourceRoot":"","sources":["../../src/client-side-encryption/client_encryption.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js b/server/data-import/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js
deleted file mode 100644
index acdb2c736e5f183f41370b8ff408a1888bf8fc22..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js
+++ /dev/null
@@ -1,81 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.hmacSha256Hook = exports.hmacSha512Hook = exports.aes256CtrDecryptHook = exports.aes256CtrEncryptHook = exports.aes256CbcDecryptHook = exports.aes256CbcEncryptHook = exports.signRsaSha256Hook = exports.makeHmacHook = exports.sha256Hook = exports.randomHook = exports.makeAES256Hook = void 0;
-const crypto = require("crypto");
-function makeAES256Hook(method, mode) {
-    return function (key, iv, input, output) {
-        let result;
-        try {
-            const cipher = crypto[method](mode, key, iv);
-            cipher.setAutoPadding(false);
-            result = cipher.update(input);
-            const final = cipher.final();
-            if (final.length > 0) {
-                result = Buffer.concat([result, final]);
-            }
-        }
-        catch (e) {
-            return e;
-        }
-        result.copy(output);
-        return result.length;
-    };
-}
-exports.makeAES256Hook = makeAES256Hook;
-function randomHook(buffer, count) {
-    try {
-        crypto.randomFillSync(buffer, 0, count);
-    }
-    catch (e) {
-        return e;
-    }
-    return count;
-}
-exports.randomHook = randomHook;
-function sha256Hook(input, output) {
-    let result;
-    try {
-        result = crypto.createHash('sha256').update(input).digest();
-    }
-    catch (e) {
-        return e;
-    }
-    result.copy(output);
-    return result.length;
-}
-exports.sha256Hook = sha256Hook;
-function makeHmacHook(algorithm) {
-    return (key, input, output) => {
-        let result;
-        try {
-            result = crypto.createHmac(algorithm, key).update(input).digest();
-        }
-        catch (e) {
-            return e;
-        }
-        result.copy(output);
-        return result.length;
-    };
-}
-exports.makeHmacHook = makeHmacHook;
-function signRsaSha256Hook(key, input, output) {
-    let result;
-    try {
-        const signer = crypto.createSign('sha256WithRSAEncryption');
-        const privateKey = Buffer.from(`-----BEGIN PRIVATE KEY-----\n${key.toString('base64')}\n-----END PRIVATE KEY-----\n`);
-        result = signer.update(input).end().sign(privateKey);
-    }
-    catch (e) {
-        return e;
-    }
-    result.copy(output);
-    return result.length;
-}
-exports.signRsaSha256Hook = signRsaSha256Hook;
-exports.aes256CbcEncryptHook = makeAES256Hook('createCipheriv', 'aes-256-cbc');
-exports.aes256CbcDecryptHook = makeAES256Hook('createDecipheriv', 'aes-256-cbc');
-exports.aes256CtrEncryptHook = makeAES256Hook('createCipheriv', 'aes-256-ctr');
-exports.aes256CtrDecryptHook = makeAES256Hook('createDecipheriv', 'aes-256-ctr');
-exports.hmacSha512Hook = makeHmacHook('sha512');
-exports.hmacSha256Hook = makeHmacHook('sha256');
-//# sourceMappingURL=crypto_callbacks.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js.map b/server/data-import/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js.map
deleted file mode 100644
index 50a31385a3ff0b3b87f0c244f97b56de3c21af4f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"crypto_callbacks.js","sourceRoot":"","sources":["../../src/client-side-encryption/crypto_callbacks.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/errors.js b/server/data-import/node_modules/mongodb/lib/client-side-encryption/errors.js
deleted file mode 100644
index 5d91e11e23c5ac6ee6abf0806657f9582e599897..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/errors.js
+++ /dev/null
@@ -1,136 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.MongoCryptKMSRequestNetworkTimeoutError = exports.MongoCryptAzureKMSRequestError = exports.MongoCryptCreateEncryptedCollectionError = exports.MongoCryptCreateDataKeyError = exports.MongoCryptInvalidArgumentError = exports.MongoCryptError = void 0;
-const error_1 = require("../error");
-/**
- * @public
- * An error indicating that something went wrong specifically with MongoDB Client Encryption
- */
-class MongoCryptError extends error_1.MongoError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, options = {}) {
-        super(message, options);
-    }
-    get name() {
-        return 'MongoCryptError';
-    }
-}
-exports.MongoCryptError = MongoCryptError;
-/**
- * @public
- *
- * An error indicating an invalid argument was provided to an encryption API.
- */
-class MongoCryptInvalidArgumentError extends MongoCryptError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoCryptInvalidArgumentError';
-    }
-}
-exports.MongoCryptInvalidArgumentError = MongoCryptInvalidArgumentError;
-/**
- * @public
- * An error indicating that `ClientEncryption.createEncryptedCollection()` failed to create data keys
- */
-class MongoCryptCreateDataKeyError extends MongoCryptError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(encryptedFields, { cause }) {
-        super(`Unable to complete creating data keys: ${cause.message}`, { cause });
-        this.encryptedFields = encryptedFields;
-    }
-    get name() {
-        return 'MongoCryptCreateDataKeyError';
-    }
-}
-exports.MongoCryptCreateDataKeyError = MongoCryptCreateDataKeyError;
-/**
- * @public
- * An error indicating that `ClientEncryption.createEncryptedCollection()` failed to create a collection
- */
-class MongoCryptCreateEncryptedCollectionError extends MongoCryptError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(encryptedFields, { cause }) {
-        super(`Unable to create collection: ${cause.message}`, { cause });
-        this.encryptedFields = encryptedFields;
-    }
-    get name() {
-        return 'MongoCryptCreateEncryptedCollectionError';
-    }
-}
-exports.MongoCryptCreateEncryptedCollectionError = MongoCryptCreateEncryptedCollectionError;
-/**
- * @public
- * An error indicating that mongodb-client-encryption failed to auto-refresh Azure KMS credentials.
- */
-class MongoCryptAzureKMSRequestError extends MongoCryptError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, body) {
-        super(message);
-        this.body = body;
-    }
-    get name() {
-        return 'MongoCryptAzureKMSRequestError';
-    }
-}
-exports.MongoCryptAzureKMSRequestError = MongoCryptAzureKMSRequestError;
-/** @public */
-class MongoCryptKMSRequestNetworkTimeoutError extends MongoCryptError {
-    get name() {
-        return 'MongoCryptKMSRequestNetworkTimeoutError';
-    }
-}
-exports.MongoCryptKMSRequestNetworkTimeoutError = MongoCryptKMSRequestNetworkTimeoutError;
-//# sourceMappingURL=errors.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/errors.js.map b/server/data-import/node_modules/mongodb/lib/client-side-encryption/errors.js.map
deleted file mode 100644
index 4576ba255a0a96ad5388cc23fc8ea99b55386e86..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/errors.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/client-side-encryption/errors.ts"],"names":[],"mappings":";;;AACA,oCAAsC;AAEtC;;;GAGG;AACH,MAAa,eAAgB,SAAQ,kBAAU;IAC7C;;;;;;;;;;QAUI;IACJ,YAAY,OAAe,EAAE,UAA6B,EAAE;QAC1D,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,IAAa,IAAI;QACf,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF;AAnBD,0CAmBC;AAED;;;;GAIG;AACH,MAAa,8BAA+B,SAAQ,eAAe;IACjE;;;;;;;;;;QAUI;IACJ,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAED,IAAa,IAAI;QACf,OAAO,gCAAgC,CAAC;IAC1C,CAAC;CACF;AAnBD,wEAmBC;AACD;;;GAGG;AACH,MAAa,4BAA6B,SAAQ,eAAe;IAE/D;;;;;;;;;;QAUI;IACJ,YAAY,eAAyB,EAAE,EAAE,KAAK,EAAoB;QAChE,KAAK,CAAC,0CAA0C,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,IAAa,IAAI;QACf,OAAO,8BAA8B,CAAC;IACxC,CAAC;CACF;AArBD,oEAqBC;AAED;;;GAGG;AACH,MAAa,wCAAyC,SAAQ,eAAe;IAE3E;;;;;;;;;;QAUI;IACJ,YAAY,eAAyB,EAAE,EAAE,KAAK,EAAoB;QAChE,KAAK,CAAC,gCAAgC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,IAAa,IAAI;QACf,OAAO,0CAA0C,CAAC;IACpD,CAAC;CACF;AArBD,4FAqBC;AAED;;;GAGG;AACH,MAAa,8BAA+B,SAAQ,eAAe;IAGjE;;;;;;;;;;QAUI;IACJ,YAAY,OAAe,EAAE,IAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAa,IAAI;QACf,OAAO,gCAAgC,CAAC;IAC1C,CAAC;CACF;AAtBD,wEAsBC;AAED,cAAc;AACd,MAAa,uCAAwC,SAAQ,eAAe;IAC1E,IAAa,IAAI;QACf,OAAO,yCAAyC,CAAC;IACnD,CAAC;CACF;AAJD,0FAIC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js b/server/data-import/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js
deleted file mode 100644
index a4d361ef67df49310b40d5a5c0805ca5477510d3..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js
+++ /dev/null
@@ -1,81 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.MongocryptdManager = void 0;
-const error_1 = require("../error");
-/**
- * @internal
- * An internal class that handles spawning a mongocryptd.
- */
-class MongocryptdManager {
-    constructor(extraOptions = {}) {
-        this.uri =
-            typeof extraOptions.mongocryptdURI === 'string' && extraOptions.mongocryptdURI.length > 0
-                ? extraOptions.mongocryptdURI
-                : MongocryptdManager.DEFAULT_MONGOCRYPTD_URI;
-        this.bypassSpawn = !!extraOptions.mongocryptdBypassSpawn;
-        this.spawnPath = extraOptions.mongocryptdSpawnPath || '';
-        this.spawnArgs = [];
-        if (Array.isArray(extraOptions.mongocryptdSpawnArgs)) {
-            this.spawnArgs = this.spawnArgs.concat(extraOptions.mongocryptdSpawnArgs);
-        }
-        if (this.spawnArgs
-            .filter(arg => typeof arg === 'string')
-            .every(arg => arg.indexOf('--idleShutdownTimeoutSecs') < 0)) {
-            this.spawnArgs.push('--idleShutdownTimeoutSecs', '60');
-        }
-    }
-    /**
-     * Will check to see if a mongocryptd is up. If it is not up, it will attempt
-     * to spawn a mongocryptd in a detached process, and then wait for it to be up.
-     */
-    async spawn() {
-        const cmdName = this.spawnPath || 'mongocryptd';
-        // eslint-disable-next-line @typescript-eslint/no-var-requires
-        const { spawn } = require('child_process');
-        // Spawned with stdio: ignore and detached: true
-        // to ensure child can outlive parent.
-        this._child = spawn(cmdName, this.spawnArgs, {
-            stdio: 'ignore',
-            detached: true
-        });
-        this._child.on('error', () => {
-            // From the FLE spec:
-            // "The stdout and stderr of the spawned process MUST not be exposed in the driver
-            // (e.g. redirect to /dev/null). Users can pass the argument --logpath to
-            // extraOptions.mongocryptdSpawnArgs if they need to inspect mongocryptd logs.
-            // If spawning is necessary, the driver MUST spawn mongocryptd whenever server
-            // selection on the MongoClient to mongocryptd fails. If the MongoClient fails to
-            // connect after spawning, the server selection error is propagated to the user."
-            // The AutoEncrypter and MongoCryptdManager should work together to spawn
-            // mongocryptd whenever necessary.  Additionally, the `mongocryptd` intentionally
-            // shuts down after 60s and gets respawned when necessary.  We rely on server
-            // selection timeouts when connecting to the `mongocryptd` to inform users that something
-            // has been configured incorrectly.  For those reasons, we suppress stderr from
-            // the `mongocryptd` process and immediately unref the process.
-        });
-        // unref child to remove handle from event loop
-        this._child.unref();
-    }
-    /**
-     * @returns the result of `fn` or rejects with an error.
-     */
-    async withRespawn(fn) {
-        try {
-            const result = await fn();
-            return result;
-        }
-        catch (err) {
-            // If we are not bypassing spawning, then we should retry once on a MongoTimeoutError (server selection error)
-            const shouldSpawn = err instanceof error_1.MongoNetworkTimeoutError && !this.bypassSpawn;
-            if (!shouldSpawn) {
-                throw err;
-            }
-        }
-        await this.spawn();
-        const result = await fn();
-        return result;
-    }
-}
-MongocryptdManager.DEFAULT_MONGOCRYPTD_URI = 'mongodb://localhost:27020';
-exports.MongocryptdManager = MongocryptdManager;
-//# sourceMappingURL=mongocryptd_manager.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js.map b/server/data-import/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js.map
deleted file mode 100644
index cebcb909199891cb555e5868abcb3f2c24206cf0..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"mongocryptd_manager.js","sourceRoot":"","sources":["../../src/client-side-encryption/mongocryptd_manager.ts"],"names":[],"mappings":";;;AAEA,oCAAoD;AAGpD;;;GAGG;AACH,MAAa,kBAAkB;IAS7B,YAAY,eAA2C,EAAE;QACvD,IAAI,CAAC,GAAG;YACN,OAAO,YAAY,CAAC,cAAc,KAAK,QAAQ,IAAI,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;gBACvF,CAAC,CAAC,YAAY,CAAC,cAAc;gBAC7B,CAAC,CAAC,kBAAkB,CAAC,uBAAuB,CAAC;QAEjD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,sBAAsB,CAAC;QAEzD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,oBAAoB,IAAI,EAAE,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE;YACpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;SAC3E;QACD,IACE,IAAI,CAAC,SAAS;aACX,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC;aACtC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,EAC7D;YACA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;SACxD;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC;QAEhD,8DAA8D;QAC9D,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,eAAe,CAAmC,CAAC;QAE7E,gDAAgD;QAChD,sCAAsC;QACtC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;YAC3C,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC3B,qBAAqB;YACrB,kFAAkF;YAClF,yEAAyE;YACzE,8EAA8E;YAC9E,8EAA8E;YAC9E,iFAAiF;YACjF,iFAAiF;YACjF,yEAAyE;YACzE,iFAAiF;YACjF,6EAA6E;YAC7E,yFAAyF;YACzF,+EAA+E;YAC/E,+DAA+D;QACjE,CAAC,CAAC,CAAC;QAEH,+CAA+C;QAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAI,EAAoB;QACvC,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,GAAG,EAAE;YACZ,8GAA8G;YAC9G,MAAM,WAAW,GAAG,GAAG,YAAY,gCAAwB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YACjF,IAAI,CAAC,WAAW,EAAE;gBAChB,MAAM,GAAG,CAAC;aACX;SACF;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;;AApFM,0CAAuB,GAAG,2BAA2B,CAAC;AADlD,gDAAkB"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/aws.js b/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/aws.js
deleted file mode 100644
index 5103c56b3aac472b1f1cdea092b4b242b4a17106..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/aws.js
+++ /dev/null
@@ -1,21 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.loadAWSCredentials = void 0;
-const deps_1 = require("../../deps");
-/**
- * @internal
- */
-async function loadAWSCredentials(kmsProviders) {
-    const credentialProvider = (0, deps_1.getAwsCredentialProvider)();
-    if ('kModuleError' in credentialProvider) {
-        return kmsProviders;
-    }
-    const { fromNodeProviderChain } = credentialProvider;
-    const provider = fromNodeProviderChain();
-    // The state machine is the only place calling this so it will
-    // catch if there is a rejection here.
-    const aws = await provider();
-    return { ...kmsProviders, aws };
-}
-exports.loadAWSCredentials = loadAWSCredentials;
-//# sourceMappingURL=aws.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/aws.js.map b/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/aws.js.map
deleted file mode 100644
index a4f37d84481e4d5fd2f25a3083998db33f27506a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/aws.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"aws.js","sourceRoot":"","sources":["../../../src/client-side-encryption/providers/aws.ts"],"names":[],"mappings":";;;AAAA,qCAAsD;AAGtD;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAC,YAA0B;IACjE,MAAM,kBAAkB,GAAG,IAAA,+BAAwB,GAAE,CAAC;IAEtD,IAAI,cAAc,IAAI,kBAAkB,EAAE;QACxC,OAAO,YAAY,CAAC;KACrB;IAED,MAAM,EAAE,qBAAqB,EAAE,GAAG,kBAAkB,CAAC;IACrD,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACzC,8DAA8D;IAC9D,sCAAsC;IACtC,MAAM,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC7B,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,CAAC;AAClC,CAAC;AAbD,gDAaC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/azure.js b/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/azure.js
deleted file mode 100644
index 3d95c94f76b5aab70dfca3ca5742235985446027..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/azure.js
+++ /dev/null
@@ -1,114 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.loadAzureCredentials = exports.fetchAzureKMSToken = exports.prepareRequest = exports.tokenCache = exports.AzureCredentialCache = void 0;
-const errors_1 = require("../errors");
-const utils_1 = require("./utils");
-const MINIMUM_TOKEN_REFRESH_IN_MILLISECONDS = 6000;
-/**
- * @internal
- */
-class AzureCredentialCache {
-    constructor() {
-        this.cachedToken = null;
-    }
-    async getToken() {
-        if (this.cachedToken == null || this.needsRefresh(this.cachedToken)) {
-            this.cachedToken = await this._getToken();
-        }
-        return { accessToken: this.cachedToken.accessToken };
-    }
-    needsRefresh(token) {
-        const timeUntilExpirationMS = token.expiresOnTimestamp - Date.now();
-        return timeUntilExpirationMS <= MINIMUM_TOKEN_REFRESH_IN_MILLISECONDS;
-    }
-    /**
-     * exposed for testing
-     */
-    resetCache() {
-        this.cachedToken = null;
-    }
-    /**
-     * exposed for testing
-     */
-    _getToken() {
-        return fetchAzureKMSToken();
-    }
-}
-exports.AzureCredentialCache = AzureCredentialCache;
-/** @internal */
-exports.tokenCache = new AzureCredentialCache();
-/** @internal */
-async function parseResponse(response) {
-    const { status, body: rawBody } = response;
-    const body = (() => {
-        try {
-            return JSON.parse(rawBody);
-        }
-        catch {
-            throw new errors_1.MongoCryptAzureKMSRequestError('Malformed JSON body in GET request.');
-        }
-    })();
-    if (status !== 200) {
-        throw new errors_1.MongoCryptAzureKMSRequestError('Unable to complete request.', body);
-    }
-    if (!body.access_token) {
-        throw new errors_1.MongoCryptAzureKMSRequestError('Malformed response body - missing field `access_token`.');
-    }
-    if (!body.expires_in) {
-        throw new errors_1.MongoCryptAzureKMSRequestError('Malformed response body - missing field `expires_in`.');
-    }
-    const expiresInMS = Number(body.expires_in) * 1000;
-    if (Number.isNaN(expiresInMS)) {
-        throw new errors_1.MongoCryptAzureKMSRequestError('Malformed response body - unable to parse int from `expires_in` field.');
-    }
-    return {
-        accessToken: body.access_token,
-        expiresOnTimestamp: Date.now() + expiresInMS
-    };
-}
-/**
- * @internal
- *
- * parses any options provided by prose tests to `fetchAzureKMSToken` and merges them with
- * the default values for headers and the request url.
- */
-function prepareRequest(options) {
-    const url = new URL(options.url?.toString() ?? 'http://169.254.169.254/metadata/identity/oauth2/token');
-    url.searchParams.append('api-version', '2018-02-01');
-    url.searchParams.append('resource', 'https://vault.azure.net');
-    const headers = { ...options.headers, 'Content-Type': 'application/json', Metadata: true };
-    return { headers, url };
-}
-exports.prepareRequest = prepareRequest;
-/**
- * @internal
- *
- * `AzureKMSRequestOptions` allows prose tests to modify the http request sent to the idms
- * servers.  This is required to simulate different server conditions.  No options are expected to
- * be set outside of tests.
- *
- * exposed for CSFLE
- * [prose test 18](https://github.com/mongodb/specifications/tree/master/source/client-side-encryption/tests#azure-imds-credentials)
- */
-async function fetchAzureKMSToken(options = {}) {
-    const { headers, url } = prepareRequest(options);
-    const response = await (0, utils_1.get)(url, { headers }).catch(error => {
-        if (error instanceof errors_1.MongoCryptKMSRequestNetworkTimeoutError) {
-            throw new errors_1.MongoCryptAzureKMSRequestError(`[Azure KMS] ${error.message}`);
-        }
-        throw error;
-    });
-    return parseResponse(response);
-}
-exports.fetchAzureKMSToken = fetchAzureKMSToken;
-/**
- * @internal
- *
- * @throws Will reject with a `MongoCryptError` if the http request fails or the http response is malformed.
- */
-async function loadAzureCredentials(kmsProviders) {
-    const azure = await exports.tokenCache.getToken();
-    return { ...kmsProviders, azure };
-}
-exports.loadAzureCredentials = loadAzureCredentials;
-//# sourceMappingURL=azure.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/azure.js.map b/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/azure.js.map
deleted file mode 100644
index 060957cc3cd12d56c2f8189584dea0f673fe351e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/azure.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"azure.js","sourceRoot":"","sources":["../../../src/client-side-encryption/providers/azure.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js b/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js
deleted file mode 100644
index 12c819d2b5e42063afa75df9f8bef14365729f31..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.loadGCPCredentials = void 0;
-const deps_1 = require("../../deps");
-/** @internal */
-async function loadGCPCredentials(kmsProviders) {
-    const gcpMetadata = (0, deps_1.getGcpMetadata)();
-    if ('kModuleError' in gcpMetadata) {
-        return kmsProviders;
-    }
-    const { access_token: accessToken } = await gcpMetadata.instance({
-        property: 'service-accounts/default/token'
-    });
-    return { ...kmsProviders, gcp: { accessToken } };
-}
-exports.loadGCPCredentials = loadGCPCredentials;
-//# sourceMappingURL=gcp.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js.map b/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js.map
deleted file mode 100644
index 23b4106b5437d4634e6bf22c6ac71a74f9d01c34..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"gcp.js","sourceRoot":"","sources":["../../../src/client-side-encryption/providers/gcp.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAG5C,gBAAgB;AACT,KAAK,UAAU,kBAAkB,CAAC,YAA0B;IACjE,MAAM,WAAW,GAAG,IAAA,qBAAc,GAAE,CAAC;IAErC,IAAI,cAAc,IAAI,WAAW,EAAE;QACjC,OAAO,YAAY,CAAC;KACrB;IAED,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,CAA2B;QACzF,QAAQ,EAAE,gCAAgC;KAC3C,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC;AACnD,CAAC;AAXD,gDAWC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/index.js b/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/index.js
deleted file mode 100644
index f6bebbae3f6e95c47d108924e5be3dd3bd0610a4..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/index.js
+++ /dev/null
@@ -1,44 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.refreshKMSCredentials = exports.isEmptyCredentials = void 0;
-const aws_1 = require("./aws");
-const azure_1 = require("./azure");
-const gcp_1 = require("./gcp");
-/**
- * Auto credential fetching should only occur when the provider is defined on the kmsProviders map
- * and the settings are an empty object.
- *
- * This is distinct from a nullish provider key.
- *
- * @internal - exposed for testing purposes only
- */
-function isEmptyCredentials(providerName, kmsProviders) {
-    const provider = kmsProviders[providerName];
-    if (provider == null) {
-        return false;
-    }
-    return typeof provider === 'object' && Object.keys(provider).length === 0;
-}
-exports.isEmptyCredentials = isEmptyCredentials;
-/**
- * Load cloud provider credentials for the user provided KMS providers.
- * Credentials will only attempt to get loaded if they do not exist
- * and no existing credentials will get overwritten.
- *
- * @internal
- */
-async function refreshKMSCredentials(kmsProviders) {
-    let finalKMSProviders = kmsProviders;
-    if (isEmptyCredentials('aws', kmsProviders)) {
-        finalKMSProviders = await (0, aws_1.loadAWSCredentials)(finalKMSProviders);
-    }
-    if (isEmptyCredentials('gcp', kmsProviders)) {
-        finalKMSProviders = await (0, gcp_1.loadGCPCredentials)(finalKMSProviders);
-    }
-    if (isEmptyCredentials('azure', kmsProviders)) {
-        finalKMSProviders = await (0, azure_1.loadAzureCredentials)(finalKMSProviders);
-    }
-    return finalKMSProviders;
-}
-exports.refreshKMSCredentials = refreshKMSCredentials;
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/index.js.map b/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/index.js.map
deleted file mode 100644
index f5aad1f58966569e934994c6c84193a154137a09..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client-side-encryption/providers/index.ts"],"names":[],"mappings":";;;AAAA,+BAA2C;AAC3C,mCAA+C;AAC/C,+BAA2C;AA4H3C;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAChC,YAA6C,EAC7C,YAA0B;IAE1B,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,OAAO,KAAK,CAAC;KACd;IACD,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5E,CAAC;AATD,gDASC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,qBAAqB,CAAC,YAA0B;IACpE,IAAI,iBAAiB,GAAG,YAAY,CAAC;IAErC,IAAI,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE;QAC3C,iBAAiB,GAAG,MAAM,IAAA,wBAAkB,EAAC,iBAAiB,CAAC,CAAC;KACjE;IAED,IAAI,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE;QAC3C,iBAAiB,GAAG,MAAM,IAAA,wBAAkB,EAAC,iBAAiB,CAAC,CAAC;KACjE;IAED,IAAI,kBAAkB,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE;QAC7C,iBAAiB,GAAG,MAAM,IAAA,4BAAoB,EAAC,iBAAiB,CAAC,CAAC;KACnE;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAfD,sDAeC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/utils.js b/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/utils.js
deleted file mode 100644
index c75b9692fa8c22aec9cc1fcbd7ab217a2a0df09f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/utils.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.get = void 0;
-const http = require("http");
-const timers_1 = require("timers");
-const errors_1 = require("../errors");
-/**
- * @internal
- */
-function get(url, options = {}) {
-    return new Promise((resolve, reject) => {
-        /* eslint-disable prefer-const */
-        let timeoutId;
-        const request = http
-            .get(url, options, response => {
-            response.setEncoding('utf8');
-            let body = '';
-            response.on('data', chunk => (body += chunk));
-            response.on('end', () => {
-                (0, timers_1.clearTimeout)(timeoutId);
-                resolve({ status: response.statusCode, body });
-            });
-        })
-            .on('error', error => {
-            (0, timers_1.clearTimeout)(timeoutId);
-            reject(error);
-        })
-            .end();
-        timeoutId = (0, timers_1.setTimeout)(() => {
-            request.destroy(new errors_1.MongoCryptKMSRequestNetworkTimeoutError(`request timed out after 10 seconds`));
-        }, 10000);
-    });
-}
-exports.get = get;
-//# sourceMappingURL=utils.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/utils.js.map b/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/utils.js.map
deleted file mode 100644
index e3aea6fd4ed143fae6c5eb35037374cfec085607..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/providers/utils.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/client-side-encryption/providers/utils.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,mCAAkD;AAElD,sCAAoE;AAEpE;;GAEG;AACH,SAAgB,GAAG,CACjB,GAAiB,EACjB,UAA+B,EAAE;IAEjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,iCAAiC;QACjC,IAAI,SAAyB,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI;aACjB,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;YAC5B,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;YAC9C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACtB,IAAA,qBAAY,EAAC,SAAS,CAAC,CAAC;gBACxB,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YACnB,IAAA,qBAAY,EAAC,SAAS,CAAC,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC;aACD,GAAG,EAAE,CAAC;QACT,SAAS,GAAG,IAAA,mBAAU,EAAC,GAAG,EAAE;YAC1B,OAAO,CAAC,OAAO,CACb,IAAI,gDAAuC,CAAC,oCAAoC,CAAC,CAClF,CAAC;QACJ,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AA5BD,kBA4BC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/state_machine.js b/server/data-import/node_modules/mongodb/lib/client-side-encryption/state_machine.js
deleted file mode 100644
index d0515d176e4d1038aed2c96b322507fbd5cca040..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/state_machine.js
+++ /dev/null
@@ -1,363 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.StateMachine = void 0;
-const fs = require("fs/promises");
-const net = require("net");
-const tls = require("tls");
-const bson_1 = require("../bson");
-const deps_1 = require("../deps");
-const utils_1 = require("../utils");
-const errors_1 = require("./errors");
-let socks = null;
-function loadSocks() {
-    if (socks == null) {
-        const socksImport = (0, deps_1.getSocks)();
-        if ('kModuleError' in socksImport) {
-            throw socksImport.kModuleError;
-        }
-        socks = socksImport;
-    }
-    return socks;
-}
-// libmongocrypt states
-const MONGOCRYPT_CTX_ERROR = 0;
-const MONGOCRYPT_CTX_NEED_MONGO_COLLINFO = 1;
-const MONGOCRYPT_CTX_NEED_MONGO_MARKINGS = 2;
-const MONGOCRYPT_CTX_NEED_MONGO_KEYS = 3;
-const MONGOCRYPT_CTX_NEED_KMS_CREDENTIALS = 7;
-const MONGOCRYPT_CTX_NEED_KMS = 4;
-const MONGOCRYPT_CTX_READY = 5;
-const MONGOCRYPT_CTX_DONE = 6;
-const HTTPS_PORT = 443;
-const stateToString = new Map([
-    [MONGOCRYPT_CTX_ERROR, 'MONGOCRYPT_CTX_ERROR'],
-    [MONGOCRYPT_CTX_NEED_MONGO_COLLINFO, 'MONGOCRYPT_CTX_NEED_MONGO_COLLINFO'],
-    [MONGOCRYPT_CTX_NEED_MONGO_MARKINGS, 'MONGOCRYPT_CTX_NEED_MONGO_MARKINGS'],
-    [MONGOCRYPT_CTX_NEED_MONGO_KEYS, 'MONGOCRYPT_CTX_NEED_MONGO_KEYS'],
-    [MONGOCRYPT_CTX_NEED_KMS_CREDENTIALS, 'MONGOCRYPT_CTX_NEED_KMS_CREDENTIALS'],
-    [MONGOCRYPT_CTX_NEED_KMS, 'MONGOCRYPT_CTX_NEED_KMS'],
-    [MONGOCRYPT_CTX_READY, 'MONGOCRYPT_CTX_READY'],
-    [MONGOCRYPT_CTX_DONE, 'MONGOCRYPT_CTX_DONE']
-]);
-const INSECURE_TLS_OPTIONS = [
-    'tlsInsecure',
-    'tlsAllowInvalidCertificates',
-    'tlsAllowInvalidHostnames',
-    // These options are disallowed by the spec, so we explicitly filter them out if provided, even
-    // though the StateMachine does not declare support for these options.
-    'tlsDisableOCSPEndpointCheck',
-    'tlsDisableCertificateRevocationCheck'
-];
-/**
- * Helper function for logging. Enabled by setting the environment flag MONGODB_CRYPT_DEBUG.
- * @param msg - Anything you want to be logged.
- */
-function debug(msg) {
-    if (process.env.MONGODB_CRYPT_DEBUG) {
-        // eslint-disable-next-line no-console
-        console.error(msg);
-    }
-}
-/**
- * @internal
- * An internal class that executes across a MongoCryptContext until either
- * a finishing state or an error is reached. Do not instantiate directly.
- */
-class StateMachine {
-    constructor(options, bsonOptions = (0, bson_1.pluckBSONSerializeOptions)(options)) {
-        this.options = options;
-        this.bsonOptions = bsonOptions;
-    }
-    /**
-     * Executes the state machine according to the specification
-     */
-    async execute(executor, context) {
-        const keyVaultNamespace = executor._keyVaultNamespace;
-        const keyVaultClient = executor._keyVaultClient;
-        const metaDataClient = executor._metaDataClient;
-        const mongocryptdClient = executor._mongocryptdClient;
-        const mongocryptdManager = executor._mongocryptdManager;
-        let result = null;
-        while (context.state !== MONGOCRYPT_CTX_DONE && context.state !== MONGOCRYPT_CTX_ERROR) {
-            debug(`[context#${context.id}] ${stateToString.get(context.state) || context.state}`);
-            switch (context.state) {
-                case MONGOCRYPT_CTX_NEED_MONGO_COLLINFO: {
-                    const filter = (0, bson_1.deserialize)(context.nextMongoOperation());
-                    if (!metaDataClient) {
-                        throw new errors_1.MongoCryptError('unreachable state machine state: entered MONGOCRYPT_CTX_NEED_MONGO_COLLINFO but metadata client is undefined');
-                    }
-                    const collInfo = await this.fetchCollectionInfo(metaDataClient, context.ns, filter);
-                    if (collInfo) {
-                        context.addMongoOperationResponse(collInfo);
-                    }
-                    context.finishMongoOperation();
-                    break;
-                }
-                case MONGOCRYPT_CTX_NEED_MONGO_MARKINGS: {
-                    const command = context.nextMongoOperation();
-                    if (!mongocryptdClient) {
-                        throw new errors_1.MongoCryptError('unreachable state machine state: entered MONGOCRYPT_CTX_NEED_MONGO_MARKINGS but mongocryptdClient is undefined');
-                    }
-                    // When we are using the shared library, we don't have a mongocryptd manager.
-                    const markedCommand = mongocryptdManager
-                        ? await mongocryptdManager.withRespawn(this.markCommand.bind(this, mongocryptdClient, context.ns, command))
-                        : await this.markCommand(mongocryptdClient, context.ns, command);
-                    context.addMongoOperationResponse(markedCommand);
-                    context.finishMongoOperation();
-                    break;
-                }
-                case MONGOCRYPT_CTX_NEED_MONGO_KEYS: {
-                    const filter = context.nextMongoOperation();
-                    const keys = await this.fetchKeys(keyVaultClient, keyVaultNamespace, filter);
-                    if (keys.length === 0) {
-                        // This is kind of a hack.  For `rewrapManyDataKey`, we have tests that
-                        // guarantee that when there are no matching keys, `rewrapManyDataKey` returns
-                        // nothing.  We also have tests for auto encryption that guarantee for `encrypt`
-                        // we return an error when there are no matching keys.  This error is generated in
-                        // subsequent iterations of the state machine.
-                        // Some apis (`encrypt`) throw if there are no filter matches and others (`rewrapManyDataKey`)
-                        // do not.  We set the result manually here, and let the state machine continue.  `libmongocrypt`
-                        // will inform us if we need to error by setting the state to `MONGOCRYPT_CTX_ERROR` but
-                        // otherwise we'll return `{ v: [] }`.
-                        result = { v: [] };
-                    }
-                    for await (const key of keys) {
-                        context.addMongoOperationResponse((0, bson_1.serialize)(key));
-                    }
-                    context.finishMongoOperation();
-                    break;
-                }
-                case MONGOCRYPT_CTX_NEED_KMS_CREDENTIALS: {
-                    const kmsProviders = await executor.askForKMSCredentials();
-                    context.provideKMSProviders((0, bson_1.serialize)(kmsProviders));
-                    break;
-                }
-                case MONGOCRYPT_CTX_NEED_KMS: {
-                    const requests = Array.from(this.requests(context));
-                    await Promise.all(requests);
-                    context.finishKMSRequests();
-                    break;
-                }
-                case MONGOCRYPT_CTX_READY: {
-                    const finalizedContext = context.finalize();
-                    // @ts-expect-error finalize can change the state, check for error
-                    if (context.state === MONGOCRYPT_CTX_ERROR) {
-                        const message = context.status.message || 'Finalization error';
-                        throw new errors_1.MongoCryptError(message);
-                    }
-                    result = (0, bson_1.deserialize)(finalizedContext, this.options);
-                    break;
-                }
-                default:
-                    throw new errors_1.MongoCryptError(`Unknown state: ${context.state}`);
-            }
-        }
-        if (context.state === MONGOCRYPT_CTX_ERROR || result == null) {
-            const message = context.status.message;
-            if (!message) {
-                debug(`unidentifiable error in MongoCrypt - received an error status from \`libmongocrypt\` but received no error message.`);
-            }
-            throw new errors_1.MongoCryptError(message ??
-                'unidentifiable error in MongoCrypt - received an error status from `libmongocrypt` but received no error message.');
-        }
-        return result;
-    }
-    /**
-     * Handles the request to the KMS service. Exposed for testing purposes. Do not directly invoke.
-     * @param kmsContext - A C++ KMS context returned from the bindings
-     * @returns A promise that resolves when the KMS reply has be fully parsed
-     */
-    kmsRequest(request) {
-        const parsedUrl = request.endpoint.split(':');
-        const port = parsedUrl[1] != null ? Number.parseInt(parsedUrl[1], 10) : HTTPS_PORT;
-        const options = {
-            host: parsedUrl[0],
-            servername: parsedUrl[0],
-            port
-        };
-        const message = request.message;
-        // TODO(NODE-3959): We can adopt `for-await on(socket, 'data')` with logic to control abort
-        // eslint-disable-next-line @typescript-eslint/no-misused-promises, no-async-promise-executor
-        return new Promise(async (resolve, reject) => {
-            const buffer = new utils_1.BufferPool();
-            // eslint-disable-next-line prefer-const
-            let socket;
-            let rawSocket;
-            function destroySockets() {
-                for (const sock of [socket, rawSocket]) {
-                    if (sock) {
-                        sock.removeAllListeners();
-                        sock.destroy();
-                    }
-                }
-            }
-            function ontimeout() {
-                destroySockets();
-                reject(new errors_1.MongoCryptError('KMS request timed out'));
-            }
-            function onerror(err) {
-                destroySockets();
-                const mcError = new errors_1.MongoCryptError('KMS request failed', { cause: err });
-                reject(mcError);
-            }
-            if (this.options.proxyOptions && this.options.proxyOptions.proxyHost) {
-                rawSocket = net.connect({
-                    host: this.options.proxyOptions.proxyHost,
-                    port: this.options.proxyOptions.proxyPort || 1080
-                });
-                rawSocket.on('timeout', ontimeout);
-                rawSocket.on('error', onerror);
-                try {
-                    // eslint-disable-next-line @typescript-eslint/no-var-requires
-                    const events = require('events');
-                    await events.once(rawSocket, 'connect');
-                    socks ??= loadSocks();
-                    options.socket = (await socks.SocksClient.createConnection({
-                        existing_socket: rawSocket,
-                        command: 'connect',
-                        destination: { host: options.host, port: options.port },
-                        proxy: {
-                            // host and port are ignored because we pass existing_socket
-                            host: 'iLoveJavaScript',
-                            port: 0,
-                            type: 5,
-                            userId: this.options.proxyOptions.proxyUsername,
-                            password: this.options.proxyOptions.proxyPassword
-                        }
-                    })).socket;
-                }
-                catch (err) {
-                    return onerror(err);
-                }
-            }
-            const tlsOptions = this.options.tlsOptions;
-            if (tlsOptions) {
-                const kmsProvider = request.kmsProvider;
-                const providerTlsOptions = tlsOptions[kmsProvider];
-                if (providerTlsOptions) {
-                    const error = this.validateTlsOptions(kmsProvider, providerTlsOptions);
-                    if (error)
-                        reject(error);
-                    try {
-                        await this.setTlsOptions(providerTlsOptions, options);
-                    }
-                    catch (error) {
-                        return onerror(error);
-                    }
-                }
-            }
-            socket = tls.connect(options, () => {
-                socket.write(message);
-            });
-            socket.once('timeout', ontimeout);
-            socket.once('error', onerror);
-            socket.on('data', data => {
-                buffer.append(data);
-                while (request.bytesNeeded > 0 && buffer.length) {
-                    const bytesNeeded = Math.min(request.bytesNeeded, buffer.length);
-                    request.addResponse(buffer.read(bytesNeeded));
-                }
-                if (request.bytesNeeded <= 0) {
-                    // There's no need for any more activity on this socket at this point.
-                    destroySockets();
-                    resolve();
-                }
-            });
-        });
-    }
-    *requests(context) {
-        for (let request = context.nextKMSRequest(); request != null; request = context.nextKMSRequest()) {
-            yield this.kmsRequest(request);
-        }
-    }
-    /**
-     * Validates the provided TLS options are secure.
-     *
-     * @param kmsProvider - The KMS provider name.
-     * @param tlsOptions - The client TLS options for the provider.
-     *
-     * @returns An error if any option is invalid.
-     */
-    validateTlsOptions(kmsProvider, tlsOptions) {
-        const tlsOptionNames = Object.keys(tlsOptions);
-        for (const option of INSECURE_TLS_OPTIONS) {
-            if (tlsOptionNames.includes(option)) {
-                return new errors_1.MongoCryptError(`Insecure TLS options prohibited for ${kmsProvider}: ${option}`);
-            }
-        }
-    }
-    /**
-     * Sets only the valid secure TLS options.
-     *
-     * @param tlsOptions - The client TLS options for the provider.
-     * @param options - The existing connection options.
-     */
-    async setTlsOptions(tlsOptions, options) {
-        if (tlsOptions.tlsCertificateKeyFile) {
-            const cert = await fs.readFile(tlsOptions.tlsCertificateKeyFile);
-            options.cert = options.key = cert;
-        }
-        if (tlsOptions.tlsCAFile) {
-            options.ca = await fs.readFile(tlsOptions.tlsCAFile);
-        }
-        if (tlsOptions.tlsCertificateKeyFilePassword) {
-            options.passphrase = tlsOptions.tlsCertificateKeyFilePassword;
-        }
-    }
-    /**
-     * Fetches collection info for a provided namespace, when libmongocrypt
-     * enters the `MONGOCRYPT_CTX_NEED_MONGO_COLLINFO` state. The result is
-     * used to inform libmongocrypt of the schema associated with this
-     * namespace. Exposed for testing purposes. Do not directly invoke.
-     *
-     * @param client - A MongoClient connected to the topology
-     * @param ns - The namespace to list collections from
-     * @param filter - A filter for the listCollections command
-     * @param callback - Invoked with the info of the requested collection, or with an error
-     */
-    async fetchCollectionInfo(client, ns, filter) {
-        const { db } = utils_1.MongoDBCollectionNamespace.fromString(ns);
-        const collections = await client
-            .db(db)
-            .listCollections(filter, {
-            promoteLongs: false,
-            promoteValues: false
-        })
-            .toArray();
-        const info = collections.length > 0 ? (0, bson_1.serialize)(collections[0]) : null;
-        return info;
-    }
-    /**
-     * Calls to the mongocryptd to provide markings for a command.
-     * Exposed for testing purposes. Do not directly invoke.
-     * @param client - A MongoClient connected to a mongocryptd
-     * @param ns - The namespace (database.collection) the command is being executed on
-     * @param command - The command to execute.
-     * @param callback - Invoked with the serialized and marked bson command, or with an error
-     */
-    async markCommand(client, ns, command) {
-        const options = { promoteLongs: false, promoteValues: false };
-        const { db } = utils_1.MongoDBCollectionNamespace.fromString(ns);
-        const rawCommand = (0, bson_1.deserialize)(command, options);
-        const response = await client.db(db).command(rawCommand, options);
-        return (0, bson_1.serialize)(response, this.bsonOptions);
-    }
-    /**
-     * Requests keys from the keyVault collection on the topology.
-     * Exposed for testing purposes. Do not directly invoke.
-     * @param client - A MongoClient connected to the topology
-     * @param keyVaultNamespace - The namespace (database.collection) of the keyVault Collection
-     * @param filter - The filter for the find query against the keyVault Collection
-     * @param callback - Invoked with the found keys, or with an error
-     */
-    fetchKeys(client, keyVaultNamespace, filter) {
-        const { db: dbName, collection: collectionName } = utils_1.MongoDBCollectionNamespace.fromString(keyVaultNamespace);
-        return client
-            .db(dbName)
-            .collection(collectionName, { readConcern: { level: 'majority' } })
-            .find((0, bson_1.deserialize)(filter))
-            .toArray();
-    }
-}
-exports.StateMachine = StateMachine;
-//# sourceMappingURL=state_machine.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/client-side-encryption/state_machine.js.map b/server/data-import/node_modules/mongodb/lib/client-side-encryption/state_machine.js.map
deleted file mode 100644
index 2b85efaba6c22c026fd5699ea96a65b8de7f5fab..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/client-side-encryption/state_machine.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"state_machine.js","sourceRoot":"","sources":["../../src/client-side-encryption/state_machine.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/auth_provider.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/auth_provider.js
deleted file mode 100644
index a011c96e91d550f27e335d68cf4affae2b1d3841..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/auth_provider.js
+++ /dev/null
@@ -1,47 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.AuthProvider = exports.AuthContext = void 0;
-const error_1 = require("../../error");
-/**
- * Context used during authentication
- * @internal
- */
-class AuthContext {
-    constructor(connection, credentials, options) {
-        /** If the context is for reauthentication. */
-        this.reauthenticating = false;
-        this.connection = connection;
-        this.credentials = credentials;
-        this.options = options;
-    }
-}
-exports.AuthContext = AuthContext;
-class AuthProvider {
-    /**
-     * Prepare the handshake document before the initial handshake.
-     *
-     * @param handshakeDoc - The document used for the initial handshake on a connection
-     * @param authContext - Context for authentication flow
-     */
-    async prepare(handshakeDoc, _authContext) {
-        return handshakeDoc;
-    }
-    /**
-     * Reauthenticate.
-     * @param context - The shared auth context.
-     */
-    async reauth(context) {
-        if (context.reauthenticating) {
-            throw new error_1.MongoRuntimeError('Reauthentication already in progress.');
-        }
-        try {
-            context.reauthenticating = true;
-            await this.auth(context);
-        }
-        finally {
-            context.reauthenticating = false;
-        }
-    }
-}
-exports.AuthProvider = AuthProvider;
-//# sourceMappingURL=auth_provider.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map
deleted file mode 100644
index 54fbfad1632653634081c2adc2ea6ea0dbd4aee8..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"auth_provider.js","sourceRoot":"","sources":["../../../src/cmap/auth/auth_provider.ts"],"names":[],"mappings":";;;AACA,uCAAgD;AAKhD;;;GAGG;AACH,MAAa,WAAW;IAetB,YACE,UAAsB,EACtB,WAAyC,EACzC,OAA0B;QAb5B,8CAA8C;QAC9C,qBAAgB,GAAG,KAAK,CAAC;QAcvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAxBD,kCAwBC;AAED,MAAsB,YAAY;IAChC;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,YAA+B,EAC/B,YAAyB;QAEzB,OAAO,YAAY,CAAC;IACtB,CAAC;IASD;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,OAAoB;QAC/B,IAAI,OAAO,CAAC,gBAAgB,EAAE;YAC5B,MAAM,IAAI,yBAAiB,CAAC,uCAAuC,CAAC,CAAC;SACtE;QACD,IAAI;YACF,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAChC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1B;gBAAS;YACR,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAClC;IACH,CAAC;CACF;AApCD,oCAoCC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/gssapi.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/gssapi.js
deleted file mode 100644
index d1b3b45c12c732d5cfb460a8a12a3eea09540f73..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/gssapi.js
+++ /dev/null
@@ -1,153 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.resolveCname = exports.performGSSAPICanonicalizeHostName = exports.GSSAPI = exports.GSSAPICanonicalizationValue = void 0;
-const dns = require("dns");
-const deps_1 = require("../../deps");
-const error_1 = require("../../error");
-const utils_1 = require("../../utils");
-const auth_provider_1 = require("./auth_provider");
-/** @public */
-exports.GSSAPICanonicalizationValue = Object.freeze({
-    on: true,
-    off: false,
-    none: 'none',
-    forward: 'forward',
-    forwardAndReverse: 'forwardAndReverse'
-});
-async function externalCommand(connection, command) {
-    return connection.commandAsync((0, utils_1.ns)('$external.$cmd'), command, undefined);
-}
-let krb;
-class GSSAPI extends auth_provider_1.AuthProvider {
-    async auth(authContext) {
-        const { connection, credentials } = authContext;
-        if (credentials == null) {
-            throw new error_1.MongoMissingCredentialsError('Credentials required for GSSAPI authentication');
-        }
-        const { username } = credentials;
-        const client = await makeKerberosClient(authContext);
-        const payload = await client.step('');
-        const saslStartResponse = await externalCommand(connection, saslStart(payload));
-        const negotiatedPayload = await negotiate(client, 10, saslStartResponse.payload);
-        const saslContinueResponse = await externalCommand(connection, saslContinue(negotiatedPayload, saslStartResponse.conversationId));
-        const finalizePayload = await finalize(client, username, saslContinueResponse.payload);
-        await externalCommand(connection, {
-            saslContinue: 1,
-            conversationId: saslContinueResponse.conversationId,
-            payload: finalizePayload
-        });
-    }
-}
-exports.GSSAPI = GSSAPI;
-async function makeKerberosClient(authContext) {
-    const { hostAddress } = authContext.options;
-    const { credentials } = authContext;
-    if (!hostAddress || typeof hostAddress.host !== 'string' || !credentials) {
-        throw new error_1.MongoInvalidArgumentError('Connection must have host and port and credentials defined.');
-    }
-    loadKrb();
-    if ('kModuleError' in krb) {
-        throw krb['kModuleError'];
-    }
-    const { initializeClient } = krb;
-    const { username, password } = credentials;
-    const mechanismProperties = credentials.mechanismProperties;
-    const serviceName = mechanismProperties.SERVICE_NAME ?? 'mongodb';
-    const host = await performGSSAPICanonicalizeHostName(hostAddress.host, mechanismProperties);
-    const initOptions = {};
-    if (password != null) {
-        // TODO(NODE-5139): These do not match the typescript options in initializeClient
-        Object.assign(initOptions, { user: username, password: password });
-    }
-    const spnHost = mechanismProperties.SERVICE_HOST ?? host;
-    let spn = `${serviceName}${process.platform === 'win32' ? '/' : '@'}${spnHost}`;
-    if ('SERVICE_REALM' in mechanismProperties) {
-        spn = `${spn}@${mechanismProperties.SERVICE_REALM}`;
-    }
-    return initializeClient(spn, initOptions);
-}
-function saslStart(payload) {
-    return {
-        saslStart: 1,
-        mechanism: 'GSSAPI',
-        payload,
-        autoAuthorize: 1
-    };
-}
-function saslContinue(payload, conversationId) {
-    return {
-        saslContinue: 1,
-        conversationId,
-        payload
-    };
-}
-async function negotiate(client, retries, payload) {
-    try {
-        const response = await client.step(payload);
-        return response || '';
-    }
-    catch (error) {
-        if (retries === 0) {
-            // Retries exhausted, raise error
-            throw error;
-        }
-        // Adjust number of retries and call step again
-        return negotiate(client, retries - 1, payload);
-    }
-}
-async function finalize(client, user, payload) {
-    // GSS Client Unwrap
-    const response = await client.unwrap(payload);
-    return client.wrap(response || '', { user });
-}
-async function performGSSAPICanonicalizeHostName(host, mechanismProperties) {
-    const mode = mechanismProperties.CANONICALIZE_HOST_NAME;
-    if (!mode || mode === exports.GSSAPICanonicalizationValue.none) {
-        return host;
-    }
-    // If forward and reverse or true
-    if (mode === exports.GSSAPICanonicalizationValue.on ||
-        mode === exports.GSSAPICanonicalizationValue.forwardAndReverse) {
-        // Perform the lookup of the ip address.
-        const { address } = await dns.promises.lookup(host);
-        try {
-            // Perform a reverse ptr lookup on the ip address.
-            const results = await dns.promises.resolvePtr(address);
-            // If the ptr did not error but had no results, return the host.
-            return results.length > 0 ? results[0] : host;
-        }
-        catch (error) {
-            // This can error as ptr records may not exist for all ips. In this case
-            // fallback to a cname lookup as dns.lookup() does not return the
-            // cname.
-            return resolveCname(host);
-        }
-    }
-    else {
-        // The case for forward is just to resolve the cname as dns.lookup()
-        // will not return it.
-        return resolveCname(host);
-    }
-}
-exports.performGSSAPICanonicalizeHostName = performGSSAPICanonicalizeHostName;
-async function resolveCname(host) {
-    // Attempt to resolve the host name
-    try {
-        const results = await dns.promises.resolveCname(host);
-        // Get the first resolved host id
-        return results.length > 0 ? results[0] : host;
-    }
-    catch {
-        return host;
-    }
-}
-exports.resolveCname = resolveCname;
-/**
- * Load the Kerberos library.
- */
-function loadKrb() {
-    if (!krb) {
-        krb = (0, deps_1.getKerberos)();
-    }
-}
-//# sourceMappingURL=gssapi.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/gssapi.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/gssapi.js.map
deleted file mode 100644
index 1e0ccb712d74ff2a766127c51c7acbf3200bd1b7..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/gssapi.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"gssapi.js","sourceRoot":"","sources":["../../../src/cmap/auth/gssapi.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js
deleted file mode 100644
index e7c3304b296563f45a5c3d00afb773634b978ff0..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js
+++ /dev/null
@@ -1,177 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.MongoCredentials = exports.DEFAULT_ALLOWED_HOSTS = void 0;
-const error_1 = require("../../error");
-const gssapi_1 = require("./gssapi");
-const providers_1 = require("./providers");
-// https://github.com/mongodb/specifications/blob/master/source/auth/auth.rst
-function getDefaultAuthMechanism(hello) {
-    if (hello) {
-        // If hello contains saslSupportedMechs, use scram-sha-256
-        // if it is available, else scram-sha-1
-        if (Array.isArray(hello.saslSupportedMechs)) {
-            return hello.saslSupportedMechs.includes(providers_1.AuthMechanism.MONGODB_SCRAM_SHA256)
-                ? providers_1.AuthMechanism.MONGODB_SCRAM_SHA256
-                : providers_1.AuthMechanism.MONGODB_SCRAM_SHA1;
-        }
-        // Fallback to legacy selection method. If wire version >= 3, use scram-sha-1
-        if (hello.maxWireVersion >= 3) {
-            return providers_1.AuthMechanism.MONGODB_SCRAM_SHA1;
-        }
-    }
-    // Default for wireprotocol < 3
-    return providers_1.AuthMechanism.MONGODB_CR;
-}
-const ALLOWED_PROVIDER_NAMES = ['aws', 'azure'];
-const ALLOWED_HOSTS_ERROR = 'Auth mechanism property ALLOWED_HOSTS must be an array of strings.';
-/** @internal */
-exports.DEFAULT_ALLOWED_HOSTS = [
-    '*.mongodb.net',
-    '*.mongodb-dev.net',
-    '*.mongodbgov.net',
-    'localhost',
-    '127.0.0.1',
-    '::1'
-];
-/** Error for when the token audience is missing in the environment. */
-const TOKEN_AUDIENCE_MISSING_ERROR = 'TOKEN_AUDIENCE must be set in the auth mechanism properties when PROVIDER_NAME is azure.';
-/**
- * A representation of the credentials used by MongoDB
- * @public
- */
-class MongoCredentials {
-    constructor(options) {
-        this.username = options.username ?? '';
-        this.password = options.password;
-        this.source = options.source;
-        if (!this.source && options.db) {
-            this.source = options.db;
-        }
-        this.mechanism = options.mechanism || providers_1.AuthMechanism.MONGODB_DEFAULT;
-        this.mechanismProperties = options.mechanismProperties || {};
-        if (this.mechanism.match(/MONGODB-AWS/i)) {
-            if (!this.username && process.env.AWS_ACCESS_KEY_ID) {
-                this.username = process.env.AWS_ACCESS_KEY_ID;
-            }
-            if (!this.password && process.env.AWS_SECRET_ACCESS_KEY) {
-                this.password = process.env.AWS_SECRET_ACCESS_KEY;
-            }
-            if (this.mechanismProperties.AWS_SESSION_TOKEN == null &&
-                process.env.AWS_SESSION_TOKEN != null) {
-                this.mechanismProperties = {
-                    ...this.mechanismProperties,
-                    AWS_SESSION_TOKEN: process.env.AWS_SESSION_TOKEN
-                };
-            }
-        }
-        if (this.mechanism === providers_1.AuthMechanism.MONGODB_OIDC && !this.mechanismProperties.ALLOWED_HOSTS) {
-            this.mechanismProperties = {
-                ...this.mechanismProperties,
-                ALLOWED_HOSTS: exports.DEFAULT_ALLOWED_HOSTS
-            };
-        }
-        Object.freeze(this.mechanismProperties);
-        Object.freeze(this);
-    }
-    /** Determines if two MongoCredentials objects are equivalent */
-    equals(other) {
-        return (this.mechanism === other.mechanism &&
-            this.username === other.username &&
-            this.password === other.password &&
-            this.source === other.source);
-    }
-    /**
-     * If the authentication mechanism is set to "default", resolves the authMechanism
-     * based on the server version and server supported sasl mechanisms.
-     *
-     * @param hello - A hello response from the server
-     */
-    resolveAuthMechanism(hello) {
-        // If the mechanism is not "default", then it does not need to be resolved
-        if (this.mechanism.match(/DEFAULT/i)) {
-            return new MongoCredentials({
-                username: this.username,
-                password: this.password,
-                source: this.source,
-                mechanism: getDefaultAuthMechanism(hello),
-                mechanismProperties: this.mechanismProperties
-            });
-        }
-        return this;
-    }
-    validate() {
-        if ((this.mechanism === providers_1.AuthMechanism.MONGODB_GSSAPI ||
-            this.mechanism === providers_1.AuthMechanism.MONGODB_CR ||
-            this.mechanism === providers_1.AuthMechanism.MONGODB_PLAIN ||
-            this.mechanism === providers_1.AuthMechanism.MONGODB_SCRAM_SHA1 ||
-            this.mechanism === providers_1.AuthMechanism.MONGODB_SCRAM_SHA256) &&
-            !this.username) {
-            throw new error_1.MongoMissingCredentialsError(`Username required for mechanism '${this.mechanism}'`);
-        }
-        if (this.mechanism === providers_1.AuthMechanism.MONGODB_OIDC) {
-            if (this.username && this.mechanismProperties.PROVIDER_NAME) {
-                throw new error_1.MongoInvalidArgumentError(`username and PROVIDER_NAME may not be used together for mechanism '${this.mechanism}'.`);
-            }
-            if (this.mechanismProperties.PROVIDER_NAME === 'azure' &&
-                !this.mechanismProperties.TOKEN_AUDIENCE) {
-                throw new error_1.MongoAzureError(TOKEN_AUDIENCE_MISSING_ERROR);
-            }
-            if (this.mechanismProperties.PROVIDER_NAME &&
-                !ALLOWED_PROVIDER_NAMES.includes(this.mechanismProperties.PROVIDER_NAME)) {
-                throw new error_1.MongoInvalidArgumentError(`Currently only a PROVIDER_NAME in ${ALLOWED_PROVIDER_NAMES.join(',')} is supported for mechanism '${this.mechanism}'.`);
-            }
-            if (this.mechanismProperties.REFRESH_TOKEN_CALLBACK &&
-                !this.mechanismProperties.REQUEST_TOKEN_CALLBACK) {
-                throw new error_1.MongoInvalidArgumentError(`A REQUEST_TOKEN_CALLBACK must be provided when using a REFRESH_TOKEN_CALLBACK for mechanism '${this.mechanism}'`);
-            }
-            if (!this.mechanismProperties.PROVIDER_NAME &&
-                !this.mechanismProperties.REQUEST_TOKEN_CALLBACK) {
-                throw new error_1.MongoInvalidArgumentError(`Either a PROVIDER_NAME or a REQUEST_TOKEN_CALLBACK must be specified for mechanism '${this.mechanism}'.`);
-            }
-            if (this.mechanismProperties.ALLOWED_HOSTS) {
-                const hosts = this.mechanismProperties.ALLOWED_HOSTS;
-                if (!Array.isArray(hosts)) {
-                    throw new error_1.MongoInvalidArgumentError(ALLOWED_HOSTS_ERROR);
-                }
-                for (const host of hosts) {
-                    if (typeof host !== 'string') {
-                        throw new error_1.MongoInvalidArgumentError(ALLOWED_HOSTS_ERROR);
-                    }
-                }
-            }
-        }
-        if (providers_1.AUTH_MECHS_AUTH_SRC_EXTERNAL.has(this.mechanism)) {
-            if (this.source != null && this.source !== '$external') {
-                // TODO(NODE-3485): Replace this with a MongoAuthValidationError
-                throw new error_1.MongoAPIError(`Invalid source '${this.source}' for mechanism '${this.mechanism}' specified.`);
-            }
-        }
-        if (this.mechanism === providers_1.AuthMechanism.MONGODB_PLAIN && this.source == null) {
-            // TODO(NODE-3485): Replace this with a MongoAuthValidationError
-            throw new error_1.MongoAPIError('PLAIN Authentication Mechanism needs an auth source');
-        }
-        if (this.mechanism === providers_1.AuthMechanism.MONGODB_X509 && this.password != null) {
-            if (this.password === '') {
-                Reflect.set(this, 'password', undefined);
-                return;
-            }
-            // TODO(NODE-3485): Replace this with a MongoAuthValidationError
-            throw new error_1.MongoAPIError(`Password not allowed for mechanism MONGODB-X509`);
-        }
-        const canonicalization = this.mechanismProperties.CANONICALIZE_HOST_NAME ?? false;
-        if (!Object.values(gssapi_1.GSSAPICanonicalizationValue).includes(canonicalization)) {
-            throw new error_1.MongoAPIError(`Invalid CANONICALIZE_HOST_NAME value: ${canonicalization}`);
-        }
-    }
-    static merge(creds, options) {
-        return new MongoCredentials({
-            username: options.username ?? creds?.username ?? '',
-            password: options.password ?? creds?.password ?? '',
-            mechanism: options.mechanism ?? creds?.mechanism ?? providers_1.AuthMechanism.MONGODB_DEFAULT,
-            mechanismProperties: options.mechanismProperties ?? creds?.mechanismProperties ?? {},
-            source: options.source ?? options.db ?? creds?.source ?? 'admin'
-        });
-    }
-}
-exports.MongoCredentials = MongoCredentials;
-//# sourceMappingURL=mongo_credentials.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js.map
deleted file mode 100644
index b44b37e72f82019ff10a6a0ac31df84924ef29c0..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"mongo_credentials.js","sourceRoot":"","sources":["../../../src/cmap/auth/mongo_credentials.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongocr.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongocr.js
deleted file mode 100644
index 529b36cf7c5bcccb3d939460d3f199a2f0b1ce06..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongocr.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.MongoCR = void 0;
-const crypto = require("crypto");
-const error_1 = require("../../error");
-const utils_1 = require("../../utils");
-const auth_provider_1 = require("./auth_provider");
-class MongoCR extends auth_provider_1.AuthProvider {
-    async auth(authContext) {
-        const { connection, credentials } = authContext;
-        if (!credentials) {
-            throw new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.');
-        }
-        const { username, password, source } = credentials;
-        const { nonce } = await connection.commandAsync((0, utils_1.ns)(`${source}.$cmd`), { getnonce: 1 }, undefined);
-        const hashPassword = crypto
-            .createHash('md5')
-            .update(`${username}:mongo:${password}`, 'utf8')
-            .digest('hex');
-        // Final key
-        const key = crypto
-            .createHash('md5')
-            .update(`${nonce}${username}${hashPassword}`, 'utf8')
-            .digest('hex');
-        const authenticateCommand = {
-            authenticate: 1,
-            user: username,
-            nonce,
-            key
-        };
-        await connection.commandAsync((0, utils_1.ns)(`${source}.$cmd`), authenticateCommand, undefined);
-    }
-}
-exports.MongoCR = MongoCR;
-//# sourceMappingURL=mongocr.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongocr.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongocr.js.map
deleted file mode 100644
index e2f6d96c896672e4eb978b02dfd3484c4c3a68a0..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongocr.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"mongocr.js","sourceRoot":"","sources":["../../../src/cmap/auth/mongocr.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAEjC,uCAA2D;AAC3D,uCAAiC;AACjC,mDAAiE;AAEjE,MAAa,OAAQ,SAAQ,4BAAY;IAC9B,KAAK,CAAC,IAAI,CAAC,WAAwB;QAC1C,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;QAChD,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,oCAA4B,CAAC,uCAAuC,CAAC,CAAC;SACjF;QAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;QAEnD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,UAAU,CAAC,YAAY,CAC7C,IAAA,UAAE,EAAC,GAAG,MAAM,OAAO,CAAC,EACpB,EAAE,QAAQ,EAAE,CAAC,EAAE,EACf,SAAS,CACV,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM;aACxB,UAAU,CAAC,KAAK,CAAC;aACjB,MAAM,CAAC,GAAG,QAAQ,UAAU,QAAQ,EAAE,EAAE,MAAM,CAAC;aAC/C,MAAM,CAAC,KAAK,CAAC,CAAC;QAEjB,YAAY;QACZ,MAAM,GAAG,GAAG,MAAM;aACf,UAAU,CAAC,KAAK,CAAC;aACjB,MAAM,CAAC,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,EAAE,EAAE,MAAM,CAAC;aACpD,MAAM,CAAC,KAAK,CAAC,CAAC;QAEjB,MAAM,mBAAmB,GAAG;YAC1B,YAAY,EAAE,CAAC;YACf,IAAI,EAAE,QAAQ;YACd,KAAK;YACL,GAAG;SACJ,CAAC;QAEF,MAAM,UAAU,CAAC,YAAY,CAAC,IAAA,UAAE,EAAC,GAAG,MAAM,OAAO,CAAC,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;IACtF,CAAC;CACF;AAnCD,0BAmCC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js
deleted file mode 100644
index f3b650e0f144a8d099ffeb9180ab1526f06dc67d..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js
+++ /dev/null
@@ -1,227 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.MongoDBAWS = void 0;
-const crypto = require("crypto");
-const process = require("process");
-const util_1 = require("util");
-const BSON = require("../../bson");
-const deps_1 = require("../../deps");
-const error_1 = require("../../error");
-const utils_1 = require("../../utils");
-const auth_provider_1 = require("./auth_provider");
-const mongo_credentials_1 = require("./mongo_credentials");
-const providers_1 = require("./providers");
-/**
- * The following regions use the global AWS STS endpoint, sts.amazonaws.com, by default
- * https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html
- */
-const LEGACY_REGIONS = new Set([
-    'ap-northeast-1',
-    'ap-south-1',
-    'ap-southeast-1',
-    'ap-southeast-2',
-    'aws-global',
-    'ca-central-1',
-    'eu-central-1',
-    'eu-north-1',
-    'eu-west-1',
-    'eu-west-2',
-    'eu-west-3',
-    'sa-east-1',
-    'us-east-1',
-    'us-east-2',
-    'us-west-1',
-    'us-west-2'
-]);
-const ASCII_N = 110;
-const AWS_RELATIVE_URI = 'http://169.254.170.2';
-const AWS_EC2_URI = 'http://169.254.169.254';
-const AWS_EC2_PATH = '/latest/meta-data/iam/security-credentials';
-const bsonOptions = {
-    useBigInt64: false,
-    promoteLongs: true,
-    promoteValues: true,
-    promoteBuffers: false,
-    bsonRegExp: false
-};
-class MongoDBAWS extends auth_provider_1.AuthProvider {
-    constructor() {
-        super();
-        this.randomBytesAsync = (0, util_1.promisify)(crypto.randomBytes);
-    }
-    async auth(authContext) {
-        const { connection } = authContext;
-        if (!authContext.credentials) {
-            throw new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.');
-        }
-        if ('kModuleError' in deps_1.aws4) {
-            throw deps_1.aws4['kModuleError'];
-        }
-        const { sign } = deps_1.aws4;
-        if ((0, utils_1.maxWireVersion)(connection) < 9) {
-            throw new error_1.MongoCompatibilityError('MONGODB-AWS authentication requires MongoDB version 4.4 or later');
-        }
-        if (!authContext.credentials.username) {
-            authContext.credentials = await makeTempCredentials(authContext.credentials);
-        }
-        const { credentials } = authContext;
-        const accessKeyId = credentials.username;
-        const secretAccessKey = credentials.password;
-        const sessionToken = credentials.mechanismProperties.AWS_SESSION_TOKEN;
-        // If all three defined, include sessionToken, else include username and pass, else no credentials
-        const awsCredentials = accessKeyId && secretAccessKey && sessionToken
-            ? { accessKeyId, secretAccessKey, sessionToken }
-            : accessKeyId && secretAccessKey
-                ? { accessKeyId, secretAccessKey }
-                : undefined;
-        const db = credentials.source;
-        const nonce = await this.randomBytesAsync(32);
-        const saslStart = {
-            saslStart: 1,
-            mechanism: 'MONGODB-AWS',
-            payload: BSON.serialize({ r: nonce, p: ASCII_N }, bsonOptions)
-        };
-        const saslStartResponse = await connection.commandAsync((0, utils_1.ns)(`${db}.$cmd`), saslStart, undefined);
-        const serverResponse = BSON.deserialize(saslStartResponse.payload.buffer, bsonOptions);
-        const host = serverResponse.h;
-        const serverNonce = serverResponse.s.buffer;
-        if (serverNonce.length !== 64) {
-            // TODO(NODE-3483)
-            throw new error_1.MongoRuntimeError(`Invalid server nonce length ${serverNonce.length}, expected 64`);
-        }
-        if (!utils_1.ByteUtils.equals(serverNonce.subarray(0, nonce.byteLength), nonce)) {
-            // throw because the serverNonce's leading 32 bytes must equal the client nonce's 32 bytes
-            // https://github.com/mongodb/specifications/blob/875446db44aade414011731840831f38a6c668df/source/auth/auth.rst#id11
-            // TODO(NODE-3483)
-            throw new error_1.MongoRuntimeError('Server nonce does not begin with client nonce');
-        }
-        if (host.length < 1 || host.length > 255 || host.indexOf('..') !== -1) {
-            // TODO(NODE-3483)
-            throw new error_1.MongoRuntimeError(`Server returned an invalid host: "${host}"`);
-        }
-        const body = 'Action=GetCallerIdentity&Version=2011-06-15';
-        const options = sign({
-            method: 'POST',
-            host,
-            region: deriveRegion(serverResponse.h),
-            service: 'sts',
-            headers: {
-                'Content-Type': 'application/x-www-form-urlencoded',
-                'Content-Length': body.length,
-                'X-MongoDB-Server-Nonce': utils_1.ByteUtils.toBase64(serverNonce),
-                'X-MongoDB-GS2-CB-Flag': 'n'
-            },
-            path: '/',
-            body
-        }, awsCredentials);
-        const payload = {
-            a: options.headers.Authorization,
-            d: options.headers['X-Amz-Date']
-        };
-        if (sessionToken) {
-            payload.t = sessionToken;
-        }
-        const saslContinue = {
-            saslContinue: 1,
-            conversationId: 1,
-            payload: BSON.serialize(payload, bsonOptions)
-        };
-        await connection.commandAsync((0, utils_1.ns)(`${db}.$cmd`), saslContinue, undefined);
-    }
-}
-MongoDBAWS.credentialProvider = null;
-exports.MongoDBAWS = MongoDBAWS;
-async function makeTempCredentials(credentials) {
-    function makeMongoCredentialsFromAWSTemp(creds) {
-        if (!creds.AccessKeyId || !creds.SecretAccessKey || !creds.Token) {
-            throw new error_1.MongoMissingCredentialsError('Could not obtain temporary MONGODB-AWS credentials');
-        }
-        return new mongo_credentials_1.MongoCredentials({
-            username: creds.AccessKeyId,
-            password: creds.SecretAccessKey,
-            source: credentials.source,
-            mechanism: providers_1.AuthMechanism.MONGODB_AWS,
-            mechanismProperties: {
-                AWS_SESSION_TOKEN: creds.Token
-            }
-        });
-    }
-    MongoDBAWS.credentialProvider ??= (0, deps_1.getAwsCredentialProvider)();
-    // Check if the AWS credential provider from the SDK is present. If not,
-    // use the old method.
-    if ('kModuleError' in MongoDBAWS.credentialProvider) {
-        // If the environment variable AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
-        // is set then drivers MUST assume that it was set by an AWS ECS agent
-        if (process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI) {
-            return makeMongoCredentialsFromAWSTemp(await (0, utils_1.request)(`${AWS_RELATIVE_URI}${process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI}`));
-        }
-        // Otherwise assume we are on an EC2 instance
-        // get a token
-        const token = await (0, utils_1.request)(`${AWS_EC2_URI}/latest/api/token`, {
-            method: 'PUT',
-            json: false,
-            headers: { 'X-aws-ec2-metadata-token-ttl-seconds': 30 }
-        });
-        // get role name
-        const roleName = await (0, utils_1.request)(`${AWS_EC2_URI}/${AWS_EC2_PATH}`, {
-            json: false,
-            headers: { 'X-aws-ec2-metadata-token': token }
-        });
-        // get temp credentials
-        const creds = await (0, utils_1.request)(`${AWS_EC2_URI}/${AWS_EC2_PATH}/${roleName}`, {
-            headers: { 'X-aws-ec2-metadata-token': token }
-        });
-        return makeMongoCredentialsFromAWSTemp(creds);
-    }
-    else {
-        let { AWS_STS_REGIONAL_ENDPOINTS = '', AWS_REGION = '' } = process.env;
-        AWS_STS_REGIONAL_ENDPOINTS = AWS_STS_REGIONAL_ENDPOINTS.toLowerCase();
-        AWS_REGION = AWS_REGION.toLowerCase();
-        /** The option setting should work only for users who have explicit settings in their environment, the driver should not encode "defaults" */
-        const awsRegionSettingsExist = AWS_REGION.length !== 0 && AWS_STS_REGIONAL_ENDPOINTS.length !== 0;
-        /**
-         * If AWS_STS_REGIONAL_ENDPOINTS is set to regional, users are opting into the new behavior of respecting the region settings
-         *
-         * If AWS_STS_REGIONAL_ENDPOINTS is set to legacy, then "old" regions need to keep using the global setting.
-         * Technically the SDK gets this wrong, it reaches out to 'sts.us-east-1.amazonaws.com' when it should be 'sts.amazonaws.com'.
-         * That is not our bug to fix here. We leave that up to the SDK.
-         */
-        const useRegionalSts = AWS_STS_REGIONAL_ENDPOINTS === 'regional' ||
-            (AWS_STS_REGIONAL_ENDPOINTS === 'legacy' && !LEGACY_REGIONS.has(AWS_REGION));
-        const provider = awsRegionSettingsExist && useRegionalSts
-            ? MongoDBAWS.credentialProvider.fromNodeProviderChain({
-                clientConfig: { region: AWS_REGION }
-            })
-            : MongoDBAWS.credentialProvider.fromNodeProviderChain();
-        /*
-         * Creates a credential provider that will attempt to find credentials from the
-         * following sources (listed in order of precedence):
-         *
-         * - Environment variables exposed via process.env
-         * - SSO credentials from token cache
-         * - Web identity token credentials
-         * - Shared credentials and config ini files
-         * - The EC2/ECS Instance Metadata Service
-         */
-        try {
-            const creds = await provider();
-            return makeMongoCredentialsFromAWSTemp({
-                AccessKeyId: creds.accessKeyId,
-                SecretAccessKey: creds.secretAccessKey,
-                Token: creds.sessionToken,
-                Expiration: creds.expiration
-            });
-        }
-        catch (error) {
-            throw new error_1.MongoAWSError(error.message);
-        }
-    }
-}
-function deriveRegion(host) {
-    const parts = host.split('.');
-    if (parts.length === 1 || parts[1] === 'amazonaws') {
-        return 'us-east-1';
-    }
-    return parts[1];
-}
-//# sourceMappingURL=mongodb_aws.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map
deleted file mode 100644
index 598f6a100f68770fe503495f3eda85ff67de3a6b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"mongodb_aws.js","sourceRoot":"","sources":["../../../src/cmap/auth/mongodb_aws.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js
deleted file mode 100644
index 050cf8aa120fd0a67afbb07ab4722ff1beb4483c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js
+++ /dev/null
@@ -1,68 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.MongoDBOIDC = exports.OIDC_WORKFLOWS = void 0;
-const error_1 = require("../../error");
-const auth_provider_1 = require("./auth_provider");
-const aws_service_workflow_1 = require("./mongodb_oidc/aws_service_workflow");
-const azure_service_workflow_1 = require("./mongodb_oidc/azure_service_workflow");
-const callback_workflow_1 = require("./mongodb_oidc/callback_workflow");
-/** Error when credentials are missing. */
-const MISSING_CREDENTIALS_ERROR = 'AuthContext must provide credentials.';
-/** @internal */
-exports.OIDC_WORKFLOWS = new Map();
-exports.OIDC_WORKFLOWS.set('callback', new callback_workflow_1.CallbackWorkflow());
-exports.OIDC_WORKFLOWS.set('aws', new aws_service_workflow_1.AwsServiceWorkflow());
-exports.OIDC_WORKFLOWS.set('azure', new azure_service_workflow_1.AzureServiceWorkflow());
-/**
- * OIDC auth provider.
- * @experimental
- */
-class MongoDBOIDC extends auth_provider_1.AuthProvider {
-    /**
-     * Instantiate the auth provider.
-     */
-    constructor() {
-        super();
-    }
-    /**
-     * Authenticate using OIDC
-     */
-    async auth(authContext) {
-        const { connection, reauthenticating, response } = authContext;
-        const credentials = getCredentials(authContext);
-        const workflow = getWorkflow(credentials);
-        await workflow.execute(connection, credentials, reauthenticating, response);
-    }
-    /**
-     * Add the speculative auth for the initial handshake.
-     */
-    async prepare(handshakeDoc, authContext) {
-        const credentials = getCredentials(authContext);
-        const workflow = getWorkflow(credentials);
-        const result = await workflow.speculativeAuth(credentials);
-        return { ...handshakeDoc, ...result };
-    }
-}
-exports.MongoDBOIDC = MongoDBOIDC;
-/**
- * Get credentials from the auth context, throwing if they do not exist.
- */
-function getCredentials(authContext) {
-    const { credentials } = authContext;
-    if (!credentials) {
-        throw new error_1.MongoMissingCredentialsError(MISSING_CREDENTIALS_ERROR);
-    }
-    return credentials;
-}
-/**
- * Gets either a device workflow or callback workflow.
- */
-function getWorkflow(credentials) {
-    const providerName = credentials.mechanismProperties.PROVIDER_NAME;
-    const workflow = exports.OIDC_WORKFLOWS.get(providerName || 'callback');
-    if (!workflow) {
-        throw new error_1.MongoInvalidArgumentError(`Could not load workflow for provider ${credentials.mechanismProperties.PROVIDER_NAME}`);
-    }
-    return workflow;
-}
-//# sourceMappingURL=mongodb_oidc.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js.map
deleted file mode 100644
index 60dcbabd75f8193b305da3b4d09cc89801a1c0ce..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"mongodb_oidc.js","sourceRoot":"","sources":["../../../src/cmap/auth/mongodb_oidc.ts"],"names":[],"mappings":";;;AAEA,uCAAsF;AAGtF,mDAAiE;AAEjE,8EAAyE;AACzE,kFAA6E;AAC7E,wEAAoE;AAEpE,0CAA0C;AAC1C,MAAM,yBAAyB,GAAG,uCAAuC,CAAC;AAuE1E,gBAAgB;AACH,QAAA,cAAc,GAAgC,IAAI,GAAG,EAAE,CAAC;AACrE,sBAAc,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,oCAAgB,EAAE,CAAC,CAAC;AACvD,sBAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,yCAAkB,EAAE,CAAC,CAAC;AACpD,sBAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,6CAAoB,EAAE,CAAC,CAAC;AAExD;;;GAGG;AACH,MAAa,WAAY,SAAQ,4BAAY;IAC3C;;OAEG;IACH;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED;;OAEG;IACM,KAAK,CAAC,IAAI,CAAC,WAAwB;QAC1C,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;QAC/D,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACM,KAAK,CAAC,OAAO,CACpB,YAA+B,EAC/B,WAAwB;QAExB,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IACxC,CAAC;CACF;AA9BD,kCA8BC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,WAAwB;IAC9C,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;IACpC,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,oCAA4B,CAAC,yBAAyB,CAAC,CAAC;KACnE;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,WAA6B;IAChD,MAAM,YAAY,GAAG,WAAW,CAAC,mBAAmB,CAAC,aAAa,CAAC;IACnE,MAAM,QAAQ,GAAG,sBAAc,CAAC,GAAG,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IAChE,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,iCAAyB,CACjC,wCAAwC,WAAW,CAAC,mBAAmB,CAAC,aAAa,EAAE,CACxF,CAAC;KACH;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/aws_service_workflow.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/aws_service_workflow.js
deleted file mode 100644
index 44286f382e6208a6ead821d72a54a124152c0e13..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/aws_service_workflow.js
+++ /dev/null
@@ -1,30 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.AwsServiceWorkflow = void 0;
-const fs = require("fs");
-const error_1 = require("../../../error");
-const service_workflow_1 = require("./service_workflow");
-/** Error for when the token is missing in the environment. */
-const TOKEN_MISSING_ERROR = 'AWS_WEB_IDENTITY_TOKEN_FILE must be set in the environment.';
-/**
- * Device workflow implementation for AWS.
- *
- * @internal
- */
-class AwsServiceWorkflow extends service_workflow_1.ServiceWorkflow {
-    constructor() {
-        super();
-    }
-    /**
-     * Get the token from the environment.
-     */
-    async getToken() {
-        const tokenFile = process.env.AWS_WEB_IDENTITY_TOKEN_FILE;
-        if (!tokenFile) {
-            throw new error_1.MongoAWSError(TOKEN_MISSING_ERROR);
-        }
-        return fs.promises.readFile(tokenFile, 'utf8');
-    }
-}
-exports.AwsServiceWorkflow = AwsServiceWorkflow;
-//# sourceMappingURL=aws_service_workflow.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/aws_service_workflow.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/aws_service_workflow.js.map
deleted file mode 100644
index 9a2fd7698774597ac96ccc6ecd7b015fcfba52fc..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/aws_service_workflow.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"aws_service_workflow.js","sourceRoot":"","sources":["../../../../src/cmap/auth/mongodb_oidc/aws_service_workflow.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AAEzB,0CAA+C;AAC/C,yDAAqD;AAErD,8DAA8D;AAC9D,MAAM,mBAAmB,GAAG,6DAA6D,CAAC;AAE1F;;;;GAIG;AACH,MAAa,kBAAmB,SAAQ,kCAAe;IACrD;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,IAAI,qBAAa,CAAC,mBAAmB,CAAC,CAAC;SAC9C;QACD,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;CACF;AAfD,gDAeC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_service_workflow.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_service_workflow.js
deleted file mode 100644
index e5984e42dbf3529f9360a49daf8899a0b41ea441..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_service_workflow.js
+++ /dev/null
@@ -1,73 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.AzureServiceWorkflow = void 0;
-const error_1 = require("../../../error");
-const utils_1 = require("../../../utils");
-const azure_token_cache_1 = require("./azure_token_cache");
-const service_workflow_1 = require("./service_workflow");
-/** Base URL for getting Azure tokens. */
-const AZURE_BASE_URL = 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01';
-/** Azure request headers. */
-const AZURE_HEADERS = Object.freeze({ Metadata: 'true', Accept: 'application/json' });
-/** Invalid endpoint result error. */
-const ENDPOINT_RESULT_ERROR = 'Azure endpoint did not return a value with only access_token and expires_in properties';
-/** Error for when the token audience is missing in the environment. */
-const TOKEN_AUDIENCE_MISSING_ERROR = 'TOKEN_AUDIENCE must be set in the auth mechanism properties when PROVIDER_NAME is azure.';
-/**
- * Device workflow implementation for Azure.
- *
- * @internal
- */
-class AzureServiceWorkflow extends service_workflow_1.ServiceWorkflow {
-    constructor() {
-        super(...arguments);
-        this.cache = new azure_token_cache_1.AzureTokenCache();
-    }
-    /**
-     * Get the token from the environment.
-     */
-    async getToken(credentials) {
-        const tokenAudience = credentials?.mechanismProperties.TOKEN_AUDIENCE;
-        if (!tokenAudience) {
-            throw new error_1.MongoAzureError(TOKEN_AUDIENCE_MISSING_ERROR);
-        }
-        let token;
-        const entry = this.cache.getEntry(tokenAudience);
-        if (entry?.isValid()) {
-            token = entry.token;
-        }
-        else {
-            this.cache.deleteEntry(tokenAudience);
-            const response = await getAzureTokenData(tokenAudience);
-            if (!isEndpointResultValid(response)) {
-                throw new error_1.MongoAzureError(ENDPOINT_RESULT_ERROR);
-            }
-            this.cache.addEntry(tokenAudience, response);
-            token = response.access_token;
-        }
-        return token;
-    }
-}
-exports.AzureServiceWorkflow = AzureServiceWorkflow;
-/**
- * Hit the Azure endpoint to get the token data.
- */
-async function getAzureTokenData(tokenAudience) {
-    const url = `${AZURE_BASE_URL}&resource=${tokenAudience}`;
-    const data = await (0, utils_1.request)(url, {
-        json: true,
-        headers: AZURE_HEADERS
-    });
-    return data;
-}
-/**
- * Determines if a result returned from the endpoint is valid.
- * This means the result is not nullish, contains the access_token required field
- * and the expires_in required field.
- */
-function isEndpointResultValid(token) {
-    if (token == null || typeof token !== 'object')
-        return false;
-    return 'access_token' in token && 'expires_in' in token;
-}
-//# sourceMappingURL=azure_service_workflow.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_service_workflow.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_service_workflow.js.map
deleted file mode 100644
index cbc885d9a47004c007dc255e2ca23f1b770f4126..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_service_workflow.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"azure_service_workflow.js","sourceRoot":"","sources":["../../../../src/cmap/auth/mongodb_oidc/azure_service_workflow.ts"],"names":[],"mappings":";;;AAAA,0CAAiD;AACjD,0CAAyC;AAEzC,2DAAsD;AACtD,yDAAqD;AAErD,yCAAyC;AACzC,MAAM,cAAc,GAClB,8EAA8E,CAAC;AAEjF,6BAA6B;AAC7B,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAEtF,qCAAqC;AACrC,MAAM,qBAAqB,GACzB,wFAAwF,CAAC;AAE3F,uEAAuE;AACvE,MAAM,4BAA4B,GAChC,0FAA0F,CAAC;AAW7F;;;;GAIG;AACH,MAAa,oBAAqB,SAAQ,kCAAe;IAAzD;;QACE,UAAK,GAAG,IAAI,mCAAe,EAAE,CAAC;IAyBhC,CAAC;IAvBC;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,WAA8B;QAC3C,MAAM,aAAa,GAAG,WAAW,EAAE,mBAAmB,CAAC,cAAc,CAAC;QACtE,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,uBAAe,CAAC,4BAA4B,CAAC,CAAC;SACzD;QACD,IAAI,KAAK,CAAC;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,KAAK,EAAE,OAAO,EAAE,EAAE;YACpB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;SACrB;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC;YACxD,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE;gBACpC,MAAM,IAAI,uBAAe,CAAC,qBAAqB,CAAC,CAAC;aAClD;YACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC7C,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;SAC/B;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA1BD,oDA0BC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,aAAqB;IACpD,MAAM,GAAG,GAAG,GAAG,cAAc,aAAa,aAAa,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,IAAA,eAAO,EAAC,GAAG,EAAE;QAC9B,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC;IACH,OAAO,IAAwB,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAC5B,KAAc;IAEd,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC7D,OAAO,cAAc,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK,CAAC;AAC1D,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_token_cache.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_token_cache.js
deleted file mode 100644
index 845750bd5829a5a8232932a4b1c8f9271c7e5b57..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_token_cache.js
+++ /dev/null
@@ -1,49 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.AzureTokenCache = exports.AzureTokenEntry = void 0;
-const cache_1 = require("./cache");
-/** @internal */
-class AzureTokenEntry extends cache_1.ExpiringCacheEntry {
-    /**
-     * Instantiate the entry.
-     */
-    constructor(token, expiration) {
-        super(expiration);
-        this.token = token;
-    }
-}
-exports.AzureTokenEntry = AzureTokenEntry;
-/**
- * A cache of access tokens from Azure.
- * @internal
- */
-class AzureTokenCache extends cache_1.Cache {
-    /**
-     * Add an entry to the cache.
-     */
-    addEntry(tokenAudience, token) {
-        const entry = new AzureTokenEntry(token.access_token, token.expires_in);
-        this.entries.set(tokenAudience, entry);
-        return entry;
-    }
-    /**
-     * Create a cache key.
-     */
-    cacheKey(tokenAudience) {
-        return tokenAudience;
-    }
-    /**
-     * Delete an entry from the cache.
-     */
-    deleteEntry(tokenAudience) {
-        this.entries.delete(tokenAudience);
-    }
-    /**
-     * Get an Azure token entry from the cache.
-     */
-    getEntry(tokenAudience) {
-        return this.entries.get(tokenAudience);
-    }
-}
-exports.AzureTokenCache = AzureTokenCache;
-//# sourceMappingURL=azure_token_cache.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_token_cache.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_token_cache.js.map
deleted file mode 100644
index 86b816373db92783d91f96e01cc097b10c8036fe..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_token_cache.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"azure_token_cache.js","sourceRoot":"","sources":["../../../../src/cmap/auth/mongodb_oidc/azure_token_cache.ts"],"names":[],"mappings":";;;AACA,mCAAoD;AAEpD,gBAAgB;AAChB,MAAa,eAAgB,SAAQ,0BAAkB;IAGrD;;OAEG;IACH,YAAY,KAAa,EAAE,UAAkB;QAC3C,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAVD,0CAUC;AAED;;;GAGG;AACH,MAAa,eAAgB,SAAQ,aAAsB;IACzD;;OAEG;IACH,QAAQ,CAAC,aAAqB,EAAE,KAAuB;QACrD,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,aAAqB;QAC5B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,aAAqB;QAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,aAAqB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;CACF;AA9BD,0CA8BC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/cache.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/cache.js
deleted file mode 100644
index 2f08551e28ae2ecf587abfea87dd28f1cddd5ece..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/cache.js
+++ /dev/null
@@ -1,55 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Cache = exports.ExpiringCacheEntry = void 0;
-/* 5 minutes in milliseconds */
-const EXPIRATION_BUFFER_MS = 300000;
-/**
- * An entry in a cache that can expire in a certain amount of time.
- */
-class ExpiringCacheEntry {
-    /**
-     * Create a new expiring token entry.
-     */
-    constructor(expiration) {
-        this.expiration = this.expirationTime(expiration);
-    }
-    /**
-     * The entry is still valid if the expiration is more than
-     * 5 minutes from the expiration time.
-     */
-    isValid() {
-        return this.expiration - Date.now() > EXPIRATION_BUFFER_MS;
-    }
-    /**
-     * Get an expiration time in milliseconds past epoch.
-     */
-    expirationTime(expiresInSeconds) {
-        return Date.now() + expiresInSeconds * 1000;
-    }
-}
-exports.ExpiringCacheEntry = ExpiringCacheEntry;
-/**
- * Base class for OIDC caches.
- */
-class Cache {
-    /**
-     * Create a new cache.
-     */
-    constructor() {
-        this.entries = new Map();
-    }
-    /**
-     * Clear the cache.
-     */
-    clear() {
-        this.entries.clear();
-    }
-    /**
-     * Create a cache key from the address and username.
-     */
-    hashedCacheKey(address, username, callbackHash) {
-        return JSON.stringify([address, username, callbackHash]);
-    }
-}
-exports.Cache = Cache;
-//# sourceMappingURL=cache.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/cache.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/cache.js.map
deleted file mode 100644
index 34ad50c10af8288f2786b54ac8ac02edb7a2c988..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/cache.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/cmap/auth/mongodb_oidc/cache.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAEpC;;GAEG;AACH,MAAsB,kBAAkB;IAGtC;;OAEG;IACH,YAAY,UAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IACD;;;OAGG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,oBAAoB,CAAC;IAC7D,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,gBAAwB;QAC7C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAC9C,CAAC;CACF;AAvBD,gDAuBC;AAED;;GAEG;AACH,MAAsB,KAAK;IAGzB;;OAEG;IACH;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAa,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAOD;;OAEG;IACH,cAAc,CAAC,OAAe,EAAE,QAAgB,EAAE,YAAoB;QACpE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF;AA5BD,sBA4BC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_lock_cache.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_lock_cache.js
deleted file mode 100644
index 94e998478b14d090e6f253189dc48053f19354ed..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_lock_cache.js
+++ /dev/null
@@ -1,89 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.CallbackLockCache = void 0;
-const error_1 = require("../../../error");
-const cache_1 = require("./cache");
-/** Error message for when request callback is missing. */
-const REQUEST_CALLBACK_REQUIRED_ERROR = 'Auth mechanism property REQUEST_TOKEN_CALLBACK is required.';
-/* Counter for function "hashes".*/
-let FN_HASH_COUNTER = 0;
-/* No function present function */
-const NO_FUNCTION = async () => ({ accessToken: 'test' });
-/* The map of function hashes */
-const FN_HASHES = new WeakMap();
-/* Put the no function hash in the map. */
-FN_HASHES.set(NO_FUNCTION, FN_HASH_COUNTER);
-/**
- * A cache of request and refresh callbacks per server/user.
- */
-class CallbackLockCache extends cache_1.Cache {
-    /**
-     * Get the callbacks for the connection and credentials. If an entry does not
-     * exist a new one will get set.
-     */
-    getEntry(connection, credentials) {
-        const requestCallback = credentials.mechanismProperties.REQUEST_TOKEN_CALLBACK;
-        const refreshCallback = credentials.mechanismProperties.REFRESH_TOKEN_CALLBACK;
-        if (!requestCallback) {
-            throw new error_1.MongoInvalidArgumentError(REQUEST_CALLBACK_REQUIRED_ERROR);
-        }
-        const callbackHash = hashFunctions(requestCallback, refreshCallback);
-        const key = this.cacheKey(connection.address, credentials.username, callbackHash);
-        const entry = this.entries.get(key);
-        if (entry) {
-            return entry;
-        }
-        return this.addEntry(key, callbackHash, requestCallback, refreshCallback);
-    }
-    /**
-     * Set locked callbacks on for connection and credentials.
-     */
-    addEntry(key, callbackHash, requestCallback, refreshCallback) {
-        const entry = {
-            requestCallback: withLock(requestCallback),
-            refreshCallback: refreshCallback ? withLock(refreshCallback) : undefined,
-            callbackHash: callbackHash
-        };
-        this.entries.set(key, entry);
-        return entry;
-    }
-    /**
-     * Create a cache key from the address and username.
-     */
-    cacheKey(address, username, callbackHash) {
-        return this.hashedCacheKey(address, username, callbackHash);
-    }
-}
-exports.CallbackLockCache = CallbackLockCache;
-/**
- * Ensure the callback is only executed one at a time.
- */
-function withLock(callback) {
-    let lock = Promise.resolve();
-    return async (info, context) => {
-        await lock;
-        lock = lock.then(() => callback(info, context));
-        return lock;
-    };
-}
-/**
- * Get the hash string for the request and refresh functions.
- */
-function hashFunctions(requestFn, refreshFn) {
-    let requestHash = FN_HASHES.get(requestFn);
-    let refreshHash = FN_HASHES.get(refreshFn ?? NO_FUNCTION);
-    if (requestHash == null) {
-        // Create a new one for the function and put it in the map.
-        FN_HASH_COUNTER++;
-        requestHash = FN_HASH_COUNTER;
-        FN_HASHES.set(requestFn, FN_HASH_COUNTER);
-    }
-    if (refreshHash == null && refreshFn) {
-        // Create a new one for the function and put it in the map.
-        FN_HASH_COUNTER++;
-        refreshHash = FN_HASH_COUNTER;
-        FN_HASHES.set(refreshFn, FN_HASH_COUNTER);
-    }
-    return `${requestHash}-${refreshHash}`;
-}
-//# sourceMappingURL=callback_lock_cache.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_lock_cache.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_lock_cache.js.map
deleted file mode 100644
index 39e05dd7221e22cf5b2275ab209c52729b9a298d..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_lock_cache.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"callback_lock_cache.js","sourceRoot":"","sources":["../../../../src/cmap/auth/mongodb_oidc/callback_lock_cache.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js
deleted file mode 100644
index cc23c9e51a1fca46bab9ad8127a53ad85c528de0..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js
+++ /dev/null
@@ -1,204 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.CallbackWorkflow = void 0;
-const bson_1 = require("bson");
-const error_1 = require("../../../error");
-const utils_1 = require("../../../utils");
-const providers_1 = require("../providers");
-const callback_lock_cache_1 = require("./callback_lock_cache");
-const token_entry_cache_1 = require("./token_entry_cache");
-/** The current version of OIDC implementation. */
-const OIDC_VERSION = 0;
-/** 5 minutes in seconds */
-const TIMEOUT_S = 300;
-/** Properties allowed on results of callbacks. */
-const RESULT_PROPERTIES = ['accessToken', 'expiresInSeconds', 'refreshToken'];
-/** Error message when the callback result is invalid. */
-const CALLBACK_RESULT_ERROR = 'User provided OIDC callbacks must return a valid object with an accessToken.';
-/**
- * OIDC implementation of a callback based workflow.
- * @internal
- */
-class CallbackWorkflow {
-    /**
-     * Instantiate the workflow
-     */
-    constructor() {
-        this.cache = new token_entry_cache_1.TokenEntryCache();
-        this.callbackCache = new callback_lock_cache_1.CallbackLockCache();
-    }
-    /**
-     * Get the document to add for speculative authentication. This also needs
-     * to add a db field from the credentials source.
-     */
-    async speculativeAuth(credentials) {
-        const document = startCommandDocument(credentials);
-        document.db = credentials.source;
-        return { speculativeAuthenticate: document };
-    }
-    /**
-     * Execute the OIDC callback workflow.
-     */
-    async execute(connection, credentials, reauthenticating, response) {
-        // Get the callbacks with locks from the callback lock cache.
-        const { requestCallback, refreshCallback, callbackHash } = this.callbackCache.getEntry(connection, credentials);
-        // Look for an existing entry in the cache.
-        const entry = this.cache.getEntry(connection.address, credentials.username, callbackHash);
-        let result;
-        if (entry) {
-            // Reauthentication cannot use a token from the cache since the server has
-            // stated it is invalid by the request for reauthentication.
-            if (entry.isValid() && !reauthenticating) {
-                // Presence of a valid cache entry means we can skip to the finishing step.
-                result = await this.finishAuthentication(connection, credentials, entry.tokenResult, response?.speculativeAuthenticate?.conversationId);
-            }
-            else {
-                // Presence of an expired cache entry means we must fetch a new one and
-                // then execute the final step.
-                const tokenResult = await this.fetchAccessToken(connection, credentials, entry.serverInfo, reauthenticating, callbackHash, requestCallback, refreshCallback);
-                try {
-                    result = await this.finishAuthentication(connection, credentials, tokenResult, reauthenticating ? undefined : response?.speculativeAuthenticate?.conversationId);
-                }
-                catch (error) {
-                    // If we are reauthenticating and this errors with reauthentication
-                    // required, we need to do the entire process over again and clear
-                    // the cache entry.
-                    if (reauthenticating &&
-                        error instanceof error_1.MongoError &&
-                        error.code === error_1.MONGODB_ERROR_CODES.Reauthenticate) {
-                        this.cache.deleteEntry(connection.address, credentials.username, callbackHash);
-                        result = await this.execute(connection, credentials, reauthenticating);
-                    }
-                    else {
-                        throw error;
-                    }
-                }
-            }
-        }
-        else {
-            // No entry in the cache requires us to do all authentication steps
-            // from start to finish, including getting a fresh token for the cache.
-            const startDocument = await this.startAuthentication(connection, credentials, reauthenticating, response);
-            const conversationId = startDocument.conversationId;
-            const serverResult = bson_1.BSON.deserialize(startDocument.payload.buffer);
-            const tokenResult = await this.fetchAccessToken(connection, credentials, serverResult, reauthenticating, callbackHash, requestCallback, refreshCallback);
-            result = await this.finishAuthentication(connection, credentials, tokenResult, conversationId);
-        }
-        return result;
-    }
-    /**
-     * Starts the callback authentication process. If there is a speculative
-     * authentication document from the initial handshake, then we will use that
-     * value to get the issuer, otherwise we will send the saslStart command.
-     */
-    async startAuthentication(connection, credentials, reauthenticating, response) {
-        let result;
-        if (!reauthenticating && response?.speculativeAuthenticate) {
-            result = response.speculativeAuthenticate;
-        }
-        else {
-            result = await connection.commandAsync((0, utils_1.ns)(credentials.source), startCommandDocument(credentials), undefined);
-        }
-        return result;
-    }
-    /**
-     * Finishes the callback authentication process.
-     */
-    async finishAuthentication(connection, credentials, tokenResult, conversationId) {
-        const result = await connection.commandAsync((0, utils_1.ns)(credentials.source), finishCommandDocument(tokenResult.accessToken, conversationId), undefined);
-        return result;
-    }
-    /**
-     * Fetches an access token using either the request or refresh callbacks and
-     * puts it in the cache.
-     */
-    async fetchAccessToken(connection, credentials, serverInfo, reauthenticating, callbackHash, requestCallback, refreshCallback) {
-        // Get the token from the cache.
-        const entry = this.cache.getEntry(connection.address, credentials.username, callbackHash);
-        let result;
-        const context = { timeoutSeconds: TIMEOUT_S, version: OIDC_VERSION };
-        // Check if there's a token in the cache.
-        if (entry) {
-            // If the cache entry is valid, return the token result.
-            if (entry.isValid() && !reauthenticating) {
-                return entry.tokenResult;
-            }
-            // If the cache entry is not valid, remove it from the cache and first attempt
-            // to use the refresh callback to get a new token. If no refresh callback
-            // exists, then fallback to the request callback.
-            if (refreshCallback) {
-                context.refreshToken = entry.tokenResult.refreshToken;
-                result = await refreshCallback(serverInfo, context);
-            }
-            else {
-                result = await requestCallback(serverInfo, context);
-            }
-        }
-        else {
-            // With no token in the cache we use the request callback.
-            result = await requestCallback(serverInfo, context);
-        }
-        // Validate that the result returned by the callback is acceptable. If it is not
-        // we must clear the token result from the cache.
-        if (isCallbackResultInvalid(result)) {
-            this.cache.deleteEntry(connection.address, credentials.username, callbackHash);
-            throw new error_1.MongoMissingCredentialsError(CALLBACK_RESULT_ERROR);
-        }
-        // Cleanup the cache.
-        this.cache.deleteExpiredEntries();
-        // Put the new entry into the cache.
-        this.cache.addEntry(connection.address, credentials.username || '', callbackHash, result, serverInfo);
-        return result;
-    }
-}
-exports.CallbackWorkflow = CallbackWorkflow;
-/**
- * Generate the finishing command document for authentication. Will be a
- * saslStart or saslContinue depending on the presence of a conversation id.
- */
-function finishCommandDocument(token, conversationId) {
-    if (conversationId != null && typeof conversationId === 'number') {
-        return {
-            saslContinue: 1,
-            conversationId: conversationId,
-            payload: new bson_1.Binary(bson_1.BSON.serialize({ jwt: token }))
-        };
-    }
-    // saslContinue requires a conversationId in the command to be valid so in this
-    // case the server allows "step two" to actually be a saslStart with the token
-    // as the jwt since the use of the cached value has no correlating conversating
-    // on the particular connection.
-    return {
-        saslStart: 1,
-        mechanism: providers_1.AuthMechanism.MONGODB_OIDC,
-        payload: new bson_1.Binary(bson_1.BSON.serialize({ jwt: token }))
-    };
-}
-/**
- * Determines if a result returned from a request or refresh callback
- * function is invalid. This means the result is nullish, doesn't contain
- * the accessToken required field, and does not contain extra fields.
- */
-function isCallbackResultInvalid(tokenResult) {
-    if (tokenResult == null || typeof tokenResult !== 'object')
-        return true;
-    if (!('accessToken' in tokenResult))
-        return true;
-    return !Object.getOwnPropertyNames(tokenResult).every(prop => RESULT_PROPERTIES.includes(prop));
-}
-/**
- * Generate the saslStart command document.
- */
-function startCommandDocument(credentials) {
-    const payload = {};
-    if (credentials.username) {
-        payload.n = credentials.username;
-    }
-    return {
-        saslStart: 1,
-        autoAuthorize: 1,
-        mechanism: providers_1.AuthMechanism.MONGODB_OIDC,
-        payload: new bson_1.Binary(bson_1.BSON.serialize(payload))
-    };
-}
-//# sourceMappingURL=callback_workflow.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js.map
deleted file mode 100644
index 33421c791adcfb1a2fdb80e38ea1a1841a3a0d08..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"callback_workflow.js","sourceRoot":"","sources":["../../../../src/cmap/auth/mongodb_oidc/callback_workflow.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/service_workflow.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/service_workflow.js
deleted file mode 100644
index 8d704a935dc4f39112e2030140d706202685423f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/service_workflow.js
+++ /dev/null
@@ -1,43 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.commandDocument = exports.ServiceWorkflow = void 0;
-const bson_1 = require("bson");
-const utils_1 = require("../../../utils");
-const providers_1 = require("../providers");
-/**
- * Common behaviour for OIDC device workflows.
- * @internal
- */
-class ServiceWorkflow {
-    /**
-     * Execute the workflow. Looks for AWS_WEB_IDENTITY_TOKEN_FILE in the environment
-     * and then attempts to read the token from that path.
-     */
-    async execute(connection, credentials) {
-        const token = await this.getToken(credentials);
-        const command = commandDocument(token);
-        return connection.commandAsync((0, utils_1.ns)(credentials.source), command, undefined);
-    }
-    /**
-     * Get the document to add for speculative authentication.
-     */
-    async speculativeAuth(credentials) {
-        const token = await this.getToken(credentials);
-        const document = commandDocument(token);
-        document.db = credentials.source;
-        return { speculativeAuthenticate: document };
-    }
-}
-exports.ServiceWorkflow = ServiceWorkflow;
-/**
- * Create the saslStart command document.
- */
-function commandDocument(token) {
-    return {
-        saslStart: 1,
-        mechanism: providers_1.AuthMechanism.MONGODB_OIDC,
-        payload: bson_1.BSON.serialize({ jwt: token })
-    };
-}
-exports.commandDocument = commandDocument;
-//# sourceMappingURL=service_workflow.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/service_workflow.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/service_workflow.js.map
deleted file mode 100644
index 5dd1b956e7f0bcc4db944afe186d5186256e5c5f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/service_workflow.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"service_workflow.js","sourceRoot":"","sources":["../../../../src/cmap/auth/mongodb_oidc/service_workflow.ts"],"names":[],"mappings":";;;AAAA,+BAA2C;AAE3C,0CAAoC;AAIpC,4CAA6C;AAE7C;;;GAGG;AACH,MAAsB,eAAe;IACnC;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,UAAsB,EAAE,WAA6B;QACjE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,YAAY,CAAC,IAAA,UAAE,EAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,WAA6B;QACjD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,QAAQ,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;QACjC,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC;CAMF;AAzBD,0CAyBC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAa;IAC3C,OAAO;QACL,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,yBAAa,CAAC,YAAY;QACrC,OAAO,EAAE,WAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAND,0CAMC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_entry_cache.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_entry_cache.js
deleted file mode 100644
index 35cdbbe4974dbceb212c0bcb2ab4a2112d445864..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_entry_cache.js
+++ /dev/null
@@ -1,62 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.TokenEntryCache = exports.TokenEntry = void 0;
-const cache_1 = require("./cache");
-/* Default expiration is now for when no expiration provided */
-const DEFAULT_EXPIRATION_SECS = 0;
-/** @internal */
-class TokenEntry extends cache_1.ExpiringCacheEntry {
-    /**
-     * Instantiate the entry.
-     */
-    constructor(tokenResult, serverInfo, expiration) {
-        super(expiration);
-        this.tokenResult = tokenResult;
-        this.serverInfo = serverInfo;
-    }
-}
-exports.TokenEntry = TokenEntry;
-/**
- * Cache of OIDC token entries.
- * @internal
- */
-class TokenEntryCache extends cache_1.Cache {
-    /**
-     * Set an entry in the token cache.
-     */
-    addEntry(address, username, callbackHash, tokenResult, serverInfo) {
-        const entry = new TokenEntry(tokenResult, serverInfo, tokenResult.expiresInSeconds ?? DEFAULT_EXPIRATION_SECS);
-        this.entries.set(this.cacheKey(address, username, callbackHash), entry);
-        return entry;
-    }
-    /**
-     * Delete an entry from the cache.
-     */
-    deleteEntry(address, username, callbackHash) {
-        this.entries.delete(this.cacheKey(address, username, callbackHash));
-    }
-    /**
-     * Get an entry from the cache.
-     */
-    getEntry(address, username, callbackHash) {
-        return this.entries.get(this.cacheKey(address, username, callbackHash));
-    }
-    /**
-     * Delete all expired entries from the cache.
-     */
-    deleteExpiredEntries() {
-        for (const [key, entry] of this.entries) {
-            if (!entry.isValid()) {
-                this.entries.delete(key);
-            }
-        }
-    }
-    /**
-     * Create a cache key from the address and username.
-     */
-    cacheKey(address, username, callbackHash) {
-        return this.hashedCacheKey(address, username, callbackHash);
-    }
-}
-exports.TokenEntryCache = TokenEntryCache;
-//# sourceMappingURL=token_entry_cache.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_entry_cache.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_entry_cache.js.map
deleted file mode 100644
index 0399537243df6f70e15f6aed1034377704357972..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_entry_cache.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"token_entry_cache.js","sourceRoot":"","sources":["../../../../src/cmap/auth/mongodb_oidc/token_entry_cache.ts"],"names":[],"mappings":";;;AACA,mCAAoD;AAEpD,+DAA+D;AAC/D,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAElC,gBAAgB;AAChB,MAAa,UAAW,SAAQ,0BAAkB;IAIhD;;OAEG;IACH,YAAY,WAA8B,EAAE,UAAyB,EAAE,UAAkB;QACvF,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAZD,gCAYC;AAED;;;GAGG;AACH,MAAa,eAAgB,SAAQ,aAAiB;IACpD;;OAEG;IACH,QAAQ,CACN,OAAe,EACf,QAAgB,EAChB,YAAoB,EACpB,WAA8B,EAC9B,UAAyB;QAEzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAC1B,WAAW,EACX,UAAU,EACV,WAAW,CAAC,gBAAgB,IAAI,uBAAuB,CACxD,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAe,EAAE,QAAgB,EAAE,YAAoB;QACjE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAe,EAAE,QAAgB,EAAE,YAAoB;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACvC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;gBACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC1B;SACF;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAe,EAAE,QAAgB,EAAE,YAAoB;QAC9D,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;CACF;AAnDD,0CAmDC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/plain.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/plain.js
deleted file mode 100644
index 3eefda385ff7bc59c6c76ceb87fd20622eaad1dd..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/plain.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Plain = void 0;
-const bson_1 = require("../../bson");
-const error_1 = require("../../error");
-const utils_1 = require("../../utils");
-const auth_provider_1 = require("./auth_provider");
-class Plain extends auth_provider_1.AuthProvider {
-    async auth(authContext) {
-        const { connection, credentials } = authContext;
-        if (!credentials) {
-            throw new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.');
-        }
-        const { username, password } = credentials;
-        const payload = new bson_1.Binary(Buffer.from(`\x00${username}\x00${password}`));
-        const command = {
-            saslStart: 1,
-            mechanism: 'PLAIN',
-            payload: payload,
-            autoAuthorize: 1
-        };
-        await connection.commandAsync((0, utils_1.ns)('$external.$cmd'), command, undefined);
-    }
-}
-exports.Plain = Plain;
-//# sourceMappingURL=plain.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/plain.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/plain.js.map
deleted file mode 100644
index 95d4f7587da2ca41ab51ab37303565712cfc8e2a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/plain.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"plain.js","sourceRoot":"","sources":["../../../src/cmap/auth/plain.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AACpC,uCAA2D;AAC3D,uCAAiC;AACjC,mDAAiE;AAEjE,MAAa,KAAM,SAAQ,4BAAY;IAC5B,KAAK,CAAC,IAAI,CAAC,WAAwB;QAC1C,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;QAChD,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,oCAA4B,CAAC,uCAAuC,CAAC,CAAC;SACjF;QAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;QAE3C,MAAM,OAAO,GAAG,IAAI,aAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,QAAQ,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,OAAO;YAClB,OAAO,EAAE,OAAO;YAChB,aAAa,EAAE,CAAC;SACjB,CAAC;QAEF,MAAM,UAAU,CAAC,YAAY,CAAC,IAAA,UAAE,EAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1E,CAAC;CACF;AAnBD,sBAmBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/providers.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/providers.js
deleted file mode 100644
index a546512ee89ec776c6157cda823df1582e5de9c8..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/providers.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.AUTH_MECHS_AUTH_SRC_EXTERNAL = exports.AuthMechanism = void 0;
-/** @public */
-exports.AuthMechanism = Object.freeze({
-    MONGODB_AWS: 'MONGODB-AWS',
-    MONGODB_CR: 'MONGODB-CR',
-    MONGODB_DEFAULT: 'DEFAULT',
-    MONGODB_GSSAPI: 'GSSAPI',
-    MONGODB_PLAIN: 'PLAIN',
-    MONGODB_SCRAM_SHA1: 'SCRAM-SHA-1',
-    MONGODB_SCRAM_SHA256: 'SCRAM-SHA-256',
-    MONGODB_X509: 'MONGODB-X509',
-    /** @experimental */
-    MONGODB_OIDC: 'MONGODB-OIDC'
-});
-/** @internal */
-exports.AUTH_MECHS_AUTH_SRC_EXTERNAL = new Set([
-    exports.AuthMechanism.MONGODB_GSSAPI,
-    exports.AuthMechanism.MONGODB_AWS,
-    exports.AuthMechanism.MONGODB_OIDC,
-    exports.AuthMechanism.MONGODB_X509
-]);
-//# sourceMappingURL=providers.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/providers.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/providers.js.map
deleted file mode 100644
index 8f1776575437f1fb06653ea3c4d20d00685a4f1a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/providers.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/cmap/auth/providers.ts"],"names":[],"mappings":";;;AAAA,cAAc;AACD,QAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,SAAS;IAC1B,cAAc,EAAE,QAAQ;IACxB,aAAa,EAAE,OAAO;IACtB,kBAAkB,EAAE,aAAa;IACjC,oBAAoB,EAAE,eAAe;IACrC,YAAY,EAAE,cAAc;IAC5B,oBAAoB;IACpB,YAAY,EAAE,cAAc;CACpB,CAAC,CAAC;AAKZ,gBAAgB;AACH,QAAA,4BAA4B,GAAG,IAAI,GAAG,CAAgB;IACjE,qBAAa,CAAC,cAAc;IAC5B,qBAAa,CAAC,WAAW;IACzB,qBAAa,CAAC,YAAY;IAC1B,qBAAa,CAAC,YAAY;CAC3B,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/scram.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/scram.js
deleted file mode 100644
index df1ef970bd9a94c0d69ed18c36b36982b47039af..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/scram.js
+++ /dev/null
@@ -1,256 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ScramSHA256 = exports.ScramSHA1 = void 0;
-const saslprep_1 = require("@mongodb-js/saslprep");
-const crypto = require("crypto");
-const util_1 = require("util");
-const bson_1 = require("../../bson");
-const error_1 = require("../../error");
-const utils_1 = require("../../utils");
-const auth_provider_1 = require("./auth_provider");
-const providers_1 = require("./providers");
-class ScramSHA extends auth_provider_1.AuthProvider {
-    constructor(cryptoMethod) {
-        super();
-        this.cryptoMethod = cryptoMethod || 'sha1';
-        this.randomBytesAsync = (0, util_1.promisify)(crypto.randomBytes);
-    }
-    async prepare(handshakeDoc, authContext) {
-        const cryptoMethod = this.cryptoMethod;
-        const credentials = authContext.credentials;
-        if (!credentials) {
-            throw new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.');
-        }
-        const nonce = await this.randomBytesAsync(24);
-        // store the nonce for later use
-        authContext.nonce = nonce;
-        const request = {
-            ...handshakeDoc,
-            speculativeAuthenticate: {
-                ...makeFirstMessage(cryptoMethod, credentials, nonce),
-                db: credentials.source
-            }
-        };
-        return request;
-    }
-    async auth(authContext) {
-        const { reauthenticating, response } = authContext;
-        if (response?.speculativeAuthenticate && !reauthenticating) {
-            return continueScramConversation(this.cryptoMethod, response.speculativeAuthenticate, authContext);
-        }
-        return executeScram(this.cryptoMethod, authContext);
-    }
-}
-function cleanUsername(username) {
-    return username.replace('=', '=3D').replace(',', '=2C');
-}
-function clientFirstMessageBare(username, nonce) {
-    // NOTE: This is done b/c Javascript uses UTF-16, but the server is hashing in UTF-8.
-    // Since the username is not sasl-prep-d, we need to do this here.
-    return Buffer.concat([
-        Buffer.from('n=', 'utf8'),
-        Buffer.from(username, 'utf8'),
-        Buffer.from(',r=', 'utf8'),
-        Buffer.from(nonce.toString('base64'), 'utf8')
-    ]);
-}
-function makeFirstMessage(cryptoMethod, credentials, nonce) {
-    const username = cleanUsername(credentials.username);
-    const mechanism = cryptoMethod === 'sha1' ? providers_1.AuthMechanism.MONGODB_SCRAM_SHA1 : providers_1.AuthMechanism.MONGODB_SCRAM_SHA256;
-    // NOTE: This is done b/c Javascript uses UTF-16, but the server is hashing in UTF-8.
-    // Since the username is not sasl-prep-d, we need to do this here.
-    return {
-        saslStart: 1,
-        mechanism,
-        payload: new bson_1.Binary(Buffer.concat([Buffer.from('n,,', 'utf8'), clientFirstMessageBare(username, nonce)])),
-        autoAuthorize: 1,
-        options: { skipEmptyExchange: true }
-    };
-}
-async function executeScram(cryptoMethod, authContext) {
-    const { connection, credentials } = authContext;
-    if (!credentials) {
-        throw new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.');
-    }
-    if (!authContext.nonce) {
-        throw new error_1.MongoInvalidArgumentError('AuthContext must contain a valid nonce property');
-    }
-    const nonce = authContext.nonce;
-    const db = credentials.source;
-    const saslStartCmd = makeFirstMessage(cryptoMethod, credentials, nonce);
-    const response = await connection.commandAsync((0, utils_1.ns)(`${db}.$cmd`), saslStartCmd, undefined);
-    await continueScramConversation(cryptoMethod, response, authContext);
-}
-async function continueScramConversation(cryptoMethod, response, authContext) {
-    const connection = authContext.connection;
-    const credentials = authContext.credentials;
-    if (!credentials) {
-        throw new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.');
-    }
-    if (!authContext.nonce) {
-        throw new error_1.MongoInvalidArgumentError('Unable to continue SCRAM without valid nonce');
-    }
-    const nonce = authContext.nonce;
-    const db = credentials.source;
-    const username = cleanUsername(credentials.username);
-    const password = credentials.password;
-    const processedPassword = cryptoMethod === 'sha256' ? (0, saslprep_1.saslprep)(password) : passwordDigest(username, password);
-    const payload = Buffer.isBuffer(response.payload)
-        ? new bson_1.Binary(response.payload)
-        : response.payload;
-    const dict = parsePayload(payload);
-    const iterations = parseInt(dict.i, 10);
-    if (iterations && iterations < 4096) {
-        // TODO(NODE-3483)
-        throw new error_1.MongoRuntimeError(`Server returned an invalid iteration count ${iterations}`);
-    }
-    const salt = dict.s;
-    const rnonce = dict.r;
-    if (rnonce.startsWith('nonce')) {
-        // TODO(NODE-3483)
-        throw new error_1.MongoRuntimeError(`Server returned an invalid nonce: ${rnonce}`);
-    }
-    // Set up start of proof
-    const withoutProof = `c=biws,r=${rnonce}`;
-    const saltedPassword = HI(processedPassword, Buffer.from(salt, 'base64'), iterations, cryptoMethod);
-    const clientKey = HMAC(cryptoMethod, saltedPassword, 'Client Key');
-    const serverKey = HMAC(cryptoMethod, saltedPassword, 'Server Key');
-    const storedKey = H(cryptoMethod, clientKey);
-    const authMessage = [
-        clientFirstMessageBare(username, nonce),
-        payload.toString('utf8'),
-        withoutProof
-    ].join(',');
-    const clientSignature = HMAC(cryptoMethod, storedKey, authMessage);
-    const clientProof = `p=${xor(clientKey, clientSignature)}`;
-    const clientFinal = [withoutProof, clientProof].join(',');
-    const serverSignature = HMAC(cryptoMethod, serverKey, authMessage);
-    const saslContinueCmd = {
-        saslContinue: 1,
-        conversationId: response.conversationId,
-        payload: new bson_1.Binary(Buffer.from(clientFinal))
-    };
-    const r = await connection.commandAsync((0, utils_1.ns)(`${db}.$cmd`), saslContinueCmd, undefined);
-    const parsedResponse = parsePayload(r.payload);
-    if (!compareDigest(Buffer.from(parsedResponse.v, 'base64'), serverSignature)) {
-        throw new error_1.MongoRuntimeError('Server returned an invalid signature');
-    }
-    if (r.done !== false) {
-        // If the server sends r.done === true we can save one RTT
-        return;
-    }
-    const retrySaslContinueCmd = {
-        saslContinue: 1,
-        conversationId: r.conversationId,
-        payload: Buffer.alloc(0)
-    };
-    await connection.commandAsync((0, utils_1.ns)(`${db}.$cmd`), retrySaslContinueCmd, undefined);
-}
-function parsePayload(payload) {
-    const payloadStr = payload.toString('utf8');
-    const dict = {};
-    const parts = payloadStr.split(',');
-    for (let i = 0; i < parts.length; i++) {
-        const valueParts = parts[i].split('=');
-        dict[valueParts[0]] = valueParts[1];
-    }
-    return dict;
-}
-function passwordDigest(username, password) {
-    if (typeof username !== 'string') {
-        throw new error_1.MongoInvalidArgumentError('Username must be a string');
-    }
-    if (typeof password !== 'string') {
-        throw new error_1.MongoInvalidArgumentError('Password must be a string');
-    }
-    if (password.length === 0) {
-        throw new error_1.MongoInvalidArgumentError('Password cannot be empty');
-    }
-    let md5;
-    try {
-        md5 = crypto.createHash('md5');
-    }
-    catch (err) {
-        if (crypto.getFips()) {
-            // This error is (slightly) more helpful than what comes from OpenSSL directly, e.g.
-            // 'Error: error:060800C8:digital envelope routines:EVP_DigestInit_ex:disabled for FIPS'
-            throw new Error('Auth mechanism SCRAM-SHA-1 is not supported in FIPS mode');
-        }
-        throw err;
-    }
-    md5.update(`${username}:mongo:${password}`, 'utf8');
-    return md5.digest('hex');
-}
-// XOR two buffers
-function xor(a, b) {
-    if (!Buffer.isBuffer(a)) {
-        a = Buffer.from(a);
-    }
-    if (!Buffer.isBuffer(b)) {
-        b = Buffer.from(b);
-    }
-    const length = Math.max(a.length, b.length);
-    const res = [];
-    for (let i = 0; i < length; i += 1) {
-        res.push(a[i] ^ b[i]);
-    }
-    return Buffer.from(res).toString('base64');
-}
-function H(method, text) {
-    return crypto.createHash(method).update(text).digest();
-}
-function HMAC(method, key, text) {
-    return crypto.createHmac(method, key).update(text).digest();
-}
-let _hiCache = {};
-let _hiCacheCount = 0;
-function _hiCachePurge() {
-    _hiCache = {};
-    _hiCacheCount = 0;
-}
-const hiLengthMap = {
-    sha256: 32,
-    sha1: 20
-};
-function HI(data, salt, iterations, cryptoMethod) {
-    // omit the work if already generated
-    const key = [data, salt.toString('base64'), iterations].join('_');
-    if (_hiCache[key] != null) {
-        return _hiCache[key];
-    }
-    // generate the salt
-    const saltedData = crypto.pbkdf2Sync(data, salt, iterations, hiLengthMap[cryptoMethod], cryptoMethod);
-    // cache a copy to speed up the next lookup, but prevent unbounded cache growth
-    if (_hiCacheCount >= 200) {
-        _hiCachePurge();
-    }
-    _hiCache[key] = saltedData;
-    _hiCacheCount += 1;
-    return saltedData;
-}
-function compareDigest(lhs, rhs) {
-    if (lhs.length !== rhs.length) {
-        return false;
-    }
-    if (typeof crypto.timingSafeEqual === 'function') {
-        return crypto.timingSafeEqual(lhs, rhs);
-    }
-    let result = 0;
-    for (let i = 0; i < lhs.length; i++) {
-        result |= lhs[i] ^ rhs[i];
-    }
-    return result === 0;
-}
-class ScramSHA1 extends ScramSHA {
-    constructor() {
-        super('sha1');
-    }
-}
-exports.ScramSHA1 = ScramSHA1;
-class ScramSHA256 extends ScramSHA {
-    constructor() {
-        super('sha256');
-    }
-}
-exports.ScramSHA256 = ScramSHA256;
-//# sourceMappingURL=scram.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/scram.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/scram.js.map
deleted file mode 100644
index 4f93930c92e14a1eacc7cdcde7652a60bc74ba69..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/scram.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"scram.js","sourceRoot":"","sources":["../../../src/cmap/auth/scram.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/x509.js b/server/data-import/node_modules/mongodb/lib/cmap/auth/x509.js
deleted file mode 100644
index 7c5ac5b39ca94b20d3f568768dbe21fd86a1f970..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/x509.js
+++ /dev/null
@@ -1,36 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.X509 = void 0;
-const error_1 = require("../../error");
-const utils_1 = require("../../utils");
-const auth_provider_1 = require("./auth_provider");
-class X509 extends auth_provider_1.AuthProvider {
-    async prepare(handshakeDoc, authContext) {
-        const { credentials } = authContext;
-        if (!credentials) {
-            throw new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.');
-        }
-        return { ...handshakeDoc, speculativeAuthenticate: x509AuthenticateCommand(credentials) };
-    }
-    async auth(authContext) {
-        const connection = authContext.connection;
-        const credentials = authContext.credentials;
-        if (!credentials) {
-            throw new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.');
-        }
-        const response = authContext.response;
-        if (response?.speculativeAuthenticate) {
-            return;
-        }
-        await connection.commandAsync((0, utils_1.ns)('$external.$cmd'), x509AuthenticateCommand(credentials), undefined);
-    }
-}
-exports.X509 = X509;
-function x509AuthenticateCommand(credentials) {
-    const command = { authenticate: 1, mechanism: 'MONGODB-X509' };
-    if (credentials.username) {
-        command.user = credentials.username;
-    }
-    return command;
-}
-//# sourceMappingURL=x509.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/auth/x509.js.map b/server/data-import/node_modules/mongodb/lib/cmap/auth/x509.js.map
deleted file mode 100644
index f4915eb332bb42780824d7a64d6cad3efffdc503..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/auth/x509.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"x509.js","sourceRoot":"","sources":["../../../src/cmap/auth/x509.ts"],"names":[],"mappings":";;;AACA,uCAA2D;AAC3D,uCAAiC;AAEjC,mDAAiE;AAGjE,MAAa,IAAK,SAAQ,4BAAY;IAC3B,KAAK,CAAC,OAAO,CACpB,YAA+B,EAC/B,WAAwB;QAExB,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,oCAA4B,CAAC,uCAAuC,CAAC,CAAC;SACjF;QACD,OAAO,EAAE,GAAG,YAAY,EAAE,uBAAuB,EAAE,uBAAuB,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5F,CAAC;IAEQ,KAAK,CAAC,IAAI,CAAC,WAAwB;QAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;QAC1C,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,oCAA4B,CAAC,uCAAuC,CAAC,CAAC;SACjF;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;QAEtC,IAAI,QAAQ,EAAE,uBAAuB,EAAE;YACrC,OAAO;SACR;QAED,MAAM,UAAU,CAAC,YAAY,CAC3B,IAAA,UAAE,EAAC,gBAAgB,CAAC,EACpB,uBAAuB,CAAC,WAAW,CAAC,EACpC,SAAS,CACV,CAAC;IACJ,CAAC;CACF;AA9BD,oBA8BC;AAED,SAAS,uBAAuB,CAAC,WAA6B;IAC5D,MAAM,OAAO,GAAa,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;IACzE,IAAI,WAAW,CAAC,QAAQ,EAAE;QACxB,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC;KACrC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/command_monitoring_events.js b/server/data-import/node_modules/mongodb/lib/cmap/command_monitoring_events.js
deleted file mode 100644
index 181d515da0a211cfa3c46bb00015ad60ec96c108..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/command_monitoring_events.js
+++ /dev/null
@@ -1,250 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.SENSITIVE_COMMANDS = exports.CommandFailedEvent = exports.CommandSucceededEvent = exports.CommandStartedEvent = void 0;
-const constants_1 = require("../constants");
-const utils_1 = require("../utils");
-const commands_1 = require("./commands");
-/**
- * An event indicating the start of a given command
- * @public
- * @category Event
- */
-class CommandStartedEvent {
-    /**
-     * Create a started event
-     *
-     * @internal
-     * @param pool - the pool that originated the command
-     * @param command - the command
-     */
-    constructor(connection, command) {
-        /** @internal */
-        this.name = constants_1.COMMAND_STARTED;
-        const cmd = extractCommand(command);
-        const commandName = extractCommandName(cmd);
-        const { address, connectionId, serviceId } = extractConnectionDetails(connection);
-        // TODO: remove in major revision, this is not spec behavior
-        if (exports.SENSITIVE_COMMANDS.has(commandName)) {
-            this.commandObj = {};
-            this.commandObj[commandName] = true;
-        }
-        this.address = address;
-        this.connectionId = connectionId;
-        this.serviceId = serviceId;
-        this.requestId = command.requestId;
-        this.databaseName = command.databaseName;
-        this.commandName = commandName;
-        this.command = maybeRedact(commandName, cmd, cmd);
-    }
-    /* @internal */
-    get hasServiceId() {
-        return !!this.serviceId;
-    }
-}
-exports.CommandStartedEvent = CommandStartedEvent;
-/**
- * An event indicating the success of a given command
- * @public
- * @category Event
- */
-class CommandSucceededEvent {
-    /**
-     * Create a succeeded event
-     *
-     * @internal
-     * @param pool - the pool that originated the command
-     * @param command - the command
-     * @param reply - the reply for this command from the server
-     * @param started - a high resolution tuple timestamp of when the command was first sent, to calculate duration
-     */
-    constructor(connection, command, reply, started) {
-        /** @internal */
-        this.name = constants_1.COMMAND_SUCCEEDED;
-        const cmd = extractCommand(command);
-        const commandName = extractCommandName(cmd);
-        const { address, connectionId, serviceId } = extractConnectionDetails(connection);
-        this.address = address;
-        this.connectionId = connectionId;
-        this.serviceId = serviceId;
-        this.requestId = command.requestId;
-        this.commandName = commandName;
-        this.duration = (0, utils_1.calculateDurationInMs)(started);
-        this.reply = maybeRedact(commandName, cmd, extractReply(command, reply));
-    }
-    /* @internal */
-    get hasServiceId() {
-        return !!this.serviceId;
-    }
-}
-exports.CommandSucceededEvent = CommandSucceededEvent;
-/**
- * An event indicating the failure of a given command
- * @public
- * @category Event
- */
-class CommandFailedEvent {
-    /**
-     * Create a failure event
-     *
-     * @internal
-     * @param pool - the pool that originated the command
-     * @param command - the command
-     * @param error - the generated error or a server error response
-     * @param started - a high resolution tuple timestamp of when the command was first sent, to calculate duration
-     */
-    constructor(connection, command, error, started) {
-        /** @internal */
-        this.name = constants_1.COMMAND_FAILED;
-        const cmd = extractCommand(command);
-        const commandName = extractCommandName(cmd);
-        const { address, connectionId, serviceId } = extractConnectionDetails(connection);
-        this.address = address;
-        this.connectionId = connectionId;
-        this.serviceId = serviceId;
-        this.requestId = command.requestId;
-        this.commandName = commandName;
-        this.duration = (0, utils_1.calculateDurationInMs)(started);
-        this.failure = maybeRedact(commandName, cmd, error);
-    }
-    /* @internal */
-    get hasServiceId() {
-        return !!this.serviceId;
-    }
-}
-exports.CommandFailedEvent = CommandFailedEvent;
-/**
- * Commands that we want to redact because of the sensitive nature of their contents
- * @internal
- */
-exports.SENSITIVE_COMMANDS = new Set([
-    'authenticate',
-    'saslStart',
-    'saslContinue',
-    'getnonce',
-    'createUser',
-    'updateUser',
-    'copydbgetnonce',
-    'copydbsaslstart',
-    'copydb'
-]);
-const HELLO_COMMANDS = new Set(['hello', constants_1.LEGACY_HELLO_COMMAND, constants_1.LEGACY_HELLO_COMMAND_CAMEL_CASE]);
-// helper methods
-const extractCommandName = (commandDoc) => Object.keys(commandDoc)[0];
-const namespace = (command) => command.ns;
-const collectionName = (command) => command.ns.split('.')[1];
-const maybeRedact = (commandName, commandDoc, result) => exports.SENSITIVE_COMMANDS.has(commandName) ||
-    (HELLO_COMMANDS.has(commandName) && commandDoc.speculativeAuthenticate)
-    ? {}
-    : result;
-const LEGACY_FIND_QUERY_MAP = {
-    $query: 'filter',
-    $orderby: 'sort',
-    $hint: 'hint',
-    $comment: 'comment',
-    $maxScan: 'maxScan',
-    $max: 'max',
-    $min: 'min',
-    $returnKey: 'returnKey',
-    $showDiskLoc: 'showRecordId',
-    $maxTimeMS: 'maxTimeMS',
-    $snapshot: 'snapshot'
-};
-const LEGACY_FIND_OPTIONS_MAP = {
-    numberToSkip: 'skip',
-    numberToReturn: 'batchSize',
-    returnFieldSelector: 'projection'
-};
-const OP_QUERY_KEYS = [
-    'tailable',
-    'oplogReplay',
-    'noCursorTimeout',
-    'awaitData',
-    'partial',
-    'exhaust'
-];
-/** Extract the actual command from the query, possibly up-converting if it's a legacy format */
-function extractCommand(command) {
-    if (command instanceof commands_1.OpMsgRequest) {
-        return (0, utils_1.deepCopy)(command.command);
-    }
-    if (command.query?.$query) {
-        let result;
-        if (command.ns === 'admin.$cmd') {
-            // up-convert legacy command
-            result = Object.assign({}, command.query.$query);
-        }
-        else {
-            // up-convert legacy find command
-            result = { find: collectionName(command) };
-            Object.keys(LEGACY_FIND_QUERY_MAP).forEach(key => {
-                if (command.query[key] != null) {
-                    result[LEGACY_FIND_QUERY_MAP[key]] = (0, utils_1.deepCopy)(command.query[key]);
-                }
-            });
-        }
-        Object.keys(LEGACY_FIND_OPTIONS_MAP).forEach(key => {
-            const legacyKey = key;
-            if (command[legacyKey] != null) {
-                result[LEGACY_FIND_OPTIONS_MAP[legacyKey]] = (0, utils_1.deepCopy)(command[legacyKey]);
-            }
-        });
-        OP_QUERY_KEYS.forEach(key => {
-            if (command[key]) {
-                result[key] = command[key];
-            }
-        });
-        if (command.pre32Limit != null) {
-            result.limit = command.pre32Limit;
-        }
-        if (command.query.$explain) {
-            return { explain: result };
-        }
-        return result;
-    }
-    const clonedQuery = {};
-    const clonedCommand = {};
-    if (command.query) {
-        for (const k in command.query) {
-            clonedQuery[k] = (0, utils_1.deepCopy)(command.query[k]);
-        }
-        clonedCommand.query = clonedQuery;
-    }
-    for (const k in command) {
-        if (k === 'query')
-            continue;
-        clonedCommand[k] = (0, utils_1.deepCopy)(command[k]);
-    }
-    return command.query ? clonedQuery : clonedCommand;
-}
-function extractReply(command, reply) {
-    if (!reply) {
-        return reply;
-    }
-    if (command instanceof commands_1.OpMsgRequest) {
-        return (0, utils_1.deepCopy)(reply.result ? reply.result : reply);
-    }
-    // is this a legacy find command?
-    if (command.query && command.query.$query != null) {
-        return {
-            ok: 1,
-            cursor: {
-                id: (0, utils_1.deepCopy)(reply.cursorId),
-                ns: namespace(command),
-                firstBatch: (0, utils_1.deepCopy)(reply.documents)
-            }
-        };
-    }
-    return (0, utils_1.deepCopy)(reply.result ? reply.result : reply);
-}
-function extractConnectionDetails(connection) {
-    let connectionId;
-    if ('id' in connection) {
-        connectionId = connection.id;
-    }
-    return {
-        address: connection.address,
-        serviceId: connection.serviceId,
-        connectionId
-    };
-}
-//# sourceMappingURL=command_monitoring_events.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map b/server/data-import/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map
deleted file mode 100644
index 19d3b272e314cd9ea0b46315cfc3eb9161c174e2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"command_monitoring_events.js","sourceRoot":"","sources":["../../src/cmap/command_monitoring_events.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/commands.js b/server/data-import/node_modules/mongodb/lib/cmap/commands.js
deleted file mode 100644
index 4ea39cca5c3c0ca630667cfe0ea3960a01747707..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/commands.js
+++ /dev/null
@@ -1,533 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.OpCompressedRequest = exports.OpMsgResponse = exports.OpMsgRequest = exports.OpQueryResponse = exports.OpQueryRequest = void 0;
-const BSON = require("../bson");
-const error_1 = require("../error");
-const read_preference_1 = require("../read_preference");
-const compression_1 = require("./wire_protocol/compression");
-const constants_1 = require("./wire_protocol/constants");
-// Incrementing request id
-let _requestId = 0;
-// Query flags
-const OPTS_TAILABLE_CURSOR = 2;
-const OPTS_SECONDARY = 4;
-const OPTS_OPLOG_REPLAY = 8;
-const OPTS_NO_CURSOR_TIMEOUT = 16;
-const OPTS_AWAIT_DATA = 32;
-const OPTS_EXHAUST = 64;
-const OPTS_PARTIAL = 128;
-// Response flags
-const CURSOR_NOT_FOUND = 1;
-const QUERY_FAILURE = 2;
-const SHARD_CONFIG_STALE = 4;
-const AWAIT_CAPABLE = 8;
-/**************************************************************
- * QUERY
- **************************************************************/
-/** @internal */
-class OpQueryRequest {
-    constructor(databaseName, query, options) {
-        this.databaseName = databaseName;
-        this.query = query;
-        // Basic options needed to be passed in
-        // TODO(NODE-3483): Replace with MongoCommandError
-        const ns = `${databaseName}.$cmd`;
-        if (typeof databaseName !== 'string') {
-            throw new error_1.MongoRuntimeError('Database name must be a string for a query');
-        }
-        // TODO(NODE-3483): Replace with MongoCommandError
-        if (query == null)
-            throw new error_1.MongoRuntimeError('A query document must be specified for query');
-        // Validate that we are not passing 0x00 in the collection name
-        if (ns.indexOf('\x00') !== -1) {
-            // TODO(NODE-3483): Use MongoNamespace static method
-            throw new error_1.MongoRuntimeError('Namespace cannot contain a null character');
-        }
-        // Basic options
-        this.ns = ns;
-        // Additional options
-        this.numberToSkip = options.numberToSkip || 0;
-        this.numberToReturn = options.numberToReturn || 0;
-        this.returnFieldSelector = options.returnFieldSelector || undefined;
-        this.requestId = options.requestId ?? OpQueryRequest.getRequestId();
-        // special case for pre-3.2 find commands, delete ASAP
-        this.pre32Limit = options.pre32Limit;
-        // Serialization option
-        this.serializeFunctions =
-            typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-        this.ignoreUndefined =
-            typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : false;
-        this.maxBsonSize = options.maxBsonSize || 1024 * 1024 * 16;
-        this.checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-        this.batchSize = this.numberToReturn;
-        // Flags
-        this.tailable = false;
-        this.secondaryOk = typeof options.secondaryOk === 'boolean' ? options.secondaryOk : false;
-        this.oplogReplay = false;
-        this.noCursorTimeout = false;
-        this.awaitData = false;
-        this.exhaust = false;
-        this.partial = false;
-    }
-    /** Assign next request Id. */
-    incRequestId() {
-        this.requestId = _requestId++;
-    }
-    /** Peek next request Id. */
-    nextRequestId() {
-        return _requestId + 1;
-    }
-    /** Increment then return next request Id. */
-    static getRequestId() {
-        return ++_requestId;
-    }
-    // Uses a single allocated buffer for the process, avoiding multiple memory allocations
-    toBin() {
-        const buffers = [];
-        let projection = null;
-        // Set up the flags
-        let flags = 0;
-        if (this.tailable) {
-            flags |= OPTS_TAILABLE_CURSOR;
-        }
-        if (this.secondaryOk) {
-            flags |= OPTS_SECONDARY;
-        }
-        if (this.oplogReplay) {
-            flags |= OPTS_OPLOG_REPLAY;
-        }
-        if (this.noCursorTimeout) {
-            flags |= OPTS_NO_CURSOR_TIMEOUT;
-        }
-        if (this.awaitData) {
-            flags |= OPTS_AWAIT_DATA;
-        }
-        if (this.exhaust) {
-            flags |= OPTS_EXHAUST;
-        }
-        if (this.partial) {
-            flags |= OPTS_PARTIAL;
-        }
-        // If batchSize is different to this.numberToReturn
-        if (this.batchSize !== this.numberToReturn)
-            this.numberToReturn = this.batchSize;
-        // Allocate write protocol header buffer
-        const header = Buffer.alloc(4 * 4 + // Header
-            4 + // Flags
-            Buffer.byteLength(this.ns) +
-            1 + // namespace
-            4 + // numberToSkip
-            4 // numberToReturn
-        );
-        // Add header to buffers
-        buffers.push(header);
-        // Serialize the query
-        const query = BSON.serialize(this.query, {
-            checkKeys: this.checkKeys,
-            serializeFunctions: this.serializeFunctions,
-            ignoreUndefined: this.ignoreUndefined
-        });
-        // Add query document
-        buffers.push(query);
-        if (this.returnFieldSelector && Object.keys(this.returnFieldSelector).length > 0) {
-            // Serialize the projection document
-            projection = BSON.serialize(this.returnFieldSelector, {
-                checkKeys: this.checkKeys,
-                serializeFunctions: this.serializeFunctions,
-                ignoreUndefined: this.ignoreUndefined
-            });
-            // Add projection document
-            buffers.push(projection);
-        }
-        // Total message size
-        const totalLength = header.length + query.length + (projection ? projection.length : 0);
-        // Set up the index
-        let index = 4;
-        // Write total document length
-        header[3] = (totalLength >> 24) & 0xff;
-        header[2] = (totalLength >> 16) & 0xff;
-        header[1] = (totalLength >> 8) & 0xff;
-        header[0] = totalLength & 0xff;
-        // Write header information requestId
-        header[index + 3] = (this.requestId >> 24) & 0xff;
-        header[index + 2] = (this.requestId >> 16) & 0xff;
-        header[index + 1] = (this.requestId >> 8) & 0xff;
-        header[index] = this.requestId & 0xff;
-        index = index + 4;
-        // Write header information responseTo
-        header[index + 3] = (0 >> 24) & 0xff;
-        header[index + 2] = (0 >> 16) & 0xff;
-        header[index + 1] = (0 >> 8) & 0xff;
-        header[index] = 0 & 0xff;
-        index = index + 4;
-        // Write header information OP_QUERY
-        header[index + 3] = (constants_1.OP_QUERY >> 24) & 0xff;
-        header[index + 2] = (constants_1.OP_QUERY >> 16) & 0xff;
-        header[index + 1] = (constants_1.OP_QUERY >> 8) & 0xff;
-        header[index] = constants_1.OP_QUERY & 0xff;
-        index = index + 4;
-        // Write header information flags
-        header[index + 3] = (flags >> 24) & 0xff;
-        header[index + 2] = (flags >> 16) & 0xff;
-        header[index + 1] = (flags >> 8) & 0xff;
-        header[index] = flags & 0xff;
-        index = index + 4;
-        // Write collection name
-        index = index + header.write(this.ns, index, 'utf8') + 1;
-        header[index - 1] = 0;
-        // Write header information flags numberToSkip
-        header[index + 3] = (this.numberToSkip >> 24) & 0xff;
-        header[index + 2] = (this.numberToSkip >> 16) & 0xff;
-        header[index + 1] = (this.numberToSkip >> 8) & 0xff;
-        header[index] = this.numberToSkip & 0xff;
-        index = index + 4;
-        // Write header information flags numberToReturn
-        header[index + 3] = (this.numberToReturn >> 24) & 0xff;
-        header[index + 2] = (this.numberToReturn >> 16) & 0xff;
-        header[index + 1] = (this.numberToReturn >> 8) & 0xff;
-        header[index] = this.numberToReturn & 0xff;
-        index = index + 4;
-        // Return the buffers
-        return buffers;
-    }
-}
-exports.OpQueryRequest = OpQueryRequest;
-/** @internal */
-class OpQueryResponse {
-    constructor(message, msgHeader, msgBody, opts) {
-        this.documents = new Array(0);
-        this.parsed = false;
-        this.raw = message;
-        this.data = msgBody;
-        this.opts = opts ?? {
-            useBigInt64: false,
-            promoteLongs: true,
-            promoteValues: true,
-            promoteBuffers: false,
-            bsonRegExp: false
-        };
-        // Read the message header
-        this.length = msgHeader.length;
-        this.requestId = msgHeader.requestId;
-        this.responseTo = msgHeader.responseTo;
-        this.opCode = msgHeader.opCode;
-        this.fromCompressed = msgHeader.fromCompressed;
-        // Flag values
-        this.useBigInt64 = typeof this.opts.useBigInt64 === 'boolean' ? this.opts.useBigInt64 : false;
-        this.promoteLongs = typeof this.opts.promoteLongs === 'boolean' ? this.opts.promoteLongs : true;
-        this.promoteValues =
-            typeof this.opts.promoteValues === 'boolean' ? this.opts.promoteValues : true;
-        this.promoteBuffers =
-            typeof this.opts.promoteBuffers === 'boolean' ? this.opts.promoteBuffers : false;
-        this.bsonRegExp = typeof this.opts.bsonRegExp === 'boolean' ? this.opts.bsonRegExp : false;
-    }
-    isParsed() {
-        return this.parsed;
-    }
-    parse(options) {
-        // Don't parse again if not needed
-        if (this.parsed)
-            return;
-        options = options ?? {};
-        // Allow the return of raw documents instead of parsing
-        const raw = options.raw || false;
-        const documentsReturnedIn = options.documentsReturnedIn || null;
-        const useBigInt64 = options.useBigInt64 ?? this.opts.useBigInt64;
-        const promoteLongs = options.promoteLongs ?? this.opts.promoteLongs;
-        const promoteValues = options.promoteValues ?? this.opts.promoteValues;
-        const promoteBuffers = options.promoteBuffers ?? this.opts.promoteBuffers;
-        const bsonRegExp = options.bsonRegExp ?? this.opts.bsonRegExp;
-        let bsonSize;
-        // Set up the options
-        const _options = {
-            useBigInt64,
-            promoteLongs,
-            promoteValues,
-            promoteBuffers,
-            bsonRegExp
-        };
-        // Position within OP_REPLY at which documents start
-        // (See https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/#wire-op-reply)
-        this.index = 20;
-        // Read the message body
-        this.responseFlags = this.data.readInt32LE(0);
-        this.cursorId = new BSON.Long(this.data.readInt32LE(4), this.data.readInt32LE(8));
-        this.startingFrom = this.data.readInt32LE(12);
-        this.numberReturned = this.data.readInt32LE(16);
-        // Preallocate document array
-        this.documents = new Array(this.numberReturned);
-        this.cursorNotFound = (this.responseFlags & CURSOR_NOT_FOUND) !== 0;
-        this.queryFailure = (this.responseFlags & QUERY_FAILURE) !== 0;
-        this.shardConfigStale = (this.responseFlags & SHARD_CONFIG_STALE) !== 0;
-        this.awaitCapable = (this.responseFlags & AWAIT_CAPABLE) !== 0;
-        // Parse Body
-        for (let i = 0; i < this.numberReturned; i++) {
-            bsonSize =
-                this.data[this.index] |
-                    (this.data[this.index + 1] << 8) |
-                    (this.data[this.index + 2] << 16) |
-                    (this.data[this.index + 3] << 24);
-            // If we have raw results specified slice the return document
-            if (raw) {
-                this.documents[i] = this.data.slice(this.index, this.index + bsonSize);
-            }
-            else {
-                this.documents[i] = BSON.deserialize(this.data.slice(this.index, this.index + bsonSize), _options);
-            }
-            // Adjust the index
-            this.index = this.index + bsonSize;
-        }
-        if (this.documents.length === 1 && documentsReturnedIn != null && raw) {
-            const fieldsAsRaw = {};
-            fieldsAsRaw[documentsReturnedIn] = true;
-            _options.fieldsAsRaw = fieldsAsRaw;
-            const doc = BSON.deserialize(this.documents[0], _options);
-            this.documents = [doc];
-        }
-        // Set parsed
-        this.parsed = true;
-    }
-}
-exports.OpQueryResponse = OpQueryResponse;
-// Implementation of OP_MSG spec:
-// https://github.com/mongodb/specifications/blob/master/source/message/OP_MSG.rst
-//
-// struct Section {
-//   uint8 payloadType;
-//   union payload {
-//       document  document; // payloadType == 0
-//       struct sequence { // payloadType == 1
-//           int32      size;
-//           cstring    identifier;
-//           document*  documents;
-//       };
-//   };
-// };
-// struct OP_MSG {
-//   struct MsgHeader {
-//       int32  messageLength;
-//       int32  requestID;
-//       int32  responseTo;
-//       int32  opCode = 2013;
-//   };
-//   uint32      flagBits;
-//   Section+    sections;
-//   [uint32     checksum;]
-// };
-// Msg Flags
-const OPTS_CHECKSUM_PRESENT = 1;
-const OPTS_MORE_TO_COME = 2;
-const OPTS_EXHAUST_ALLOWED = 1 << 16;
-/** @internal */
-class OpMsgRequest {
-    constructor(databaseName, command, options) {
-        this.databaseName = databaseName;
-        this.command = command;
-        this.options = options;
-        // Basic options needed to be passed in
-        if (command == null)
-            throw new error_1.MongoInvalidArgumentError('Query document must be specified for query');
-        // Basic options
-        this.command.$db = databaseName;
-        if (options.readPreference && options.readPreference.mode !== read_preference_1.ReadPreference.PRIMARY) {
-            this.command.$readPreference = options.readPreference.toJSON();
-        }
-        // Ensure empty options
-        this.options = options ?? {};
-        // Additional options
-        this.requestId = options.requestId ? options.requestId : OpMsgRequest.getRequestId();
-        // Serialization option
-        this.serializeFunctions =
-            typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-        this.ignoreUndefined =
-            typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : false;
-        this.checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-        this.maxBsonSize = options.maxBsonSize || 1024 * 1024 * 16;
-        // flags
-        this.checksumPresent = false;
-        this.moreToCome = options.moreToCome || false;
-        this.exhaustAllowed =
-            typeof options.exhaustAllowed === 'boolean' ? options.exhaustAllowed : false;
-    }
-    toBin() {
-        const buffers = [];
-        let flags = 0;
-        if (this.checksumPresent) {
-            flags |= OPTS_CHECKSUM_PRESENT;
-        }
-        if (this.moreToCome) {
-            flags |= OPTS_MORE_TO_COME;
-        }
-        if (this.exhaustAllowed) {
-            flags |= OPTS_EXHAUST_ALLOWED;
-        }
-        const header = Buffer.alloc(4 * 4 + // Header
-            4 // Flags
-        );
-        buffers.push(header);
-        let totalLength = header.length;
-        const command = this.command;
-        totalLength += this.makeDocumentSegment(buffers, command);
-        header.writeInt32LE(totalLength, 0); // messageLength
-        header.writeInt32LE(this.requestId, 4); // requestID
-        header.writeInt32LE(0, 8); // responseTo
-        header.writeInt32LE(constants_1.OP_MSG, 12); // opCode
-        header.writeUInt32LE(flags, 16); // flags
-        return buffers;
-    }
-    makeDocumentSegment(buffers, document) {
-        const payloadTypeBuffer = Buffer.alloc(1);
-        payloadTypeBuffer[0] = 0;
-        const documentBuffer = this.serializeBson(document);
-        buffers.push(payloadTypeBuffer);
-        buffers.push(documentBuffer);
-        return payloadTypeBuffer.length + documentBuffer.length;
-    }
-    serializeBson(document) {
-        return BSON.serialize(document, {
-            checkKeys: this.checkKeys,
-            serializeFunctions: this.serializeFunctions,
-            ignoreUndefined: this.ignoreUndefined
-        });
-    }
-    static getRequestId() {
-        _requestId = (_requestId + 1) & 0x7fffffff;
-        return _requestId;
-    }
-}
-exports.OpMsgRequest = OpMsgRequest;
-/** @internal */
-class OpMsgResponse {
-    constructor(message, msgHeader, msgBody, opts) {
-        this.parsed = false;
-        this.raw = message;
-        this.data = msgBody;
-        this.opts = opts ?? {
-            useBigInt64: false,
-            promoteLongs: true,
-            promoteValues: true,
-            promoteBuffers: false,
-            bsonRegExp: false
-        };
-        // Read the message header
-        this.length = msgHeader.length;
-        this.requestId = msgHeader.requestId;
-        this.responseTo = msgHeader.responseTo;
-        this.opCode = msgHeader.opCode;
-        this.fromCompressed = msgHeader.fromCompressed;
-        // Read response flags
-        this.responseFlags = msgBody.readInt32LE(0);
-        this.checksumPresent = (this.responseFlags & OPTS_CHECKSUM_PRESENT) !== 0;
-        this.moreToCome = (this.responseFlags & OPTS_MORE_TO_COME) !== 0;
-        this.exhaustAllowed = (this.responseFlags & OPTS_EXHAUST_ALLOWED) !== 0;
-        this.useBigInt64 = typeof this.opts.useBigInt64 === 'boolean' ? this.opts.useBigInt64 : false;
-        this.promoteLongs = typeof this.opts.promoteLongs === 'boolean' ? this.opts.promoteLongs : true;
-        this.promoteValues =
-            typeof this.opts.promoteValues === 'boolean' ? this.opts.promoteValues : true;
-        this.promoteBuffers =
-            typeof this.opts.promoteBuffers === 'boolean' ? this.opts.promoteBuffers : false;
-        this.bsonRegExp = typeof this.opts.bsonRegExp === 'boolean' ? this.opts.bsonRegExp : false;
-        this.documents = [];
-    }
-    isParsed() {
-        return this.parsed;
-    }
-    parse(options) {
-        // Don't parse again if not needed
-        if (this.parsed)
-            return;
-        options = options ?? {};
-        this.index = 4;
-        // Allow the return of raw documents instead of parsing
-        const raw = options.raw || false;
-        const documentsReturnedIn = options.documentsReturnedIn || null;
-        const useBigInt64 = options.useBigInt64 ?? this.opts.useBigInt64;
-        const promoteLongs = options.promoteLongs ?? this.opts.promoteLongs;
-        const promoteValues = options.promoteValues ?? this.opts.promoteValues;
-        const promoteBuffers = options.promoteBuffers ?? this.opts.promoteBuffers;
-        const bsonRegExp = options.bsonRegExp ?? this.opts.bsonRegExp;
-        const validation = this.parseBsonSerializationOptions(options);
-        // Set up the options
-        const bsonOptions = {
-            useBigInt64,
-            promoteLongs,
-            promoteValues,
-            promoteBuffers,
-            bsonRegExp,
-            validation
-            // Due to the strictness of the BSON libraries validation option we need this cast
-        };
-        while (this.index < this.data.length) {
-            const payloadType = this.data.readUInt8(this.index++);
-            if (payloadType === 0) {
-                const bsonSize = this.data.readUInt32LE(this.index);
-                const bin = this.data.slice(this.index, this.index + bsonSize);
-                this.documents.push(raw ? bin : BSON.deserialize(bin, bsonOptions));
-                this.index += bsonSize;
-            }
-            else if (payloadType === 1) {
-                // It was decided that no driver makes use of payload type 1
-                // TODO(NODE-3483): Replace with MongoDeprecationError
-                throw new error_1.MongoRuntimeError('OP_MSG Payload Type 1 detected unsupported protocol');
-            }
-        }
-        if (this.documents.length === 1 && documentsReturnedIn != null && raw) {
-            const fieldsAsRaw = {};
-            fieldsAsRaw[documentsReturnedIn] = true;
-            bsonOptions.fieldsAsRaw = fieldsAsRaw;
-            const doc = BSON.deserialize(this.documents[0], bsonOptions);
-            this.documents = [doc];
-        }
-        this.parsed = true;
-    }
-    parseBsonSerializationOptions({ enableUtf8Validation }) {
-        if (enableUtf8Validation === false) {
-            return { utf8: false };
-        }
-        return { utf8: { writeErrors: false } };
-    }
-}
-exports.OpMsgResponse = OpMsgResponse;
-const MESSAGE_HEADER_SIZE = 16;
-const COMPRESSION_DETAILS_SIZE = 9; // originalOpcode + uncompressedSize, compressorID
-/**
- * @internal
- *
- * An OP_COMPRESSED request wraps either an OP_QUERY or OP_MSG message.
- */
-class OpCompressedRequest {
-    constructor(command, options) {
-        this.command = command;
-        this.options = options;
-    }
-    // Return whether a command contains an uncompressible command term
-    // Will return true if command contains no uncompressible command terms
-    static canCompress(command) {
-        const commandDoc = command instanceof OpMsgRequest ? command.command : command.query;
-        const commandName = Object.keys(commandDoc)[0];
-        return !compression_1.uncompressibleCommands.has(commandName);
-    }
-    async toBin() {
-        const concatenatedOriginalCommandBuffer = Buffer.concat(this.command.toBin());
-        // otherwise, compress the message
-        const messageToBeCompressed = concatenatedOriginalCommandBuffer.slice(MESSAGE_HEADER_SIZE);
-        // Extract information needed for OP_COMPRESSED from the uncompressed message
-        const originalCommandOpCode = concatenatedOriginalCommandBuffer.readInt32LE(12);
-        // Compress the message body
-        const compressedMessage = await (0, compression_1.compress)(this.options, messageToBeCompressed);
-        // Create the msgHeader of OP_COMPRESSED
-        const msgHeader = Buffer.alloc(MESSAGE_HEADER_SIZE);
-        msgHeader.writeInt32LE(MESSAGE_HEADER_SIZE + COMPRESSION_DETAILS_SIZE + compressedMessage.length, 0); // messageLength
-        msgHeader.writeInt32LE(this.command.requestId, 4); // requestID
-        msgHeader.writeInt32LE(0, 8); // responseTo (zero)
-        msgHeader.writeInt32LE(constants_1.OP_COMPRESSED, 12); // opCode
-        // Create the compression details of OP_COMPRESSED
-        const compressionDetails = Buffer.alloc(COMPRESSION_DETAILS_SIZE);
-        compressionDetails.writeInt32LE(originalCommandOpCode, 0); // originalOpcode
-        compressionDetails.writeInt32LE(messageToBeCompressed.length, 4); // Size of the uncompressed compressedMessage, excluding the MsgHeader
-        compressionDetails.writeUInt8(compression_1.Compressor[this.options.agreedCompressor], 8); // compressorID
-        return [msgHeader, compressionDetails, compressedMessage];
-    }
-}
-exports.OpCompressedRequest = OpCompressedRequest;
-//# sourceMappingURL=commands.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/commands.js.map b/server/data-import/node_modules/mongodb/lib/cmap/commands.js.map
deleted file mode 100644
index 8eeb0338142a4934b89355eb730627ca3659c439..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/commands.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cmap/commands.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/connect.js b/server/data-import/node_modules/mongodb/lib/cmap/connect.js
deleted file mode 100644
index bcee82ad58ad2686f11dd1d19d18d38449a41406..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/connect.js
+++ /dev/null
@@ -1,390 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.LEGAL_TCP_SOCKET_OPTIONS = exports.LEGAL_TLS_SOCKET_OPTIONS = exports.prepareHandshakeDocument = exports.connect = exports.AUTH_PROVIDERS = void 0;
-const net = require("net");
-const tls = require("tls");
-const constants_1 = require("../constants");
-const deps_1 = require("../deps");
-const error_1 = require("../error");
-const utils_1 = require("../utils");
-const auth_provider_1 = require("./auth/auth_provider");
-const gssapi_1 = require("./auth/gssapi");
-const mongocr_1 = require("./auth/mongocr");
-const mongodb_aws_1 = require("./auth/mongodb_aws");
-const mongodb_oidc_1 = require("./auth/mongodb_oidc");
-const plain_1 = require("./auth/plain");
-const providers_1 = require("./auth/providers");
-const scram_1 = require("./auth/scram");
-const x509_1 = require("./auth/x509");
-const connection_1 = require("./connection");
-const constants_2 = require("./wire_protocol/constants");
-/** @internal */
-exports.AUTH_PROVIDERS = new Map([
-    [providers_1.AuthMechanism.MONGODB_AWS, new mongodb_aws_1.MongoDBAWS()],
-    [providers_1.AuthMechanism.MONGODB_CR, new mongocr_1.MongoCR()],
-    [providers_1.AuthMechanism.MONGODB_GSSAPI, new gssapi_1.GSSAPI()],
-    [providers_1.AuthMechanism.MONGODB_OIDC, new mongodb_oidc_1.MongoDBOIDC()],
-    [providers_1.AuthMechanism.MONGODB_PLAIN, new plain_1.Plain()],
-    [providers_1.AuthMechanism.MONGODB_SCRAM_SHA1, new scram_1.ScramSHA1()],
-    [providers_1.AuthMechanism.MONGODB_SCRAM_SHA256, new scram_1.ScramSHA256()],
-    [providers_1.AuthMechanism.MONGODB_X509, new x509_1.X509()]
-]);
-function connect(options, callback) {
-    makeConnection({ ...options, existingSocket: undefined }, (err, socket) => {
-        if (err || !socket) {
-            return callback(err);
-        }
-        let ConnectionType = options.connectionType ?? connection_1.Connection;
-        if (options.autoEncrypter) {
-            ConnectionType = connection_1.CryptoConnection;
-        }
-        const connection = new ConnectionType(socket, options);
-        performInitialHandshake(connection, options).then(() => callback(undefined, connection), error => {
-            connection.destroy({ force: false });
-            callback(error);
-        });
-    });
-}
-exports.connect = connect;
-function checkSupportedServer(hello, options) {
-    const maxWireVersion = Number(hello.maxWireVersion);
-    const minWireVersion = Number(hello.minWireVersion);
-    const serverVersionHighEnough = !Number.isNaN(maxWireVersion) && maxWireVersion >= constants_2.MIN_SUPPORTED_WIRE_VERSION;
-    const serverVersionLowEnough = !Number.isNaN(minWireVersion) && minWireVersion <= constants_2.MAX_SUPPORTED_WIRE_VERSION;
-    if (serverVersionHighEnough) {
-        if (serverVersionLowEnough) {
-            return null;
-        }
-        const message = `Server at ${options.hostAddress} reports minimum wire version ${JSON.stringify(hello.minWireVersion)}, but this version of the Node.js Driver requires at most ${constants_2.MAX_SUPPORTED_WIRE_VERSION} (MongoDB ${constants_2.MAX_SUPPORTED_SERVER_VERSION})`;
-        return new error_1.MongoCompatibilityError(message);
-    }
-    const message = `Server at ${options.hostAddress} reports maximum wire version ${JSON.stringify(hello.maxWireVersion) ?? 0}, but this version of the Node.js Driver requires at least ${constants_2.MIN_SUPPORTED_WIRE_VERSION} (MongoDB ${constants_2.MIN_SUPPORTED_SERVER_VERSION})`;
-    return new error_1.MongoCompatibilityError(message);
-}
-async function performInitialHandshake(conn, options) {
-    const credentials = options.credentials;
-    if (credentials) {
-        if (!(credentials.mechanism === providers_1.AuthMechanism.MONGODB_DEFAULT) &&
-            !exports.AUTH_PROVIDERS.get(credentials.mechanism)) {
-            throw new error_1.MongoInvalidArgumentError(`AuthMechanism '${credentials.mechanism}' not supported`);
-        }
-    }
-    const authContext = new auth_provider_1.AuthContext(conn, credentials, options);
-    conn.authContext = authContext;
-    const handshakeDoc = await prepareHandshakeDocument(authContext);
-    // @ts-expect-error: TODO(NODE-5141): The options need to be filtered properly, Connection options differ from Command options
-    const handshakeOptions = { ...options };
-    if (typeof options.connectTimeoutMS === 'number') {
-        // The handshake technically is a monitoring check, so its socket timeout should be connectTimeoutMS
-        handshakeOptions.socketTimeoutMS = options.connectTimeoutMS;
-    }
-    const start = new Date().getTime();
-    const response = await conn.commandAsync((0, utils_1.ns)('admin.$cmd'), handshakeDoc, handshakeOptions);
-    if (!('isWritablePrimary' in response)) {
-        // Provide hello-style response document.
-        response.isWritablePrimary = response[constants_1.LEGACY_HELLO_COMMAND];
-    }
-    if (response.helloOk) {
-        conn.helloOk = true;
-    }
-    const supportedServerErr = checkSupportedServer(response, options);
-    if (supportedServerErr) {
-        throw supportedServerErr;
-    }
-    if (options.loadBalanced) {
-        if (!response.serviceId) {
-            throw new error_1.MongoCompatibilityError('Driver attempted to initialize in load balancing mode, ' +
-                'but the server does not support this mode.');
-        }
-    }
-    // NOTE: This is metadata attached to the connection while porting away from
-    //       handshake being done in the `Server` class. Likely, it should be
-    //       relocated, or at very least restructured.
-    conn.hello = response;
-    conn.lastHelloMS = new Date().getTime() - start;
-    if (!response.arbiterOnly && credentials) {
-        // store the response on auth context
-        authContext.response = response;
-        const resolvedCredentials = credentials.resolveAuthMechanism(response);
-        const provider = exports.AUTH_PROVIDERS.get(resolvedCredentials.mechanism);
-        if (!provider) {
-            throw new error_1.MongoInvalidArgumentError(`No AuthProvider for ${resolvedCredentials.mechanism} defined.`);
-        }
-        try {
-            await provider.auth(authContext);
-        }
-        catch (error) {
-            if (error instanceof error_1.MongoError) {
-                error.addErrorLabel(error_1.MongoErrorLabel.HandshakeError);
-                if ((0, error_1.needsRetryableWriteLabel)(error, response.maxWireVersion)) {
-                    error.addErrorLabel(error_1.MongoErrorLabel.RetryableWriteError);
-                }
-            }
-            throw error;
-        }
-    }
-}
-/**
- * @internal
- *
- * This function is only exposed for testing purposes.
- */
-async function prepareHandshakeDocument(authContext) {
-    const options = authContext.options;
-    const compressors = options.compressors ? options.compressors : [];
-    const { serverApi } = authContext.connection;
-    const handshakeDoc = {
-        [serverApi?.version || options.loadBalanced === true ? 'hello' : constants_1.LEGACY_HELLO_COMMAND]: 1,
-        helloOk: true,
-        client: options.metadata,
-        compression: compressors
-    };
-    if (options.loadBalanced === true) {
-        handshakeDoc.loadBalanced = true;
-    }
-    const credentials = authContext.credentials;
-    if (credentials) {
-        if (credentials.mechanism === providers_1.AuthMechanism.MONGODB_DEFAULT && credentials.username) {
-            handshakeDoc.saslSupportedMechs = `${credentials.source}.${credentials.username}`;
-            const provider = exports.AUTH_PROVIDERS.get(providers_1.AuthMechanism.MONGODB_SCRAM_SHA256);
-            if (!provider) {
-                // This auth mechanism is always present.
-                throw new error_1.MongoInvalidArgumentError(`No AuthProvider for ${providers_1.AuthMechanism.MONGODB_SCRAM_SHA256} defined.`);
-            }
-            return provider.prepare(handshakeDoc, authContext);
-        }
-        const provider = exports.AUTH_PROVIDERS.get(credentials.mechanism);
-        if (!provider) {
-            throw new error_1.MongoInvalidArgumentError(`No AuthProvider for ${credentials.mechanism} defined.`);
-        }
-        return provider.prepare(handshakeDoc, authContext);
-    }
-    return handshakeDoc;
-}
-exports.prepareHandshakeDocument = prepareHandshakeDocument;
-/** @public */
-exports.LEGAL_TLS_SOCKET_OPTIONS = [
-    'ALPNProtocols',
-    'ca',
-    'cert',
-    'checkServerIdentity',
-    'ciphers',
-    'crl',
-    'ecdhCurve',
-    'key',
-    'minDHSize',
-    'passphrase',
-    'pfx',
-    'rejectUnauthorized',
-    'secureContext',
-    'secureProtocol',
-    'servername',
-    'session'
-];
-/** @public */
-exports.LEGAL_TCP_SOCKET_OPTIONS = [
-    'family',
-    'hints',
-    'localAddress',
-    'localPort',
-    'lookup'
-];
-function parseConnectOptions(options) {
-    const hostAddress = options.hostAddress;
-    if (!hostAddress)
-        throw new error_1.MongoInvalidArgumentError('Option "hostAddress" is required');
-    const result = {};
-    for (const name of exports.LEGAL_TCP_SOCKET_OPTIONS) {
-        if (options[name] != null) {
-            result[name] = options[name];
-        }
-    }
-    if (typeof hostAddress.socketPath === 'string') {
-        result.path = hostAddress.socketPath;
-        return result;
-    }
-    else if (typeof hostAddress.host === 'string') {
-        result.host = hostAddress.host;
-        result.port = hostAddress.port;
-        return result;
-    }
-    else {
-        // This should never happen since we set up HostAddresses
-        // But if we don't throw here the socket could hang until timeout
-        // TODO(NODE-3483)
-        throw new error_1.MongoRuntimeError(`Unexpected HostAddress ${JSON.stringify(hostAddress)}`);
-    }
-}
-function parseSslOptions(options) {
-    const result = parseConnectOptions(options);
-    // Merge in valid SSL options
-    for (const name of exports.LEGAL_TLS_SOCKET_OPTIONS) {
-        if (options[name] != null) {
-            result[name] = options[name];
-        }
-    }
-    if (options.existingSocket) {
-        result.socket = options.existingSocket;
-    }
-    // Set default sni servername to be the same as host
-    if (result.servername == null && result.host && !net.isIP(result.host)) {
-        result.servername = result.host;
-    }
-    return result;
-}
-const SOCKET_ERROR_EVENT_LIST = ['error', 'close', 'timeout', 'parseError'];
-const SOCKET_ERROR_EVENTS = new Set(SOCKET_ERROR_EVENT_LIST);
-function makeConnection(options, _callback) {
-    const useTLS = options.tls ?? false;
-    const noDelay = options.noDelay ?? true;
-    const connectTimeoutMS = options.connectTimeoutMS ?? 30000;
-    const rejectUnauthorized = options.rejectUnauthorized ?? true;
-    const existingSocket = options.existingSocket;
-    let socket;
-    const callback = function (err, ret) {
-        if (err && socket) {
-            socket.destroy();
-        }
-        _callback(err, ret);
-    };
-    if (options.proxyHost != null) {
-        // Currently, only Socks5 is supported.
-        return makeSocks5Connection({
-            ...options,
-            connectTimeoutMS // Should always be present for Socks5
-        }, callback);
-    }
-    if (useTLS) {
-        const tlsSocket = tls.connect(parseSslOptions(options));
-        if (typeof tlsSocket.disableRenegotiation === 'function') {
-            tlsSocket.disableRenegotiation();
-        }
-        socket = tlsSocket;
-    }
-    else if (existingSocket) {
-        // In the TLS case, parseSslOptions() sets options.socket to existingSocket,
-        // so we only need to handle the non-TLS case here (where existingSocket
-        // gives us all we need out of the box).
-        socket = existingSocket;
-    }
-    else {
-        socket = net.createConnection(parseConnectOptions(options));
-    }
-    socket.setKeepAlive(true, 300000);
-    socket.setTimeout(connectTimeoutMS);
-    socket.setNoDelay(noDelay);
-    const connectEvent = useTLS ? 'secureConnect' : 'connect';
-    let cancellationHandler;
-    function errorHandler(eventName) {
-        return (err) => {
-            SOCKET_ERROR_EVENTS.forEach(event => socket.removeAllListeners(event));
-            if (cancellationHandler && options.cancellationToken) {
-                options.cancellationToken.removeListener('cancel', cancellationHandler);
-            }
-            socket.removeListener(connectEvent, connectHandler);
-            callback(connectionFailureError(eventName, err));
-        };
-    }
-    function connectHandler() {
-        SOCKET_ERROR_EVENTS.forEach(event => socket.removeAllListeners(event));
-        if (cancellationHandler && options.cancellationToken) {
-            options.cancellationToken.removeListener('cancel', cancellationHandler);
-        }
-        if ('authorizationError' in socket) {
-            if (socket.authorizationError && rejectUnauthorized) {
-                // TODO(NODE-5192): wrap this with a MongoError subclass
-                return callback(socket.authorizationError);
-            }
-        }
-        socket.setTimeout(0);
-        callback(undefined, socket);
-    }
-    SOCKET_ERROR_EVENTS.forEach(event => socket.once(event, errorHandler(event)));
-    if (options.cancellationToken) {
-        cancellationHandler = errorHandler('cancel');
-        options.cancellationToken.once('cancel', cancellationHandler);
-    }
-    if (existingSocket) {
-        process.nextTick(connectHandler);
-    }
-    else {
-        socket.once(connectEvent, connectHandler);
-    }
-}
-let socks = null;
-function loadSocks() {
-    if (socks == null) {
-        const socksImport = (0, deps_1.getSocks)();
-        if ('kModuleError' in socksImport) {
-            throw socksImport.kModuleError;
-        }
-        socks = socksImport;
-    }
-    return socks;
-}
-function makeSocks5Connection(options, callback) {
-    const hostAddress = utils_1.HostAddress.fromHostPort(options.proxyHost ?? '', // proxyHost is guaranteed to set here
-    options.proxyPort ?? 1080);
-    // First, connect to the proxy server itself:
-    makeConnection({
-        ...options,
-        hostAddress,
-        tls: false,
-        proxyHost: undefined
-    }, (err, rawSocket) => {
-        if (err || !rawSocket) {
-            return callback(err);
-        }
-        const destination = parseConnectOptions(options);
-        if (typeof destination.host !== 'string' || typeof destination.port !== 'number') {
-            return callback(new error_1.MongoInvalidArgumentError('Can only make Socks5 connections to TCP hosts'));
-        }
-        try {
-            socks ??= loadSocks();
-        }
-        catch (error) {
-            return callback(error);
-        }
-        // Then, establish the Socks5 proxy connection:
-        socks.SocksClient.createConnection({
-            existing_socket: rawSocket,
-            timeout: options.connectTimeoutMS,
-            command: 'connect',
-            destination: {
-                host: destination.host,
-                port: destination.port
-            },
-            proxy: {
-                // host and port are ignored because we pass existing_socket
-                host: 'iLoveJavaScript',
-                port: 0,
-                type: 5,
-                userId: options.proxyUsername || undefined,
-                password: options.proxyPassword || undefined
-            }
-        }).then(({ socket }) => {
-            // Finally, now treat the resulting duplex stream as the
-            // socket over which we send and receive wire protocol messages:
-            makeConnection({
-                ...options,
-                existingSocket: socket,
-                proxyHost: undefined
-            }, callback);
-        }, error => callback(connectionFailureError('error', error)));
-    });
-}
-function connectionFailureError(type, err) {
-    switch (type) {
-        case 'error':
-            return new error_1.MongoNetworkError(error_1.MongoError.buildErrorMessage(err), { cause: err });
-        case 'timeout':
-            return new error_1.MongoNetworkTimeoutError('connection timed out');
-        case 'close':
-            return new error_1.MongoNetworkError('connection closed');
-        case 'cancel':
-            return new error_1.MongoNetworkError('connection establishment was cancelled');
-        default:
-            return new error_1.MongoNetworkError('unknown network error');
-    }
-}
-//# sourceMappingURL=connect.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/connect.js.map b/server/data-import/node_modules/mongodb/lib/cmap/connect.js.map
deleted file mode 100644
index a84f403432942122557df00c46794a3f54381ef9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/connect.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/cmap/connect.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/connection.js b/server/data-import/node_modules/mongodb/lib/cmap/connection.js
deleted file mode 100644
index 454ed30d51a04a078e33de94e139e891d3e80732..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/connection.js
+++ /dev/null
@@ -1,890 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.read = exports.readMany = exports.writeCommand = exports.readWireProtocolMessages = exports.ModernConnection = exports.hasSessionSupport = exports.CryptoConnection = exports.Connection = void 0;
-const events_1 = require("events");
-const stream_1 = require("stream");
-const timers_1 = require("timers");
-const util_1 = require("util");
-const constants_1 = require("../constants");
-const error_1 = require("../error");
-const mongo_types_1 = require("../mongo_types");
-const sessions_1 = require("../sessions");
-const utils_1 = require("../utils");
-const command_monitoring_events_1 = require("./command_monitoring_events");
-const commands_1 = require("./commands");
-const message_stream_1 = require("./message_stream");
-const stream_description_1 = require("./stream_description");
-const compression_1 = require("./wire_protocol/compression");
-const shared_1 = require("./wire_protocol/shared");
-/** @internal */
-const kStream = Symbol('stream');
-/** @internal */
-const kQueue = Symbol('queue');
-/** @internal */
-const kMessageStream = Symbol('messageStream');
-/** @internal */
-const kGeneration = Symbol('generation');
-/** @internal */
-const kLastUseTime = Symbol('lastUseTime');
-/** @internal */
-const kClusterTime = Symbol('clusterTime');
-/** @internal */
-const kDescription = Symbol('description');
-/** @internal */
-const kHello = Symbol('hello');
-/** @internal */
-const kAutoEncrypter = Symbol('autoEncrypter');
-/** @internal */
-const kDelayedTimeoutId = Symbol('delayedTimeoutId');
-const INVALID_QUEUE_SIZE = 'Connection internal queue contains more than 1 operation description';
-/** @internal */
-class Connection extends mongo_types_1.TypedEventEmitter {
-    constructor(stream, options) {
-        super();
-        this.commandAsync = (0, util_1.promisify)((ns, cmd, options, callback) => this.command(ns, cmd, options, callback));
-        this.id = options.id;
-        this.address = streamIdentifier(stream, options);
-        this.socketTimeoutMS = options.socketTimeoutMS ?? 0;
-        this.monitorCommands = options.monitorCommands;
-        this.serverApi = options.serverApi;
-        this.closed = false;
-        this[kHello] = null;
-        this[kClusterTime] = null;
-        this[kDescription] = new stream_description_1.StreamDescription(this.address, options);
-        this[kGeneration] = options.generation;
-        this[kLastUseTime] = (0, utils_1.now)();
-        // setup parser stream and message handling
-        this[kQueue] = new Map();
-        this[kMessageStream] = new message_stream_1.MessageStream({
-            ...options,
-            maxBsonMessageSize: this.hello?.maxBsonMessageSize
-        });
-        this[kStream] = stream;
-        this[kDelayedTimeoutId] = null;
-        this[kMessageStream].on('message', message => this.onMessage(message));
-        this[kMessageStream].on('error', error => this.onError(error));
-        this[kStream].on('close', () => this.onClose());
-        this[kStream].on('timeout', () => this.onTimeout());
-        this[kStream].on('error', () => {
-            /* ignore errors, listen to `close` instead */
-        });
-        // hook the message stream up to the passed in stream
-        this[kStream].pipe(this[kMessageStream]);
-        this[kMessageStream].pipe(this[kStream]);
-    }
-    get description() {
-        return this[kDescription];
-    }
-    get hello() {
-        return this[kHello];
-    }
-    // the `connect` method stores the result of the handshake hello on the connection
-    set hello(response) {
-        this[kDescription].receiveResponse(response);
-        this[kDescription] = Object.freeze(this[kDescription]);
-        // TODO: remove this, and only use the `StreamDescription` in the future
-        this[kHello] = response;
-    }
-    // Set the whether the message stream is for a monitoring connection.
-    set isMonitoringConnection(value) {
-        this[kMessageStream].isMonitoringConnection = value;
-    }
-    get isMonitoringConnection() {
-        return this[kMessageStream].isMonitoringConnection;
-    }
-    get serviceId() {
-        return this.hello?.serviceId;
-    }
-    get loadBalanced() {
-        return this.description.loadBalanced;
-    }
-    get generation() {
-        return this[kGeneration] || 0;
-    }
-    set generation(generation) {
-        this[kGeneration] = generation;
-    }
-    get idleTime() {
-        return (0, utils_1.calculateDurationInMs)(this[kLastUseTime]);
-    }
-    get clusterTime() {
-        return this[kClusterTime];
-    }
-    get stream() {
-        return this[kStream];
-    }
-    markAvailable() {
-        this[kLastUseTime] = (0, utils_1.now)();
-    }
-    onError(error) {
-        this.cleanup(true, error);
-    }
-    onClose() {
-        const message = `connection ${this.id} to ${this.address} closed`;
-        this.cleanup(true, new error_1.MongoNetworkError(message));
-    }
-    onTimeout() {
-        this[kDelayedTimeoutId] = (0, timers_1.setTimeout)(() => {
-            const message = `connection ${this.id} to ${this.address} timed out`;
-            const beforeHandshake = this.hello == null;
-            this.cleanup(true, new error_1.MongoNetworkTimeoutError(message, { beforeHandshake }));
-        }, 1).unref(); // No need for this timer to hold the event loop open
-    }
-    onMessage(message) {
-        const delayedTimeoutId = this[kDelayedTimeoutId];
-        if (delayedTimeoutId != null) {
-            (0, timers_1.clearTimeout)(delayedTimeoutId);
-            this[kDelayedTimeoutId] = null;
-        }
-        const socketTimeoutMS = this[kStream].timeout ?? 0;
-        this[kStream].setTimeout(0);
-        // always emit the message, in case we are streaming
-        this.emit('message', message);
-        let operationDescription = this[kQueue].get(message.responseTo);
-        if (!operationDescription && this.isMonitoringConnection) {
-            // This is how we recover when the initial hello's requestId is not
-            // the responseTo when hello responses have been skipped:
-            // First check if the map is of invalid size
-            if (this[kQueue].size > 1) {
-                this.cleanup(true, new error_1.MongoRuntimeError(INVALID_QUEUE_SIZE));
-            }
-            else {
-                // Get the first orphaned operation description.
-                const entry = this[kQueue].entries().next();
-                if (entry.value != null) {
-                    const [requestId, orphaned] = entry.value;
-                    // If the orphaned operation description exists then set it.
-                    operationDescription = orphaned;
-                    // Remove the entry with the bad request id from the queue.
-                    this[kQueue].delete(requestId);
-                }
-            }
-        }
-        if (!operationDescription) {
-            return;
-        }
-        const callback = operationDescription.cb;
-        // SERVER-45775: For exhaust responses we should be able to use the same requestId to
-        // track response, however the server currently synthetically produces remote requests
-        // making the `responseTo` change on each response
-        this[kQueue].delete(message.responseTo);
-        if ('moreToCome' in message && message.moreToCome) {
-            // If the operation description check above does find an orphaned
-            // description and sets the operationDescription then this line will put one
-            // back in the queue with the correct requestId and will resolve not being able
-            // to find the next one via the responseTo of the next streaming hello.
-            this[kQueue].set(message.requestId, operationDescription);
-            this[kStream].setTimeout(socketTimeoutMS);
-        }
-        try {
-            // Pass in the entire description because it has BSON parsing options
-            message.parse(operationDescription);
-        }
-        catch (err) {
-            // If this error is generated by our own code, it will already have the correct class applied
-            // if it is not, then it is coming from a catastrophic data parse failure or the BSON library
-            // in either case, it should not be wrapped
-            callback(err);
-            return;
-        }
-        if (message.documents[0]) {
-            const document = message.documents[0];
-            const session = operationDescription.session;
-            if (session) {
-                (0, sessions_1.updateSessionFromResponse)(session, document);
-            }
-            if (document.$clusterTime) {
-                this[kClusterTime] = document.$clusterTime;
-                this.emit(Connection.CLUSTER_TIME_RECEIVED, document.$clusterTime);
-            }
-            if (document.writeConcernError) {
-                callback(new error_1.MongoWriteConcernError(document.writeConcernError, document), document);
-                return;
-            }
-            if (document.ok === 0 || document.$err || document.errmsg || document.code) {
-                callback(new error_1.MongoServerError(document));
-                return;
-            }
-        }
-        callback(undefined, message.documents[0]);
-    }
-    destroy(options, callback) {
-        if (this.closed) {
-            process.nextTick(() => callback?.());
-            return;
-        }
-        if (typeof callback === 'function') {
-            this.once('close', () => process.nextTick(() => callback()));
-        }
-        // load balanced mode requires that these listeners remain on the connection
-        // after cleanup on timeouts, errors or close so we remove them before calling
-        // cleanup.
-        this.removeAllListeners(Connection.PINNED);
-        this.removeAllListeners(Connection.UNPINNED);
-        const message = `connection ${this.id} to ${this.address} closed`;
-        this.cleanup(options.force, new error_1.MongoNetworkError(message));
-    }
-    /**
-     * A method that cleans up the connection.  When `force` is true, this method
-     * forcibly destroys the socket.
-     *
-     * If an error is provided, any in-flight operations will be closed with the error.
-     *
-     * This method does nothing if the connection is already closed.
-     */
-    cleanup(force, error) {
-        if (this.closed) {
-            return;
-        }
-        this.closed = true;
-        const completeCleanup = () => {
-            for (const op of this[kQueue].values()) {
-                op.cb(error);
-            }
-            this[kQueue].clear();
-            this.emit(Connection.CLOSE);
-        };
-        this[kStream].removeAllListeners();
-        this[kMessageStream].removeAllListeners();
-        this[kMessageStream].destroy();
-        if (force) {
-            this[kStream].destroy();
-            completeCleanup();
-            return;
-        }
-        if (!this[kStream].writableEnded) {
-            this[kStream].end(() => {
-                this[kStream].destroy();
-                completeCleanup();
-            });
-        }
-        else {
-            completeCleanup();
-        }
-    }
-    command(ns, command, options, callback) {
-        let cmd = { ...command };
-        const readPreference = (0, shared_1.getReadPreference)(options);
-        const shouldUseOpMsg = supportsOpMsg(this);
-        const session = options?.session;
-        let clusterTime = this.clusterTime;
-        if (this.serverApi) {
-            const { version, strict, deprecationErrors } = this.serverApi;
-            cmd.apiVersion = version;
-            if (strict != null)
-                cmd.apiStrict = strict;
-            if (deprecationErrors != null)
-                cmd.apiDeprecationErrors = deprecationErrors;
-        }
-        if (hasSessionSupport(this) && session) {
-            if (session.clusterTime &&
-                clusterTime &&
-                session.clusterTime.clusterTime.greaterThan(clusterTime.clusterTime)) {
-                clusterTime = session.clusterTime;
-            }
-            const err = (0, sessions_1.applySession)(session, cmd, options);
-            if (err) {
-                return callback(err);
-            }
-        }
-        else if (session?.explicit) {
-            return callback(new error_1.MongoCompatibilityError('Current topology does not support sessions'));
-        }
-        // if we have a known cluster time, gossip it
-        if (clusterTime) {
-            cmd.$clusterTime = clusterTime;
-        }
-        if ((0, shared_1.isSharded)(this) && !shouldUseOpMsg && readPreference && readPreference.mode !== 'primary') {
-            cmd = {
-                $query: cmd,
-                $readPreference: readPreference.toJSON()
-            };
-        }
-        const commandOptions = Object.assign({
-            numberToSkip: 0,
-            numberToReturn: -1,
-            checkKeys: false,
-            // This value is not overridable
-            secondaryOk: readPreference.secondaryOk()
-        }, options);
-        const message = shouldUseOpMsg
-            ? new commands_1.OpMsgRequest(ns.db, cmd, commandOptions)
-            : new commands_1.OpQueryRequest(ns.db, cmd, commandOptions);
-        try {
-            write(this, message, commandOptions, callback);
-        }
-        catch (err) {
-            callback(err);
-        }
-    }
-}
-/** @event */
-Connection.COMMAND_STARTED = constants_1.COMMAND_STARTED;
-/** @event */
-Connection.COMMAND_SUCCEEDED = constants_1.COMMAND_SUCCEEDED;
-/** @event */
-Connection.COMMAND_FAILED = constants_1.COMMAND_FAILED;
-/** @event */
-Connection.CLUSTER_TIME_RECEIVED = constants_1.CLUSTER_TIME_RECEIVED;
-/** @event */
-Connection.CLOSE = constants_1.CLOSE;
-/** @event */
-Connection.MESSAGE = constants_1.MESSAGE;
-/** @event */
-Connection.PINNED = constants_1.PINNED;
-/** @event */
-Connection.UNPINNED = constants_1.UNPINNED;
-exports.Connection = Connection;
-/** @internal */
-class CryptoConnection extends Connection {
-    constructor(stream, options) {
-        super(stream, options);
-        this[kAutoEncrypter] = options.autoEncrypter;
-    }
-    /** @internal @override */
-    command(ns, cmd, options, callback) {
-        const autoEncrypter = this[kAutoEncrypter];
-        if (!autoEncrypter) {
-            return callback(new error_1.MongoMissingDependencyError('No AutoEncrypter available for encryption'));
-        }
-        const serverWireVersion = (0, utils_1.maxWireVersion)(this);
-        if (serverWireVersion === 0) {
-            // This means the initial handshake hasn't happened yet
-            return super.command(ns, cmd, options, callback);
-        }
-        if (serverWireVersion < 8) {
-            callback(new error_1.MongoCompatibilityError('Auto-encryption requires a minimum MongoDB version of 4.2'));
-            return;
-        }
-        // Save sort or indexKeys based on the command being run
-        // the encrypt API serializes our JS objects to BSON to pass to the native code layer
-        // and then deserializes the encrypted result, the protocol level components
-        // of the command (ex. sort) are then converted to JS objects potentially losing
-        // import key order information. These fields are never encrypted so we can save the values
-        // from before the encryption and replace them after encryption has been performed
-        const sort = cmd.find || cmd.findAndModify ? cmd.sort : null;
-        const indexKeys = cmd.createIndexes
-            ? cmd.indexes.map((index) => index.key)
-            : null;
-        autoEncrypter.encrypt(ns.toString(), cmd, options).then(encrypted => {
-            // Replace the saved values
-            if (sort != null && (cmd.find || cmd.findAndModify)) {
-                encrypted.sort = sort;
-            }
-            if (indexKeys != null && cmd.createIndexes) {
-                for (const [offset, index] of indexKeys.entries()) {
-                    // @ts-expect-error `encrypted` is a generic "command", but we've narrowed for only `createIndexes` commands here
-                    encrypted.indexes[offset].key = index;
-                }
-            }
-            super.command(ns, encrypted, options, (err, response) => {
-                if (err || response == null) {
-                    callback(err, response);
-                    return;
-                }
-                autoEncrypter.decrypt(response, options).then(res => callback(undefined, res), err => callback(err));
-            });
-        }, err => {
-            if (err) {
-                callback(err, null);
-            }
-        });
-    }
-}
-exports.CryptoConnection = CryptoConnection;
-/** @internal */
-function hasSessionSupport(conn) {
-    const description = conn.description;
-    return description.logicalSessionTimeoutMinutes != null;
-}
-exports.hasSessionSupport = hasSessionSupport;
-function supportsOpMsg(conn) {
-    const description = conn.description;
-    if (description == null) {
-        return false;
-    }
-    return (0, utils_1.maxWireVersion)(conn) >= 6 && !description.__nodejs_mock_server__;
-}
-function streamIdentifier(stream, options) {
-    if (options.proxyHost) {
-        // If proxy options are specified, the properties of `stream` itself
-        // will not accurately reflect what endpoint this is connected to.
-        return options.hostAddress.toString();
-    }
-    const { remoteAddress, remotePort } = stream;
-    if (typeof remoteAddress === 'string' && typeof remotePort === 'number') {
-        return utils_1.HostAddress.fromHostPort(remoteAddress, remotePort).toString();
-    }
-    return (0, utils_1.uuidV4)().toString('hex');
-}
-function write(conn, command, options, callback) {
-    options = options ?? {};
-    const operationDescription = {
-        requestId: command.requestId,
-        cb: callback,
-        session: options.session,
-        noResponse: typeof options.noResponse === 'boolean' ? options.noResponse : false,
-        documentsReturnedIn: options.documentsReturnedIn,
-        // for BSON parsing
-        useBigInt64: typeof options.useBigInt64 === 'boolean' ? options.useBigInt64 : false,
-        promoteLongs: typeof options.promoteLongs === 'boolean' ? options.promoteLongs : true,
-        promoteValues: typeof options.promoteValues === 'boolean' ? options.promoteValues : true,
-        promoteBuffers: typeof options.promoteBuffers === 'boolean' ? options.promoteBuffers : false,
-        bsonRegExp: typeof options.bsonRegExp === 'boolean' ? options.bsonRegExp : false,
-        enableUtf8Validation: typeof options.enableUtf8Validation === 'boolean' ? options.enableUtf8Validation : true,
-        raw: typeof options.raw === 'boolean' ? options.raw : false,
-        started: 0
-    };
-    if (conn[kDescription] && conn[kDescription].compressor) {
-        operationDescription.agreedCompressor = conn[kDescription].compressor;
-        if (conn[kDescription].zlibCompressionLevel) {
-            operationDescription.zlibCompressionLevel = conn[kDescription].zlibCompressionLevel;
-        }
-    }
-    if (typeof options.socketTimeoutMS === 'number') {
-        conn[kStream].setTimeout(options.socketTimeoutMS);
-    }
-    else if (conn.socketTimeoutMS !== 0) {
-        conn[kStream].setTimeout(conn.socketTimeoutMS);
-    }
-    // if command monitoring is enabled we need to modify the callback here
-    if (conn.monitorCommands) {
-        conn.emit(Connection.COMMAND_STARTED, new command_monitoring_events_1.CommandStartedEvent(conn, command));
-        operationDescription.started = (0, utils_1.now)();
-        operationDescription.cb = (err, reply) => {
-            // Command monitoring spec states that if ok is 1, then we must always emit
-            // a command succeeded event, even if there's an error. Write concern errors
-            // will have an ok: 1 in their reply.
-            if (err && reply?.ok !== 1) {
-                conn.emit(Connection.COMMAND_FAILED, new command_monitoring_events_1.CommandFailedEvent(conn, command, err, operationDescription.started));
-            }
-            else {
-                if (reply && (reply.ok === 0 || reply.$err)) {
-                    conn.emit(Connection.COMMAND_FAILED, new command_monitoring_events_1.CommandFailedEvent(conn, command, reply, operationDescription.started));
-                }
-                else {
-                    conn.emit(Connection.COMMAND_SUCCEEDED, new command_monitoring_events_1.CommandSucceededEvent(conn, command, reply, operationDescription.started));
-                }
-            }
-            if (typeof callback === 'function') {
-                // Since we're passing through the reply with the write concern error now, we
-                // need it not to be provided to the original callback in this case so
-                // retryability does not get tricked into thinking the command actually
-                // succeeded.
-                callback(err, err instanceof error_1.MongoWriteConcernError ? undefined : reply);
-            }
-        };
-    }
-    if (!operationDescription.noResponse) {
-        conn[kQueue].set(operationDescription.requestId, operationDescription);
-    }
-    try {
-        conn[kMessageStream].writeCommand(command, operationDescription);
-    }
-    catch (e) {
-        if (!operationDescription.noResponse) {
-            conn[kQueue].delete(operationDescription.requestId);
-            operationDescription.cb(e);
-            return;
-        }
-    }
-    if (operationDescription.noResponse) {
-        operationDescription.cb();
-    }
-}
-/** in-progress connection layer */
-/** @internal */
-class ModernConnection extends mongo_types_1.TypedEventEmitter {
-    constructor(stream, options) {
-        super();
-        this.commandAsync = (0, util_1.promisify)((ns, cmd, options, callback) => this.command(ns, cmd, options, callback));
-        this.id = options.id;
-        this.address = streamIdentifier(stream, options);
-        this.socketTimeoutMS = options.socketTimeoutMS ?? 0;
-        this.monitorCommands = options.monitorCommands;
-        this.serverApi = options.serverApi;
-        this.closed = false;
-        this[kHello] = null;
-        this[kClusterTime] = null;
-        this[kDescription] = new stream_description_1.StreamDescription(this.address, options);
-        this[kGeneration] = options.generation;
-        this[kLastUseTime] = (0, utils_1.now)();
-        // setup parser stream and message handling
-        this[kQueue] = new Map();
-        this[kMessageStream] = new message_stream_1.MessageStream({
-            ...options,
-            maxBsonMessageSize: this.hello?.maxBsonMessageSize
-        });
-        this.socket = stream;
-        this[kDelayedTimeoutId] = null;
-        this[kMessageStream].on('message', message => this.onMessage(message));
-        this[kMessageStream].on('error', error => this.onError(error));
-        this.socket.on('close', () => this.onClose());
-        this.socket.on('timeout', () => this.onTimeout());
-        this.socket.on('error', () => {
-            /* ignore errors, listen to `close` instead */
-        });
-        // hook the message stream up to the passed in stream
-        this.socket.pipe(this[kMessageStream]);
-        this[kMessageStream].pipe(this.socket);
-    }
-    get description() {
-        return this[kDescription];
-    }
-    get hello() {
-        return this[kHello];
-    }
-    // the `connect` method stores the result of the handshake hello on the connection
-    set hello(response) {
-        this[kDescription].receiveResponse(response);
-        this[kDescription] = Object.freeze(this[kDescription]);
-        // TODO: remove this, and only use the `StreamDescription` in the future
-        this[kHello] = response;
-    }
-    // Set the whether the message stream is for a monitoring connection.
-    set isMonitoringConnection(value) {
-        this[kMessageStream].isMonitoringConnection = value;
-    }
-    get isMonitoringConnection() {
-        return this[kMessageStream].isMonitoringConnection;
-    }
-    get serviceId() {
-        return this.hello?.serviceId;
-    }
-    get loadBalanced() {
-        return this.description.loadBalanced;
-    }
-    get generation() {
-        return this[kGeneration] || 0;
-    }
-    set generation(generation) {
-        this[kGeneration] = generation;
-    }
-    get idleTime() {
-        return (0, utils_1.calculateDurationInMs)(this[kLastUseTime]);
-    }
-    get clusterTime() {
-        return this[kClusterTime];
-    }
-    get stream() {
-        return this.socket;
-    }
-    get hasSessionSupport() {
-        return this.description.logicalSessionTimeoutMinutes != null;
-    }
-    get supportsOpMsg() {
-        return (this.description != null &&
-            (0, utils_1.maxWireVersion)(this) >= 6 &&
-            !this.description.__nodejs_mock_server__);
-    }
-    markAvailable() {
-        this[kLastUseTime] = (0, utils_1.now)();
-    }
-    onError(error) {
-        this.cleanup(true, error);
-    }
-    onClose() {
-        const message = `connection ${this.id} to ${this.address} closed`;
-        this.cleanup(true, new error_1.MongoNetworkError(message));
-    }
-    onTimeout() {
-        this[kDelayedTimeoutId] = (0, timers_1.setTimeout)(() => {
-            const message = `connection ${this.id} to ${this.address} timed out`;
-            const beforeHandshake = this.hello == null;
-            this.cleanup(true, new error_1.MongoNetworkTimeoutError(message, { beforeHandshake }));
-        }, 1).unref(); // No need for this timer to hold the event loop open
-    }
-    onMessage(message) {
-        const delayedTimeoutId = this[kDelayedTimeoutId];
-        if (delayedTimeoutId != null) {
-            (0, timers_1.clearTimeout)(delayedTimeoutId);
-            this[kDelayedTimeoutId] = null;
-        }
-        const socketTimeoutMS = this.socket.timeout ?? 0;
-        this.socket.setTimeout(0);
-        // always emit the message, in case we are streaming
-        this.emit('message', message);
-        let operationDescription = this[kQueue].get(message.responseTo);
-        if (!operationDescription && this.isMonitoringConnection) {
-            // This is how we recover when the initial hello's requestId is not
-            // the responseTo when hello responses have been skipped:
-            // First check if the map is of invalid size
-            if (this[kQueue].size > 1) {
-                this.cleanup(true, new error_1.MongoRuntimeError(INVALID_QUEUE_SIZE));
-            }
-            else {
-                // Get the first orphaned operation description.
-                const entry = this[kQueue].entries().next();
-                if (entry.value != null) {
-                    const [requestId, orphaned] = entry.value;
-                    // If the orphaned operation description exists then set it.
-                    operationDescription = orphaned;
-                    // Remove the entry with the bad request id from the queue.
-                    this[kQueue].delete(requestId);
-                }
-            }
-        }
-        if (!operationDescription) {
-            return;
-        }
-        const callback = operationDescription.cb;
-        // SERVER-45775: For exhaust responses we should be able to use the same requestId to
-        // track response, however the server currently synthetically produces remote requests
-        // making the `responseTo` change on each response
-        this[kQueue].delete(message.responseTo);
-        if ('moreToCome' in message && message.moreToCome) {
-            // If the operation description check above does find an orphaned
-            // description and sets the operationDescription then this line will put one
-            // back in the queue with the correct requestId and will resolve not being able
-            // to find the next one via the responseTo of the next streaming hello.
-            this[kQueue].set(message.requestId, operationDescription);
-            this.socket.setTimeout(socketTimeoutMS);
-        }
-        try {
-            // Pass in the entire description because it has BSON parsing options
-            message.parse(operationDescription);
-        }
-        catch (err) {
-            // If this error is generated by our own code, it will already have the correct class applied
-            // if it is not, then it is coming from a catastrophic data parse failure or the BSON library
-            // in either case, it should not be wrapped
-            callback(err);
-            return;
-        }
-        if (message.documents[0]) {
-            const document = message.documents[0];
-            const session = operationDescription.session;
-            if (session) {
-                (0, sessions_1.updateSessionFromResponse)(session, document);
-            }
-            if (document.$clusterTime) {
-                this[kClusterTime] = document.$clusterTime;
-                this.emit(Connection.CLUSTER_TIME_RECEIVED, document.$clusterTime);
-            }
-            if (document.writeConcernError) {
-                callback(new error_1.MongoWriteConcernError(document.writeConcernError, document), document);
-                return;
-            }
-            if (document.ok === 0 || document.$err || document.errmsg || document.code) {
-                callback(new error_1.MongoServerError(document));
-                return;
-            }
-        }
-        callback(undefined, message.documents[0]);
-    }
-    destroy(options, callback) {
-        if (this.closed) {
-            process.nextTick(() => callback?.());
-            return;
-        }
-        if (typeof callback === 'function') {
-            this.once('close', () => process.nextTick(() => callback()));
-        }
-        // load balanced mode requires that these listeners remain on the connection
-        // after cleanup on timeouts, errors or close so we remove them before calling
-        // cleanup.
-        this.removeAllListeners(Connection.PINNED);
-        this.removeAllListeners(Connection.UNPINNED);
-        const message = `connection ${this.id} to ${this.address} closed`;
-        this.cleanup(options.force, new error_1.MongoNetworkError(message));
-    }
-    /**
-     * A method that cleans up the connection.  When `force` is true, this method
-     * forcibly destroys the socket.
-     *
-     * If an error is provided, any in-flight operations will be closed with the error.
-     *
-     * This method does nothing if the connection is already closed.
-     */
-    cleanup(force, error) {
-        if (this.closed) {
-            return;
-        }
-        this.closed = true;
-        const completeCleanup = () => {
-            for (const op of this[kQueue].values()) {
-                op.cb(error);
-            }
-            this[kQueue].clear();
-            this.emit(Connection.CLOSE);
-        };
-        this.socket.removeAllListeners();
-        this[kMessageStream].removeAllListeners();
-        this[kMessageStream].destroy();
-        if (force) {
-            this.socket.destroy();
-            completeCleanup();
-            return;
-        }
-        if (!this.socket.writableEnded) {
-            this.socket.end(() => {
-                this.socket.destroy();
-                completeCleanup();
-            });
-        }
-        else {
-            completeCleanup();
-        }
-    }
-    command(ns, command, options, callback) {
-        let cmd = { ...command };
-        const readPreference = (0, shared_1.getReadPreference)(options);
-        const session = options?.session;
-        let clusterTime = this.clusterTime;
-        if (this.serverApi) {
-            const { version, strict, deprecationErrors } = this.serverApi;
-            cmd.apiVersion = version;
-            if (strict != null)
-                cmd.apiStrict = strict;
-            if (deprecationErrors != null)
-                cmd.apiDeprecationErrors = deprecationErrors;
-        }
-        if (this.hasSessionSupport && session) {
-            if (session.clusterTime &&
-                clusterTime &&
-                session.clusterTime.clusterTime.greaterThan(clusterTime.clusterTime)) {
-                clusterTime = session.clusterTime;
-            }
-            const err = (0, sessions_1.applySession)(session, cmd, options);
-            if (err) {
-                return callback(err);
-            }
-        }
-        else if (session?.explicit) {
-            return callback(new error_1.MongoCompatibilityError('Current topology does not support sessions'));
-        }
-        // if we have a known cluster time, gossip it
-        if (clusterTime) {
-            cmd.$clusterTime = clusterTime;
-        }
-        if (
-        // @ts-expect-error ModernConnections cannot be passed as connections
-        (0, shared_1.isSharded)(this) &&
-            !this.supportsOpMsg &&
-            readPreference &&
-            readPreference.mode !== 'primary') {
-            cmd = {
-                $query: cmd,
-                $readPreference: readPreference.toJSON()
-            };
-        }
-        const commandOptions = Object.assign({
-            numberToSkip: 0,
-            numberToReturn: -1,
-            checkKeys: false,
-            // This value is not overridable
-            secondaryOk: readPreference.secondaryOk()
-        }, options);
-        const message = this.supportsOpMsg
-            ? new commands_1.OpMsgRequest(ns.db, cmd, commandOptions)
-            : new commands_1.OpQueryRequest(ns.db, cmd, commandOptions);
-        try {
-            write(this, message, commandOptions, callback);
-        }
-        catch (err) {
-            callback(err);
-        }
-    }
-}
-/** @event */
-ModernConnection.COMMAND_STARTED = constants_1.COMMAND_STARTED;
-/** @event */
-ModernConnection.COMMAND_SUCCEEDED = constants_1.COMMAND_SUCCEEDED;
-/** @event */
-ModernConnection.COMMAND_FAILED = constants_1.COMMAND_FAILED;
-/** @event */
-ModernConnection.CLUSTER_TIME_RECEIVED = constants_1.CLUSTER_TIME_RECEIVED;
-/** @event */
-ModernConnection.CLOSE = constants_1.CLOSE;
-/** @event */
-ModernConnection.MESSAGE = constants_1.MESSAGE;
-/** @event */
-ModernConnection.PINNED = constants_1.PINNED;
-/** @event */
-ModernConnection.UNPINNED = constants_1.UNPINNED;
-exports.ModernConnection = ModernConnection;
-const kDefaultMaxBsonMessageSize = 1024 * 1024 * 16 * 4;
-/**
- * @internal
- *
- * This helper reads chucks of data out of a socket and buffers them until it has received a
- * full wire protocol message.
- *
- * By itself, produces an infinite async generator of wire protocol messages and consumers must end
- * the stream by calling `return` on the generator.
- *
- * Note that `for-await` loops call `return` automatically when the loop is exited.
- */
-async function* readWireProtocolMessages(connection) {
-    const bufferPool = new utils_1.BufferPool();
-    const maxBsonMessageSize = connection.hello?.maxBsonMessageSize ?? kDefaultMaxBsonMessageSize;
-    for await (const [chunk] of (0, stream_1.on)(connection.socket, 'data')) {
-        bufferPool.append(chunk);
-        const sizeOfMessage = bufferPool.getInt32();
-        if (sizeOfMessage == null) {
-            continue;
-        }
-        if (sizeOfMessage < 0) {
-            throw new error_1.MongoParseError(`Invalid message size: ${sizeOfMessage}`);
-        }
-        if (sizeOfMessage > maxBsonMessageSize) {
-            throw new error_1.MongoParseError(`Invalid message size: ${sizeOfMessage}, max allowed: ${maxBsonMessageSize}`);
-        }
-        if (sizeOfMessage > bufferPool.length) {
-            continue;
-        }
-        yield bufferPool.read(sizeOfMessage);
-    }
-}
-exports.readWireProtocolMessages = readWireProtocolMessages;
-/**
- * @internal
- *
- * Writes an OP_MSG or OP_QUERY request to the socket, optionally compressing the command. This method
- * waits until the socket's buffer has emptied (the Nodejs socket `drain` event has fired).
- */
-async function writeCommand(connection, command, options) {
-    const drained = (0, events_1.once)(connection.socket, 'drain');
-    const finalCommand = options.agreedCompressor === 'none' || !commands_1.OpCompressedRequest.canCompress(command)
-        ? command
-        : new commands_1.OpCompressedRequest(command, {
-            agreedCompressor: options.agreedCompressor ?? 'none',
-            zlibCompressionLevel: options.zlibCompressionLevel ?? 0
-        });
-    const buffer = Buffer.concat(await finalCommand.toBin());
-    connection.socket.push(buffer);
-    await drained;
-}
-exports.writeCommand = writeCommand;
-/**
- * @internal
- *
- * Returns an async generator that yields full wire protocol messages from the underlying socket.  This function
- * yields messages until `moreToCome` is false or not present in a response, or the caller cancels the request
- * by calling `return` on the generator.
- *
- * Note that `for-await` loops call `return` automatically when the loop is exited.
- */
-async function* readMany(connection) {
-    for await (const message of readWireProtocolMessages(connection)) {
-        const response = await (0, compression_1.decompressResponse)(message);
-        yield response;
-        if (!('moreToCome' in response) || !response.moreToCome) {
-            return;
-        }
-    }
-}
-exports.readMany = readMany;
-/**
- * @internal
- *
- * Reads a single wire protocol message out of a connection.
- */
-async function read(connection) {
-    for await (const value of readMany(connection)) {
-        return value;
-    }
-    throw new error_1.MongoRuntimeError('unable to read message off of connection');
-}
-exports.read = read;
-//# sourceMappingURL=connection.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/connection.js.map b/server/data-import/node_modules/mongodb/lib/cmap/connection.js.map
deleted file mode 100644
index 639786390449de99463ddec1f75df1bd5323fe91..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/connection.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/cmap/connection.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/connection_pool.js b/server/data-import/node_modules/mongodb/lib/cmap/connection_pool.js
deleted file mode 100644
index f2997613f175b756fc1163d66e09ef255a2ce6db..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/connection_pool.js
+++ /dev/null
@@ -1,632 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ConnectionPool = exports.PoolState = void 0;
-const timers_1 = require("timers");
-const constants_1 = require("../constants");
-const error_1 = require("../error");
-const mongo_types_1 = require("../mongo_types");
-const utils_1 = require("../utils");
-const connect_1 = require("./connect");
-const connection_1 = require("./connection");
-const connection_pool_events_1 = require("./connection_pool_events");
-const errors_1 = require("./errors");
-const metrics_1 = require("./metrics");
-/** @internal */
-const kServer = Symbol('server');
-/** @internal */
-const kConnections = Symbol('connections');
-/** @internal */
-const kPending = Symbol('pending');
-/** @internal */
-const kCheckedOut = Symbol('checkedOut');
-/** @internal */
-const kMinPoolSizeTimer = Symbol('minPoolSizeTimer');
-/** @internal */
-const kGeneration = Symbol('generation');
-/** @internal */
-const kServiceGenerations = Symbol('serviceGenerations');
-/** @internal */
-const kConnectionCounter = Symbol('connectionCounter');
-/** @internal */
-const kCancellationToken = Symbol('cancellationToken');
-/** @internal */
-const kWaitQueue = Symbol('waitQueue');
-/** @internal */
-const kCancelled = Symbol('cancelled');
-/** @internal */
-const kMetrics = Symbol('metrics');
-/** @internal */
-const kProcessingWaitQueue = Symbol('processingWaitQueue');
-/** @internal */
-const kPoolState = Symbol('poolState');
-/** @internal */
-exports.PoolState = Object.freeze({
-    paused: 'paused',
-    ready: 'ready',
-    closed: 'closed'
-});
-/**
- * A pool of connections which dynamically resizes, and emit events related to pool activity
- * @internal
- */
-class ConnectionPool extends mongo_types_1.TypedEventEmitter {
-    constructor(server, options) {
-        super();
-        this.options = Object.freeze({
-            ...options,
-            connectionType: connection_1.Connection,
-            maxPoolSize: options.maxPoolSize ?? 100,
-            minPoolSize: options.minPoolSize ?? 0,
-            maxConnecting: options.maxConnecting ?? 2,
-            maxIdleTimeMS: options.maxIdleTimeMS ?? 0,
-            waitQueueTimeoutMS: options.waitQueueTimeoutMS ?? 0,
-            minPoolSizeCheckFrequencyMS: options.minPoolSizeCheckFrequencyMS ?? 100,
-            autoEncrypter: options.autoEncrypter,
-            metadata: options.metadata
-        });
-        if (this.options.minPoolSize > this.options.maxPoolSize) {
-            throw new error_1.MongoInvalidArgumentError('Connection pool minimum size must not be greater than maximum pool size');
-        }
-        this[kPoolState] = exports.PoolState.paused;
-        this[kServer] = server;
-        this[kConnections] = new utils_1.List();
-        this[kPending] = 0;
-        this[kCheckedOut] = new Set();
-        this[kMinPoolSizeTimer] = undefined;
-        this[kGeneration] = 0;
-        this[kServiceGenerations] = new Map();
-        this[kConnectionCounter] = (0, utils_1.makeCounter)(1);
-        this[kCancellationToken] = new mongo_types_1.CancellationToken();
-        this[kCancellationToken].setMaxListeners(Infinity);
-        this[kWaitQueue] = new utils_1.List();
-        this[kMetrics] = new metrics_1.ConnectionPoolMetrics();
-        this[kProcessingWaitQueue] = false;
-        this.mongoLogger = this[kServer].topology.client.mongoLogger;
-        this.component = 'connection';
-        process.nextTick(() => {
-            this.emitAndLog(ConnectionPool.CONNECTION_POOL_CREATED, new connection_pool_events_1.ConnectionPoolCreatedEvent(this));
-        });
-    }
-    /** The address of the endpoint the pool is connected to */
-    get address() {
-        return this.options.hostAddress.toString();
-    }
-    /**
-     * Check if the pool has been closed
-     *
-     * TODO(NODE-3263): We can remove this property once shell no longer needs it
-     */
-    get closed() {
-        return this[kPoolState] === exports.PoolState.closed;
-    }
-    /** An integer representing the SDAM generation of the pool */
-    get generation() {
-        return this[kGeneration];
-    }
-    /** An integer expressing how many total connections (available + pending + in use) the pool currently has */
-    get totalConnectionCount() {
-        return (this.availableConnectionCount + this.pendingConnectionCount + this.currentCheckedOutCount);
-    }
-    /** An integer expressing how many connections are currently available in the pool. */
-    get availableConnectionCount() {
-        return this[kConnections].length;
-    }
-    get pendingConnectionCount() {
-        return this[kPending];
-    }
-    get currentCheckedOutCount() {
-        return this[kCheckedOut].size;
-    }
-    get waitQueueSize() {
-        return this[kWaitQueue].length;
-    }
-    get loadBalanced() {
-        return this.options.loadBalanced;
-    }
-    get serviceGenerations() {
-        return this[kServiceGenerations];
-    }
-    get serverError() {
-        return this[kServer].description.error;
-    }
-    /**
-     * This is exposed ONLY for use in mongosh, to enable
-     * killing all connections if a user quits the shell with
-     * operations in progress.
-     *
-     * This property may be removed as a part of NODE-3263.
-     */
-    get checkedOutConnections() {
-        return this[kCheckedOut];
-    }
-    /**
-     * Get the metrics information for the pool when a wait queue timeout occurs.
-     */
-    waitQueueErrorMetrics() {
-        return this[kMetrics].info(this.options.maxPoolSize);
-    }
-    /**
-     * Set the pool state to "ready"
-     */
-    ready() {
-        if (this[kPoolState] !== exports.PoolState.paused) {
-            return;
-        }
-        this[kPoolState] = exports.PoolState.ready;
-        this.emitAndLog(ConnectionPool.CONNECTION_POOL_READY, new connection_pool_events_1.ConnectionPoolReadyEvent(this));
-        (0, timers_1.clearTimeout)(this[kMinPoolSizeTimer]);
-        this.ensureMinPoolSize();
-    }
-    /**
-     * Check a connection out of this pool. The connection will continue to be tracked, but no reference to it
-     * will be held by the pool. This means that if a connection is checked out it MUST be checked back in or
-     * explicitly destroyed by the new owner.
-     */
-    checkOut(callback) {
-        this.emitAndLog(ConnectionPool.CONNECTION_CHECK_OUT_STARTED, new connection_pool_events_1.ConnectionCheckOutStartedEvent(this));
-        const waitQueueTimeoutMS = this.options.waitQueueTimeoutMS;
-        const waitQueueMember = {
-            callback,
-            timeoutController: new utils_1.TimeoutController(waitQueueTimeoutMS)
-        };
-        waitQueueMember.timeoutController.signal.addEventListener('abort', () => {
-            waitQueueMember[kCancelled] = true;
-            waitQueueMember.timeoutController.clear();
-            this.emitAndLog(ConnectionPool.CONNECTION_CHECK_OUT_FAILED, new connection_pool_events_1.ConnectionCheckOutFailedEvent(this, 'timeout'));
-            waitQueueMember.callback(new errors_1.WaitQueueTimeoutError(this.loadBalanced
-                ? this.waitQueueErrorMetrics()
-                : 'Timed out while checking out a connection from connection pool', this.address));
-        });
-        this[kWaitQueue].push(waitQueueMember);
-        process.nextTick(() => this.processWaitQueue());
-    }
-    /**
-     * Check a connection into the pool.
-     *
-     * @param connection - The connection to check in
-     */
-    checkIn(connection) {
-        if (!this[kCheckedOut].has(connection)) {
-            return;
-        }
-        const poolClosed = this.closed;
-        const stale = this.connectionIsStale(connection);
-        const willDestroy = !!(poolClosed || stale || connection.closed);
-        if (!willDestroy) {
-            connection.markAvailable();
-            this[kConnections].unshift(connection);
-        }
-        this[kCheckedOut].delete(connection);
-        this.emitAndLog(ConnectionPool.CONNECTION_CHECKED_IN, new connection_pool_events_1.ConnectionCheckedInEvent(this, connection));
-        if (willDestroy) {
-            const reason = connection.closed ? 'error' : poolClosed ? 'poolClosed' : 'stale';
-            this.destroyConnection(connection, reason);
-        }
-        process.nextTick(() => this.processWaitQueue());
-    }
-    /**
-     * Clear the pool
-     *
-     * Pool reset is handled by incrementing the pool's generation count. Any existing connection of a
-     * previous generation will eventually be pruned during subsequent checkouts.
-     */
-    clear(options = {}) {
-        if (this.closed) {
-            return;
-        }
-        // handle load balanced case
-        if (this.loadBalanced) {
-            const { serviceId } = options;
-            if (!serviceId) {
-                throw new error_1.MongoRuntimeError('ConnectionPool.clear() called in load balanced mode with no serviceId.');
-            }
-            const sid = serviceId.toHexString();
-            const generation = this.serviceGenerations.get(sid);
-            // Only need to worry if the generation exists, since it should
-            // always be there but typescript needs the check.
-            if (generation == null) {
-                throw new error_1.MongoRuntimeError('Service generations are required in load balancer mode.');
-            }
-            else {
-                // Increment the generation for the service id.
-                this.serviceGenerations.set(sid, generation + 1);
-            }
-            this.emitAndLog(ConnectionPool.CONNECTION_POOL_CLEARED, new connection_pool_events_1.ConnectionPoolClearedEvent(this, { serviceId }));
-            return;
-        }
-        // handle non load-balanced case
-        const interruptInUseConnections = options.interruptInUseConnections ?? false;
-        const oldGeneration = this[kGeneration];
-        this[kGeneration] += 1;
-        const alreadyPaused = this[kPoolState] === exports.PoolState.paused;
-        this[kPoolState] = exports.PoolState.paused;
-        this.clearMinPoolSizeTimer();
-        if (!alreadyPaused) {
-            this.emitAndLog(ConnectionPool.CONNECTION_POOL_CLEARED, new connection_pool_events_1.ConnectionPoolClearedEvent(this, {
-                interruptInUseConnections
-            }));
-        }
-        if (interruptInUseConnections) {
-            process.nextTick(() => this.interruptInUseConnections(oldGeneration));
-        }
-        this.processWaitQueue();
-    }
-    /**
-     * Closes all stale in-use connections in the pool with a resumable PoolClearedOnNetworkError.
-     *
-     * Only connections where `connection.generation <= minGeneration` are killed.
-     */
-    interruptInUseConnections(minGeneration) {
-        for (const connection of this[kCheckedOut]) {
-            if (connection.generation <= minGeneration) {
-                this.checkIn(connection);
-                connection.onError(new errors_1.PoolClearedOnNetworkError(this));
-            }
-        }
-    }
-    close(_options, _cb) {
-        let options = _options;
-        const callback = (_cb ?? _options);
-        if (typeof options === 'function') {
-            options = {};
-        }
-        options = Object.assign({ force: false }, options);
-        if (this.closed) {
-            return callback();
-        }
-        // immediately cancel any in-flight connections
-        this[kCancellationToken].emit('cancel');
-        // end the connection counter
-        if (typeof this[kConnectionCounter].return === 'function') {
-            this[kConnectionCounter].return(undefined);
-        }
-        this[kPoolState] = exports.PoolState.closed;
-        this.clearMinPoolSizeTimer();
-        this.processWaitQueue();
-        (0, utils_1.eachAsync)(this[kConnections].toArray(), (conn, cb) => {
-            this.emitAndLog(ConnectionPool.CONNECTION_CLOSED, new connection_pool_events_1.ConnectionClosedEvent(this, conn, 'poolClosed'));
-            conn.destroy({ force: !!options.force }, cb);
-        }, err => {
-            this[kConnections].clear();
-            this.emitAndLog(ConnectionPool.CONNECTION_POOL_CLOSED, new connection_pool_events_1.ConnectionPoolClosedEvent(this));
-            callback(err);
-        });
-    }
-    /**
-     * Runs a lambda with an implicitly checked out connection, checking that connection back in when the lambda
-     * has completed by calling back.
-     *
-     * NOTE: please note the required signature of `fn`
-     *
-     * @remarks When in load balancer mode, connections can be pinned to cursors or transactions.
-     *   In these cases we pass the connection in to this method to ensure it is used and a new
-     *   connection is not checked out.
-     *
-     * @param conn - A pinned connection for use in load balancing mode.
-     * @param fn - A function which operates on a managed connection
-     * @param callback - The original callback
-     */
-    withConnection(conn, fn, callback) {
-        if (conn) {
-            // use the provided connection, and do _not_ check it in after execution
-            fn(undefined, conn, (fnErr, result) => {
-                if (fnErr) {
-                    return this.withReauthentication(fnErr, conn, fn, callback);
-                }
-                callback(undefined, result);
-            });
-            return;
-        }
-        this.checkOut((err, conn) => {
-            // don't callback with `err` here, we might want to act upon it inside `fn`
-            fn(err, conn, (fnErr, result) => {
-                if (fnErr) {
-                    if (conn) {
-                        this.withReauthentication(fnErr, conn, fn, callback);
-                    }
-                    else {
-                        callback(fnErr);
-                    }
-                }
-                else {
-                    callback(undefined, result);
-                }
-                if (conn) {
-                    this.checkIn(conn);
-                }
-            });
-        });
-    }
-    withReauthentication(fnErr, conn, fn, callback) {
-        if (fnErr instanceof error_1.MongoError && fnErr.code === error_1.MONGODB_ERROR_CODES.Reauthenticate) {
-            this.reauthenticate(conn, fn, (error, res) => {
-                if (error) {
-                    return callback(error);
-                }
-                callback(undefined, res);
-            });
-        }
-        else {
-            callback(fnErr);
-        }
-    }
-    /**
-     * Reauthenticate on the same connection and then retry the operation.
-     */
-    reauthenticate(connection, fn, callback) {
-        const authContext = connection.authContext;
-        if (!authContext) {
-            return callback(new error_1.MongoRuntimeError('No auth context found on connection.'));
-        }
-        const credentials = authContext.credentials;
-        if (!credentials) {
-            return callback(new error_1.MongoMissingCredentialsError('Connection is missing credentials when asked to reauthenticate'));
-        }
-        const resolvedCredentials = credentials.resolveAuthMechanism(connection.hello || undefined);
-        const provider = connect_1.AUTH_PROVIDERS.get(resolvedCredentials.mechanism);
-        if (!provider) {
-            return callback(new error_1.MongoMissingCredentialsError(`Reauthenticate failed due to no auth provider for ${credentials.mechanism}`));
-        }
-        provider.reauth(authContext).then(() => {
-            fn(undefined, connection, (fnErr, fnResult) => {
-                if (fnErr) {
-                    return callback(fnErr);
-                }
-                callback(undefined, fnResult);
-            });
-        }, error => callback(error));
-    }
-    /** Clear the min pool size timer */
-    clearMinPoolSizeTimer() {
-        const minPoolSizeTimer = this[kMinPoolSizeTimer];
-        if (minPoolSizeTimer) {
-            (0, timers_1.clearTimeout)(minPoolSizeTimer);
-        }
-    }
-    destroyConnection(connection, reason) {
-        this.emitAndLog(ConnectionPool.CONNECTION_CLOSED, new connection_pool_events_1.ConnectionClosedEvent(this, connection, reason));
-        // destroy the connection
-        process.nextTick(() => connection.destroy({ force: false }));
-    }
-    connectionIsStale(connection) {
-        const serviceId = connection.serviceId;
-        if (this.loadBalanced && serviceId) {
-            const sid = serviceId.toHexString();
-            const generation = this.serviceGenerations.get(sid);
-            return connection.generation !== generation;
-        }
-        return connection.generation !== this[kGeneration];
-    }
-    connectionIsIdle(connection) {
-        return !!(this.options.maxIdleTimeMS && connection.idleTime > this.options.maxIdleTimeMS);
-    }
-    /**
-     * Destroys a connection if the connection is perished.
-     *
-     * @returns `true` if the connection was destroyed, `false` otherwise.
-     */
-    destroyConnectionIfPerished(connection) {
-        const isStale = this.connectionIsStale(connection);
-        const isIdle = this.connectionIsIdle(connection);
-        if (!isStale && !isIdle && !connection.closed) {
-            return false;
-        }
-        const reason = connection.closed ? 'error' : isStale ? 'stale' : 'idle';
-        this.destroyConnection(connection, reason);
-        return true;
-    }
-    createConnection(callback) {
-        const connectOptions = {
-            ...this.options,
-            id: this[kConnectionCounter].next().value,
-            generation: this[kGeneration],
-            cancellationToken: this[kCancellationToken]
-        };
-        this[kPending]++;
-        // This is our version of a "virtual" no-I/O connection as the spec requires
-        this.emitAndLog(ConnectionPool.CONNECTION_CREATED, new connection_pool_events_1.ConnectionCreatedEvent(this, { id: connectOptions.id }));
-        (0, connect_1.connect)(connectOptions, (err, connection) => {
-            if (err || !connection) {
-                this[kPending]--;
-                this.emitAndLog(ConnectionPool.CONNECTION_CLOSED, new connection_pool_events_1.ConnectionClosedEvent(this, { id: connectOptions.id, serviceId: undefined }, 'error', 
-                // TODO(NODE-5192): Remove this cast
-                err));
-                if (err instanceof error_1.MongoNetworkError || err instanceof error_1.MongoServerError) {
-                    err.connectionGeneration = connectOptions.generation;
-                }
-                callback(err ?? new error_1.MongoRuntimeError('Connection creation failed without error'));
-                return;
-            }
-            // The pool might have closed since we started trying to create a connection
-            if (this[kPoolState] !== exports.PoolState.ready) {
-                this[kPending]--;
-                connection.destroy({ force: true });
-                callback(this.closed ? new errors_1.PoolClosedError(this) : new errors_1.PoolClearedError(this));
-                return;
-            }
-            // forward all events from the connection to the pool
-            for (const event of [...constants_1.APM_EVENTS, connection_1.Connection.CLUSTER_TIME_RECEIVED]) {
-                connection.on(event, (e) => this.emit(event, e));
-            }
-            if (this.loadBalanced) {
-                connection.on(connection_1.Connection.PINNED, pinType => this[kMetrics].markPinned(pinType));
-                connection.on(connection_1.Connection.UNPINNED, pinType => this[kMetrics].markUnpinned(pinType));
-                const serviceId = connection.serviceId;
-                if (serviceId) {
-                    let generation;
-                    const sid = serviceId.toHexString();
-                    if ((generation = this.serviceGenerations.get(sid))) {
-                        connection.generation = generation;
-                    }
-                    else {
-                        this.serviceGenerations.set(sid, 0);
-                        connection.generation = 0;
-                    }
-                }
-            }
-            connection.markAvailable();
-            this.emitAndLog(ConnectionPool.CONNECTION_READY, new connection_pool_events_1.ConnectionReadyEvent(this, connection));
-            this[kPending]--;
-            callback(undefined, connection);
-            return;
-        });
-    }
-    ensureMinPoolSize() {
-        const minPoolSize = this.options.minPoolSize;
-        if (this[kPoolState] !== exports.PoolState.ready || minPoolSize === 0) {
-            return;
-        }
-        this[kConnections].prune(connection => this.destroyConnectionIfPerished(connection));
-        if (this.totalConnectionCount < minPoolSize &&
-            this.pendingConnectionCount < this.options.maxConnecting) {
-            // NOTE: ensureMinPoolSize should not try to get all the pending
-            // connection permits because that potentially delays the availability of
-            // the connection to a checkout request
-            this.createConnection((err, connection) => {
-                if (err) {
-                    this[kServer].handleError(err);
-                }
-                if (!err && connection) {
-                    this[kConnections].push(connection);
-                    process.nextTick(() => this.processWaitQueue());
-                }
-                if (this[kPoolState] === exports.PoolState.ready) {
-                    (0, timers_1.clearTimeout)(this[kMinPoolSizeTimer]);
-                    this[kMinPoolSizeTimer] = (0, timers_1.setTimeout)(() => this.ensureMinPoolSize(), this.options.minPoolSizeCheckFrequencyMS);
-                }
-            });
-        }
-        else {
-            (0, timers_1.clearTimeout)(this[kMinPoolSizeTimer]);
-            this[kMinPoolSizeTimer] = (0, timers_1.setTimeout)(() => this.ensureMinPoolSize(), this.options.minPoolSizeCheckFrequencyMS);
-        }
-    }
-    processWaitQueue() {
-        if (this[kProcessingWaitQueue]) {
-            return;
-        }
-        this[kProcessingWaitQueue] = true;
-        while (this.waitQueueSize) {
-            const waitQueueMember = this[kWaitQueue].first();
-            if (!waitQueueMember) {
-                this[kWaitQueue].shift();
-                continue;
-            }
-            if (waitQueueMember[kCancelled]) {
-                this[kWaitQueue].shift();
-                continue;
-            }
-            if (this[kPoolState] !== exports.PoolState.ready) {
-                const reason = this.closed ? 'poolClosed' : 'connectionError';
-                const error = this.closed ? new errors_1.PoolClosedError(this) : new errors_1.PoolClearedError(this);
-                this.emitAndLog(ConnectionPool.CONNECTION_CHECK_OUT_FAILED, new connection_pool_events_1.ConnectionCheckOutFailedEvent(this, reason, error));
-                waitQueueMember.timeoutController.clear();
-                this[kWaitQueue].shift();
-                waitQueueMember.callback(error);
-                continue;
-            }
-            if (!this.availableConnectionCount) {
-                break;
-            }
-            const connection = this[kConnections].shift();
-            if (!connection) {
-                break;
-            }
-            if (!this.destroyConnectionIfPerished(connection)) {
-                this[kCheckedOut].add(connection);
-                this.emitAndLog(ConnectionPool.CONNECTION_CHECKED_OUT, new connection_pool_events_1.ConnectionCheckedOutEvent(this, connection));
-                waitQueueMember.timeoutController.clear();
-                this[kWaitQueue].shift();
-                waitQueueMember.callback(undefined, connection);
-            }
-        }
-        const { maxPoolSize, maxConnecting } = this.options;
-        while (this.waitQueueSize > 0 &&
-            this.pendingConnectionCount < maxConnecting &&
-            (maxPoolSize === 0 || this.totalConnectionCount < maxPoolSize)) {
-            const waitQueueMember = this[kWaitQueue].shift();
-            if (!waitQueueMember || waitQueueMember[kCancelled]) {
-                continue;
-            }
-            this.createConnection((err, connection) => {
-                if (waitQueueMember[kCancelled]) {
-                    if (!err && connection) {
-                        this[kConnections].push(connection);
-                    }
-                }
-                else {
-                    if (err) {
-                        this.emitAndLog(ConnectionPool.CONNECTION_CHECK_OUT_FAILED, 
-                        // TODO(NODE-5192): Remove this cast
-                        new connection_pool_events_1.ConnectionCheckOutFailedEvent(this, 'connectionError', err));
-                    }
-                    else if (connection) {
-                        this[kCheckedOut].add(connection);
-                        this.emitAndLog(ConnectionPool.CONNECTION_CHECKED_OUT, new connection_pool_events_1.ConnectionCheckedOutEvent(this, connection));
-                    }
-                    waitQueueMember.timeoutController.clear();
-                    waitQueueMember.callback(err, connection);
-                }
-                process.nextTick(() => this.processWaitQueue());
-            });
-        }
-        this[kProcessingWaitQueue] = false;
-    }
-}
-/**
- * Emitted when the connection pool is created.
- * @event
- */
-ConnectionPool.CONNECTION_POOL_CREATED = constants_1.CONNECTION_POOL_CREATED;
-/**
- * Emitted once when the connection pool is closed
- * @event
- */
-ConnectionPool.CONNECTION_POOL_CLOSED = constants_1.CONNECTION_POOL_CLOSED;
-/**
- * Emitted each time the connection pool is cleared and it's generation incremented
- * @event
- */
-ConnectionPool.CONNECTION_POOL_CLEARED = constants_1.CONNECTION_POOL_CLEARED;
-/**
- * Emitted each time the connection pool is marked ready
- * @event
- */
-ConnectionPool.CONNECTION_POOL_READY = constants_1.CONNECTION_POOL_READY;
-/**
- * Emitted when a connection is created.
- * @event
- */
-ConnectionPool.CONNECTION_CREATED = constants_1.CONNECTION_CREATED;
-/**
- * Emitted when a connection becomes established, and is ready to use
- * @event
- */
-ConnectionPool.CONNECTION_READY = constants_1.CONNECTION_READY;
-/**
- * Emitted when a connection is closed
- * @event
- */
-ConnectionPool.CONNECTION_CLOSED = constants_1.CONNECTION_CLOSED;
-/**
- * Emitted when an attempt to check out a connection begins
- * @event
- */
-ConnectionPool.CONNECTION_CHECK_OUT_STARTED = constants_1.CONNECTION_CHECK_OUT_STARTED;
-/**
- * Emitted when an attempt to check out a connection fails
- * @event
- */
-ConnectionPool.CONNECTION_CHECK_OUT_FAILED = constants_1.CONNECTION_CHECK_OUT_FAILED;
-/**
- * Emitted each time a connection is successfully checked out of the connection pool
- * @event
- */
-ConnectionPool.CONNECTION_CHECKED_OUT = constants_1.CONNECTION_CHECKED_OUT;
-/**
- * Emitted each time a connection is successfully checked into the connection pool
- * @event
- */
-ConnectionPool.CONNECTION_CHECKED_IN = constants_1.CONNECTION_CHECKED_IN;
-exports.ConnectionPool = ConnectionPool;
-//# sourceMappingURL=connection_pool.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/connection_pool.js.map b/server/data-import/node_modules/mongodb/lib/cmap/connection_pool.js.map
deleted file mode 100644
index 23d6dca1012ac128c0b4d9ec6166edbdf0f08e3b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/connection_pool.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"connection_pool.js","sourceRoot":"","sources":["../../src/cmap/connection_pool.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/connection_pool_events.js b/server/data-import/node_modules/mongodb/lib/cmap/connection_pool_events.js
deleted file mode 100644
index a08d5ac1d3da17905d89ec9828d9be7cd88a72ed..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/connection_pool_events.js
+++ /dev/null
@@ -1,186 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ConnectionPoolClearedEvent = exports.ConnectionCheckedInEvent = exports.ConnectionCheckedOutEvent = exports.ConnectionCheckOutFailedEvent = exports.ConnectionCheckOutStartedEvent = exports.ConnectionClosedEvent = exports.ConnectionReadyEvent = exports.ConnectionCreatedEvent = exports.ConnectionPoolClosedEvent = exports.ConnectionPoolReadyEvent = exports.ConnectionPoolCreatedEvent = exports.ConnectionPoolMonitoringEvent = void 0;
-const constants_1 = require("../constants");
-/**
- * The base export class for all monitoring events published from the connection pool
- * @public
- * @category Event
- */
-class ConnectionPoolMonitoringEvent {
-    /** @internal */
-    constructor(pool) {
-        this.time = new Date();
-        this.address = pool.address;
-    }
-}
-exports.ConnectionPoolMonitoringEvent = ConnectionPoolMonitoringEvent;
-/**
- * An event published when a connection pool is created
- * @public
- * @category Event
- */
-class ConnectionPoolCreatedEvent extends ConnectionPoolMonitoringEvent {
-    /** @internal */
-    constructor(pool) {
-        super(pool);
-        /** @internal */
-        this.name = constants_1.CONNECTION_POOL_CREATED;
-        const { maxConnecting, maxPoolSize, minPoolSize, maxIdleTimeMS, waitQueueTimeoutMS } = pool.options;
-        this.options = { maxConnecting, maxPoolSize, minPoolSize, maxIdleTimeMS, waitQueueTimeoutMS };
-    }
-}
-exports.ConnectionPoolCreatedEvent = ConnectionPoolCreatedEvent;
-/**
- * An event published when a connection pool is ready
- * @public
- * @category Event
- */
-class ConnectionPoolReadyEvent extends ConnectionPoolMonitoringEvent {
-    /** @internal */
-    constructor(pool) {
-        super(pool);
-        /** @internal */
-        this.name = constants_1.CONNECTION_POOL_READY;
-    }
-}
-exports.ConnectionPoolReadyEvent = ConnectionPoolReadyEvent;
-/**
- * An event published when a connection pool is closed
- * @public
- * @category Event
- */
-class ConnectionPoolClosedEvent extends ConnectionPoolMonitoringEvent {
-    /** @internal */
-    constructor(pool) {
-        super(pool);
-        /** @internal */
-        this.name = constants_1.CONNECTION_POOL_CLOSED;
-    }
-}
-exports.ConnectionPoolClosedEvent = ConnectionPoolClosedEvent;
-/**
- * An event published when a connection pool creates a new connection
- * @public
- * @category Event
- */
-class ConnectionCreatedEvent extends ConnectionPoolMonitoringEvent {
-    /** @internal */
-    constructor(pool, connection) {
-        super(pool);
-        /** @internal */
-        this.name = constants_1.CONNECTION_CREATED;
-        this.connectionId = connection.id;
-    }
-}
-exports.ConnectionCreatedEvent = ConnectionCreatedEvent;
-/**
- * An event published when a connection is ready for use
- * @public
- * @category Event
- */
-class ConnectionReadyEvent extends ConnectionPoolMonitoringEvent {
-    /** @internal */
-    constructor(pool, connection) {
-        super(pool);
-        /** @internal */
-        this.name = constants_1.CONNECTION_READY;
-        this.connectionId = connection.id;
-    }
-}
-exports.ConnectionReadyEvent = ConnectionReadyEvent;
-/**
- * An event published when a connection is closed
- * @public
- * @category Event
- */
-class ConnectionClosedEvent extends ConnectionPoolMonitoringEvent {
-    /** @internal */
-    constructor(pool, connection, reason, error) {
-        super(pool);
-        /** @internal */
-        this.name = constants_1.CONNECTION_CLOSED;
-        this.connectionId = connection.id;
-        this.reason = reason;
-        this.serviceId = connection.serviceId;
-        this.error = error ?? null;
-    }
-}
-exports.ConnectionClosedEvent = ConnectionClosedEvent;
-/**
- * An event published when a request to check a connection out begins
- * @public
- * @category Event
- */
-class ConnectionCheckOutStartedEvent extends ConnectionPoolMonitoringEvent {
-    /** @internal */
-    constructor(pool) {
-        super(pool);
-        /** @internal */
-        this.name = constants_1.CONNECTION_CHECK_OUT_STARTED;
-    }
-}
-exports.ConnectionCheckOutStartedEvent = ConnectionCheckOutStartedEvent;
-/**
- * An event published when a request to check a connection out fails
- * @public
- * @category Event
- */
-class ConnectionCheckOutFailedEvent extends ConnectionPoolMonitoringEvent {
-    /** @internal */
-    constructor(pool, reason, error) {
-        super(pool);
-        /** @internal */
-        this.name = constants_1.CONNECTION_CHECK_OUT_FAILED;
-        this.reason = reason;
-        this.error = error;
-    }
-}
-exports.ConnectionCheckOutFailedEvent = ConnectionCheckOutFailedEvent;
-/**
- * An event published when a connection is checked out of the connection pool
- * @public
- * @category Event
- */
-class ConnectionCheckedOutEvent extends ConnectionPoolMonitoringEvent {
-    /** @internal */
-    constructor(pool, connection) {
-        super(pool);
-        /** @internal */
-        this.name = constants_1.CONNECTION_CHECKED_OUT;
-        this.connectionId = connection.id;
-    }
-}
-exports.ConnectionCheckedOutEvent = ConnectionCheckedOutEvent;
-/**
- * An event published when a connection is checked into the connection pool
- * @public
- * @category Event
- */
-class ConnectionCheckedInEvent extends ConnectionPoolMonitoringEvent {
-    /** @internal */
-    constructor(pool, connection) {
-        super(pool);
-        /** @internal */
-        this.name = constants_1.CONNECTION_CHECKED_IN;
-        this.connectionId = connection.id;
-    }
-}
-exports.ConnectionCheckedInEvent = ConnectionCheckedInEvent;
-/**
- * An event published when a connection pool is cleared
- * @public
- * @category Event
- */
-class ConnectionPoolClearedEvent extends ConnectionPoolMonitoringEvent {
-    /** @internal */
-    constructor(pool, options = {}) {
-        super(pool);
-        /** @internal */
-        this.name = constants_1.CONNECTION_POOL_CLEARED;
-        this.serviceId = options.serviceId;
-        this.interruptInUseConnections = options.interruptInUseConnections;
-    }
-}
-exports.ConnectionPoolClearedEvent = ConnectionPoolClearedEvent;
-//# sourceMappingURL=connection_pool_events.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/connection_pool_events.js.map b/server/data-import/node_modules/mongodb/lib/cmap/connection_pool_events.js.map
deleted file mode 100644
index 35418c72d04ec5ea434c0f743863a6f54b11993a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/connection_pool_events.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"connection_pool_events.js","sourceRoot":"","sources":["../../src/cmap/connection_pool_events.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/errors.js b/server/data-import/node_modules/mongodb/lib/cmap/errors.js
deleted file mode 100644
index b215a296a08414afec80c08d816b2aba3f0474c6..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/errors.js
+++ /dev/null
@@ -1,108 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.WaitQueueTimeoutError = exports.PoolClearedOnNetworkError = exports.PoolClearedError = exports.PoolClosedError = void 0;
-const error_1 = require("../error");
-/**
- * An error indicating a connection pool is closed
- * @category Error
- */
-class PoolClosedError extends error_1.MongoDriverError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(pool) {
-        super('Attempted to check out a connection from closed connection pool');
-        this.address = pool.address;
-    }
-    get name() {
-        return 'MongoPoolClosedError';
-    }
-}
-exports.PoolClosedError = PoolClosedError;
-/**
- * An error indicating a connection pool is currently paused
- * @category Error
- */
-class PoolClearedError extends error_1.MongoNetworkError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(pool, message) {
-        const errorMessage = message
-            ? message
-            : `Connection pool for ${pool.address} was cleared because another operation failed with: "${pool.serverError?.message}"`;
-        super(errorMessage, pool.serverError ? { cause: pool.serverError } : undefined);
-        this.address = pool.address;
-        this.addErrorLabel(error_1.MongoErrorLabel.PoolRequstedRetry);
-    }
-    get name() {
-        return 'MongoPoolClearedError';
-    }
-}
-exports.PoolClearedError = PoolClearedError;
-/**
- * An error indicating that a connection pool has been cleared after the monitor for that server timed out.
- * @category Error
- */
-class PoolClearedOnNetworkError extends PoolClearedError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(pool) {
-        super(pool, `Connection to ${pool.address} interrupted due to server monitor timeout`);
-    }
-    get name() {
-        return 'PoolClearedOnNetworkError';
-    }
-}
-exports.PoolClearedOnNetworkError = PoolClearedOnNetworkError;
-/**
- * An error thrown when a request to check out a connection times out
- * @category Error
- */
-class WaitQueueTimeoutError extends error_1.MongoDriverError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, address) {
-        super(message);
-        this.address = address;
-    }
-    get name() {
-        return 'MongoWaitQueueTimeoutError';
-    }
-}
-exports.WaitQueueTimeoutError = WaitQueueTimeoutError;
-//# sourceMappingURL=errors.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/errors.js.map b/server/data-import/node_modules/mongodb/lib/cmap/errors.js.map
deleted file mode 100644
index fcdf5c69ddcd08576c3eb887658d7c5b08da1ce6..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/errors.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/cmap/errors.ts"],"names":[],"mappings":";;;AAAA,oCAAgF;AAGhF;;;GAGG;AACH,MAAa,eAAgB,SAAQ,wBAAgB;IAInD;;;;;;;;;;QAUI;IACJ,YAAY,IAAoB;QAC9B,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,IAAa,IAAI;QACf,OAAO,sBAAsB,CAAC;IAChC,CAAC;CACF;AAvBD,0CAuBC;AAED;;;GAGG;AACH,MAAa,gBAAiB,SAAQ,yBAAiB;IAIrD;;;;;;;;;;QAUI;IACJ,YAAY,IAAoB,EAAE,OAAgB;QAChD,MAAM,YAAY,GAAG,OAAO;YAC1B,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,uBAAuB,IAAI,CAAC,OAAO,wDAAwD,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,CAAC;QAC5H,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,IAAI,CAAC,aAAa,CAAC,uBAAe,CAAC,iBAAiB,CAAC,CAAC;IACxD,CAAC;IAED,IAAa,IAAI;QACf,OAAO,uBAAuB,CAAC;IACjC,CAAC;CACF;AA5BD,4CA4BC;AAED;;;GAGG;AACH,MAAa,yBAA0B,SAAQ,gBAAgB;IAC7D;;;;;;;;;;QAUI;IACJ,YAAY,IAAoB;QAC9B,KAAK,CAAC,IAAI,EAAE,iBAAiB,IAAI,CAAC,OAAO,4CAA4C,CAAC,CAAC;IACzF,CAAC;IAED,IAAa,IAAI;QACf,OAAO,2BAA2B,CAAC;IACrC,CAAC;CACF;AAnBD,8DAmBC;AAED;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,wBAAgB;IAIzD;;;;;;;;;;QAUI;IACJ,YAAY,OAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAa,IAAI;QACf,OAAO,4BAA4B,CAAC;IACtC,CAAC;CACF;AAvBD,sDAuBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/handshake/client_metadata.js b/server/data-import/node_modules/mongodb/lib/cmap/handshake/client_metadata.js
deleted file mode 100644
index 524adf31ba20406995fd9e55ebe221409559123a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/handshake/client_metadata.js
+++ /dev/null
@@ -1,173 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getFAASEnv = exports.makeClientMetadata = exports.LimitedSizeDocument = void 0;
-const os = require("os");
-const process = require("process");
-const bson_1 = require("../../bson");
-const error_1 = require("../../error");
-// eslint-disable-next-line @typescript-eslint/no-var-requires
-const NODE_DRIVER_VERSION = require('../../../package.json').version;
-/** @internal */
-class LimitedSizeDocument {
-    constructor(maxSize) {
-        this.maxSize = maxSize;
-        this.document = new Map();
-        /** BSON overhead: Int32 + Null byte */
-        this.documentSize = 5;
-    }
-    /** Only adds key/value if the bsonByteLength is less than MAX_SIZE */
-    ifItFitsItSits(key, value) {
-        // The BSON byteLength of the new element is the same as serializing it to its own document
-        // subtracting the document size int32 and the null terminator.
-        const newElementSize = bson_1.BSON.serialize(new Map().set(key, value)).byteLength - 5;
-        if (newElementSize + this.documentSize > this.maxSize) {
-            return false;
-        }
-        this.documentSize += newElementSize;
-        this.document.set(key, value);
-        return true;
-    }
-    toObject() {
-        return bson_1.BSON.deserialize(bson_1.BSON.serialize(this.document), {
-            promoteLongs: false,
-            promoteBuffers: false,
-            promoteValues: false,
-            useBigInt64: false
-        });
-    }
-}
-exports.LimitedSizeDocument = LimitedSizeDocument;
-/**
- * From the specs:
- * Implementors SHOULD cumulatively update fields in the following order until the document is under the size limit:
- * 1. Omit fields from `env` except `env.name`.
- * 2. Omit fields from `os` except `os.type`.
- * 3. Omit the `env` document entirely.
- * 4. Truncate `platform`. -- special we do not truncate this field
- */
-function makeClientMetadata(options) {
-    const metadataDocument = new LimitedSizeDocument(512);
-    const { appName = '' } = options;
-    // Add app name first, it must be sent
-    if (appName.length > 0) {
-        const name = Buffer.byteLength(appName, 'utf8') <= 128
-            ? options.appName
-            : Buffer.from(appName, 'utf8').subarray(0, 128).toString('utf8');
-        metadataDocument.ifItFitsItSits('application', { name });
-    }
-    const { name = '', version = '', platform = '' } = options.driverInfo;
-    const driverInfo = {
-        name: name.length > 0 ? `nodejs|${name}` : 'nodejs',
-        version: version.length > 0 ? `${NODE_DRIVER_VERSION}|${version}` : NODE_DRIVER_VERSION
-    };
-    if (!metadataDocument.ifItFitsItSits('driver', driverInfo)) {
-        throw new error_1.MongoInvalidArgumentError('Unable to include driverInfo name and version, metadata cannot exceed 512 bytes');
-    }
-    let runtimeInfo = getRuntimeInfo();
-    if (platform.length > 0) {
-        runtimeInfo = `${runtimeInfo}|${platform}`;
-    }
-    if (!metadataDocument.ifItFitsItSits('platform', runtimeInfo)) {
-        throw new error_1.MongoInvalidArgumentError('Unable to include driverInfo platform, metadata cannot exceed 512 bytes');
-    }
-    // Note: order matters, os.type is last so it will be removed last if we're at maxSize
-    const osInfo = new Map()
-        .set('name', process.platform)
-        .set('architecture', process.arch)
-        .set('version', os.release())
-        .set('type', os.type());
-    if (!metadataDocument.ifItFitsItSits('os', osInfo)) {
-        for (const key of osInfo.keys()) {
-            osInfo.delete(key);
-            if (osInfo.size === 0)
-                break;
-            if (metadataDocument.ifItFitsItSits('os', osInfo))
-                break;
-        }
-    }
-    const faasEnv = getFAASEnv();
-    if (faasEnv != null) {
-        if (!metadataDocument.ifItFitsItSits('env', faasEnv)) {
-            for (const key of faasEnv.keys()) {
-                faasEnv.delete(key);
-                if (faasEnv.size === 0)
-                    break;
-                if (metadataDocument.ifItFitsItSits('env', faasEnv))
-                    break;
-            }
-        }
-    }
-    return metadataDocument.toObject();
-}
-exports.makeClientMetadata = makeClientMetadata;
-/**
- * Collects FaaS metadata.
- * - `name` MUST be the last key in the Map returned.
- */
-function getFAASEnv() {
-    const { AWS_EXECUTION_ENV = '', AWS_LAMBDA_RUNTIME_API = '', FUNCTIONS_WORKER_RUNTIME = '', K_SERVICE = '', FUNCTION_NAME = '', VERCEL = '', AWS_LAMBDA_FUNCTION_MEMORY_SIZE = '', AWS_REGION = '', FUNCTION_MEMORY_MB = '', FUNCTION_REGION = '', FUNCTION_TIMEOUT_SEC = '', VERCEL_REGION = '' } = process.env;
-    const isAWSFaaS = AWS_EXECUTION_ENV.startsWith('AWS_Lambda_') || AWS_LAMBDA_RUNTIME_API.length > 0;
-    const isAzureFaaS = FUNCTIONS_WORKER_RUNTIME.length > 0;
-    const isGCPFaaS = K_SERVICE.length > 0 || FUNCTION_NAME.length > 0;
-    const isVercelFaaS = VERCEL.length > 0;
-    // Note: order matters, name must always be the last key
-    const faasEnv = new Map();
-    // When isVercelFaaS is true so is isAWSFaaS; Vercel inherits the AWS env
-    if (isVercelFaaS && !(isAzureFaaS || isGCPFaaS)) {
-        if (VERCEL_REGION.length > 0) {
-            faasEnv.set('region', VERCEL_REGION);
-        }
-        faasEnv.set('name', 'vercel');
-        return faasEnv;
-    }
-    if (isAWSFaaS && !(isAzureFaaS || isGCPFaaS || isVercelFaaS)) {
-        if (AWS_REGION.length > 0) {
-            faasEnv.set('region', AWS_REGION);
-        }
-        if (AWS_LAMBDA_FUNCTION_MEMORY_SIZE.length > 0 &&
-            Number.isInteger(+AWS_LAMBDA_FUNCTION_MEMORY_SIZE)) {
-            faasEnv.set('memory_mb', new bson_1.Int32(AWS_LAMBDA_FUNCTION_MEMORY_SIZE));
-        }
-        faasEnv.set('name', 'aws.lambda');
-        return faasEnv;
-    }
-    if (isAzureFaaS && !(isGCPFaaS || isAWSFaaS || isVercelFaaS)) {
-        faasEnv.set('name', 'azure.func');
-        return faasEnv;
-    }
-    if (isGCPFaaS && !(isAzureFaaS || isAWSFaaS || isVercelFaaS)) {
-        if (FUNCTION_REGION.length > 0) {
-            faasEnv.set('region', FUNCTION_REGION);
-        }
-        if (FUNCTION_MEMORY_MB.length > 0 && Number.isInteger(+FUNCTION_MEMORY_MB)) {
-            faasEnv.set('memory_mb', new bson_1.Int32(FUNCTION_MEMORY_MB));
-        }
-        if (FUNCTION_TIMEOUT_SEC.length > 0 && Number.isInteger(+FUNCTION_TIMEOUT_SEC)) {
-            faasEnv.set('timeout_sec', new bson_1.Int32(FUNCTION_TIMEOUT_SEC));
-        }
-        faasEnv.set('name', 'gcp.func');
-        return faasEnv;
-    }
-    return null;
-}
-exports.getFAASEnv = getFAASEnv;
-/**
- * @internal
- * Get current JavaScript runtime platform
- *
- * NOTE: The version information fetching is intentionally written defensively
- * to avoid having a released driver version that becomes incompatible
- * with a future change to these global objects.
- */
-function getRuntimeInfo() {
-    if ('Deno' in globalThis) {
-        const version = typeof Deno?.version?.deno === 'string' ? Deno?.version?.deno : '0.0.0-unknown';
-        return `Deno v${version}, ${os.endianness()}`;
-    }
-    if ('Bun' in globalThis) {
-        const version = typeof Bun?.version === 'string' ? Bun?.version : '0.0.0-unknown';
-        return `Bun v${version}, ${os.endianness()}`;
-    }
-    return `Node.js ${process.version}, ${os.endianness()}`;
-}
-//# sourceMappingURL=client_metadata.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/handshake/client_metadata.js.map b/server/data-import/node_modules/mongodb/lib/cmap/handshake/client_metadata.js.map
deleted file mode 100644
index 8f0669edb5349afec0d30d28193d6937b1cb39bc..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/handshake/client_metadata.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"client_metadata.js","sourceRoot":"","sources":["../../../src/cmap/handshake/client_metadata.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/message_stream.js b/server/data-import/node_modules/mongodb/lib/cmap/message_stream.js
deleted file mode 100644
index bf8a700998081962e859b07bbb1bf6769ac7ad65..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/message_stream.js
+++ /dev/null
@@ -1,149 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.MessageStream = void 0;
-const stream_1 = require("stream");
-const error_1 = require("../error");
-const utils_1 = require("../utils");
-const commands_1 = require("./commands");
-const compression_1 = require("./wire_protocol/compression");
-const constants_1 = require("./wire_protocol/constants");
-const MESSAGE_HEADER_SIZE = 16;
-const COMPRESSION_DETAILS_SIZE = 9; // originalOpcode + uncompressedSize, compressorID
-const kDefaultMaxBsonMessageSize = 1024 * 1024 * 16 * 4;
-/** @internal */
-const kBuffer = Symbol('buffer');
-/**
- * A duplex stream that is capable of reading and writing raw wire protocol messages, with
- * support for optional compression
- * @internal
- */
-class MessageStream extends stream_1.Duplex {
-    constructor(options = {}) {
-        super(options);
-        /** @internal */
-        this.isMonitoringConnection = false;
-        this.maxBsonMessageSize = options.maxBsonMessageSize || kDefaultMaxBsonMessageSize;
-        this[kBuffer] = new utils_1.BufferPool();
-    }
-    get buffer() {
-        return this[kBuffer];
-    }
-    _write(chunk, _, callback) {
-        this[kBuffer].append(chunk);
-        processIncomingData(this, callback);
-    }
-    _read( /* size */) {
-        // NOTE: This implementation is empty because we explicitly push data to be read
-        //       when `writeMessage` is called.
-        return;
-    }
-    writeCommand(command, operationDescription) {
-        const agreedCompressor = operationDescription.agreedCompressor ?? 'none';
-        if (agreedCompressor === 'none' || !commands_1.OpCompressedRequest.canCompress(command)) {
-            const data = command.toBin();
-            this.push(Array.isArray(data) ? Buffer.concat(data) : data);
-            return;
-        }
-        // otherwise, compress the message
-        const concatenatedOriginalCommandBuffer = Buffer.concat(command.toBin());
-        const messageToBeCompressed = concatenatedOriginalCommandBuffer.slice(MESSAGE_HEADER_SIZE);
-        // Extract information needed for OP_COMPRESSED from the uncompressed message
-        const originalCommandOpCode = concatenatedOriginalCommandBuffer.readInt32LE(12);
-        const options = {
-            agreedCompressor,
-            zlibCompressionLevel: operationDescription.zlibCompressionLevel ?? 0
-        };
-        // Compress the message body
-        (0, compression_1.compress)(options, messageToBeCompressed).then(compressedMessage => {
-            // Create the msgHeader of OP_COMPRESSED
-            const msgHeader = Buffer.alloc(MESSAGE_HEADER_SIZE);
-            msgHeader.writeInt32LE(MESSAGE_HEADER_SIZE + COMPRESSION_DETAILS_SIZE + compressedMessage.length, 0); // messageLength
-            msgHeader.writeInt32LE(command.requestId, 4); // requestID
-            msgHeader.writeInt32LE(0, 8); // responseTo (zero)
-            msgHeader.writeInt32LE(constants_1.OP_COMPRESSED, 12); // opCode
-            // Create the compression details of OP_COMPRESSED
-            const compressionDetails = Buffer.alloc(COMPRESSION_DETAILS_SIZE);
-            compressionDetails.writeInt32LE(originalCommandOpCode, 0); // originalOpcode
-            compressionDetails.writeInt32LE(messageToBeCompressed.length, 4); // Size of the uncompressed compressedMessage, excluding the MsgHeader
-            compressionDetails.writeUInt8(compression_1.Compressor[agreedCompressor], 8); // compressorID
-            this.push(Buffer.concat([msgHeader, compressionDetails, compressedMessage]));
-        }, error => {
-            operationDescription.cb(error);
-        });
-    }
-}
-exports.MessageStream = MessageStream;
-function processIncomingData(stream, callback) {
-    const buffer = stream[kBuffer];
-    const sizeOfMessage = buffer.getInt32();
-    if (sizeOfMessage == null) {
-        return callback();
-    }
-    if (sizeOfMessage < 0) {
-        return callback(new error_1.MongoParseError(`Invalid message size: ${sizeOfMessage}`));
-    }
-    if (sizeOfMessage > stream.maxBsonMessageSize) {
-        return callback(new error_1.MongoParseError(`Invalid message size: ${sizeOfMessage}, max allowed: ${stream.maxBsonMessageSize}`));
-    }
-    if (sizeOfMessage > buffer.length) {
-        return callback();
-    }
-    const message = buffer.read(sizeOfMessage);
-    const messageHeader = {
-        length: message.readInt32LE(0),
-        requestId: message.readInt32LE(4),
-        responseTo: message.readInt32LE(8),
-        opCode: message.readInt32LE(12)
-    };
-    const monitorHasAnotherHello = () => {
-        if (stream.isMonitoringConnection) {
-            // Can we read the next message size?
-            const sizeOfMessage = buffer.getInt32();
-            if (sizeOfMessage != null && sizeOfMessage <= buffer.length) {
-                return true;
-            }
-        }
-        return false;
-    };
-    let ResponseType = messageHeader.opCode === constants_1.OP_MSG ? commands_1.OpMsgResponse : commands_1.OpQueryResponse;
-    if (messageHeader.opCode !== constants_1.OP_COMPRESSED) {
-        const messageBody = message.subarray(MESSAGE_HEADER_SIZE);
-        // If we are a monitoring connection message stream and
-        // there is more in the buffer that can be read, skip processing since we
-        // want the last hello command response that is in the buffer.
-        if (monitorHasAnotherHello()) {
-            return processIncomingData(stream, callback);
-        }
-        stream.emit('message', new ResponseType(message, messageHeader, messageBody));
-        if (buffer.length >= 4) {
-            return processIncomingData(stream, callback);
-        }
-        return callback();
-    }
-    messageHeader.fromCompressed = true;
-    messageHeader.opCode = message.readInt32LE(MESSAGE_HEADER_SIZE);
-    messageHeader.length = message.readInt32LE(MESSAGE_HEADER_SIZE + 4);
-    const compressorID = message[MESSAGE_HEADER_SIZE + 8];
-    const compressedBuffer = message.slice(MESSAGE_HEADER_SIZE + 9);
-    // recalculate based on wrapped opcode
-    ResponseType = messageHeader.opCode === constants_1.OP_MSG ? commands_1.OpMsgResponse : commands_1.OpQueryResponse;
-    (0, compression_1.decompress)(compressorID, compressedBuffer).then(messageBody => {
-        if (messageBody.length !== messageHeader.length) {
-            return callback(new error_1.MongoDecompressionError('Message body and message header must be the same length'));
-        }
-        // If we are a monitoring connection message stream and
-        // there is more in the buffer that can be read, skip processing since we
-        // want the last hello command response that is in the buffer.
-        if (monitorHasAnotherHello()) {
-            return processIncomingData(stream, callback);
-        }
-        stream.emit('message', new ResponseType(message, messageHeader, messageBody));
-        if (buffer.length >= 4) {
-            return processIncomingData(stream, callback);
-        }
-        return callback();
-    }, error => {
-        return callback(error);
-    });
-}
-//# sourceMappingURL=message_stream.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/message_stream.js.map b/server/data-import/node_modules/mongodb/lib/cmap/message_stream.js.map
deleted file mode 100644
index afc458496e515e0bffbc5d24b5cbdb599b417e97..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/message_stream.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"message_stream.js","sourceRoot":"","sources":["../../src/cmap/message_stream.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/metrics.js b/server/data-import/node_modules/mongodb/lib/cmap/metrics.js
deleted file mode 100644
index b510164baacc43d2024e4859df4662a38e824dbd..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/metrics.js
+++ /dev/null
@@ -1,62 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ConnectionPoolMetrics = void 0;
-/** @internal */
-class ConnectionPoolMetrics {
-    constructor() {
-        this.txnConnections = 0;
-        this.cursorConnections = 0;
-        this.otherConnections = 0;
-    }
-    /**
-     * Mark a connection as pinned for a specific operation.
-     */
-    markPinned(pinType) {
-        if (pinType === ConnectionPoolMetrics.TXN) {
-            this.txnConnections += 1;
-        }
-        else if (pinType === ConnectionPoolMetrics.CURSOR) {
-            this.cursorConnections += 1;
-        }
-        else {
-            this.otherConnections += 1;
-        }
-    }
-    /**
-     * Unmark a connection as pinned for an operation.
-     */
-    markUnpinned(pinType) {
-        if (pinType === ConnectionPoolMetrics.TXN) {
-            this.txnConnections -= 1;
-        }
-        else if (pinType === ConnectionPoolMetrics.CURSOR) {
-            this.cursorConnections -= 1;
-        }
-        else {
-            this.otherConnections -= 1;
-        }
-    }
-    /**
-     * Return information about the cmap metrics as a string.
-     */
-    info(maxPoolSize) {
-        return ('Timed out while checking out a connection from connection pool: ' +
-            `maxPoolSize: ${maxPoolSize}, ` +
-            `connections in use by cursors: ${this.cursorConnections}, ` +
-            `connections in use by transactions: ${this.txnConnections}, ` +
-            `connections in use by other operations: ${this.otherConnections}`);
-    }
-    /**
-     * Reset the metrics to the initial values.
-     */
-    reset() {
-        this.txnConnections = 0;
-        this.cursorConnections = 0;
-        this.otherConnections = 0;
-    }
-}
-ConnectionPoolMetrics.TXN = 'txn';
-ConnectionPoolMetrics.CURSOR = 'cursor';
-ConnectionPoolMetrics.OTHER = 'other';
-exports.ConnectionPoolMetrics = ConnectionPoolMetrics;
-//# sourceMappingURL=metrics.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/metrics.js.map b/server/data-import/node_modules/mongodb/lib/cmap/metrics.js.map
deleted file mode 100644
index c3b5fe25c9b736b2399b6e8975a6451dd11024f3..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/metrics.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/cmap/metrics.ts"],"names":[],"mappings":";;;AAAA,gBAAgB;AAChB,MAAa,qBAAqB;IAAlC;QAKE,mBAAc,GAAG,CAAC,CAAC;QACnB,sBAAiB,GAAG,CAAC,CAAC;QACtB,qBAAgB,GAAG,CAAC,CAAC;IAiDvB,CAAC;IA/CC;;OAEG;IACH,UAAU,CAAC,OAAe;QACxB,IAAI,OAAO,KAAK,qBAAqB,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;SAC1B;aAAM,IAAI,OAAO,KAAK,qBAAqB,CAAC,MAAM,EAAE;YACnD,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;SAC5B;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,OAAe;QAC1B,IAAI,OAAO,KAAK,qBAAqB,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;SAC1B;aAAM,IAAI,OAAO,KAAK,qBAAqB,CAAC,MAAM,EAAE;YACnD,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;SAC5B;IACH,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,WAAmB;QACtB,OAAO,CACL,kEAAkE;YAClE,gBAAgB,WAAW,IAAI;YAC/B,kCAAkC,IAAI,CAAC,iBAAiB,IAAI;YAC5D,uCAAuC,IAAI,CAAC,cAAc,IAAI;YAC9D,2CAA2C,IAAI,CAAC,gBAAgB,EAAE,CACnE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC5B,CAAC;;AAtDe,yBAAG,GAAG,KAAc,AAAjB,CAAkB;AACrB,4BAAM,GAAG,QAAiB,AAApB,CAAqB;AAC3B,2BAAK,GAAG,OAAgB,AAAnB,CAAoB;AAH9B,sDAAqB"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/stream_description.js b/server/data-import/node_modules/mongodb/lib/cmap/stream_description.js
deleted file mode 100644
index d2337b7624d4d6634731459afd3177116c78ee5e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/stream_description.js
+++ /dev/null
@@ -1,51 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.StreamDescription = void 0;
-const common_1 = require("../sdam/common");
-const server_description_1 = require("../sdam/server_description");
-const RESPONSE_FIELDS = [
-    'minWireVersion',
-    'maxWireVersion',
-    'maxBsonObjectSize',
-    'maxMessageSizeBytes',
-    'maxWriteBatchSize',
-    'logicalSessionTimeoutMinutes'
-];
-/** @public */
-class StreamDescription {
-    constructor(address, options) {
-        this.address = address;
-        this.type = common_1.ServerType.Unknown;
-        this.minWireVersion = undefined;
-        this.maxWireVersion = undefined;
-        this.maxBsonObjectSize = 16777216;
-        this.maxMessageSizeBytes = 48000000;
-        this.maxWriteBatchSize = 100000;
-        this.logicalSessionTimeoutMinutes = options?.logicalSessionTimeoutMinutes;
-        this.loadBalanced = !!options?.loadBalanced;
-        this.compressors =
-            options && options.compressors && Array.isArray(options.compressors)
-                ? options.compressors
-                : [];
-    }
-    receiveResponse(response) {
-        if (response == null) {
-            return;
-        }
-        this.type = (0, server_description_1.parseServerType)(response);
-        for (const field of RESPONSE_FIELDS) {
-            if (response[field] != null) {
-                this[field] = response[field];
-            }
-            // testing case
-            if ('__nodejs_mock_server__' in response) {
-                this.__nodejs_mock_server__ = response['__nodejs_mock_server__'];
-            }
-        }
-        if (response.compression) {
-            this.compressor = this.compressors.filter(c => response.compression?.includes(c))[0];
-        }
-    }
-}
-exports.StreamDescription = StreamDescription;
-//# sourceMappingURL=stream_description.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/stream_description.js.map b/server/data-import/node_modules/mongodb/lib/cmap/stream_description.js.map
deleted file mode 100644
index fabbada0166b01a4df9ab3d5be61de9cb447b04b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/stream_description.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"stream_description.js","sourceRoot":"","sources":["../../src/cmap/stream_description.ts"],"names":[],"mappings":";;;AACA,2CAA4C;AAC5C,mEAA6D;AAG7D,MAAM,eAAe,GAAG;IACtB,gBAAgB;IAChB,gBAAgB;IAChB,mBAAmB;IACnB,qBAAqB;IACrB,mBAAmB;IACnB,8BAA8B;CACtB,CAAC;AASX,cAAc;AACd,MAAa,iBAAiB;IAiB5B,YAAY,OAAe,EAAE,OAAkC;QAC7D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,mBAAU,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QAClC,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAChC,IAAI,CAAC,4BAA4B,GAAG,OAAO,EAAE,4BAA4B,CAAC;QAC1E,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC;QAC5C,IAAI,CAAC,WAAW;YACd,OAAO,IAAI,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;gBAClE,CAAC,CAAC,OAAO,CAAC,WAAW;gBACrB,CAAC,CAAC,EAAE,CAAC;IACX,CAAC;IAED,eAAe,CAAC,QAAyB;QACvC,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,OAAO;SACR;QACD,IAAI,CAAC,IAAI,GAAG,IAAA,oCAAe,EAAC,QAAQ,CAAC,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE;YACnC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;gBAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC/B;YAED,eAAe;YACf,IAAI,wBAAwB,IAAI,QAAQ,EAAE;gBACxC,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAC;aAClE;SACF;QAED,IAAI,QAAQ,CAAC,WAAW,EAAE;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtF;IACH,CAAC;CACF;AArDD,8CAqDC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/compression.js b/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/compression.js
deleted file mode 100644
index eab3b0d2b6bee15c483ed63a360a7c0c278d693a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/compression.js
+++ /dev/null
@@ -1,163 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.decompressResponse = exports.compressCommand = exports.decompress = exports.compress = exports.uncompressibleCommands = exports.Compressor = void 0;
-const util_1 = require("util");
-const zlib = require("zlib");
-const constants_1 = require("../../constants");
-const deps_1 = require("../../deps");
-const error_1 = require("../../error");
-const commands_1 = require("../commands");
-const constants_2 = require("./constants");
-/** @public */
-exports.Compressor = Object.freeze({
-    none: 0,
-    snappy: 1,
-    zlib: 2,
-    zstd: 3
-});
-exports.uncompressibleCommands = new Set([
-    constants_1.LEGACY_HELLO_COMMAND,
-    'saslStart',
-    'saslContinue',
-    'getnonce',
-    'authenticate',
-    'createUser',
-    'updateUser',
-    'copydbSaslStart',
-    'copydbgetnonce',
-    'copydb'
-]);
-const ZSTD_COMPRESSION_LEVEL = 3;
-const zlibInflate = (0, util_1.promisify)(zlib.inflate.bind(zlib));
-const zlibDeflate = (0, util_1.promisify)(zlib.deflate.bind(zlib));
-let zstd;
-let Snappy = null;
-function loadSnappy() {
-    if (Snappy == null) {
-        const snappyImport = (0, deps_1.getSnappy)();
-        if ('kModuleError' in snappyImport) {
-            throw snappyImport.kModuleError;
-        }
-        Snappy = snappyImport;
-    }
-    return Snappy;
-}
-// Facilitate compressing a message using an agreed compressor
-async function compress(options, dataToBeCompressed) {
-    const zlibOptions = {};
-    switch (options.agreedCompressor) {
-        case 'snappy': {
-            Snappy ??= loadSnappy();
-            return Snappy.compress(dataToBeCompressed);
-        }
-        case 'zstd': {
-            loadZstd();
-            if ('kModuleError' in zstd) {
-                throw zstd['kModuleError'];
-            }
-            return zstd.compress(dataToBeCompressed, ZSTD_COMPRESSION_LEVEL);
-        }
-        case 'zlib': {
-            if (options.zlibCompressionLevel) {
-                zlibOptions.level = options.zlibCompressionLevel;
-            }
-            return zlibDeflate(dataToBeCompressed, zlibOptions);
-        }
-        default: {
-            throw new error_1.MongoInvalidArgumentError(`Unknown compressor ${options.agreedCompressor} failed to compress`);
-        }
-    }
-}
-exports.compress = compress;
-// Decompress a message using the given compressor
-async function decompress(compressorID, compressedData) {
-    if (compressorID !== exports.Compressor.snappy &&
-        compressorID !== exports.Compressor.zstd &&
-        compressorID !== exports.Compressor.zlib &&
-        compressorID !== exports.Compressor.none) {
-        throw new error_1.MongoDecompressionError(`Server sent message compressed using an unsupported compressor. (Received compressor ID ${compressorID})`);
-    }
-    switch (compressorID) {
-        case exports.Compressor.snappy: {
-            Snappy ??= loadSnappy();
-            return Snappy.uncompress(compressedData, { asBuffer: true });
-        }
-        case exports.Compressor.zstd: {
-            loadZstd();
-            if ('kModuleError' in zstd) {
-                throw zstd['kModuleError'];
-            }
-            return zstd.decompress(compressedData);
-        }
-        case exports.Compressor.zlib: {
-            return zlibInflate(compressedData);
-        }
-        default: {
-            return compressedData;
-        }
-    }
-}
-exports.decompress = decompress;
-/**
- * Load ZStandard if it is not already set.
- */
-function loadZstd() {
-    if (!zstd) {
-        zstd = (0, deps_1.getZstdLibrary)();
-    }
-}
-const MESSAGE_HEADER_SIZE = 16;
-/**
- * @internal
- *
- * Compresses an OP_MSG or OP_QUERY message, if compression is configured.  This method
- * also serializes the command to BSON.
- */
-async function compressCommand(command, description) {
-    const finalCommand = description.agreedCompressor === 'none' || !commands_1.OpCompressedRequest.canCompress(command)
-        ? command
-        : new commands_1.OpCompressedRequest(command, {
-            agreedCompressor: description.agreedCompressor ?? 'none',
-            zlibCompressionLevel: description.zlibCompressionLevel ?? 0
-        });
-    const data = await finalCommand.toBin();
-    return Buffer.concat(data);
-}
-exports.compressCommand = compressCommand;
-/**
- * @internal
- *
- * Decompresses an OP_MSG or OP_QUERY response from the server, if compression is configured.
- *
- * This method does not parse the response's BSON.
- */
-async function decompressResponse(message) {
-    const messageHeader = {
-        length: message.readInt32LE(0),
-        requestId: message.readInt32LE(4),
-        responseTo: message.readInt32LE(8),
-        opCode: message.readInt32LE(12)
-    };
-    if (messageHeader.opCode !== constants_2.OP_COMPRESSED) {
-        const ResponseType = messageHeader.opCode === constants_2.OP_MSG ? commands_1.OpMsgResponse : commands_1.OpQueryResponse;
-        const messageBody = message.subarray(MESSAGE_HEADER_SIZE);
-        return new ResponseType(message, messageHeader, messageBody);
-    }
-    const header = {
-        ...messageHeader,
-        fromCompressed: true,
-        opCode: message.readInt32LE(MESSAGE_HEADER_SIZE),
-        length: message.readInt32LE(MESSAGE_HEADER_SIZE + 4)
-    };
-    const compressorID = message[MESSAGE_HEADER_SIZE + 8];
-    const compressedBuffer = message.slice(MESSAGE_HEADER_SIZE + 9);
-    // recalculate based on wrapped opcode
-    const ResponseType = header.opCode === constants_2.OP_MSG ? commands_1.OpMsgResponse : commands_1.OpQueryResponse;
-    const messageBody = await decompress(compressorID, compressedBuffer);
-    if (messageBody.length !== header.length) {
-        throw new error_1.MongoDecompressionError('Message body and message header must be the same length');
-    }
-    return new ResponseType(message, header, messageBody);
-}
-exports.decompressResponse = decompressResponse;
-//# sourceMappingURL=compression.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map b/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map
deleted file mode 100644
index 0c0eb914b1d8f5fc08cff8430e6a27c351c9cbb3..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"compression.js","sourceRoot":"","sources":["../../../src/cmap/wire_protocol/compression.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/constants.js b/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/constants.js
deleted file mode 100644
index b250859a24340cf779f55bf71eaac2371ee4046f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/constants.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.OP_MSG = exports.OP_COMPRESSED = exports.OP_DELETE = exports.OP_QUERY = exports.OP_INSERT = exports.OP_UPDATE = exports.OP_REPLY = exports.MIN_SUPPORTED_QE_SERVER_VERSION = exports.MIN_SUPPORTED_QE_WIRE_VERSION = exports.MAX_SUPPORTED_WIRE_VERSION = exports.MIN_SUPPORTED_WIRE_VERSION = exports.MAX_SUPPORTED_SERVER_VERSION = exports.MIN_SUPPORTED_SERVER_VERSION = void 0;
-exports.MIN_SUPPORTED_SERVER_VERSION = '3.6';
-exports.MAX_SUPPORTED_SERVER_VERSION = '7.0';
-exports.MIN_SUPPORTED_WIRE_VERSION = 6;
-exports.MAX_SUPPORTED_WIRE_VERSION = 21;
-exports.MIN_SUPPORTED_QE_WIRE_VERSION = 21;
-exports.MIN_SUPPORTED_QE_SERVER_VERSION = '7.0';
-exports.OP_REPLY = 1;
-exports.OP_UPDATE = 2001;
-exports.OP_INSERT = 2002;
-exports.OP_QUERY = 2004;
-exports.OP_DELETE = 2006;
-exports.OP_COMPRESSED = 2012;
-exports.OP_MSG = 2013;
-//# sourceMappingURL=constants.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map b/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map
deleted file mode 100644
index 6aa9450b9cc2d3d90af4e4900de71723a87d9288..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cmap/wire_protocol/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,4BAA4B,GAAG,KAAK,CAAC;AACrC,QAAA,4BAA4B,GAAG,KAAK,CAAC;AACrC,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAC/B,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAChC,QAAA,6BAA6B,GAAG,EAAE,CAAC;AACnC,QAAA,+BAA+B,GAAG,KAAK,CAAC;AACxC,QAAA,QAAQ,GAAG,CAAC,CAAC;AACb,QAAA,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,QAAQ,GAAG,IAAI,CAAC;AAChB,QAAA,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,aAAa,GAAG,IAAI,CAAC;AACrB,QAAA,MAAM,GAAG,IAAI,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/shared.js b/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/shared.js
deleted file mode 100644
index 078f2fd20448cd44780ed1ed3afb0d4985a26605..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/shared.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.isSharded = exports.getReadPreference = void 0;
-const error_1 = require("../../error");
-const read_preference_1 = require("../../read_preference");
-const common_1 = require("../../sdam/common");
-const topology_description_1 = require("../../sdam/topology_description");
-function getReadPreference(options) {
-    // Default to command version of the readPreference
-    let readPreference = options?.readPreference ?? read_preference_1.ReadPreference.primary;
-    // If we have an option readPreference override the command one
-    if (options?.readPreference) {
-        readPreference = options.readPreference;
-    }
-    if (typeof readPreference === 'string') {
-        readPreference = read_preference_1.ReadPreference.fromString(readPreference);
-    }
-    if (!(readPreference instanceof read_preference_1.ReadPreference)) {
-        throw new error_1.MongoInvalidArgumentError('Option "readPreference" must be a ReadPreference instance');
-    }
-    return readPreference;
-}
-exports.getReadPreference = getReadPreference;
-function isSharded(topologyOrServer) {
-    if (topologyOrServer == null) {
-        return false;
-    }
-    if (topologyOrServer.description && topologyOrServer.description.type === common_1.ServerType.Mongos) {
-        return true;
-    }
-    // NOTE: This is incredibly inefficient, and should be removed once command construction
-    //       happens based on `Server` not `Topology`.
-    if (topologyOrServer.description && topologyOrServer.description instanceof topology_description_1.TopologyDescription) {
-        const servers = Array.from(topologyOrServer.description.servers.values());
-        return servers.some((server) => server.type === common_1.ServerType.Mongos);
-    }
-    return false;
-}
-exports.isSharded = isSharded;
-//# sourceMappingURL=shared.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/shared.js.map b/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/shared.js.map
deleted file mode 100644
index 91e0d4c0f18dbbc0f1c38ebd6544434e9dbf1946..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cmap/wire_protocol/shared.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/cmap/wire_protocol/shared.ts"],"names":[],"mappings":";;;AAAA,uCAAwD;AAExD,2DAAuD;AACvD,8CAA+C;AAI/C,0EAAsE;AAOtE,SAAgB,iBAAiB,CAAC,OAA8B;IAC9D,mDAAmD;IACnD,IAAI,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,gCAAc,CAAC,OAAO,CAAC;IACvE,+DAA+D;IAC/D,IAAI,OAAO,EAAE,cAAc,EAAE;QAC3B,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;KACzC;IAED,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE;QACtC,cAAc,GAAG,gCAAc,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;KAC5D;IAED,IAAI,CAAC,CAAC,cAAc,YAAY,gCAAc,CAAC,EAAE;QAC/C,MAAM,IAAI,iCAAyB,CACjC,2DAA2D,CAC5D,CAAC;KACH;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAnBD,8CAmBC;AAED,SAAgB,SAAS,CAAC,gBAAiD;IACzE,IAAI,gBAAgB,IAAI,IAAI,EAAE;QAC5B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW,CAAC,IAAI,KAAK,mBAAU,CAAC,MAAM,EAAE;QAC3F,OAAO,IAAI,CAAC;KACb;IAED,wFAAwF;IACxF,kDAAkD;IAClD,IAAI,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW,YAAY,0CAAmB,EAAE;QAC/F,MAAM,OAAO,GAAwB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/F,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAyB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,mBAAU,CAAC,MAAM,CAAC,CAAC;KACvF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAjBD,8BAiBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/collection.js b/server/data-import/node_modules/mongodb/lib/collection.js
deleted file mode 100644
index 0902954443cb1053a986c9708c2f780538207e12..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/collection.js
+++ /dev/null
@@ -1,622 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Collection = void 0;
-const bson_1 = require("./bson");
-const ordered_1 = require("./bulk/ordered");
-const unordered_1 = require("./bulk/unordered");
-const change_stream_1 = require("./change_stream");
-const aggregation_cursor_1 = require("./cursor/aggregation_cursor");
-const find_cursor_1 = require("./cursor/find_cursor");
-const list_indexes_cursor_1 = require("./cursor/list_indexes_cursor");
-const list_search_indexes_cursor_1 = require("./cursor/list_search_indexes_cursor");
-const error_1 = require("./error");
-const bulk_write_1 = require("./operations/bulk_write");
-const count_1 = require("./operations/count");
-const count_documents_1 = require("./operations/count_documents");
-const delete_1 = require("./operations/delete");
-const distinct_1 = require("./operations/distinct");
-const drop_1 = require("./operations/drop");
-const estimated_document_count_1 = require("./operations/estimated_document_count");
-const execute_operation_1 = require("./operations/execute_operation");
-const find_and_modify_1 = require("./operations/find_and_modify");
-const indexes_1 = require("./operations/indexes");
-const insert_1 = require("./operations/insert");
-const is_capped_1 = require("./operations/is_capped");
-const options_operation_1 = require("./operations/options_operation");
-const rename_1 = require("./operations/rename");
-const create_1 = require("./operations/search_indexes/create");
-const drop_2 = require("./operations/search_indexes/drop");
-const update_1 = require("./operations/search_indexes/update");
-const update_2 = require("./operations/update");
-const read_concern_1 = require("./read_concern");
-const read_preference_1 = require("./read_preference");
-const utils_1 = require("./utils");
-const write_concern_1 = require("./write_concern");
-/**
- * The **Collection** class is an internal class that embodies a MongoDB collection
- * allowing for insert/find/update/delete and other command operation on that MongoDB collection.
- *
- * **COLLECTION Cannot directly be instantiated**
- * @public
- *
- * @example
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * interface Pet {
- *   name: string;
- *   kind: 'dog' | 'cat' | 'fish';
- * }
- *
- * const client = new MongoClient('mongodb://localhost:27017');
- * const pets = client.db().collection<Pet>('pets');
- *
- * const petCursor = pets.find();
- *
- * for await (const pet of petCursor) {
- *   console.log(`${pet.name} is a ${pet.kind}!`);
- * }
- * ```
- */
-class Collection {
-    /**
-     * Create a new Collection instance
-     * @internal
-     */
-    constructor(db, name, options) {
-        // Internal state
-        this.s = {
-            db,
-            options,
-            namespace: new utils_1.MongoDBCollectionNamespace(db.databaseName, name),
-            pkFactory: db.options?.pkFactory ?? utils_1.DEFAULT_PK_FACTORY,
-            readPreference: read_preference_1.ReadPreference.fromOptions(options),
-            bsonOptions: (0, bson_1.resolveBSONOptions)(options, db),
-            readConcern: read_concern_1.ReadConcern.fromOptions(options),
-            writeConcern: write_concern_1.WriteConcern.fromOptions(options)
-        };
-        this.client = db.client;
-    }
-    /**
-     * The name of the database this collection belongs to
-     */
-    get dbName() {
-        return this.s.namespace.db;
-    }
-    /**
-     * The name of this collection
-     */
-    get collectionName() {
-        return this.s.namespace.collection;
-    }
-    /**
-     * The namespace of this collection, in the format `${this.dbName}.${this.collectionName}`
-     */
-    get namespace() {
-        return this.fullNamespace.toString();
-    }
-    /**
-     *  @internal
-     *
-     * The `MongoDBNamespace` for the collection.
-     */
-    get fullNamespace() {
-        return this.s.namespace;
-    }
-    /**
-     * The current readConcern of the collection. If not explicitly defined for
-     * this collection, will be inherited from the parent DB
-     */
-    get readConcern() {
-        if (this.s.readConcern == null) {
-            return this.s.db.readConcern;
-        }
-        return this.s.readConcern;
-    }
-    /**
-     * The current readPreference of the collection. If not explicitly defined for
-     * this collection, will be inherited from the parent DB
-     */
-    get readPreference() {
-        if (this.s.readPreference == null) {
-            return this.s.db.readPreference;
-        }
-        return this.s.readPreference;
-    }
-    get bsonOptions() {
-        return this.s.bsonOptions;
-    }
-    /**
-     * The current writeConcern of the collection. If not explicitly defined for
-     * this collection, will be inherited from the parent DB
-     */
-    get writeConcern() {
-        if (this.s.writeConcern == null) {
-            return this.s.db.writeConcern;
-        }
-        return this.s.writeConcern;
-    }
-    /** The current index hint for the collection */
-    get hint() {
-        return this.s.collectionHint;
-    }
-    set hint(v) {
-        this.s.collectionHint = (0, utils_1.normalizeHintField)(v);
-    }
-    /**
-     * Inserts a single document into MongoDB. If documents passed in do not contain the **_id** field,
-     * one will be added to each of the documents missing it by the driver, mutating the document. This behavior
-     * can be overridden by setting the **forceServerObjectId** flag.
-     *
-     * @param doc - The document to insert
-     * @param options - Optional settings for the command
-     */
-    async insertOne(doc, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new insert_1.InsertOneOperation(this, doc, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Inserts an array of documents into MongoDB. If documents passed in do not contain the **_id** field,
-     * one will be added to each of the documents missing it by the driver, mutating the document. This behavior
-     * can be overridden by setting the **forceServerObjectId** flag.
-     *
-     * @param docs - The documents to insert
-     * @param options - Optional settings for the command
-     */
-    async insertMany(docs, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new insert_1.InsertManyOperation(this, docs, (0, utils_1.resolveOptions)(this, options ?? { ordered: true })));
-    }
-    /**
-     * Perform a bulkWrite operation without a fluent API
-     *
-     * Legal operation types are
-     * - `insertOne`
-     * - `replaceOne`
-     * - `updateOne`
-     * - `updateMany`
-     * - `deleteOne`
-     * - `deleteMany`
-     *
-     * If documents passed in do not contain the **_id** field,
-     * one will be added to each of the documents missing it by the driver, mutating the document. This behavior
-     * can be overridden by setting the **forceServerObjectId** flag.
-     *
-     * @param operations - Bulk operations to perform
-     * @param options - Optional settings for the command
-     * @throws MongoDriverError if operations is not an array
-     */
-    async bulkWrite(operations, options) {
-        if (!Array.isArray(operations)) {
-            throw new error_1.MongoInvalidArgumentError('Argument "operations" must be an array of documents');
-        }
-        return (0, execute_operation_1.executeOperation)(this.client, new bulk_write_1.BulkWriteOperation(this, operations, (0, utils_1.resolveOptions)(this, options ?? { ordered: true })));
-    }
-    /**
-     * Update a single document in a collection
-     *
-     * @param filter - The filter used to select the document to update
-     * @param update - The update operations to be applied to the document
-     * @param options - Optional settings for the command
-     */
-    async updateOne(filter, update, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new update_2.UpdateOneOperation(this, filter, update, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Replace a document in a collection with another document
-     *
-     * @param filter - The filter used to select the document to replace
-     * @param replacement - The Document that replaces the matching document
-     * @param options - Optional settings for the command
-     */
-    async replaceOne(filter, replacement, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new update_2.ReplaceOneOperation(this, filter, replacement, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Update multiple documents in a collection
-     *
-     * @param filter - The filter used to select the documents to update
-     * @param update - The update operations to be applied to the documents
-     * @param options - Optional settings for the command
-     */
-    async updateMany(filter, update, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new update_2.UpdateManyOperation(this, filter, update, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Delete a document from a collection
-     *
-     * @param filter - The filter used to select the document to remove
-     * @param options - Optional settings for the command
-     */
-    async deleteOne(filter = {}, options = {}) {
-        return (0, execute_operation_1.executeOperation)(this.client, new delete_1.DeleteOneOperation(this, filter, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Delete multiple documents from a collection
-     *
-     * @param filter - The filter used to select the documents to remove
-     * @param options - Optional settings for the command
-     */
-    async deleteMany(filter = {}, options = {}) {
-        return (0, execute_operation_1.executeOperation)(this.client, new delete_1.DeleteManyOperation(this, filter, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Rename the collection.
-     *
-     * @remarks
-     * This operation does not inherit options from the Db or MongoClient.
-     *
-     * @param newName - New name of of the collection.
-     * @param options - Optional settings for the command
-     */
-    async rename(newName, options) {
-        // Intentionally, we do not inherit options from parent for this operation.
-        return (0, execute_operation_1.executeOperation)(this.client, new rename_1.RenameOperation(this, newName, {
-            ...options,
-            readPreference: read_preference_1.ReadPreference.PRIMARY
-        }));
-    }
-    /**
-     * Drop the collection from the database, removing it permanently. New accesses will create a new collection.
-     *
-     * @param options - Optional settings for the command
-     */
-    async drop(options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new drop_1.DropCollectionOperation(this.s.db, this.collectionName, options));
-    }
-    async findOne(filter = {}, options = {}) {
-        const cursor = this.find(filter, options).limit(-1).batchSize(1);
-        const res = await cursor.next();
-        await cursor.close();
-        return res;
-    }
-    find(filter = {}, options = {}) {
-        return new find_cursor_1.FindCursor(this.client, this.s.namespace, filter, (0, utils_1.resolveOptions)(this, options));
-    }
-    /**
-     * Returns the options of the collection.
-     *
-     * @param options - Optional settings for the command
-     */
-    async options(options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new options_operation_1.OptionsOperation(this, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Returns if the collection is a capped collection
-     *
-     * @param options - Optional settings for the command
-     */
-    async isCapped(options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new is_capped_1.IsCappedOperation(this, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Creates an index on the db and collection collection.
-     *
-     * @param indexSpec - The field name or index specification to create an index for
-     * @param options - Optional settings for the command
-     *
-     * @example
-     * ```ts
-     * const collection = client.db('foo').collection('bar');
-     *
-     * await collection.createIndex({ a: 1, b: -1 });
-     *
-     * // Alternate syntax for { c: 1, d: -1 } that ensures order of indexes
-     * await collection.createIndex([ [c, 1], [d, -1] ]);
-     *
-     * // Equivalent to { e: 1 }
-     * await collection.createIndex('e');
-     *
-     * // Equivalent to { f: 1, g: 1 }
-     * await collection.createIndex(['f', 'g'])
-     *
-     * // Equivalent to { h: 1, i: -1 }
-     * await collection.createIndex([ { h: 1 }, { i: -1 } ]);
-     *
-     * // Equivalent to { j: 1, k: -1, l: 2d }
-     * await collection.createIndex(['j', ['k', -1], { l: '2d' }])
-     * ```
-     */
-    async createIndex(indexSpec, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new indexes_1.CreateIndexOperation(this, this.collectionName, indexSpec, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Creates multiple indexes in the collection, this method is only supported for
-     * MongoDB 2.6 or higher. Earlier version of MongoDB will throw a command not supported
-     * error.
-     *
-     * **Note**: Unlike {@link Collection#createIndex| createIndex}, this function takes in raw index specifications.
-     * Index specifications are defined {@link https://www.mongodb.com/docs/manual/reference/command/createIndexes/| here}.
-     *
-     * @param indexSpecs - An array of index specifications to be created
-     * @param options - Optional settings for the command
-     *
-     * @example
-     * ```ts
-     * const collection = client.db('foo').collection('bar');
-     * await collection.createIndexes([
-     *   // Simple index on field fizz
-     *   {
-     *     key: { fizz: 1 },
-     *   }
-     *   // wildcard index
-     *   {
-     *     key: { '$**': 1 }
-     *   },
-     *   // named index on darmok and jalad
-     *   {
-     *     key: { darmok: 1, jalad: -1 }
-     *     name: 'tanagra'
-     *   }
-     * ]);
-     * ```
-     */
-    async createIndexes(indexSpecs, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new indexes_1.CreateIndexesOperation(this, this.collectionName, indexSpecs, (0, utils_1.resolveOptions)(this, { ...options, maxTimeMS: undefined })));
-    }
-    /**
-     * Drops an index from this collection.
-     *
-     * @param indexName - Name of the index to drop.
-     * @param options - Optional settings for the command
-     */
-    async dropIndex(indexName, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new indexes_1.DropIndexOperation(this, indexName, {
-            ...(0, utils_1.resolveOptions)(this, options),
-            readPreference: read_preference_1.ReadPreference.primary
-        }));
-    }
-    /**
-     * Drops all indexes from this collection.
-     *
-     * @param options - Optional settings for the command
-     */
-    async dropIndexes(options) {
-        try {
-            await (0, execute_operation_1.executeOperation)(this.client, new indexes_1.DropIndexOperation(this, '*', (0, utils_1.resolveOptions)(this, options)));
-            return true;
-        }
-        catch {
-            return false;
-        }
-    }
-    /**
-     * Get the list of all indexes information for the collection.
-     *
-     * @param options - Optional settings for the command
-     */
-    listIndexes(options) {
-        return new list_indexes_cursor_1.ListIndexesCursor(this, (0, utils_1.resolveOptions)(this, options));
-    }
-    /**
-     * Checks if one or more indexes exist on the collection, fails on first non-existing index
-     *
-     * @param indexes - One or more index names to check.
-     * @param options - Optional settings for the command
-     */
-    async indexExists(indexes, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new indexes_1.IndexExistsOperation(this, indexes, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Retrieves this collections index info.
-     *
-     * @param options - Optional settings for the command
-     */
-    async indexInformation(options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new indexes_1.IndexInformationOperation(this.s.db, this.collectionName, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Gets an estimate of the count of documents in a collection using collection metadata.
-     * This will always run a count command on all server versions.
-     *
-     * due to an oversight in versions 5.0.0-5.0.8 of MongoDB, the count command,
-     * which estimatedDocumentCount uses in its implementation, was not included in v1 of
-     * the Stable API, and so users of the Stable API with estimatedDocumentCount are
-     * recommended to upgrade their server version to 5.0.9+ or set apiStrict: false to avoid
-     * encountering errors.
-     *
-     * @see {@link https://www.mongodb.com/docs/manual/reference/command/count/#behavior|Count: Behavior}
-     * @param options - Optional settings for the command
-     */
-    async estimatedDocumentCount(options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new estimated_document_count_1.EstimatedDocumentCountOperation(this, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Gets the number of documents matching the filter.
-     * For a fast count of the total documents in a collection see {@link Collection#estimatedDocumentCount| estimatedDocumentCount}.
-     * **Note**: When migrating from {@link Collection#count| count} to {@link Collection#countDocuments| countDocuments}
-     * the following query operators must be replaced:
-     *
-     * | Operator | Replacement |
-     * | -------- | ----------- |
-     * | `$where`   | [`$expr`][1] |
-     * | `$near`    | [`$geoWithin`][2] with [`$center`][3] |
-     * | `$nearSphere` | [`$geoWithin`][2] with [`$centerSphere`][4] |
-     *
-     * [1]: https://www.mongodb.com/docs/manual/reference/operator/query/expr/
-     * [2]: https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/
-     * [3]: https://www.mongodb.com/docs/manual/reference/operator/query/center/#op._S_center
-     * [4]: https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/#op._S_centerSphere
-     *
-     * @param filter - The filter for the count
-     * @param options - Optional settings for the command
-     *
-     * @see https://www.mongodb.com/docs/manual/reference/operator/query/expr/
-     * @see https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/
-     * @see https://www.mongodb.com/docs/manual/reference/operator/query/center/#op._S_center
-     * @see https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/#op._S_centerSphere
-     */
-    async countDocuments(filter = {}, options = {}) {
-        return (0, execute_operation_1.executeOperation)(this.client, new count_documents_1.CountDocumentsOperation(this, filter, (0, utils_1.resolveOptions)(this, options)));
-    }
-    async distinct(key, filter = {}, options = {}) {
-        return (0, execute_operation_1.executeOperation)(this.client, new distinct_1.DistinctOperation(this, key, filter, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Retrieve all the indexes on the collection.
-     *
-     * @param options - Optional settings for the command
-     */
-    async indexes(options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new indexes_1.IndexesOperation(this, (0, utils_1.resolveOptions)(this, options)));
-    }
-    async findOneAndDelete(filter, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new find_and_modify_1.FindOneAndDeleteOperation(this, filter, (0, utils_1.resolveOptions)(this, options)));
-    }
-    async findOneAndReplace(filter, replacement, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new find_and_modify_1.FindOneAndReplaceOperation(this, filter, replacement, (0, utils_1.resolveOptions)(this, options)));
-    }
-    async findOneAndUpdate(filter, update, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new find_and_modify_1.FindOneAndUpdateOperation(this, filter, update, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Execute an aggregation framework pipeline against the collection, needs MongoDB \>= 2.2
-     *
-     * @param pipeline - An array of aggregation pipelines to execute
-     * @param options - Optional settings for the command
-     */
-    aggregate(pipeline = [], options) {
-        if (!Array.isArray(pipeline)) {
-            throw new error_1.MongoInvalidArgumentError('Argument "pipeline" must be an array of aggregation stages');
-        }
-        return new aggregation_cursor_1.AggregationCursor(this.client, this.s.namespace, pipeline, (0, utils_1.resolveOptions)(this, options));
-    }
-    /**
-     * Create a new Change Stream, watching for new changes (insertions, updates, replacements, deletions, and invalidations) in this collection.
-     *
-     * @remarks
-     * watch() accepts two generic arguments for distinct use cases:
-     * - The first is to override the schema that may be defined for this specific collection
-     * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument
-     * @example
-     * By just providing the first argument I can type the change to be `ChangeStreamDocument<{ _id: number }>`
-     * ```ts
-     * collection.watch<{ _id: number }>()
-     *   .on('change', change => console.log(change._id.toFixed(4)));
-     * ```
-     *
-     * @example
-     * Passing a second argument provides a way to reflect the type changes caused by an advanced pipeline.
-     * Here, we are using a pipeline to have MongoDB filter for insert changes only and add a comment.
-     * No need start from scratch on the ChangeStreamInsertDocument type!
-     * By using an intersection we can save time and ensure defaults remain the same type!
-     * ```ts
-     * collection
-     *   .watch<Schema, ChangeStreamInsertDocument<Schema> & { comment: string }>([
-     *     { $addFields: { comment: 'big changes' } },
-     *     { $match: { operationType: 'insert' } }
-     *   ])
-     *   .on('change', change => {
-     *     change.comment.startsWith('big');
-     *     change.operationType === 'insert';
-     *     // No need to narrow in code because the generics did that for us!
-     *     expectType<Schema>(change.fullDocument);
-     *   });
-     * ```
-     *
-     * @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.
-     * @param options - Optional settings for the command
-     * @typeParam TLocal - Type of the data being detected by the change stream
-     * @typeParam TChange - Type of the whole change stream document emitted
-     */
-    watch(pipeline = [], options = {}) {
-        // Allow optionally not specifying a pipeline
-        if (!Array.isArray(pipeline)) {
-            options = pipeline;
-            pipeline = [];
-        }
-        return new change_stream_1.ChangeStream(this, pipeline, (0, utils_1.resolveOptions)(this, options));
-    }
-    /**
-     * Initiate an Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order.
-     *
-     * @throws MongoNotConnectedError
-     * @remarks
-     * **NOTE:** MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation.
-     * However, `collection.bulkWrite()` provides an equivalent API that does not require prior connecting.
-     */
-    initializeUnorderedBulkOp(options) {
-        return new unordered_1.UnorderedBulkOperation(this, (0, utils_1.resolveOptions)(this, options));
-    }
-    /**
-     * Initiate an In order bulk write operation. Operations will be serially executed in the order they are added, creating a new operation for each switch in types.
-     *
-     * @throws MongoNotConnectedError
-     * @remarks
-     * **NOTE:** MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation.
-     * However, `collection.bulkWrite()` provides an equivalent API that does not require prior connecting.
-     */
-    initializeOrderedBulkOp(options) {
-        return new ordered_1.OrderedBulkOperation(this, (0, utils_1.resolveOptions)(this, options));
-    }
-    /**
-     * An estimated count of matching documents in the db to a filter.
-     *
-     * **NOTE:** This method has been deprecated, since it does not provide an accurate count of the documents
-     * in a collection. To obtain an accurate count of documents in the collection, use {@link Collection#countDocuments| countDocuments}.
-     * To obtain an estimated count of all documents in the collection, use {@link Collection#estimatedDocumentCount| estimatedDocumentCount}.
-     *
-     * @deprecated use {@link Collection#countDocuments| countDocuments} or {@link Collection#estimatedDocumentCount| estimatedDocumentCount} instead
-     *
-     * @param filter - The filter for the count.
-     * @param options - Optional settings for the command
-     */
-    async count(filter = {}, options = {}) {
-        return (0, execute_operation_1.executeOperation)(this.client, new count_1.CountOperation(this.fullNamespace, filter, (0, utils_1.resolveOptions)(this, options)));
-    }
-    listSearchIndexes(indexNameOrOptions, options) {
-        options =
-            typeof indexNameOrOptions === 'object' ? indexNameOrOptions : options == null ? {} : options;
-        const indexName = indexNameOrOptions == null
-            ? null
-            : typeof indexNameOrOptions === 'object'
-                ? null
-                : indexNameOrOptions;
-        return new list_search_indexes_cursor_1.ListSearchIndexesCursor(this, indexName, options);
-    }
-    /**
-     * Creates a single search index for the collection.
-     *
-     * @param description - The index description for the new search index.
-     * @returns A promise that resolves to the name of the new search index.
-     *
-     * @remarks Only available when used against a 7.0+ Atlas cluster.
-     */
-    async createSearchIndex(description) {
-        const [index] = await this.createSearchIndexes([description]);
-        return index;
-    }
-    /**
-     * Creates multiple search indexes for the current collection.
-     *
-     * @param descriptions - An array of `SearchIndexDescription`s for the new search indexes.
-     * @returns A promise that resolves to an array of the newly created search index names.
-     *
-     * @remarks Only available when used against a 7.0+ Atlas cluster.
-     * @returns
-     */
-    async createSearchIndexes(descriptions) {
-        return (0, execute_operation_1.executeOperation)(this.client, new create_1.CreateSearchIndexesOperation(this, descriptions));
-    }
-    /**
-     * Deletes a search index by index name.
-     *
-     * @param name - The name of the search index to be deleted.
-     *
-     * @remarks Only available when used against a 7.0+ Atlas cluster.
-     */
-    async dropSearchIndex(name) {
-        return (0, execute_operation_1.executeOperation)(this.client, new drop_2.DropSearchIndexOperation(this, name));
-    }
-    /**
-     * Updates a search index by replacing the existing index definition with the provided definition.
-     *
-     * @param name - The name of the search index to update.
-     * @param definition - The new search index definition.
-     *
-     * @remarks Only available when used against a 7.0+ Atlas cluster.
-     */
-    async updateSearchIndex(name, definition) {
-        return (0, execute_operation_1.executeOperation)(this.client, new update_1.UpdateSearchIndexOperation(this, name, definition));
-    }
-}
-exports.Collection = Collection;
-//# sourceMappingURL=collection.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/collection.js.map b/server/data-import/node_modules/mongodb/lib/collection.js.map
deleted file mode 100644
index 978a1bcbc41408d669a0ce358fe856833c308368..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/collection.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/connection_string.js b/server/data-import/node_modules/mongodb/lib/connection_string.js
deleted file mode 100644
index ab60135b28e0e958cbc581552ddf54ed4c584b7e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/connection_string.js
+++ /dev/null
@@ -1,1069 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.FEATURE_FLAGS = exports.DEFAULT_OPTIONS = exports.OPTIONS = exports.parseOptions = exports.resolveSRVRecord = void 0;
-const dns = require("dns");
-const mongodb_connection_string_url_1 = require("mongodb-connection-string-url");
-const url_1 = require("url");
-const mongo_credentials_1 = require("./cmap/auth/mongo_credentials");
-const providers_1 = require("./cmap/auth/providers");
-const client_metadata_1 = require("./cmap/handshake/client_metadata");
-const compression_1 = require("./cmap/wire_protocol/compression");
-const encrypter_1 = require("./encrypter");
-const error_1 = require("./error");
-const mongo_client_1 = require("./mongo_client");
-const mongo_logger_1 = require("./mongo_logger");
-const read_concern_1 = require("./read_concern");
-const read_preference_1 = require("./read_preference");
-const monitor_1 = require("./sdam/monitor");
-const utils_1 = require("./utils");
-const write_concern_1 = require("./write_concern");
-const VALID_TXT_RECORDS = ['authSource', 'replicaSet', 'loadBalanced'];
-const LB_SINGLE_HOST_ERROR = 'loadBalanced option only supported with a single host in the URI';
-const LB_REPLICA_SET_ERROR = 'loadBalanced option not supported with a replicaSet option';
-const LB_DIRECT_CONNECTION_ERROR = 'loadBalanced option not supported when directConnection is provided';
-/**
- * Lookup a `mongodb+srv` connection string, combine the parts and reparse it as a normal
- * connection string.
- *
- * @param uri - The connection string to parse
- * @param options - Optional user provided connection string options
- */
-async function resolveSRVRecord(options) {
-    if (typeof options.srvHost !== 'string') {
-        throw new error_1.MongoAPIError('Option "srvHost" must not be empty');
-    }
-    if (options.srvHost.split('.').length < 3) {
-        // TODO(NODE-3484): Replace with MongoConnectionStringError
-        throw new error_1.MongoAPIError('URI must include hostname, domain name, and tld');
-    }
-    // Resolve the SRV record and use the result as the list of hosts to connect to.
-    const lookupAddress = options.srvHost;
-    const addresses = await dns.promises.resolveSrv(`_${options.srvServiceName}._tcp.${lookupAddress}`);
-    if (addresses.length === 0) {
-        throw new error_1.MongoAPIError('No addresses found at host');
-    }
-    for (const { name } of addresses) {
-        if (!(0, utils_1.matchesParentDomain)(name, lookupAddress)) {
-            throw new error_1.MongoAPIError('Server record does not share hostname with parent URI');
-        }
-    }
-    const hostAddresses = addresses.map(r => utils_1.HostAddress.fromString(`${r.name}:${r.port ?? 27017}`));
-    validateLoadBalancedOptions(hostAddresses, options, true);
-    // Resolve TXT record and add options from there if they exist.
-    let record;
-    try {
-        record = await dns.promises.resolveTxt(lookupAddress);
-    }
-    catch (error) {
-        if (error.code !== 'ENODATA' && error.code !== 'ENOTFOUND') {
-            throw error;
-        }
-        return hostAddresses;
-    }
-    if (record.length > 1) {
-        throw new error_1.MongoParseError('Multiple text records not allowed');
-    }
-    const txtRecordOptions = new url_1.URLSearchParams(record[0].join(''));
-    const txtRecordOptionKeys = [...txtRecordOptions.keys()];
-    if (txtRecordOptionKeys.some(key => !VALID_TXT_RECORDS.includes(key))) {
-        throw new error_1.MongoParseError(`Text record may only set any of: ${VALID_TXT_RECORDS.join(', ')}`);
-    }
-    if (VALID_TXT_RECORDS.some(option => txtRecordOptions.get(option) === '')) {
-        throw new error_1.MongoParseError('Cannot have empty URI params in DNS TXT Record');
-    }
-    const source = txtRecordOptions.get('authSource') ?? undefined;
-    const replicaSet = txtRecordOptions.get('replicaSet') ?? undefined;
-    const loadBalanced = txtRecordOptions.get('loadBalanced') ?? undefined;
-    if (!options.userSpecifiedAuthSource &&
-        source &&
-        options.credentials &&
-        !providers_1.AUTH_MECHS_AUTH_SRC_EXTERNAL.has(options.credentials.mechanism)) {
-        options.credentials = mongo_credentials_1.MongoCredentials.merge(options.credentials, { source });
-    }
-    if (!options.userSpecifiedReplicaSet && replicaSet) {
-        options.replicaSet = replicaSet;
-    }
-    if (loadBalanced === 'true') {
-        options.loadBalanced = true;
-    }
-    if (options.replicaSet && options.srvMaxHosts > 0) {
-        throw new error_1.MongoParseError('Cannot combine replicaSet option with srvMaxHosts');
-    }
-    validateLoadBalancedOptions(hostAddresses, options, true);
-    return hostAddresses;
-}
-exports.resolveSRVRecord = resolveSRVRecord;
-/**
- * Checks if TLS options are valid
- *
- * @param allOptions - All options provided by user or included in default options map
- * @throws MongoAPIError if TLS options are invalid
- */
-function checkTLSOptions(allOptions) {
-    if (!allOptions)
-        return;
-    const check = (a, b) => {
-        if (allOptions.has(a) && allOptions.has(b)) {
-            throw new error_1.MongoAPIError(`The '${a}' option cannot be used with the '${b}' option`);
-        }
-    };
-    check('tlsInsecure', 'tlsAllowInvalidCertificates');
-    check('tlsInsecure', 'tlsAllowInvalidHostnames');
-    check('tlsInsecure', 'tlsDisableCertificateRevocationCheck');
-    check('tlsInsecure', 'tlsDisableOCSPEndpointCheck');
-    check('tlsAllowInvalidCertificates', 'tlsDisableCertificateRevocationCheck');
-    check('tlsAllowInvalidCertificates', 'tlsDisableOCSPEndpointCheck');
-    check('tlsDisableCertificateRevocationCheck', 'tlsDisableOCSPEndpointCheck');
-}
-function getBoolean(name, value) {
-    if (typeof value === 'boolean')
-        return value;
-    switch (value) {
-        case 'true':
-            return true;
-        case 'false':
-            return false;
-        default:
-            throw new error_1.MongoParseError(`${name} must be either "true" or "false"`);
-    }
-}
-function getIntFromOptions(name, value) {
-    const parsedInt = (0, utils_1.parseInteger)(value);
-    if (parsedInt != null) {
-        return parsedInt;
-    }
-    throw new error_1.MongoParseError(`Expected ${name} to be stringified int value, got: ${value}`);
-}
-function getUIntFromOptions(name, value) {
-    const parsedValue = getIntFromOptions(name, value);
-    if (parsedValue < 0) {
-        throw new error_1.MongoParseError(`${name} can only be a positive int value, got: ${value}`);
-    }
-    return parsedValue;
-}
-function* entriesFromString(value) {
-    if (value === '') {
-        return;
-    }
-    const keyValuePairs = value.split(',');
-    for (const keyValue of keyValuePairs) {
-        const [key, value] = keyValue.split(/:(.*)/);
-        if (value == null) {
-            throw new error_1.MongoParseError('Cannot have undefined values in key value pairs');
-        }
-        yield [key, value];
-    }
-}
-class CaseInsensitiveMap extends Map {
-    constructor(entries = []) {
-        super(entries.map(([k, v]) => [k.toLowerCase(), v]));
-    }
-    has(k) {
-        return super.has(k.toLowerCase());
-    }
-    get(k) {
-        return super.get(k.toLowerCase());
-    }
-    set(k, v) {
-        return super.set(k.toLowerCase(), v);
-    }
-    delete(k) {
-        return super.delete(k.toLowerCase());
-    }
-}
-function parseOptions(uri, mongoClient = undefined, options = {}) {
-    if (mongoClient != null && !(mongoClient instanceof mongo_client_1.MongoClient)) {
-        options = mongoClient;
-        mongoClient = undefined;
-    }
-    // validate BSONOptions
-    if (options.useBigInt64 && typeof options.promoteLongs === 'boolean' && !options.promoteLongs) {
-        throw new error_1.MongoAPIError('Must request either bigint or Long for int64 deserialization');
-    }
-    if (options.useBigInt64 && typeof options.promoteValues === 'boolean' && !options.promoteValues) {
-        throw new error_1.MongoAPIError('Must request either bigint or Long for int64 deserialization');
-    }
-    const url = new mongodb_connection_string_url_1.default(uri);
-    const { hosts, isSRV } = url;
-    const mongoOptions = Object.create(null);
-    // Feature flags
-    for (const flag of Object.getOwnPropertySymbols(options)) {
-        if (exports.FEATURE_FLAGS.has(flag)) {
-            mongoOptions[flag] = options[flag];
-        }
-    }
-    mongoOptions.hosts = isSRV ? [] : hosts.map(utils_1.HostAddress.fromString);
-    const urlOptions = new CaseInsensitiveMap();
-    if (url.pathname !== '/' && url.pathname !== '') {
-        const dbName = decodeURIComponent(url.pathname[0] === '/' ? url.pathname.slice(1) : url.pathname);
-        if (dbName) {
-            urlOptions.set('dbName', [dbName]);
-        }
-    }
-    if (url.username !== '') {
-        const auth = {
-            username: decodeURIComponent(url.username)
-        };
-        if (typeof url.password === 'string') {
-            auth.password = decodeURIComponent(url.password);
-        }
-        urlOptions.set('auth', [auth]);
-    }
-    for (const key of url.searchParams.keys()) {
-        const values = url.searchParams.getAll(key);
-        const isReadPreferenceTags = /readPreferenceTags/i.test(key);
-        if (!isReadPreferenceTags && values.length > 1) {
-            throw new error_1.MongoInvalidArgumentError(`URI option "${key}" cannot appear more than once in the connection string`);
-        }
-        if (!isReadPreferenceTags && values.includes('')) {
-            throw new error_1.MongoAPIError(`URI option "${key}" cannot be specified with no value`);
-        }
-        if (!urlOptions.has(key)) {
-            urlOptions.set(key, values);
-        }
-    }
-    const objectOptions = new CaseInsensitiveMap(Object.entries(options).filter(([, v]) => v != null));
-    // Validate options that can only be provided by one of uri or object
-    if (urlOptions.has('serverApi')) {
-        throw new error_1.MongoParseError('URI cannot contain `serverApi`, it can only be passed to the client');
-    }
-    const uriMechanismProperties = urlOptions.get('authMechanismProperties');
-    if (uriMechanismProperties) {
-        for (const property of uriMechanismProperties) {
-            if (/(^|,)ALLOWED_HOSTS:/.test(property)) {
-                throw new error_1.MongoParseError('Auth mechanism property ALLOWED_HOSTS is not allowed in the connection string.');
-            }
-        }
-    }
-    if (objectOptions.has('loadBalanced')) {
-        throw new error_1.MongoParseError('loadBalanced is only a valid option in the URI');
-    }
-    // All option collection
-    const allProvidedOptions = new CaseInsensitiveMap();
-    const allProvidedKeys = new Set([...urlOptions.keys(), ...objectOptions.keys()]);
-    for (const key of allProvidedKeys) {
-        const values = [];
-        const objectOptionValue = objectOptions.get(key);
-        if (objectOptionValue != null) {
-            values.push(objectOptionValue);
-        }
-        const urlValues = urlOptions.get(key) ?? [];
-        values.push(...urlValues);
-        allProvidedOptions.set(key, values);
-    }
-    if (allProvidedOptions.has('tls') || allProvidedOptions.has('ssl')) {
-        const tlsAndSslOpts = (allProvidedOptions.get('tls') || [])
-            .concat(allProvidedOptions.get('ssl') || [])
-            .map(getBoolean.bind(null, 'tls/ssl'));
-        if (new Set(tlsAndSslOpts).size !== 1) {
-            throw new error_1.MongoParseError('All values of tls/ssl must be the same.');
-        }
-    }
-    checkTLSOptions(allProvidedOptions);
-    const unsupportedOptions = (0, utils_1.setDifference)(allProvidedKeys, Array.from(Object.keys(exports.OPTIONS)).map(s => s.toLowerCase()));
-    if (unsupportedOptions.size !== 0) {
-        const optionWord = unsupportedOptions.size > 1 ? 'options' : 'option';
-        const isOrAre = unsupportedOptions.size > 1 ? 'are' : 'is';
-        throw new error_1.MongoParseError(`${optionWord} ${Array.from(unsupportedOptions).join(', ')} ${isOrAre} not supported`);
-    }
-    // Option parsing and setting
-    for (const [key, descriptor] of Object.entries(exports.OPTIONS)) {
-        const values = allProvidedOptions.get(key);
-        if (!values || values.length === 0) {
-            if (exports.DEFAULT_OPTIONS.has(key)) {
-                setOption(mongoOptions, key, descriptor, [exports.DEFAULT_OPTIONS.get(key)]);
-            }
-        }
-        else {
-            const { deprecated } = descriptor;
-            if (deprecated) {
-                const deprecatedMsg = typeof deprecated === 'string' ? `: ${deprecated}` : '';
-                (0, utils_1.emitWarning)(`${key} is a deprecated option${deprecatedMsg}`);
-            }
-            setOption(mongoOptions, key, descriptor, values);
-        }
-    }
-    if (mongoOptions.credentials) {
-        const isGssapi = mongoOptions.credentials.mechanism === providers_1.AuthMechanism.MONGODB_GSSAPI;
-        const isX509 = mongoOptions.credentials.mechanism === providers_1.AuthMechanism.MONGODB_X509;
-        const isAws = mongoOptions.credentials.mechanism === providers_1.AuthMechanism.MONGODB_AWS;
-        const isOidc = mongoOptions.credentials.mechanism === providers_1.AuthMechanism.MONGODB_OIDC;
-        if ((isGssapi || isX509) &&
-            allProvidedOptions.has('authSource') &&
-            mongoOptions.credentials.source !== '$external') {
-            // If authSource was explicitly given and its incorrect, we error
-            throw new error_1.MongoParseError(`authMechanism ${mongoOptions.credentials.mechanism} requires an authSource of '$external'`);
-        }
-        if (!(isGssapi || isX509 || isAws || isOidc) &&
-            mongoOptions.dbName &&
-            !allProvidedOptions.has('authSource')) {
-            // inherit the dbName unless GSSAPI or X509, then silently ignore dbName
-            // and there was no specific authSource given
-            mongoOptions.credentials = mongo_credentials_1.MongoCredentials.merge(mongoOptions.credentials, {
-                source: mongoOptions.dbName
-            });
-        }
-        if (isAws && mongoOptions.credentials.username && !mongoOptions.credentials.password) {
-            throw new error_1.MongoMissingCredentialsError(`When using ${mongoOptions.credentials.mechanism} password must be set when a username is specified`);
-        }
-        mongoOptions.credentials.validate();
-        // Check if the only auth related option provided was authSource, if so we can remove credentials
-        if (mongoOptions.credentials.password === '' &&
-            mongoOptions.credentials.username === '' &&
-            mongoOptions.credentials.mechanism === providers_1.AuthMechanism.MONGODB_DEFAULT &&
-            Object.keys(mongoOptions.credentials.mechanismProperties).length === 0) {
-            delete mongoOptions.credentials;
-        }
-    }
-    if (!mongoOptions.dbName) {
-        // dbName default is applied here because of the credential validation above
-        mongoOptions.dbName = 'test';
-    }
-    validateLoadBalancedOptions(hosts, mongoOptions, isSRV);
-    if (mongoClient && mongoOptions.autoEncryption) {
-        encrypter_1.Encrypter.checkForMongoCrypt();
-        mongoOptions.encrypter = new encrypter_1.Encrypter(mongoClient, uri, options);
-        mongoOptions.autoEncrypter = mongoOptions.encrypter.autoEncrypter;
-    }
-    // Potential SRV Overrides and SRV connection string validations
-    mongoOptions.userSpecifiedAuthSource =
-        objectOptions.has('authSource') || urlOptions.has('authSource');
-    mongoOptions.userSpecifiedReplicaSet =
-        objectOptions.has('replicaSet') || urlOptions.has('replicaSet');
-    if (isSRV) {
-        // SRV Record is resolved upon connecting
-        mongoOptions.srvHost = hosts[0];
-        if (mongoOptions.directConnection) {
-            throw new error_1.MongoAPIError('SRV URI does not support directConnection');
-        }
-        if (mongoOptions.srvMaxHosts > 0 && typeof mongoOptions.replicaSet === 'string') {
-            throw new error_1.MongoParseError('Cannot use srvMaxHosts option with replicaSet');
-        }
-        // SRV turns on TLS by default, but users can override and turn it off
-        const noUserSpecifiedTLS = !objectOptions.has('tls') && !urlOptions.has('tls');
-        const noUserSpecifiedSSL = !objectOptions.has('ssl') && !urlOptions.has('ssl');
-        if (noUserSpecifiedTLS && noUserSpecifiedSSL) {
-            mongoOptions.tls = true;
-        }
-    }
-    else {
-        const userSpecifiedSrvOptions = urlOptions.has('srvMaxHosts') ||
-            objectOptions.has('srvMaxHosts') ||
-            urlOptions.has('srvServiceName') ||
-            objectOptions.has('srvServiceName');
-        if (userSpecifiedSrvOptions) {
-            throw new error_1.MongoParseError('Cannot use srvMaxHosts or srvServiceName with a non-srv connection string');
-        }
-    }
-    if (mongoOptions.directConnection && mongoOptions.hosts.length !== 1) {
-        throw new error_1.MongoParseError('directConnection option requires exactly one host');
-    }
-    if (!mongoOptions.proxyHost &&
-        (mongoOptions.proxyPort || mongoOptions.proxyUsername || mongoOptions.proxyPassword)) {
-        throw new error_1.MongoParseError('Must specify proxyHost if other proxy options are passed');
-    }
-    if ((mongoOptions.proxyUsername && !mongoOptions.proxyPassword) ||
-        (!mongoOptions.proxyUsername && mongoOptions.proxyPassword)) {
-        throw new error_1.MongoParseError('Can only specify both of proxy username/password or neither');
-    }
-    const proxyOptions = ['proxyHost', 'proxyPort', 'proxyUsername', 'proxyPassword'].map(key => urlOptions.get(key) ?? []);
-    if (proxyOptions.some(options => options.length > 1)) {
-        throw new error_1.MongoParseError('Proxy options cannot be specified multiple times in the connection string');
-    }
-    const loggerFeatureFlag = Symbol.for('@@mdb.enableMongoLogger');
-    mongoOptions[loggerFeatureFlag] = mongoOptions[loggerFeatureFlag] ?? false;
-    let loggerEnvOptions = {};
-    let loggerClientOptions = {};
-    if (mongoOptions[loggerFeatureFlag]) {
-        loggerEnvOptions = {
-            MONGODB_LOG_COMMAND: process.env.MONGODB_LOG_COMMAND,
-            MONGODB_LOG_TOPOLOGY: process.env.MONGODB_LOG_TOPOLOGY,
-            MONGODB_LOG_SERVER_SELECTION: process.env.MONGODB_LOG_SERVER_SELECTION,
-            MONGODB_LOG_CONNECTION: process.env.MONGODB_LOG_CONNECTION,
-            MONGODB_LOG_CLIENT: process.env.MONGODB_LOG_CLIENT,
-            MONGODB_LOG_ALL: process.env.MONGODB_LOG_ALL,
-            MONGODB_LOG_MAX_DOCUMENT_LENGTH: process.env.MONGODB_LOG_MAX_DOCUMENT_LENGTH,
-            MONGODB_LOG_PATH: process.env.MONGODB_LOG_PATH,
-            ...mongoOptions[Symbol.for('@@mdb.internalLoggerConfig')]
-        };
-        loggerClientOptions = {
-            mongodbLogPath: mongoOptions.mongodbLogPath,
-            mongodbLogComponentSeverities: mongoOptions.mongodbLogComponentSeverities,
-            mongodbLogMaxDocumentLength: mongoOptions.mongodbLogMaxDocumentLength
-        };
-    }
-    mongoOptions.mongoLoggerOptions = mongo_logger_1.MongoLogger.resolveOptions(loggerEnvOptions, loggerClientOptions);
-    mongoOptions.metadata = (0, client_metadata_1.makeClientMetadata)(mongoOptions);
-    return mongoOptions;
-}
-exports.parseOptions = parseOptions;
-/**
- * #### Throws if LB mode is true:
- * - hosts contains more than one host
- * - there is a replicaSet name set
- * - directConnection is set
- * - if srvMaxHosts is used when an srv connection string is passed in
- *
- * @throws MongoParseError
- */
-function validateLoadBalancedOptions(hosts, mongoOptions, isSrv) {
-    if (mongoOptions.loadBalanced) {
-        if (hosts.length > 1) {
-            throw new error_1.MongoParseError(LB_SINGLE_HOST_ERROR);
-        }
-        if (mongoOptions.replicaSet) {
-            throw new error_1.MongoParseError(LB_REPLICA_SET_ERROR);
-        }
-        if (mongoOptions.directConnection) {
-            throw new error_1.MongoParseError(LB_DIRECT_CONNECTION_ERROR);
-        }
-        if (isSrv && mongoOptions.srvMaxHosts > 0) {
-            throw new error_1.MongoParseError('Cannot limit srv hosts with loadBalanced enabled');
-        }
-    }
-    return;
-}
-function setOption(mongoOptions, key, descriptor, values) {
-    const { target, type, transform } = descriptor;
-    const name = target ?? key;
-    switch (type) {
-        case 'boolean':
-            mongoOptions[name] = getBoolean(name, values[0]);
-            break;
-        case 'int':
-            mongoOptions[name] = getIntFromOptions(name, values[0]);
-            break;
-        case 'uint':
-            mongoOptions[name] = getUIntFromOptions(name, values[0]);
-            break;
-        case 'string':
-            if (values[0] == null) {
-                break;
-            }
-            mongoOptions[name] = String(values[0]);
-            break;
-        case 'record':
-            if (!(0, utils_1.isRecord)(values[0])) {
-                throw new error_1.MongoParseError(`${name} must be an object`);
-            }
-            mongoOptions[name] = values[0];
-            break;
-        case 'any':
-            mongoOptions[name] = values[0];
-            break;
-        default: {
-            if (!transform) {
-                throw new error_1.MongoParseError('Descriptors missing a type must define a transform');
-            }
-            const transformValue = transform({ name, options: mongoOptions, values });
-            mongoOptions[name] = transformValue;
-            break;
-        }
-    }
-}
-exports.OPTIONS = {
-    appName: {
-        type: 'string'
-    },
-    auth: {
-        target: 'credentials',
-        transform({ name, options, values: [value] }) {
-            if (!(0, utils_1.isRecord)(value, ['username', 'password'])) {
-                throw new error_1.MongoParseError(`${name} must be an object with 'username' and 'password' properties`);
-            }
-            return mongo_credentials_1.MongoCredentials.merge(options.credentials, {
-                username: value.username,
-                password: value.password
-            });
-        }
-    },
-    authMechanism: {
-        target: 'credentials',
-        transform({ options, values: [value] }) {
-            const mechanisms = Object.values(providers_1.AuthMechanism);
-            const [mechanism] = mechanisms.filter(m => m.match(RegExp(String.raw `\b${value}\b`, 'i')));
-            if (!mechanism) {
-                throw new error_1.MongoParseError(`authMechanism one of ${mechanisms}, got ${value}`);
-            }
-            let source = options.credentials?.source;
-            if (mechanism === providers_1.AuthMechanism.MONGODB_PLAIN ||
-                providers_1.AUTH_MECHS_AUTH_SRC_EXTERNAL.has(mechanism)) {
-                // some mechanisms have '$external' as the Auth Source
-                source = '$external';
-            }
-            let password = options.credentials?.password;
-            if (mechanism === providers_1.AuthMechanism.MONGODB_X509 && password === '') {
-                password = undefined;
-            }
-            return mongo_credentials_1.MongoCredentials.merge(options.credentials, {
-                mechanism,
-                source,
-                password
-            });
-        }
-    },
-    authMechanismProperties: {
-        target: 'credentials',
-        transform({ options, values }) {
-            // We can have a combination of options passed in the URI and options passed
-            // as an object to the MongoClient. So we must transform the string options
-            // as well as merge them together with a potentially provided object.
-            let mechanismProperties = Object.create(null);
-            for (const optionValue of values) {
-                if (typeof optionValue === 'string') {
-                    for (const [key, value] of entriesFromString(optionValue)) {
-                        try {
-                            mechanismProperties[key] = getBoolean(key, value);
-                        }
-                        catch {
-                            mechanismProperties[key] = value;
-                        }
-                    }
-                }
-                else {
-                    if (!(0, utils_1.isRecord)(optionValue)) {
-                        throw new error_1.MongoParseError('AuthMechanismProperties must be an object');
-                    }
-                    mechanismProperties = { ...optionValue };
-                }
-            }
-            return mongo_credentials_1.MongoCredentials.merge(options.credentials, {
-                mechanismProperties
-            });
-        }
-    },
-    authSource: {
-        target: 'credentials',
-        transform({ options, values: [value] }) {
-            const source = String(value);
-            return mongo_credentials_1.MongoCredentials.merge(options.credentials, { source });
-        }
-    },
-    autoEncryption: {
-        type: 'record'
-    },
-    bsonRegExp: {
-        type: 'boolean'
-    },
-    serverApi: {
-        target: 'serverApi',
-        transform({ values: [version] }) {
-            const serverApiToValidate = typeof version === 'string' ? { version } : version;
-            const versionToValidate = serverApiToValidate && serverApiToValidate.version;
-            if (!versionToValidate) {
-                throw new error_1.MongoParseError(`Invalid \`serverApi\` property; must specify a version from the following enum: ["${Object.values(mongo_client_1.ServerApiVersion).join('", "')}"]`);
-            }
-            if (!Object.values(mongo_client_1.ServerApiVersion).some(v => v === versionToValidate)) {
-                throw new error_1.MongoParseError(`Invalid server API version=${versionToValidate}; must be in the following enum: ["${Object.values(mongo_client_1.ServerApiVersion).join('", "')}"]`);
-            }
-            return serverApiToValidate;
-        }
-    },
-    checkKeys: {
-        type: 'boolean'
-    },
-    compressors: {
-        default: 'none',
-        target: 'compressors',
-        transform({ values }) {
-            const compressionList = new Set();
-            for (const compVal of values) {
-                const compValArray = typeof compVal === 'string' ? compVal.split(',') : compVal;
-                if (!Array.isArray(compValArray)) {
-                    throw new error_1.MongoInvalidArgumentError('compressors must be an array or a comma-delimited list of strings');
-                }
-                for (const c of compValArray) {
-                    if (Object.keys(compression_1.Compressor).includes(String(c))) {
-                        compressionList.add(String(c));
-                    }
-                    else {
-                        throw new error_1.MongoInvalidArgumentError(`${c} is not a valid compression mechanism. Must be one of: ${Object.keys(compression_1.Compressor)}.`);
-                    }
-                }
-            }
-            return [...compressionList];
-        }
-    },
-    connectTimeoutMS: {
-        default: 30000,
-        type: 'uint'
-    },
-    dbName: {
-        type: 'string'
-    },
-    directConnection: {
-        default: false,
-        type: 'boolean'
-    },
-    driverInfo: {
-        default: {},
-        type: 'record'
-    },
-    enableUtf8Validation: { type: 'boolean', default: true },
-    family: {
-        transform({ name, values: [value] }) {
-            const transformValue = getIntFromOptions(name, value);
-            if (transformValue === 4 || transformValue === 6) {
-                return transformValue;
-            }
-            throw new error_1.MongoParseError(`Option 'family' must be 4 or 6 got ${transformValue}.`);
-        }
-    },
-    fieldsAsRaw: {
-        type: 'record'
-    },
-    forceServerObjectId: {
-        default: false,
-        type: 'boolean'
-    },
-    fsync: {
-        deprecated: 'Please use journal instead',
-        target: 'writeConcern',
-        transform({ name, options, values: [value] }) {
-            const wc = write_concern_1.WriteConcern.fromOptions({
-                writeConcern: {
-                    ...options.writeConcern,
-                    fsync: getBoolean(name, value)
-                }
-            });
-            if (!wc)
-                throw new error_1.MongoParseError(`Unable to make a writeConcern from fsync=${value}`);
-            return wc;
-        }
-    },
-    heartbeatFrequencyMS: {
-        default: 10000,
-        type: 'uint'
-    },
-    ignoreUndefined: {
-        type: 'boolean'
-    },
-    j: {
-        deprecated: 'Please use journal instead',
-        target: 'writeConcern',
-        transform({ name, options, values: [value] }) {
-            const wc = write_concern_1.WriteConcern.fromOptions({
-                writeConcern: {
-                    ...options.writeConcern,
-                    journal: getBoolean(name, value)
-                }
-            });
-            if (!wc)
-                throw new error_1.MongoParseError(`Unable to make a writeConcern from journal=${value}`);
-            return wc;
-        }
-    },
-    journal: {
-        target: 'writeConcern',
-        transform({ name, options, values: [value] }) {
-            const wc = write_concern_1.WriteConcern.fromOptions({
-                writeConcern: {
-                    ...options.writeConcern,
-                    journal: getBoolean(name, value)
-                }
-            });
-            if (!wc)
-                throw new error_1.MongoParseError(`Unable to make a writeConcern from journal=${value}`);
-            return wc;
-        }
-    },
-    loadBalanced: {
-        default: false,
-        type: 'boolean'
-    },
-    localThresholdMS: {
-        default: 15,
-        type: 'uint'
-    },
-    maxConnecting: {
-        default: 2,
-        transform({ name, values: [value] }) {
-            const maxConnecting = getUIntFromOptions(name, value);
-            if (maxConnecting === 0) {
-                throw new error_1.MongoInvalidArgumentError('maxConnecting must be > 0 if specified');
-            }
-            return maxConnecting;
-        }
-    },
-    maxIdleTimeMS: {
-        default: 0,
-        type: 'uint'
-    },
-    maxPoolSize: {
-        default: 100,
-        type: 'uint'
-    },
-    maxStalenessSeconds: {
-        target: 'readPreference',
-        transform({ name, options, values: [value] }) {
-            const maxStalenessSeconds = getUIntFromOptions(name, value);
-            if (options.readPreference) {
-                return read_preference_1.ReadPreference.fromOptions({
-                    readPreference: { ...options.readPreference, maxStalenessSeconds }
-                });
-            }
-            else {
-                return new read_preference_1.ReadPreference('secondary', undefined, { maxStalenessSeconds });
-            }
-        }
-    },
-    minInternalBufferSize: {
-        type: 'uint'
-    },
-    minPoolSize: {
-        default: 0,
-        type: 'uint'
-    },
-    minHeartbeatFrequencyMS: {
-        default: 500,
-        type: 'uint'
-    },
-    monitorCommands: {
-        default: false,
-        type: 'boolean'
-    },
-    name: {
-        target: 'driverInfo',
-        transform({ values: [value], options }) {
-            return { ...options.driverInfo, name: String(value) };
-        }
-    },
-    noDelay: {
-        default: true,
-        type: 'boolean'
-    },
-    pkFactory: {
-        default: utils_1.DEFAULT_PK_FACTORY,
-        transform({ values: [value] }) {
-            if ((0, utils_1.isRecord)(value, ['createPk']) && typeof value.createPk === 'function') {
-                return value;
-            }
-            throw new error_1.MongoParseError(`Option pkFactory must be an object with a createPk function, got ${value}`);
-        }
-    },
-    promoteBuffers: {
-        type: 'boolean'
-    },
-    promoteLongs: {
-        type: 'boolean'
-    },
-    promoteValues: {
-        type: 'boolean'
-    },
-    useBigInt64: {
-        type: 'boolean'
-    },
-    proxyHost: {
-        type: 'string'
-    },
-    proxyPassword: {
-        type: 'string'
-    },
-    proxyPort: {
-        type: 'uint'
-    },
-    proxyUsername: {
-        type: 'string'
-    },
-    raw: {
-        default: false,
-        type: 'boolean'
-    },
-    readConcern: {
-        transform({ values: [value], options }) {
-            if (value instanceof read_concern_1.ReadConcern || (0, utils_1.isRecord)(value, ['level'])) {
-                return read_concern_1.ReadConcern.fromOptions({ ...options.readConcern, ...value });
-            }
-            throw new error_1.MongoParseError(`ReadConcern must be an object, got ${JSON.stringify(value)}`);
-        }
-    },
-    readConcernLevel: {
-        target: 'readConcern',
-        transform({ values: [level], options }) {
-            return read_concern_1.ReadConcern.fromOptions({
-                ...options.readConcern,
-                level: level
-            });
-        }
-    },
-    readPreference: {
-        default: read_preference_1.ReadPreference.primary,
-        transform({ values: [value], options }) {
-            if (value instanceof read_preference_1.ReadPreference) {
-                return read_preference_1.ReadPreference.fromOptions({
-                    readPreference: { ...options.readPreference, ...value },
-                    ...value
-                });
-            }
-            if ((0, utils_1.isRecord)(value, ['mode'])) {
-                const rp = read_preference_1.ReadPreference.fromOptions({
-                    readPreference: { ...options.readPreference, ...value },
-                    ...value
-                });
-                if (rp)
-                    return rp;
-                else
-                    throw new error_1.MongoParseError(`Cannot make read preference from ${JSON.stringify(value)}`);
-            }
-            if (typeof value === 'string') {
-                const rpOpts = {
-                    hedge: options.readPreference?.hedge,
-                    maxStalenessSeconds: options.readPreference?.maxStalenessSeconds
-                };
-                return new read_preference_1.ReadPreference(value, options.readPreference?.tags, rpOpts);
-            }
-            throw new error_1.MongoParseError(`Unknown ReadPreference value: ${value}`);
-        }
-    },
-    readPreferenceTags: {
-        target: 'readPreference',
-        transform({ values, options }) {
-            const tags = Array.isArray(values[0])
-                ? values[0]
-                : values;
-            const readPreferenceTags = [];
-            for (const tag of tags) {
-                const readPreferenceTag = Object.create(null);
-                if (typeof tag === 'string') {
-                    for (const [k, v] of entriesFromString(tag)) {
-                        readPreferenceTag[k] = v;
-                    }
-                }
-                if ((0, utils_1.isRecord)(tag)) {
-                    for (const [k, v] of Object.entries(tag)) {
-                        readPreferenceTag[k] = v;
-                    }
-                }
-                readPreferenceTags.push(readPreferenceTag);
-            }
-            return read_preference_1.ReadPreference.fromOptions({
-                readPreference: options.readPreference,
-                readPreferenceTags
-            });
-        }
-    },
-    replicaSet: {
-        type: 'string'
-    },
-    retryReads: {
-        default: true,
-        type: 'boolean'
-    },
-    retryWrites: {
-        default: true,
-        type: 'boolean'
-    },
-    serializeFunctions: {
-        type: 'boolean'
-    },
-    serverMonitoringMode: {
-        default: 'auto',
-        transform({ values: [value] }) {
-            if (!Object.values(monitor_1.ServerMonitoringMode).includes(value)) {
-                throw new error_1.MongoParseError('serverMonitoringMode must be one of `auto`, `poll`, or `stream`');
-            }
-            return value;
-        }
-    },
-    serverSelectionTimeoutMS: {
-        default: 30000,
-        type: 'uint'
-    },
-    servername: {
-        type: 'string'
-    },
-    socketTimeoutMS: {
-        default: 0,
-        type: 'uint'
-    },
-    srvMaxHosts: {
-        type: 'uint',
-        default: 0
-    },
-    srvServiceName: {
-        type: 'string',
-        default: 'mongodb'
-    },
-    ssl: {
-        target: 'tls',
-        type: 'boolean'
-    },
-    tls: {
-        type: 'boolean'
-    },
-    tlsAllowInvalidCertificates: {
-        target: 'rejectUnauthorized',
-        transform({ name, values: [value] }) {
-            // allowInvalidCertificates is the inverse of rejectUnauthorized
-            return !getBoolean(name, value);
-        }
-    },
-    tlsAllowInvalidHostnames: {
-        target: 'checkServerIdentity',
-        transform({ name, values: [value] }) {
-            // tlsAllowInvalidHostnames means setting the checkServerIdentity function to a noop
-            return getBoolean(name, value) ? () => undefined : undefined;
-        }
-    },
-    tlsCAFile: {
-        type: 'string'
-    },
-    tlsCRLFile: {
-        type: 'string'
-    },
-    tlsCertificateKeyFile: {
-        type: 'string'
-    },
-    tlsCertificateKeyFilePassword: {
-        target: 'passphrase',
-        type: 'any'
-    },
-    tlsInsecure: {
-        transform({ name, options, values: [value] }) {
-            const tlsInsecure = getBoolean(name, value);
-            if (tlsInsecure) {
-                options.checkServerIdentity = () => undefined;
-                options.rejectUnauthorized = false;
-            }
-            else {
-                options.checkServerIdentity = options.tlsAllowInvalidHostnames
-                    ? () => undefined
-                    : undefined;
-                options.rejectUnauthorized = options.tlsAllowInvalidCertificates ? false : true;
-            }
-            return tlsInsecure;
-        }
-    },
-    w: {
-        target: 'writeConcern',
-        transform({ values: [value], options }) {
-            return write_concern_1.WriteConcern.fromOptions({ writeConcern: { ...options.writeConcern, w: value } });
-        }
-    },
-    waitQueueTimeoutMS: {
-        default: 0,
-        type: 'uint'
-    },
-    writeConcern: {
-        target: 'writeConcern',
-        transform({ values: [value], options }) {
-            if ((0, utils_1.isRecord)(value) || value instanceof write_concern_1.WriteConcern) {
-                return write_concern_1.WriteConcern.fromOptions({
-                    writeConcern: {
-                        ...options.writeConcern,
-                        ...value
-                    }
-                });
-            }
-            else if (value === 'majority' || typeof value === 'number') {
-                return write_concern_1.WriteConcern.fromOptions({
-                    writeConcern: {
-                        ...options.writeConcern,
-                        w: value
-                    }
-                });
-            }
-            throw new error_1.MongoParseError(`Invalid WriteConcern cannot parse: ${JSON.stringify(value)}`);
-        }
-    },
-    wtimeout: {
-        deprecated: 'Please use wtimeoutMS instead',
-        target: 'writeConcern',
-        transform({ values: [value], options }) {
-            const wc = write_concern_1.WriteConcern.fromOptions({
-                writeConcern: {
-                    ...options.writeConcern,
-                    wtimeout: getUIntFromOptions('wtimeout', value)
-                }
-            });
-            if (wc)
-                return wc;
-            throw new error_1.MongoParseError(`Cannot make WriteConcern from wtimeout`);
-        }
-    },
-    wtimeoutMS: {
-        target: 'writeConcern',
-        transform({ values: [value], options }) {
-            const wc = write_concern_1.WriteConcern.fromOptions({
-                writeConcern: {
-                    ...options.writeConcern,
-                    wtimeoutMS: getUIntFromOptions('wtimeoutMS', value)
-                }
-            });
-            if (wc)
-                return wc;
-            throw new error_1.MongoParseError(`Cannot make WriteConcern from wtimeout`);
-        }
-    },
-    zlibCompressionLevel: {
-        default: 0,
-        type: 'int'
-    },
-    // Custom types for modifying core behavior
-    connectionType: { type: 'any' },
-    srvPoller: { type: 'any' },
-    // Accepted NodeJS Options
-    minDHSize: { type: 'any' },
-    pskCallback: { type: 'any' },
-    secureContext: { type: 'any' },
-    enableTrace: { type: 'any' },
-    requestCert: { type: 'any' },
-    rejectUnauthorized: { type: 'any' },
-    checkServerIdentity: { type: 'any' },
-    ALPNProtocols: { type: 'any' },
-    SNICallback: { type: 'any' },
-    session: { type: 'any' },
-    requestOCSP: { type: 'any' },
-    localAddress: { type: 'any' },
-    localPort: { type: 'any' },
-    hints: { type: 'any' },
-    lookup: { type: 'any' },
-    ca: { type: 'any' },
-    cert: { type: 'any' },
-    ciphers: { type: 'any' },
-    crl: { type: 'any' },
-    ecdhCurve: { type: 'any' },
-    key: { type: 'any' },
-    passphrase: { type: 'any' },
-    pfx: { type: 'any' },
-    secureProtocol: { type: 'any' },
-    index: { type: 'any' },
-    // Legacy options from v3 era
-    useNewUrlParser: {
-        type: 'boolean',
-        deprecated: 'useNewUrlParser has no effect since Node.js Driver version 4.0.0 and will be removed in the next major version'
-    },
-    useUnifiedTopology: {
-        type: 'boolean',
-        deprecated: 'useUnifiedTopology has no effect since Node.js Driver version 4.0.0 and will be removed in the next major version'
-    },
-    // MongoLogger
-    /**
-     * @internal
-     * TODO: NODE-5671 - remove internal flag
-     */
-    mongodbLogPath: { type: 'any' },
-    /**
-     * @internal
-     * TODO: NODE-5671 - remove internal flag
-     */
-    mongodbLogComponentSeverities: { type: 'any' },
-    /**
-     * @internal
-     * TODO: NODE-5671 - remove internal flag
-     */
-    mongodbLogMaxDocumentLength: { type: 'uint' }
-};
-exports.DEFAULT_OPTIONS = new CaseInsensitiveMap(Object.entries(exports.OPTIONS)
-    .filter(([, descriptor]) => descriptor.default != null)
-    .map(([k, d]) => [k, d.default]));
-/**
- * Set of permitted feature flags
- * @internal
- */
-exports.FEATURE_FLAGS = new Set([
-    Symbol.for('@@mdb.skipPingOnConnect'),
-    Symbol.for('@@mdb.enableMongoLogger'),
-    Symbol.for('@@mdb.internalLoggerConfig')
-]);
-//# sourceMappingURL=connection_string.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/connection_string.js.map b/server/data-import/node_modules/mongodb/lib/connection_string.js.map
deleted file mode 100644
index 4418de9708bc22b1e20eca8bd5677e45ac388338..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/connection_string.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"connection_string.js","sourceRoot":"","sources":["../src/connection_string.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/constants.js b/server/data-import/node_modules/mongodb/lib/constants.js
deleted file mode 100644
index 743327089fe01328a91850c10fc24bf6755f9e1d..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/constants.js
+++ /dev/null
@@ -1,142 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.TOPOLOGY_EVENTS = exports.CMAP_EVENTS = exports.HEARTBEAT_EVENTS = exports.RESUME_TOKEN_CHANGED = exports.END = exports.CHANGE = exports.INIT = exports.MORE = exports.RESPONSE = exports.SERVER_HEARTBEAT_FAILED = exports.SERVER_HEARTBEAT_SUCCEEDED = exports.SERVER_HEARTBEAT_STARTED = exports.COMMAND_FAILED = exports.COMMAND_SUCCEEDED = exports.COMMAND_STARTED = exports.CLUSTER_TIME_RECEIVED = exports.CONNECTION_CHECKED_IN = exports.CONNECTION_CHECKED_OUT = exports.CONNECTION_CHECK_OUT_FAILED = exports.CONNECTION_CHECK_OUT_STARTED = exports.CONNECTION_CLOSED = exports.CONNECTION_READY = exports.CONNECTION_CREATED = exports.CONNECTION_POOL_READY = exports.CONNECTION_POOL_CLEARED = exports.CONNECTION_POOL_CLOSED = exports.CONNECTION_POOL_CREATED = exports.TOPOLOGY_DESCRIPTION_CHANGED = exports.TOPOLOGY_CLOSED = exports.TOPOLOGY_OPENING = exports.SERVER_DESCRIPTION_CHANGED = exports.SERVER_CLOSED = exports.SERVER_OPENING = exports.DESCRIPTION_RECEIVED = exports.UNPINNED = exports.PINNED = exports.MESSAGE = exports.ENDED = exports.CLOSED = exports.CONNECT = exports.OPEN = exports.CLOSE = exports.TIMEOUT = exports.ERROR = exports.SYSTEM_JS_COLLECTION = exports.SYSTEM_COMMAND_COLLECTION = exports.SYSTEM_USER_COLLECTION = exports.SYSTEM_PROFILE_COLLECTION = exports.SYSTEM_INDEX_COLLECTION = exports.SYSTEM_NAMESPACE_COLLECTION = void 0;
-exports.LEGACY_HELLO_COMMAND_CAMEL_CASE = exports.LEGACY_HELLO_COMMAND = exports.MONGO_CLIENT_EVENTS = exports.LOCAL_SERVER_EVENTS = exports.SERVER_RELAY_EVENTS = exports.APM_EVENTS = void 0;
-exports.SYSTEM_NAMESPACE_COLLECTION = 'system.namespaces';
-exports.SYSTEM_INDEX_COLLECTION = 'system.indexes';
-exports.SYSTEM_PROFILE_COLLECTION = 'system.profile';
-exports.SYSTEM_USER_COLLECTION = 'system.users';
-exports.SYSTEM_COMMAND_COLLECTION = '$cmd';
-exports.SYSTEM_JS_COLLECTION = 'system.js';
-// events
-exports.ERROR = 'error';
-exports.TIMEOUT = 'timeout';
-exports.CLOSE = 'close';
-exports.OPEN = 'open';
-exports.CONNECT = 'connect';
-exports.CLOSED = 'closed';
-exports.ENDED = 'ended';
-exports.MESSAGE = 'message';
-exports.PINNED = 'pinned';
-exports.UNPINNED = 'unpinned';
-exports.DESCRIPTION_RECEIVED = 'descriptionReceived';
-exports.SERVER_OPENING = 'serverOpening';
-exports.SERVER_CLOSED = 'serverClosed';
-exports.SERVER_DESCRIPTION_CHANGED = 'serverDescriptionChanged';
-exports.TOPOLOGY_OPENING = 'topologyOpening';
-exports.TOPOLOGY_CLOSED = 'topologyClosed';
-exports.TOPOLOGY_DESCRIPTION_CHANGED = 'topologyDescriptionChanged';
-/** @internal */
-exports.CONNECTION_POOL_CREATED = 'connectionPoolCreated';
-/** @internal */
-exports.CONNECTION_POOL_CLOSED = 'connectionPoolClosed';
-/** @internal */
-exports.CONNECTION_POOL_CLEARED = 'connectionPoolCleared';
-/** @internal */
-exports.CONNECTION_POOL_READY = 'connectionPoolReady';
-/** @internal */
-exports.CONNECTION_CREATED = 'connectionCreated';
-/** @internal */
-exports.CONNECTION_READY = 'connectionReady';
-/** @internal */
-exports.CONNECTION_CLOSED = 'connectionClosed';
-/** @internal */
-exports.CONNECTION_CHECK_OUT_STARTED = 'connectionCheckOutStarted';
-/** @internal */
-exports.CONNECTION_CHECK_OUT_FAILED = 'connectionCheckOutFailed';
-/** @internal */
-exports.CONNECTION_CHECKED_OUT = 'connectionCheckedOut';
-/** @internal */
-exports.CONNECTION_CHECKED_IN = 'connectionCheckedIn';
-exports.CLUSTER_TIME_RECEIVED = 'clusterTimeReceived';
-exports.COMMAND_STARTED = 'commandStarted';
-exports.COMMAND_SUCCEEDED = 'commandSucceeded';
-exports.COMMAND_FAILED = 'commandFailed';
-exports.SERVER_HEARTBEAT_STARTED = 'serverHeartbeatStarted';
-exports.SERVER_HEARTBEAT_SUCCEEDED = 'serverHeartbeatSucceeded';
-exports.SERVER_HEARTBEAT_FAILED = 'serverHeartbeatFailed';
-exports.RESPONSE = 'response';
-exports.MORE = 'more';
-exports.INIT = 'init';
-exports.CHANGE = 'change';
-exports.END = 'end';
-exports.RESUME_TOKEN_CHANGED = 'resumeTokenChanged';
-/** @public */
-exports.HEARTBEAT_EVENTS = Object.freeze([
-    exports.SERVER_HEARTBEAT_STARTED,
-    exports.SERVER_HEARTBEAT_SUCCEEDED,
-    exports.SERVER_HEARTBEAT_FAILED
-]);
-/** @public */
-exports.CMAP_EVENTS = Object.freeze([
-    exports.CONNECTION_POOL_CREATED,
-    exports.CONNECTION_POOL_READY,
-    exports.CONNECTION_POOL_CLEARED,
-    exports.CONNECTION_POOL_CLOSED,
-    exports.CONNECTION_CREATED,
-    exports.CONNECTION_READY,
-    exports.CONNECTION_CLOSED,
-    exports.CONNECTION_CHECK_OUT_STARTED,
-    exports.CONNECTION_CHECK_OUT_FAILED,
-    exports.CONNECTION_CHECKED_OUT,
-    exports.CONNECTION_CHECKED_IN
-]);
-/** @public */
-exports.TOPOLOGY_EVENTS = Object.freeze([
-    exports.SERVER_OPENING,
-    exports.SERVER_CLOSED,
-    exports.SERVER_DESCRIPTION_CHANGED,
-    exports.TOPOLOGY_OPENING,
-    exports.TOPOLOGY_CLOSED,
-    exports.TOPOLOGY_DESCRIPTION_CHANGED,
-    exports.ERROR,
-    exports.TIMEOUT,
-    exports.CLOSE
-]);
-/** @public */
-exports.APM_EVENTS = Object.freeze([
-    exports.COMMAND_STARTED,
-    exports.COMMAND_SUCCEEDED,
-    exports.COMMAND_FAILED
-]);
-/**
- * All events that we relay to the `Topology`
- * @internal
- */
-exports.SERVER_RELAY_EVENTS = Object.freeze([
-    exports.SERVER_HEARTBEAT_STARTED,
-    exports.SERVER_HEARTBEAT_SUCCEEDED,
-    exports.SERVER_HEARTBEAT_FAILED,
-    exports.COMMAND_STARTED,
-    exports.COMMAND_SUCCEEDED,
-    exports.COMMAND_FAILED,
-    ...exports.CMAP_EVENTS
-]);
-/**
- * All events we listen to from `Server` instances, but do not forward to the client
- * @internal
- */
-exports.LOCAL_SERVER_EVENTS = Object.freeze([
-    exports.CONNECT,
-    exports.DESCRIPTION_RECEIVED,
-    exports.CLOSED,
-    exports.ENDED
-]);
-/** @public */
-exports.MONGO_CLIENT_EVENTS = Object.freeze([
-    ...exports.CMAP_EVENTS,
-    ...exports.APM_EVENTS,
-    ...exports.TOPOLOGY_EVENTS,
-    ...exports.HEARTBEAT_EVENTS
-]);
-/**
- * @internal
- * The legacy hello command that was deprecated in MongoDB 5.0.
- */
-exports.LEGACY_HELLO_COMMAND = 'ismaster';
-/**
- * @internal
- * The legacy hello command that was deprecated in MongoDB 5.0.
- */
-exports.LEGACY_HELLO_COMMAND_CAMEL_CASE = 'isMaster';
-//# sourceMappingURL=constants.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/constants.js.map b/server/data-import/node_modules/mongodb/lib/constants.js.map
deleted file mode 100644
index a1d1e7c42bf8c6f82151f6735e5599bb154473b3..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/constants.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/abstract_cursor.js b/server/data-import/node_modules/mongodb/lib/cursor/abstract_cursor.js
deleted file mode 100644
index 4c5faa7b81d70d168bfcfc3e441632e27b02df3f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/abstract_cursor.js
+++ /dev/null
@@ -1,701 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.assertUninitialized = exports.AbstractCursor = exports.CURSOR_FLAGS = void 0;
-const stream_1 = require("stream");
-const bson_1 = require("../bson");
-const error_1 = require("../error");
-const mongo_types_1 = require("../mongo_types");
-const execute_operation_1 = require("../operations/execute_operation");
-const get_more_1 = require("../operations/get_more");
-const kill_cursors_1 = require("../operations/kill_cursors");
-const read_concern_1 = require("../read_concern");
-const read_preference_1 = require("../read_preference");
-const sessions_1 = require("../sessions");
-const utils_1 = require("../utils");
-/** @internal */
-const kId = Symbol('id');
-/** @internal */
-const kDocuments = Symbol('documents');
-/** @internal */
-const kServer = Symbol('server');
-/** @internal */
-const kNamespace = Symbol('namespace');
-/** @internal */
-const kClient = Symbol('client');
-/** @internal */
-const kSession = Symbol('session');
-/** @internal */
-const kOptions = Symbol('options');
-/** @internal */
-const kTransform = Symbol('transform');
-/** @internal */
-const kInitialized = Symbol('initialized');
-/** @internal */
-const kClosed = Symbol('closed');
-/** @internal */
-const kKilled = Symbol('killed');
-/** @internal */
-const kInit = Symbol('kInit');
-/** @public */
-exports.CURSOR_FLAGS = [
-    'tailable',
-    'oplogReplay',
-    'noCursorTimeout',
-    'awaitData',
-    'exhaust',
-    'partial'
-];
-/** @public */
-class AbstractCursor extends mongo_types_1.TypedEventEmitter {
-    /** @internal */
-    constructor(client, namespace, options = {}) {
-        super();
-        if (!client.s.isMongoClient) {
-            throw new error_1.MongoRuntimeError('Cursor must be constructed with MongoClient');
-        }
-        this[kClient] = client;
-        this[kNamespace] = namespace;
-        this[kId] = null;
-        this[kDocuments] = new utils_1.List();
-        this[kInitialized] = false;
-        this[kClosed] = false;
-        this[kKilled] = false;
-        this[kOptions] = {
-            readPreference: options.readPreference && options.readPreference instanceof read_preference_1.ReadPreference
-                ? options.readPreference
-                : read_preference_1.ReadPreference.primary,
-            ...(0, bson_1.pluckBSONSerializeOptions)(options)
-        };
-        const readConcern = read_concern_1.ReadConcern.fromOptions(options);
-        if (readConcern) {
-            this[kOptions].readConcern = readConcern;
-        }
-        if (typeof options.batchSize === 'number') {
-            this[kOptions].batchSize = options.batchSize;
-        }
-        // we check for undefined specifically here to allow falsy values
-        // eslint-disable-next-line no-restricted-syntax
-        if (options.comment !== undefined) {
-            this[kOptions].comment = options.comment;
-        }
-        if (typeof options.maxTimeMS === 'number') {
-            this[kOptions].maxTimeMS = options.maxTimeMS;
-        }
-        if (typeof options.maxAwaitTimeMS === 'number') {
-            this[kOptions].maxAwaitTimeMS = options.maxAwaitTimeMS;
-        }
-        if (options.session instanceof sessions_1.ClientSession) {
-            this[kSession] = options.session;
-        }
-        else {
-            this[kSession] = this[kClient].startSession({ owner: this, explicit: false });
-        }
-    }
-    get id() {
-        return this[kId] ?? undefined;
-    }
-    /** @internal */
-    get isDead() {
-        return (this[kId]?.isZero() ?? false) || this[kClosed] || this[kKilled];
-    }
-    /** @internal */
-    get client() {
-        return this[kClient];
-    }
-    /** @internal */
-    get server() {
-        return this[kServer];
-    }
-    get namespace() {
-        return this[kNamespace];
-    }
-    get readPreference() {
-        return this[kOptions].readPreference;
-    }
-    get readConcern() {
-        return this[kOptions].readConcern;
-    }
-    /** @internal */
-    get session() {
-        return this[kSession];
-    }
-    set session(clientSession) {
-        this[kSession] = clientSession;
-    }
-    /** @internal */
-    get cursorOptions() {
-        return this[kOptions];
-    }
-    get closed() {
-        return this[kClosed];
-    }
-    get killed() {
-        return this[kKilled];
-    }
-    get loadBalanced() {
-        return !!this[kClient].topology?.loadBalanced;
-    }
-    /** Returns current buffered documents length */
-    bufferedCount() {
-        return this[kDocuments].length;
-    }
-    /** Returns current buffered documents */
-    readBufferedDocuments(number) {
-        const bufferedDocs = [];
-        const documentsToRead = Math.min(number ?? this[kDocuments].length, this[kDocuments].length);
-        for (let count = 0; count < documentsToRead; count++) {
-            const document = this[kDocuments].shift();
-            if (document != null) {
-                bufferedDocs.push(document);
-            }
-        }
-        return bufferedDocs;
-    }
-    async *[Symbol.asyncIterator]() {
-        if (this.closed) {
-            return;
-        }
-        try {
-            while (true) {
-                const document = await this.next();
-                // Intentional strict null check, because users can map cursors to falsey values.
-                // We allow mapping to all values except for null.
-                // eslint-disable-next-line no-restricted-syntax
-                if (document === null) {
-                    if (!this.closed) {
-                        const message = 'Cursor returned a `null` document, but the cursor is not exhausted.  Mapping documents to `null` is not supported in the cursor transform.';
-                        await cleanupCursor(this, { needsToEmitClosed: true }).catch(() => null);
-                        throw new error_1.MongoAPIError(message);
-                    }
-                    break;
-                }
-                yield document;
-                if (this[kId] === bson_1.Long.ZERO) {
-                    // Cursor exhausted
-                    break;
-                }
-            }
-        }
-        finally {
-            // Only close the cursor if it has not already been closed. This finally clause handles
-            // the case when a user would break out of a for await of loop early.
-            if (!this.closed) {
-                await this.close().catch(() => null);
-            }
-        }
-    }
-    stream(options) {
-        if (options?.transform) {
-            const transform = options.transform;
-            const readable = new ReadableCursorStream(this);
-            return readable.pipe(new stream_1.Transform({
-                objectMode: true,
-                highWaterMark: 1,
-                transform(chunk, _, callback) {
-                    try {
-                        const transformed = transform(chunk);
-                        callback(undefined, transformed);
-                    }
-                    catch (err) {
-                        callback(err);
-                    }
-                }
-            }));
-        }
-        return new ReadableCursorStream(this);
-    }
-    async hasNext() {
-        if (this[kId] === bson_1.Long.ZERO) {
-            return false;
-        }
-        if (this[kDocuments].length !== 0) {
-            return true;
-        }
-        const doc = await next(this, { blocking: true, transform: false });
-        if (doc) {
-            this[kDocuments].unshift(doc);
-            return true;
-        }
-        return false;
-    }
-    /** Get the next available document from the cursor, returns null if no more documents are available. */
-    async next() {
-        if (this[kId] === bson_1.Long.ZERO) {
-            throw new error_1.MongoCursorExhaustedError();
-        }
-        return next(this, { blocking: true, transform: true });
-    }
-    /**
-     * Try to get the next available document from the cursor or `null` if an empty batch is returned
-     */
-    async tryNext() {
-        if (this[kId] === bson_1.Long.ZERO) {
-            throw new error_1.MongoCursorExhaustedError();
-        }
-        return next(this, { blocking: false, transform: true });
-    }
-    /**
-     * Iterates over all the documents for this cursor using the iterator, callback pattern.
-     *
-     * If the iterator returns `false`, iteration will stop.
-     *
-     * @param iterator - The iteration callback.
-     * @deprecated - Will be removed in a future release. Use for await...of instead.
-     */
-    async forEach(iterator) {
-        if (typeof iterator !== 'function') {
-            throw new error_1.MongoInvalidArgumentError('Argument "iterator" must be a function');
-        }
-        for await (const document of this) {
-            const result = iterator(document);
-            if (result === false) {
-                break;
-            }
-        }
-    }
-    async close() {
-        const needsToEmitClosed = !this[kClosed];
-        this[kClosed] = true;
-        await cleanupCursor(this, { needsToEmitClosed });
-    }
-    /**
-     * Returns an array of documents. The caller is responsible for making sure that there
-     * is enough memory to store the results. Note that the array only contains partial
-     * results when this cursor had been previously accessed. In that case,
-     * cursor.rewind() can be used to reset the cursor.
-     */
-    async toArray() {
-        const array = [];
-        for await (const document of this) {
-            array.push(document);
-        }
-        return array;
-    }
-    /**
-     * Add a cursor flag to the cursor
-     *
-     * @param flag - The flag to set, must be one of following ['tailable', 'oplogReplay', 'noCursorTimeout', 'awaitData', 'partial' -.
-     * @param value - The flag boolean value.
-     */
-    addCursorFlag(flag, value) {
-        assertUninitialized(this);
-        if (!exports.CURSOR_FLAGS.includes(flag)) {
-            throw new error_1.MongoInvalidArgumentError(`Flag ${flag} is not one of ${exports.CURSOR_FLAGS}`);
-        }
-        if (typeof value !== 'boolean') {
-            throw new error_1.MongoInvalidArgumentError(`Flag ${flag} must be a boolean value`);
-        }
-        this[kOptions][flag] = value;
-        return this;
-    }
-    /**
-     * Map all documents using the provided function
-     * If there is a transform set on the cursor, that will be called first and the result passed to
-     * this function's transform.
-     *
-     * @remarks
-     *
-     * **Note** Cursors use `null` internally to indicate that there are no more documents in the cursor. Providing a mapping
-     * function that maps values to `null` will result in the cursor closing itself before it has finished iterating
-     * all documents.  This will **not** result in a memory leak, just surprising behavior.  For example:
-     *
-     * ```typescript
-     * const cursor = collection.find({});
-     * cursor.map(() => null);
-     *
-     * const documents = await cursor.toArray();
-     * // documents is always [], regardless of how many documents are in the collection.
-     * ```
-     *
-     * Other falsey values are allowed:
-     *
-     * ```typescript
-     * const cursor = collection.find({});
-     * cursor.map(() => '');
-     *
-     * const documents = await cursor.toArray();
-     * // documents is now an array of empty strings
-     * ```
-     *
-     * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
-     * it **does not** return a new instance of a cursor. This means when calling map,
-     * you should always assign the result to a new variable in order to get a correctly typed cursor variable.
-     * Take note of the following example:
-     *
-     * @example
-     * ```typescript
-     * const cursor: FindCursor<Document> = coll.find();
-     * const mappedCursor: FindCursor<number> = cursor.map(doc => Object.keys(doc).length);
-     * const keyCounts: number[] = await mappedCursor.toArray(); // cursor.toArray() still returns Document[]
-     * ```
-     * @param transform - The mapping transformation method.
-     */
-    map(transform) {
-        assertUninitialized(this);
-        const oldTransform = this[kTransform]; // TODO(NODE-3283): Improve transform typing
-        if (oldTransform) {
-            this[kTransform] = doc => {
-                return transform(oldTransform(doc));
-            };
-        }
-        else {
-            this[kTransform] = transform;
-        }
-        return this;
-    }
-    /**
-     * Set the ReadPreference for the cursor.
-     *
-     * @param readPreference - The new read preference for the cursor.
-     */
-    withReadPreference(readPreference) {
-        assertUninitialized(this);
-        if (readPreference instanceof read_preference_1.ReadPreference) {
-            this[kOptions].readPreference = readPreference;
-        }
-        else if (typeof readPreference === 'string') {
-            this[kOptions].readPreference = read_preference_1.ReadPreference.fromString(readPreference);
-        }
-        else {
-            throw new error_1.MongoInvalidArgumentError(`Invalid read preference: ${readPreference}`);
-        }
-        return this;
-    }
-    /**
-     * Set the ReadPreference for the cursor.
-     *
-     * @param readPreference - The new read preference for the cursor.
-     */
-    withReadConcern(readConcern) {
-        assertUninitialized(this);
-        const resolvedReadConcern = read_concern_1.ReadConcern.fromOptions({ readConcern });
-        if (resolvedReadConcern) {
-            this[kOptions].readConcern = resolvedReadConcern;
-        }
-        return this;
-    }
-    /**
-     * Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)
-     *
-     * @param value - Number of milliseconds to wait before aborting the query.
-     */
-    maxTimeMS(value) {
-        assertUninitialized(this);
-        if (typeof value !== 'number') {
-            throw new error_1.MongoInvalidArgumentError('Argument for maxTimeMS must be a number');
-        }
-        this[kOptions].maxTimeMS = value;
-        return this;
-    }
-    /**
-     * Set the batch size for the cursor.
-     *
-     * @param value - The number of documents to return per batch. See {@link https://www.mongodb.com/docs/manual/reference/command/find/|find command documentation}.
-     */
-    batchSize(value) {
-        assertUninitialized(this);
-        if (this[kOptions].tailable) {
-            throw new error_1.MongoTailableCursorError('Tailable cursor does not support batchSize');
-        }
-        if (typeof value !== 'number') {
-            throw new error_1.MongoInvalidArgumentError('Operation "batchSize" requires an integer');
-        }
-        this[kOptions].batchSize = value;
-        return this;
-    }
-    /**
-     * Rewind this cursor to its uninitialized state. Any options that are present on the cursor will
-     * remain in effect. Iterating this cursor will cause new queries to be sent to the server, even
-     * if the resultant data has already been retrieved by this cursor.
-     */
-    rewind() {
-        if (!this[kInitialized]) {
-            return;
-        }
-        this[kId] = null;
-        this[kDocuments].clear();
-        this[kClosed] = false;
-        this[kKilled] = false;
-        this[kInitialized] = false;
-        const session = this[kSession];
-        if (session) {
-            // We only want to end this session if we created it, and it hasn't ended yet
-            if (session.explicit === false) {
-                if (!session.hasEnded) {
-                    session.endSession().catch(() => null);
-                }
-                this[kSession] = this.client.startSession({ owner: this, explicit: false });
-            }
-        }
-    }
-    /** @internal */
-    async getMore(batchSize) {
-        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-        const getMoreOperation = new get_more_1.GetMoreOperation(this[kNamespace], this[kId], this[kServer], {
-            ...this[kOptions],
-            session: this[kSession],
-            batchSize
-        });
-        return (0, execute_operation_1.executeOperation)(this[kClient], getMoreOperation);
-    }
-    /**
-     * @internal
-     *
-     * This function is exposed for the unified test runner's createChangeStream
-     * operation.  We cannot refactor to use the abstract _initialize method without
-     * a significant refactor.
-     */
-    async [kInit]() {
-        try {
-            const state = await this._initialize(this[kSession]);
-            const response = state.response;
-            this[kServer] = state.server;
-            if (response.cursor) {
-                // TODO(NODE-2674): Preserve int64 sent from MongoDB
-                this[kId] =
-                    typeof response.cursor.id === 'number'
-                        ? bson_1.Long.fromNumber(response.cursor.id)
-                        : typeof response.cursor.id === 'bigint'
-                            ? bson_1.Long.fromBigInt(response.cursor.id)
-                            : response.cursor.id;
-                if (response.cursor.ns) {
-                    this[kNamespace] = (0, utils_1.ns)(response.cursor.ns);
-                }
-                this[kDocuments].pushMany(response.cursor.firstBatch);
-            }
-            // When server responses return without a cursor document, we close this cursor
-            // and return the raw server response. This is often the case for explain commands
-            // for example
-            if (this[kId] == null) {
-                this[kId] = bson_1.Long.ZERO;
-                // TODO(NODE-3286): ExecutionResult needs to accept a generic parameter
-                this[kDocuments].push(state.response);
-            }
-            // the cursor is now initialized, even if it is dead
-            this[kInitialized] = true;
-        }
-        catch (error) {
-            // the cursor is now initialized, even if an error occurred
-            this[kInitialized] = true;
-            await cleanupCursor(this, { error });
-            throw error;
-        }
-        if (this.isDead) {
-            await cleanupCursor(this, undefined);
-        }
-        return;
-    }
-}
-/** @event */
-AbstractCursor.CLOSE = 'close';
-exports.AbstractCursor = AbstractCursor;
-/**
- * @param cursor - the cursor on which to call `next`
- * @param blocking - a boolean indicating whether or not the cursor should `block` until data
- *     is available.  Generally, this flag is set to `false` because if the getMore returns no documents,
- *     the cursor has been exhausted.  In certain scenarios (ChangeStreams, tailable await cursors and
- *     `tryNext`, for example) blocking is necessary because a getMore returning no documents does
- *     not indicate the end of the cursor.
- * @param transform - if true, the cursor's transform function is applied to the result document (if the transform exists)
- * @returns the next document in the cursor, or `null`.  When `blocking` is `true`, a `null` document means
- * the cursor has been exhausted.  Otherwise, it means that there is no document available in the cursor's buffer.
- */
-async function next(cursor, { blocking, transform }) {
-    if (cursor.closed) {
-        return null;
-    }
-    do {
-        if (cursor[kId] == null) {
-            // All cursors must operate within a session, one must be made implicitly if not explicitly provided
-            await cursor[kInit]();
-        }
-        if (cursor[kDocuments].length !== 0) {
-            const doc = cursor[kDocuments].shift();
-            if (doc != null && transform && cursor[kTransform]) {
-                try {
-                    return cursor[kTransform](doc);
-                }
-                catch (error) {
-                    // `cleanupCursorAsync` should never throw, but if it does we want to throw the original
-                    // error instead.
-                    await cleanupCursor(cursor, { error, needsToEmitClosed: true }).catch(() => null);
-                    throw error;
-                }
-            }
-            return doc;
-        }
-        if (cursor.isDead) {
-            // if the cursor is dead, we clean it up
-            // cleanupCursorAsync should never throw, but if it does it indicates a bug in the driver
-            // and we should surface the error
-            await cleanupCursor(cursor, {});
-            return null;
-        }
-        // otherwise need to call getMore
-        const batchSize = cursor[kOptions].batchSize || 1000;
-        try {
-            const response = await cursor.getMore(batchSize);
-            if (response) {
-                const cursorId = typeof response.cursor.id === 'number'
-                    ? bson_1.Long.fromNumber(response.cursor.id)
-                    : typeof response.cursor.id === 'bigint'
-                        ? bson_1.Long.fromBigInt(response.cursor.id)
-                        : response.cursor.id;
-                cursor[kDocuments].pushMany(response.cursor.nextBatch);
-                cursor[kId] = cursorId;
-            }
-        }
-        catch (error) {
-            // `cleanupCursorAsync` should never throw, but if it does we want to throw the original
-            // error instead.
-            await cleanupCursor(cursor, { error }).catch(() => null);
-            throw error;
-        }
-        if (cursor.isDead) {
-            // If we successfully received a response from a cursor BUT the cursor indicates that it is exhausted,
-            // we intentionally clean up the cursor to release its session back into the pool before the cursor
-            // is iterated.  This prevents a cursor that is exhausted on the server from holding
-            // onto a session indefinitely until the AbstractCursor is iterated.
-            //
-            // cleanupCursorAsync should never throw, but if it does it indicates a bug in the driver
-            // and we should surface the error
-            await cleanupCursor(cursor, {});
-        }
-        if (cursor[kDocuments].length === 0 && blocking === false) {
-            return null;
-        }
-    } while (!cursor.isDead || cursor[kDocuments].length !== 0);
-    return null;
-}
-async function cleanupCursor(cursor, options) {
-    const cursorId = cursor[kId];
-    const cursorNs = cursor[kNamespace];
-    const server = cursor[kServer];
-    const session = cursor[kSession];
-    const error = options?.error;
-    // Cursors only emit closed events once the client-side cursor has been exhausted fully or there
-    // was an error.  Notably, when the server returns a cursor id of 0 and a non-empty batch, we
-    // cleanup the cursor but don't emit a `close` event.
-    const needsToEmitClosed = options?.needsToEmitClosed ?? cursor[kDocuments].length === 0;
-    if (error) {
-        if (cursor.loadBalanced && error instanceof error_1.MongoNetworkError) {
-            return completeCleanup();
-        }
-    }
-    if (cursorId == null || server == null || cursorId.isZero() || cursorNs == null) {
-        if (needsToEmitClosed) {
-            cursor[kClosed] = true;
-            cursor[kId] = bson_1.Long.ZERO;
-            cursor.emit(AbstractCursor.CLOSE);
-        }
-        if (session) {
-            if (session.owner === cursor) {
-                await session.endSession({ error });
-                return;
-            }
-            if (!session.inTransaction()) {
-                (0, sessions_1.maybeClearPinnedConnection)(session, { error });
-            }
-        }
-        return;
-    }
-    async function completeCleanup() {
-        if (session) {
-            if (session.owner === cursor) {
-                try {
-                    await session.endSession({ error });
-                }
-                finally {
-                    cursor.emit(AbstractCursor.CLOSE);
-                }
-                return;
-            }
-            if (!session.inTransaction()) {
-                (0, sessions_1.maybeClearPinnedConnection)(session, { error });
-            }
-        }
-        cursor.emit(AbstractCursor.CLOSE);
-        return;
-    }
-    cursor[kKilled] = true;
-    if (session.hasEnded) {
-        return completeCleanup();
-    }
-    try {
-        await (0, execute_operation_1.executeOperation)(cursor[kClient], new kill_cursors_1.KillCursorsOperation(cursorId, cursorNs, server, { session })).catch(() => null);
-    }
-    finally {
-        await completeCleanup();
-    }
-}
-/** @internal */
-function assertUninitialized(cursor) {
-    if (cursor[kInitialized]) {
-        throw new error_1.MongoCursorInUseError();
-    }
-}
-exports.assertUninitialized = assertUninitialized;
-class ReadableCursorStream extends stream_1.Readable {
-    constructor(cursor) {
-        super({
-            objectMode: true,
-            autoDestroy: false,
-            highWaterMark: 1
-        });
-        this._readInProgress = false;
-        this._cursor = cursor;
-    }
-    // eslint-disable-next-line @typescript-eslint/no-unused-vars
-    _read(size) {
-        if (!this._readInProgress) {
-            this._readInProgress = true;
-            this._readNext();
-        }
-    }
-    _destroy(error, callback) {
-        this._cursor.close().then(() => callback(error), closeError => callback(closeError));
-    }
-    _readNext() {
-        next(this._cursor, { blocking: true, transform: true }).then(result => {
-            if (result == null) {
-                this.push(null);
-            }
-            else if (this.destroyed) {
-                this._cursor.close().catch(() => null);
-            }
-            else {
-                if (this.push(result)) {
-                    return this._readNext();
-                }
-                this._readInProgress = false;
-            }
-        }, err => {
-            // NOTE: This is questionable, but we have a test backing the behavior. It seems the
-            //       desired behavior is that a stream ends cleanly when a user explicitly closes
-            //       a client during iteration. Alternatively, we could do the "right" thing and
-            //       propagate the error message by removing this special case.
-            if (err.message.match(/server is closed/)) {
-                this._cursor.close().catch(() => null);
-                return this.push(null);
-            }
-            // NOTE: This is also perhaps questionable. The rationale here is that these errors tend
-            //       to be "operation was interrupted", where a cursor has been closed but there is an
-            //       active getMore in-flight. This used to check if the cursor was killed but once
-            //       that changed to happen in cleanup legitimate errors would not destroy the
-            //       stream. There are change streams test specifically test these cases.
-            if (err.message.match(/operation was interrupted/)) {
-                return this.push(null);
-            }
-            // NOTE: The two above checks on the message of the error will cause a null to be pushed
-            //       to the stream, thus closing the stream before the destroy call happens. This means
-            //       that either of those error messages on a change stream will not get a proper
-            //       'error' event to be emitted (the error passed to destroy). Change stream resumability
-            //       relies on that error event to be emitted to create its new cursor and thus was not
-            //       working on 4.4 servers because the error emitted on failover was "interrupted at
-            //       shutdown" while on 5.0+ it is "The server is in quiesce mode and will shut down".
-            //       See NODE-4475.
-            return this.destroy(err);
-        });
-    }
-}
-//# sourceMappingURL=abstract_cursor.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/abstract_cursor.js.map b/server/data-import/node_modules/mongodb/lib/cursor/abstract_cursor.js.map
deleted file mode 100644
index 18bc5ce038eb39db83bbc45355c69f86a75d8c1a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/abstract_cursor.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"abstract_cursor.js","sourceRoot":"","sources":["../../src/cursor/abstract_cursor.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/aggregation_cursor.js b/server/data-import/node_modules/mongodb/lib/cursor/aggregation_cursor.js
deleted file mode 100644
index bd38d86e98afeabea15fc488fe0886e98b6ec5b5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/aggregation_cursor.js
+++ /dev/null
@@ -1,165 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.AggregationCursor = void 0;
-const aggregate_1 = require("../operations/aggregate");
-const execute_operation_1 = require("../operations/execute_operation");
-const utils_1 = require("../utils");
-const abstract_cursor_1 = require("./abstract_cursor");
-/** @internal */
-const kPipeline = Symbol('pipeline');
-/** @internal */
-const kOptions = Symbol('options');
-/**
- * The **AggregationCursor** class is an internal class that embodies an aggregation cursor on MongoDB
- * allowing for iteration over the results returned from the underlying query. It supports
- * one by one document iteration, conversion to an array or can be iterated as a Node 4.X
- * or higher stream
- * @public
- */
-class AggregationCursor extends abstract_cursor_1.AbstractCursor {
-    /** @internal */
-    constructor(client, namespace, pipeline = [], options = {}) {
-        super(client, namespace, options);
-        this[kPipeline] = pipeline;
-        this[kOptions] = options;
-    }
-    get pipeline() {
-        return this[kPipeline];
-    }
-    clone() {
-        const clonedOptions = (0, utils_1.mergeOptions)({}, this[kOptions]);
-        delete clonedOptions.session;
-        return new AggregationCursor(this.client, this.namespace, this[kPipeline], {
-            ...clonedOptions
-        });
-    }
-    map(transform) {
-        return super.map(transform);
-    }
-    /** @internal */
-    async _initialize(session) {
-        const aggregateOperation = new aggregate_1.AggregateOperation(this.namespace, this[kPipeline], {
-            ...this[kOptions],
-            ...this.cursorOptions,
-            session
-        });
-        const response = await (0, execute_operation_1.executeOperation)(this.client, aggregateOperation);
-        // TODO: NODE-2882
-        return { server: aggregateOperation.server, session, response };
-    }
-    /** Execute the explain for the cursor */
-    async explain(verbosity) {
-        return (0, execute_operation_1.executeOperation)(this.client, new aggregate_1.AggregateOperation(this.namespace, this[kPipeline], {
-            ...this[kOptions],
-            ...this.cursorOptions,
-            explain: verbosity ?? true
-        }));
-    }
-    group($group) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kPipeline].push({ $group });
-        return this;
-    }
-    /** Add a limit stage to the aggregation pipeline */
-    limit($limit) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kPipeline].push({ $limit });
-        return this;
-    }
-    /** Add a match stage to the aggregation pipeline */
-    match($match) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kPipeline].push({ $match });
-        return this;
-    }
-    /** Add an out stage to the aggregation pipeline */
-    out($out) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kPipeline].push({ $out });
-        return this;
-    }
-    /**
-     * Add a project stage to the aggregation pipeline
-     *
-     * @remarks
-     * In order to strictly type this function you must provide an interface
-     * that represents the effect of your projection on the result documents.
-     *
-     * By default chaining a projection to your cursor changes the returned type to the generic {@link Document} type.
-     * You should specify a parameterized type to have assertions on your final results.
-     *
-     * @example
-     * ```typescript
-     * // Best way
-     * const docs: AggregationCursor<{ a: number }> = cursor.project<{ a: number }>({ _id: 0, a: true });
-     * // Flexible way
-     * const docs: AggregationCursor<Document> = cursor.project({ _id: 0, a: true });
-     * ```
-     *
-     * @remarks
-     * In order to strictly type this function you must provide an interface
-     * that represents the effect of your projection on the result documents.
-     *
-     * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
-     * it **does not** return a new instance of a cursor. This means when calling project,
-     * you should always assign the result to a new variable in order to get a correctly typed cursor variable.
-     * Take note of the following example:
-     *
-     * @example
-     * ```typescript
-     * const cursor: AggregationCursor<{ a: number; b: string }> = coll.aggregate([]);
-     * const projectCursor = cursor.project<{ a: number }>({ _id: 0, a: true });
-     * const aPropOnlyArray: {a: number}[] = await projectCursor.toArray();
-     *
-     * // or always use chaining and save the final cursor
-     *
-     * const cursor = coll.aggregate().project<{ a: string }>({
-     *   _id: 0,
-     *   a: { $convert: { input: '$a', to: 'string' }
-     * }});
-     * ```
-     */
-    project($project) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kPipeline].push({ $project });
-        return this;
-    }
-    /** Add a lookup stage to the aggregation pipeline */
-    lookup($lookup) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kPipeline].push({ $lookup });
-        return this;
-    }
-    /** Add a redact stage to the aggregation pipeline */
-    redact($redact) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kPipeline].push({ $redact });
-        return this;
-    }
-    /** Add a skip stage to the aggregation pipeline */
-    skip($skip) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kPipeline].push({ $skip });
-        return this;
-    }
-    /** Add a sort stage to the aggregation pipeline */
-    sort($sort) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kPipeline].push({ $sort });
-        return this;
-    }
-    /** Add a unwind stage to the aggregation pipeline */
-    unwind($unwind) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kPipeline].push({ $unwind });
-        return this;
-    }
-    /** Add a geoNear stage to the aggregation pipeline */
-    geoNear($geoNear) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kPipeline].push({ $geoNear });
-        return this;
-    }
-}
-exports.AggregationCursor = AggregationCursor;
-//# sourceMappingURL=aggregation_cursor.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map b/server/data-import/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map
deleted file mode 100644
index bd8b306e22ad830a28bbe2332a21ed1c57e8bf06..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"aggregation_cursor.js","sourceRoot":"","sources":["../../src/cursor/aggregation_cursor.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/change_stream_cursor.js b/server/data-import/node_modules/mongodb/lib/cursor/change_stream_cursor.js
deleted file mode 100644
index a132bc5cd653615d8d3340277864e86b03e1cb5e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/change_stream_cursor.js
+++ /dev/null
@@ -1,107 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ChangeStreamCursor = void 0;
-const change_stream_1 = require("../change_stream");
-const constants_1 = require("../constants");
-const aggregate_1 = require("../operations/aggregate");
-const execute_operation_1 = require("../operations/execute_operation");
-const utils_1 = require("../utils");
-const abstract_cursor_1 = require("./abstract_cursor");
-/** @internal */
-class ChangeStreamCursor extends abstract_cursor_1.AbstractCursor {
-    constructor(client, namespace, pipeline = [], options = {}) {
-        super(client, namespace, options);
-        this.pipeline = pipeline;
-        this.options = options;
-        this._resumeToken = null;
-        this.startAtOperationTime = options.startAtOperationTime;
-        if (options.startAfter) {
-            this.resumeToken = options.startAfter;
-        }
-        else if (options.resumeAfter) {
-            this.resumeToken = options.resumeAfter;
-        }
-    }
-    set resumeToken(token) {
-        this._resumeToken = token;
-        this.emit(change_stream_1.ChangeStream.RESUME_TOKEN_CHANGED, token);
-    }
-    get resumeToken() {
-        return this._resumeToken;
-    }
-    get resumeOptions() {
-        const options = {
-            ...this.options
-        };
-        for (const key of ['resumeAfter', 'startAfter', 'startAtOperationTime']) {
-            delete options[key];
-        }
-        if (this.resumeToken != null) {
-            if (this.options.startAfter && !this.hasReceived) {
-                options.startAfter = this.resumeToken;
-            }
-            else {
-                options.resumeAfter = this.resumeToken;
-            }
-        }
-        else if (this.startAtOperationTime != null && (0, utils_1.maxWireVersion)(this.server) >= 7) {
-            options.startAtOperationTime = this.startAtOperationTime;
-        }
-        return options;
-    }
-    cacheResumeToken(resumeToken) {
-        if (this.bufferedCount() === 0 && this.postBatchResumeToken) {
-            this.resumeToken = this.postBatchResumeToken;
-        }
-        else {
-            this.resumeToken = resumeToken;
-        }
-        this.hasReceived = true;
-    }
-    _processBatch(response) {
-        const cursor = response.cursor;
-        if (cursor.postBatchResumeToken) {
-            this.postBatchResumeToken = response.cursor.postBatchResumeToken;
-            const batch = 'firstBatch' in response.cursor ? response.cursor.firstBatch : response.cursor.nextBatch;
-            if (batch.length === 0) {
-                this.resumeToken = cursor.postBatchResumeToken;
-            }
-        }
-    }
-    clone() {
-        return new ChangeStreamCursor(this.client, this.namespace, this.pipeline, {
-            ...this.cursorOptions
-        });
-    }
-    async _initialize(session) {
-        const aggregateOperation = new aggregate_1.AggregateOperation(this.namespace, this.pipeline, {
-            ...this.cursorOptions,
-            ...this.options,
-            session
-        });
-        const response = await (0, execute_operation_1.executeOperation)(session.client, aggregateOperation);
-        const server = aggregateOperation.server;
-        this.maxWireVersion = (0, utils_1.maxWireVersion)(server);
-        if (this.startAtOperationTime == null &&
-            this.resumeAfter == null &&
-            this.startAfter == null &&
-            this.maxWireVersion >= 7) {
-            this.startAtOperationTime = response.operationTime;
-        }
-        this._processBatch(response);
-        this.emit(constants_1.INIT, response);
-        this.emit(constants_1.RESPONSE);
-        // TODO: NODE-2882
-        return { server, session, response };
-    }
-    async getMore(batchSize) {
-        const response = await super.getMore(batchSize);
-        this.maxWireVersion = (0, utils_1.maxWireVersion)(this.server);
-        this._processBatch(response);
-        this.emit(change_stream_1.ChangeStream.MORE, response);
-        this.emit(change_stream_1.ChangeStream.RESPONSE);
-        return response;
-    }
-}
-exports.ChangeStreamCursor = ChangeStreamCursor;
-//# sourceMappingURL=change_stream_cursor.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/change_stream_cursor.js.map b/server/data-import/node_modules/mongodb/lib/cursor/change_stream_cursor.js.map
deleted file mode 100644
index bb52a6d694ba0a137260c77e61eb3b434f4212ff..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/change_stream_cursor.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"change_stream_cursor.js","sourceRoot":"","sources":["../../src/cursor/change_stream_cursor.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/find_cursor.js b/server/data-import/node_modules/mongodb/lib/cursor/find_cursor.js
deleted file mode 100644
index e27b87e21ed46c3ac8e8adb505920cfa750363c9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/find_cursor.js
+++ /dev/null
@@ -1,378 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.FindCursor = exports.FLAGS = void 0;
-const bson_1 = require("../bson");
-const error_1 = require("../error");
-const count_1 = require("../operations/count");
-const execute_operation_1 = require("../operations/execute_operation");
-const find_1 = require("../operations/find");
-const sort_1 = require("../sort");
-const utils_1 = require("../utils");
-const abstract_cursor_1 = require("./abstract_cursor");
-/** @internal */
-const kFilter = Symbol('filter');
-/** @internal */
-const kNumReturned = Symbol('numReturned');
-/** @internal */
-const kBuiltOptions = Symbol('builtOptions');
-/** @public Flags allowed for cursor */
-exports.FLAGS = [
-    'tailable',
-    'oplogReplay',
-    'noCursorTimeout',
-    'awaitData',
-    'exhaust',
-    'partial'
-];
-/** @public */
-class FindCursor extends abstract_cursor_1.AbstractCursor {
-    /** @internal */
-    constructor(client, namespace, filter = {}, options = {}) {
-        super(client, namespace, options);
-        this[kFilter] = filter;
-        this[kBuiltOptions] = options;
-        if (options.sort != null) {
-            this[kBuiltOptions].sort = (0, sort_1.formatSort)(options.sort);
-        }
-    }
-    clone() {
-        const clonedOptions = (0, utils_1.mergeOptions)({}, this[kBuiltOptions]);
-        delete clonedOptions.session;
-        return new FindCursor(this.client, this.namespace, this[kFilter], {
-            ...clonedOptions
-        });
-    }
-    map(transform) {
-        return super.map(transform);
-    }
-    /** @internal */
-    async _initialize(session) {
-        const findOperation = new find_1.FindOperation(undefined, this.namespace, this[kFilter], {
-            ...this[kBuiltOptions],
-            ...this.cursorOptions,
-            session
-        });
-        const response = await (0, execute_operation_1.executeOperation)(this.client, findOperation);
-        // the response is not a cursor when `explain` is enabled
-        this[kNumReturned] = response.cursor?.firstBatch?.length;
-        // TODO: NODE-2882
-        return { server: findOperation.server, session, response };
-    }
-    /** @internal */
-    async getMore(batchSize) {
-        const numReturned = this[kNumReturned];
-        if (numReturned) {
-            // TODO(DRIVERS-1448): Remove logic to enforce `limit` in the driver
-            const limit = this[kBuiltOptions].limit;
-            batchSize =
-                limit && limit > 0 && numReturned + batchSize > limit ? limit - numReturned : batchSize;
-            if (batchSize <= 0) {
-                // this is an optimization for the special case of a limit for a find command to avoid an
-                // extra getMore when the limit has been reached and the limit is a multiple of the batchSize.
-                // This is a consequence of the new query engine in 5.0 having no knowledge of the limit as it
-                // produces results for the find command.  Once a batch is filled up, it is returned and only
-                // on the subsequent getMore will the query framework consider the limit, determine the cursor
-                // is exhausted and return a cursorId of zero.
-                // instead, if we determine there are no more documents to request from the server, we preemptively
-                // close the cursor
-                await this.close().catch(() => null);
-                return { cursor: { id: bson_1.Long.ZERO, nextBatch: [] } };
-            }
-        }
-        const response = await super.getMore(batchSize);
-        // TODO: wrap this in some logic to prevent it from happening if we don't need this support
-        if (response) {
-            this[kNumReturned] = this[kNumReturned] + response.cursor.nextBatch.length;
-        }
-        return response;
-    }
-    /**
-     * Get the count of documents for this cursor
-     * @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead
-     */
-    async count(options) {
-        (0, utils_1.emitWarningOnce)('cursor.count is deprecated and will be removed in the next major version, please use `collection.estimatedDocumentCount` or `collection.countDocuments` instead ');
-        if (typeof options === 'boolean') {
-            throw new error_1.MongoInvalidArgumentError('Invalid first parameter to count');
-        }
-        return (0, execute_operation_1.executeOperation)(this.client, new count_1.CountOperation(this.namespace, this[kFilter], {
-            ...this[kBuiltOptions],
-            ...this.cursorOptions,
-            ...options
-        }));
-    }
-    /** Execute the explain for the cursor */
-    async explain(verbosity) {
-        return (0, execute_operation_1.executeOperation)(this.client, new find_1.FindOperation(undefined, this.namespace, this[kFilter], {
-            ...this[kBuiltOptions],
-            ...this.cursorOptions,
-            explain: verbosity ?? true
-        }));
-    }
-    /** Set the cursor query */
-    filter(filter) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kFilter] = filter;
-        return this;
-    }
-    /**
-     * Set the cursor hint
-     *
-     * @param hint - If specified, then the query system will only consider plans using the hinted index.
-     */
-    hint(hint) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kBuiltOptions].hint = hint;
-        return this;
-    }
-    /**
-     * Set the cursor min
-     *
-     * @param min - Specify a $min value to specify the inclusive lower bound for a specific index in order to constrain the results of find(). The $min specifies the lower bound for all keys of a specific index in order.
-     */
-    min(min) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kBuiltOptions].min = min;
-        return this;
-    }
-    /**
-     * Set the cursor max
-     *
-     * @param max - Specify a $max value to specify the exclusive upper bound for a specific index in order to constrain the results of find(). The $max specifies the upper bound for all keys of a specific index in order.
-     */
-    max(max) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kBuiltOptions].max = max;
-        return this;
-    }
-    /**
-     * Set the cursor returnKey.
-     * If set to true, modifies the cursor to only return the index field or fields for the results of the query, rather than documents.
-     * If set to true and the query does not use an index to perform the read operation, the returned documents will not contain any fields.
-     *
-     * @param value - the returnKey value.
-     */
-    returnKey(value) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kBuiltOptions].returnKey = value;
-        return this;
-    }
-    /**
-     * Modifies the output of a query by adding a field $recordId to matching documents. $recordId is the internal key which uniquely identifies a document in a collection.
-     *
-     * @param value - The $showDiskLoc option has now been deprecated and replaced with the showRecordId field. $showDiskLoc will still be accepted for OP_QUERY stye find.
-     */
-    showRecordId(value) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kBuiltOptions].showRecordId = value;
-        return this;
-    }
-    /**
-     * Add a query modifier to the cursor query
-     *
-     * @param name - The query modifier (must start with $, such as $orderby etc)
-     * @param value - The modifier value.
-     */
-    addQueryModifier(name, value) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        if (name[0] !== '$') {
-            throw new error_1.MongoInvalidArgumentError(`${name} is not a valid query modifier`);
-        }
-        // Strip of the $
-        const field = name.substr(1);
-        // NOTE: consider some TS magic for this
-        switch (field) {
-            case 'comment':
-                this[kBuiltOptions].comment = value;
-                break;
-            case 'explain':
-                this[kBuiltOptions].explain = value;
-                break;
-            case 'hint':
-                this[kBuiltOptions].hint = value;
-                break;
-            case 'max':
-                this[kBuiltOptions].max = value;
-                break;
-            case 'maxTimeMS':
-                this[kBuiltOptions].maxTimeMS = value;
-                break;
-            case 'min':
-                this[kBuiltOptions].min = value;
-                break;
-            case 'orderby':
-                this[kBuiltOptions].sort = (0, sort_1.formatSort)(value);
-                break;
-            case 'query':
-                this[kFilter] = value;
-                break;
-            case 'returnKey':
-                this[kBuiltOptions].returnKey = value;
-                break;
-            case 'showDiskLoc':
-                this[kBuiltOptions].showRecordId = value;
-                break;
-            default:
-                throw new error_1.MongoInvalidArgumentError(`Invalid query modifier: ${name}`);
-        }
-        return this;
-    }
-    /**
-     * Add a comment to the cursor query allowing for tracking the comment in the log.
-     *
-     * @param value - The comment attached to this query.
-     */
-    comment(value) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kBuiltOptions].comment = value;
-        return this;
-    }
-    /**
-     * Set a maxAwaitTimeMS on a tailing cursor query to allow to customize the timeout value for the option awaitData (Only supported on MongoDB 3.2 or higher, ignored otherwise)
-     *
-     * @param value - Number of milliseconds to wait before aborting the tailed query.
-     */
-    maxAwaitTimeMS(value) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        if (typeof value !== 'number') {
-            throw new error_1.MongoInvalidArgumentError('Argument for maxAwaitTimeMS must be a number');
-        }
-        this[kBuiltOptions].maxAwaitTimeMS = value;
-        return this;
-    }
-    /**
-     * Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)
-     *
-     * @param value - Number of milliseconds to wait before aborting the query.
-     */
-    maxTimeMS(value) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        if (typeof value !== 'number') {
-            throw new error_1.MongoInvalidArgumentError('Argument for maxTimeMS must be a number');
-        }
-        this[kBuiltOptions].maxTimeMS = value;
-        return this;
-    }
-    /**
-     * Add a project stage to the aggregation pipeline
-     *
-     * @remarks
-     * In order to strictly type this function you must provide an interface
-     * that represents the effect of your projection on the result documents.
-     *
-     * By default chaining a projection to your cursor changes the returned type to the generic
-     * {@link Document} type.
-     * You should specify a parameterized type to have assertions on your final results.
-     *
-     * @example
-     * ```typescript
-     * // Best way
-     * const docs: FindCursor<{ a: number }> = cursor.project<{ a: number }>({ _id: 0, a: true });
-     * // Flexible way
-     * const docs: FindCursor<Document> = cursor.project({ _id: 0, a: true });
-     * ```
-     *
-     * @remarks
-     *
-     * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
-     * it **does not** return a new instance of a cursor. This means when calling project,
-     * you should always assign the result to a new variable in order to get a correctly typed cursor variable.
-     * Take note of the following example:
-     *
-     * @example
-     * ```typescript
-     * const cursor: FindCursor<{ a: number; b: string }> = coll.find();
-     * const projectCursor = cursor.project<{ a: number }>({ _id: 0, a: true });
-     * const aPropOnlyArray: {a: number}[] = await projectCursor.toArray();
-     *
-     * // or always use chaining and save the final cursor
-     *
-     * const cursor = coll.find().project<{ a: string }>({
-     *   _id: 0,
-     *   a: { $convert: { input: '$a', to: 'string' }
-     * }});
-     * ```
-     */
-    project(value) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kBuiltOptions].projection = value;
-        return this;
-    }
-    /**
-     * Sets the sort order of the cursor query.
-     *
-     * @param sort - The key or keys set for the sort.
-     * @param direction - The direction of the sorting (1 or -1).
-     */
-    sort(sort, direction) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        if (this[kBuiltOptions].tailable) {
-            throw new error_1.MongoTailableCursorError('Tailable cursor does not support sorting');
-        }
-        this[kBuiltOptions].sort = (0, sort_1.formatSort)(sort, direction);
-        return this;
-    }
-    /**
-     * Allows disk use for blocking sort operations exceeding 100MB memory. (MongoDB 3.2 or higher)
-     *
-     * @remarks
-     * {@link https://www.mongodb.com/docs/manual/reference/command/find/#find-cmd-allowdiskuse | find command allowDiskUse documentation}
-     */
-    allowDiskUse(allow = true) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        if (!this[kBuiltOptions].sort) {
-            throw new error_1.MongoInvalidArgumentError('Option "allowDiskUse" requires a sort specification');
-        }
-        // As of 6.0 the default is true. This allows users to get back to the old behavior.
-        if (!allow) {
-            this[kBuiltOptions].allowDiskUse = false;
-            return this;
-        }
-        this[kBuiltOptions].allowDiskUse = true;
-        return this;
-    }
-    /**
-     * Set the collation options for the cursor.
-     *
-     * @param value - The cursor collation options (MongoDB 3.4 or higher) settings for update operation (see 3.4 documentation for available fields).
-     */
-    collation(value) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        this[kBuiltOptions].collation = value;
-        return this;
-    }
-    /**
-     * Set the limit for the cursor.
-     *
-     * @param value - The limit for the cursor query.
-     */
-    limit(value) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        if (this[kBuiltOptions].tailable) {
-            throw new error_1.MongoTailableCursorError('Tailable cursor does not support limit');
-        }
-        if (typeof value !== 'number') {
-            throw new error_1.MongoInvalidArgumentError('Operation "limit" requires an integer');
-        }
-        this[kBuiltOptions].limit = value;
-        return this;
-    }
-    /**
-     * Set the skip for the cursor.
-     *
-     * @param value - The skip for the cursor query.
-     */
-    skip(value) {
-        (0, abstract_cursor_1.assertUninitialized)(this);
-        if (this[kBuiltOptions].tailable) {
-            throw new error_1.MongoTailableCursorError('Tailable cursor does not support skip');
-        }
-        if (typeof value !== 'number') {
-            throw new error_1.MongoInvalidArgumentError('Operation "skip" requires an integer');
-        }
-        this[kBuiltOptions].skip = value;
-        return this;
-    }
-}
-exports.FindCursor = FindCursor;
-//# sourceMappingURL=find_cursor.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/find_cursor.js.map b/server/data-import/node_modules/mongodb/lib/cursor/find_cursor.js.map
deleted file mode 100644
index 0eff14be85fe10da91df368cc0bac5be2a119182..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/find_cursor.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"find_cursor.js","sourceRoot":"","sources":["../../src/cursor/find_cursor.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/list_collections_cursor.js b/server/data-import/node_modules/mongodb/lib/cursor/list_collections_cursor.js
deleted file mode 100644
index 91463b7ba83f3883666c61b2233a873071749255..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/list_collections_cursor.js
+++ /dev/null
@@ -1,34 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ListCollectionsCursor = void 0;
-const execute_operation_1 = require("../operations/execute_operation");
-const list_collections_1 = require("../operations/list_collections");
-const abstract_cursor_1 = require("./abstract_cursor");
-/** @public */
-class ListCollectionsCursor extends abstract_cursor_1.AbstractCursor {
-    constructor(db, filter, options) {
-        super(db.client, db.s.namespace, options);
-        this.parent = db;
-        this.filter = filter;
-        this.options = options;
-    }
-    clone() {
-        return new ListCollectionsCursor(this.parent, this.filter, {
-            ...this.options,
-            ...this.cursorOptions
-        });
-    }
-    /** @internal */
-    async _initialize(session) {
-        const operation = new list_collections_1.ListCollectionsOperation(this.parent, this.filter, {
-            ...this.cursorOptions,
-            ...this.options,
-            session
-        });
-        const response = await (0, execute_operation_1.executeOperation)(this.parent.client, operation);
-        // TODO: NODE-2882
-        return { server: operation.server, session, response };
-    }
-}
-exports.ListCollectionsCursor = ListCollectionsCursor;
-//# sourceMappingURL=list_collections_cursor.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/list_collections_cursor.js.map b/server/data-import/node_modules/mongodb/lib/cursor/list_collections_cursor.js.map
deleted file mode 100644
index 160c468f3f0013be897536234de3b1afbb99c7c8..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/list_collections_cursor.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"list_collections_cursor.js","sourceRoot":"","sources":["../../src/cursor/list_collections_cursor.ts"],"names":[],"mappings":";;;AAEA,uEAAyF;AACzF,qEAIwC;AAExC,uDAAmD;AAEnD,cAAc;AACd,MAAa,qBAIX,SAAQ,gCAAiB;IAKzB,YAAY,EAAM,EAAE,MAAgB,EAAE,OAAgC;QACpE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACzD,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,IAAI,CAAC,aAAa;SACtB,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,WAAW,CAAC,OAAkC;QAClD,MAAM,SAAS,GAAG,IAAI,2CAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACvE,GAAG,IAAI,CAAC,aAAa;YACrB,GAAG,IAAI,CAAC,OAAO;YACf,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAA,oCAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEvE,kBAAkB;QAClB,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACzD,CAAC;CACF;AApCD,sDAoCC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/list_indexes_cursor.js b/server/data-import/node_modules/mongodb/lib/cursor/list_indexes_cursor.js
deleted file mode 100644
index 9f2cb7307421b023d79c107f06de650dd99a7034..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/list_indexes_cursor.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ListIndexesCursor = void 0;
-const execute_operation_1 = require("../operations/execute_operation");
-const indexes_1 = require("../operations/indexes");
-const abstract_cursor_1 = require("./abstract_cursor");
-/** @public */
-class ListIndexesCursor extends abstract_cursor_1.AbstractCursor {
-    constructor(collection, options) {
-        super(collection.client, collection.s.namespace, options);
-        this.parent = collection;
-        this.options = options;
-    }
-    clone() {
-        return new ListIndexesCursor(this.parent, {
-            ...this.options,
-            ...this.cursorOptions
-        });
-    }
-    /** @internal */
-    async _initialize(session) {
-        const operation = new indexes_1.ListIndexesOperation(this.parent, {
-            ...this.cursorOptions,
-            ...this.options,
-            session
-        });
-        const response = await (0, execute_operation_1.executeOperation)(this.parent.client, operation);
-        // TODO: NODE-2882
-        return { server: operation.server, session, response };
-    }
-}
-exports.ListIndexesCursor = ListIndexesCursor;
-//# sourceMappingURL=list_indexes_cursor.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/list_indexes_cursor.js.map b/server/data-import/node_modules/mongodb/lib/cursor/list_indexes_cursor.js.map
deleted file mode 100644
index eb0c7877ed5fbf2eebe29ff5405b29ea9a912cab..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/list_indexes_cursor.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"list_indexes_cursor.js","sourceRoot":"","sources":["../../src/cursor/list_indexes_cursor.ts"],"names":[],"mappings":";;;AACA,uEAAyF;AACzF,mDAAsF;AAEtF,uDAAmD;AAEnD,cAAc;AACd,MAAa,iBAAkB,SAAQ,gCAAc;IAInD,YAAY,UAAsB,EAAE,OAA4B;QAC9D,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE;YACxC,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,IAAI,CAAC,aAAa;SACtB,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,WAAW,CAAC,OAAkC;QAClD,MAAM,SAAS,GAAG,IAAI,8BAAoB,CAAC,IAAI,CAAC,MAAM,EAAE;YACtD,GAAG,IAAI,CAAC,aAAa;YACrB,GAAG,IAAI,CAAC,OAAO;YACf,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAA,oCAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEvE,kBAAkB;QAClB,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACzD,CAAC;CACF;AA9BD,8CA8BC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js b/server/data-import/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js
deleted file mode 100644
index d9c39c70ed5fd72084735fe103a62d880ce11cc5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ListSearchIndexesCursor = void 0;
-const aggregation_cursor_1 = require("./aggregation_cursor");
-/** @public */
-class ListSearchIndexesCursor extends aggregation_cursor_1.AggregationCursor {
-    /** @internal */
-    constructor({ fullNamespace: ns, client }, name, options = {}) {
-        const pipeline = name == null ? [{ $listSearchIndexes: {} }] : [{ $listSearchIndexes: { name } }];
-        super(client, ns, pipeline, options);
-    }
-}
-exports.ListSearchIndexesCursor = ListSearchIndexesCursor;
-//# sourceMappingURL=list_search_indexes_cursor.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js.map b/server/data-import/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js.map
deleted file mode 100644
index 6353a21ac82ed27c85a5d41eadf8847c28bb51aa..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"list_search_indexes_cursor.js","sourceRoot":"","sources":["../../src/cursor/list_search_indexes_cursor.ts"],"names":[],"mappings":";;;AAEA,6DAAyD;AAKzD,cAAc;AACd,MAAa,uBAAwB,SAAQ,sCAAmC;IAC9E,gBAAgB;IAChB,YACE,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAc,EACzC,IAAmB,EACnB,UAAoC,EAAE;QAEtC,MAAM,QAAQ,GACZ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACnF,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;CACF;AAXD,0DAWC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/run_command_cursor.js b/server/data-import/node_modules/mongodb/lib/cursor/run_command_cursor.js
deleted file mode 100644
index 3fbf8581e786302af6ca31842227cb38b5f38b18..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/run_command_cursor.js
+++ /dev/null
@@ -1,92 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.RunCommandCursor = void 0;
-const error_1 = require("../error");
-const execute_operation_1 = require("../operations/execute_operation");
-const get_more_1 = require("../operations/get_more");
-const run_command_1 = require("../operations/run_command");
-const utils_1 = require("../utils");
-const abstract_cursor_1 = require("./abstract_cursor");
-/** @public */
-class RunCommandCursor extends abstract_cursor_1.AbstractCursor {
-    /**
-     * Controls the `getMore.comment` field
-     * @param comment - any BSON value
-     */
-    setComment(comment) {
-        this.getMoreOptions.comment = comment;
-        return this;
-    }
-    /**
-     * Controls the `getMore.maxTimeMS` field. Only valid when cursor is tailable await
-     * @param maxTimeMS - the number of milliseconds to wait for new data
-     */
-    setMaxTimeMS(maxTimeMS) {
-        this.getMoreOptions.maxAwaitTimeMS = maxTimeMS;
-        return this;
-    }
-    /**
-     * Controls the `getMore.batchSize` field
-     * @param maxTimeMS - the number documents to return in the `nextBatch`
-     */
-    setBatchSize(batchSize) {
-        this.getMoreOptions.batchSize = batchSize;
-        return this;
-    }
-    /** Unsupported for RunCommandCursor */
-    clone() {
-        throw new error_1.MongoAPIError('Clone not supported, create a new cursor with db.runCursorCommand');
-    }
-    /** Unsupported for RunCommandCursor: readConcern must be configured directly on command document */
-    withReadConcern(_) {
-        throw new error_1.MongoAPIError('RunCommandCursor does not support readConcern it must be attached to the command being run');
-    }
-    /** Unsupported for RunCommandCursor: various cursor flags must be configured directly on command document */
-    addCursorFlag(_, __) {
-        throw new error_1.MongoAPIError('RunCommandCursor does not support cursor flags, they must be attached to the command being run');
-    }
-    /** Unsupported for RunCommandCursor: maxTimeMS must be configured directly on command document */
-    maxTimeMS(_) {
-        throw new error_1.MongoAPIError('maxTimeMS must be configured on the command document directly, to configure getMore.maxTimeMS use cursor.setMaxTimeMS()');
-    }
-    /** Unsupported for RunCommandCursor: batchSize must be configured directly on command document */
-    batchSize(_) {
-        throw new error_1.MongoAPIError('batchSize must be configured on the command document directly, to configure getMore.batchSize use cursor.setBatchSize()');
-    }
-    /** @internal */
-    constructor(db, command, options = {}) {
-        super(db.client, (0, utils_1.ns)(db.namespace), options);
-        this.getMoreOptions = {};
-        this.db = db;
-        this.command = Object.freeze({ ...command });
-    }
-    /** @internal */
-    async _initialize(session) {
-        const operation = new run_command_1.RunCommandOperation(this.db, this.command, {
-            ...this.cursorOptions,
-            session: session,
-            readPreference: this.cursorOptions.readPreference
-        });
-        const response = await (0, execute_operation_1.executeOperation)(this.client, operation);
-        if (response.cursor == null) {
-            throw new error_1.MongoUnexpectedServerResponseError('Expected server to respond with cursor');
-        }
-        return {
-            server: operation.server,
-            session,
-            response
-        };
-    }
-    /** @internal */
-    async getMore(_batchSize) {
-        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-        const getMoreOperation = new get_more_1.GetMoreOperation(this.namespace, this.id, this.server, {
-            ...this.cursorOptions,
-            session: this.session,
-            ...this.getMoreOptions
-        });
-        return (0, execute_operation_1.executeOperation)(this.client, getMoreOperation);
-    }
-}
-exports.RunCommandCursor = RunCommandCursor;
-//# sourceMappingURL=run_command_cursor.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/cursor/run_command_cursor.js.map b/server/data-import/node_modules/mongodb/lib/cursor/run_command_cursor.js.map
deleted file mode 100644
index 2a6a374d86843a197625f588be41788fc3f2615e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/cursor/run_command_cursor.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"run_command_cursor.js","sourceRoot":"","sources":["../../src/cursor/run_command_cursor.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/db.js b/server/data-import/node_modules/mongodb/lib/db.js
deleted file mode 100644
index b304e6bb21c9d33942f3b48802a6fe087cfa4f9b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/db.js
+++ /dev/null
@@ -1,356 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Db = void 0;
-const admin_1 = require("./admin");
-const bson_1 = require("./bson");
-const change_stream_1 = require("./change_stream");
-const collection_1 = require("./collection");
-const CONSTANTS = require("./constants");
-const aggregation_cursor_1 = require("./cursor/aggregation_cursor");
-const list_collections_cursor_1 = require("./cursor/list_collections_cursor");
-const run_command_cursor_1 = require("./cursor/run_command_cursor");
-const error_1 = require("./error");
-const collections_1 = require("./operations/collections");
-const create_collection_1 = require("./operations/create_collection");
-const drop_1 = require("./operations/drop");
-const execute_operation_1 = require("./operations/execute_operation");
-const indexes_1 = require("./operations/indexes");
-const profiling_level_1 = require("./operations/profiling_level");
-const remove_user_1 = require("./operations/remove_user");
-const rename_1 = require("./operations/rename");
-const run_command_1 = require("./operations/run_command");
-const set_profiling_level_1 = require("./operations/set_profiling_level");
-const stats_1 = require("./operations/stats");
-const read_concern_1 = require("./read_concern");
-const read_preference_1 = require("./read_preference");
-const utils_1 = require("./utils");
-const write_concern_1 = require("./write_concern");
-// Allowed parameters
-const DB_OPTIONS_ALLOW_LIST = [
-    'writeConcern',
-    'readPreference',
-    'readPreferenceTags',
-    'native_parser',
-    'forceServerObjectId',
-    'pkFactory',
-    'serializeFunctions',
-    'raw',
-    'authSource',
-    'ignoreUndefined',
-    'readConcern',
-    'retryMiliSeconds',
-    'numberOfRetries',
-    'useBigInt64',
-    'promoteBuffers',
-    'promoteLongs',
-    'bsonRegExp',
-    'enableUtf8Validation',
-    'promoteValues',
-    'compression',
-    'retryWrites'
-];
-/**
- * The **Db** class is a class that represents a MongoDB Database.
- * @public
- *
- * @example
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * interface Pet {
- *   name: string;
- *   kind: 'dog' | 'cat' | 'fish';
- * }
- *
- * const client = new MongoClient('mongodb://localhost:27017');
- * const db = client.db();
- *
- * // Create a collection that validates our union
- * await db.createCollection<Pet>('pets', {
- *   validator: { $expr: { $in: ['$kind', ['dog', 'cat', 'fish']] } }
- * })
- * ```
- */
-class Db {
-    /**
-     * Creates a new Db instance.
-     *
-     * Db name cannot contain a dot, the server may apply more restrictions when an operation is run.
-     *
-     * @param client - The MongoClient for the database.
-     * @param databaseName - The name of the database this instance represents.
-     * @param options - Optional settings for Db construction.
-     */
-    constructor(client, databaseName, options) {
-        options = options ?? {};
-        // Filter the options
-        options = (0, utils_1.filterOptions)(options, DB_OPTIONS_ALLOW_LIST);
-        // Ensure there are no dots in database name
-        if (typeof databaseName === 'string' && databaseName.includes('.')) {
-            throw new error_1.MongoInvalidArgumentError(`Database names cannot contain the character '.'`);
-        }
-        // Internal state of the db object
-        this.s = {
-            // Options
-            options,
-            // Unpack read preference
-            readPreference: read_preference_1.ReadPreference.fromOptions(options),
-            // Merge bson options
-            bsonOptions: (0, bson_1.resolveBSONOptions)(options, client),
-            // Set up the primary key factory or fallback to ObjectId
-            pkFactory: options?.pkFactory ?? utils_1.DEFAULT_PK_FACTORY,
-            // ReadConcern
-            readConcern: read_concern_1.ReadConcern.fromOptions(options),
-            writeConcern: write_concern_1.WriteConcern.fromOptions(options),
-            // Namespace
-            namespace: new utils_1.MongoDBNamespace(databaseName)
-        };
-        this.client = client;
-    }
-    get databaseName() {
-        return this.s.namespace.db;
-    }
-    // Options
-    get options() {
-        return this.s.options;
-    }
-    /**
-     * Check if a secondary can be used (because the read preference is *not* set to primary)
-     */
-    get secondaryOk() {
-        return this.s.readPreference?.preference !== 'primary' || false;
-    }
-    get readConcern() {
-        return this.s.readConcern;
-    }
-    /**
-     * The current readPreference of the Db. If not explicitly defined for
-     * this Db, will be inherited from the parent MongoClient
-     */
-    get readPreference() {
-        if (this.s.readPreference == null) {
-            return this.client.readPreference;
-        }
-        return this.s.readPreference;
-    }
-    get bsonOptions() {
-        return this.s.bsonOptions;
-    }
-    // get the write Concern
-    get writeConcern() {
-        return this.s.writeConcern;
-    }
-    get namespace() {
-        return this.s.namespace.toString();
-    }
-    /**
-     * Create a new collection on a server with the specified options. Use this to create capped collections.
-     * More information about command options available at https://www.mongodb.com/docs/manual/reference/command/create/
-     *
-     * Collection namespace validation is performed server-side.
-     *
-     * @param name - The name of the collection to create
-     * @param options - Optional settings for the command
-     */
-    async createCollection(name, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new create_collection_1.CreateCollectionOperation(this, name, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Execute a command
-     *
-     * @remarks
-     * This command does not inherit options from the MongoClient.
-     *
-     * The driver will ensure the following fields are attached to the command sent to the server:
-     * - `lsid` - sourced from an implicit session or options.session
-     * - `$readPreference` - defaults to primary or can be configured by options.readPreference
-     * - `$db` - sourced from the name of this database
-     *
-     * If the client has a serverApi setting:
-     * - `apiVersion`
-     * - `apiStrict`
-     * - `apiDeprecationErrors`
-     *
-     * When in a transaction:
-     * - `readConcern` - sourced from readConcern set on the TransactionOptions
-     * - `writeConcern` - sourced from writeConcern set on the TransactionOptions
-     *
-     * Attaching any of the above fields to the command will have no effect as the driver will overwrite the value.
-     *
-     * @param command - The command to run
-     * @param options - Optional settings for the command
-     */
-    async command(command, options) {
-        // Intentionally, we do not inherit options from parent for this operation.
-        return (0, execute_operation_1.executeOperation)(this.client, new run_command_1.RunCommandOperation(this, command, {
-            ...(0, bson_1.resolveBSONOptions)(options),
-            session: options?.session,
-            readPreference: options?.readPreference
-        }));
-    }
-    /**
-     * Execute an aggregation framework pipeline against the database, needs MongoDB \>= 3.6
-     *
-     * @param pipeline - An array of aggregation stages to be executed
-     * @param options - Optional settings for the command
-     */
-    aggregate(pipeline = [], options) {
-        return new aggregation_cursor_1.AggregationCursor(this.client, this.s.namespace, pipeline, (0, utils_1.resolveOptions)(this, options));
-    }
-    /** Return the Admin db instance */
-    admin() {
-        return new admin_1.Admin(this);
-    }
-    /**
-     * Returns a reference to a MongoDB Collection. If it does not exist it will be created implicitly.
-     *
-     * Collection namespace validation is performed server-side.
-     *
-     * @param name - the collection name we wish to access.
-     * @returns return the new Collection instance
-     */
-    collection(name, options = {}) {
-        if (typeof options === 'function') {
-            throw new error_1.MongoInvalidArgumentError('The callback form of this helper has been removed.');
-        }
-        return new collection_1.Collection(this, name, (0, utils_1.resolveOptions)(this, options));
-    }
-    /**
-     * Get all the db statistics.
-     *
-     * @param options - Optional settings for the command
-     */
-    async stats(options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new stats_1.DbStatsOperation(this, (0, utils_1.resolveOptions)(this, options)));
-    }
-    listCollections(filter = {}, options = {}) {
-        return new list_collections_cursor_1.ListCollectionsCursor(this, filter, (0, utils_1.resolveOptions)(this, options));
-    }
-    /**
-     * Rename a collection.
-     *
-     * @remarks
-     * This operation does not inherit options from the MongoClient.
-     *
-     * @param fromCollection - Name of current collection to rename
-     * @param toCollection - New name of of the collection
-     * @param options - Optional settings for the command
-     */
-    async renameCollection(fromCollection, toCollection, options) {
-        // Intentionally, we do not inherit options from parent for this operation.
-        return (0, execute_operation_1.executeOperation)(this.client, new rename_1.RenameOperation(this.collection(fromCollection), toCollection, { ...options, new_collection: true, readPreference: read_preference_1.ReadPreference.primary }));
-    }
-    /**
-     * Drop a collection from the database, removing it permanently. New accesses will create a new collection.
-     *
-     * @param name - Name of collection to drop
-     * @param options - Optional settings for the command
-     */
-    async dropCollection(name, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new drop_1.DropCollectionOperation(this, name, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Drop a database, removing it permanently from the server.
-     *
-     * @param options - Optional settings for the command
-     */
-    async dropDatabase(options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new drop_1.DropDatabaseOperation(this, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Fetch all collections for the current db.
-     *
-     * @param options - Optional settings for the command
-     */
-    async collections(options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new collections_1.CollectionsOperation(this, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Creates an index on the db and collection.
-     *
-     * @param name - Name of the collection to create the index on.
-     * @param indexSpec - Specify the field to index, or an index specification
-     * @param options - Optional settings for the command
-     */
-    async createIndex(name, indexSpec, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new indexes_1.CreateIndexOperation(this, name, indexSpec, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Remove a user from a database
-     *
-     * @param username - The username to remove
-     * @param options - Optional settings for the command
-     */
-    async removeUser(username, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new remove_user_1.RemoveUserOperation(this, username, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Set the current profiling level of MongoDB
-     *
-     * @param level - The new profiling level (off, slow_only, all).
-     * @param options - Optional settings for the command
-     */
-    async setProfilingLevel(level, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new set_profiling_level_1.SetProfilingLevelOperation(this, level, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Retrieve the current profiling Level for MongoDB
-     *
-     * @param options - Optional settings for the command
-     */
-    async profilingLevel(options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new profiling_level_1.ProfilingLevelOperation(this, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Retrieves this collections index info.
-     *
-     * @param name - The name of the collection.
-     * @param options - Optional settings for the command
-     */
-    async indexInformation(name, options) {
-        return (0, execute_operation_1.executeOperation)(this.client, new indexes_1.IndexInformationOperation(this, name, (0, utils_1.resolveOptions)(this, options)));
-    }
-    /**
-     * Create a new Change Stream, watching for new changes (insertions, updates,
-     * replacements, deletions, and invalidations) in this database. Will ignore all
-     * changes to system collections.
-     *
-     * @remarks
-     * watch() accepts two generic arguments for distinct use cases:
-     * - The first is to provide the schema that may be defined for all the collections within this database
-     * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument
-     *
-     * @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.
-     * @param options - Optional settings for the command
-     * @typeParam TSchema - Type of the data being detected by the change stream
-     * @typeParam TChange - Type of the whole change stream document emitted
-     */
-    watch(pipeline = [], options = {}) {
-        // Allow optionally not specifying a pipeline
-        if (!Array.isArray(pipeline)) {
-            options = pipeline;
-            pipeline = [];
-        }
-        return new change_stream_1.ChangeStream(this, pipeline, (0, utils_1.resolveOptions)(this, options));
-    }
-    /**
-     * A low level cursor API providing basic driver functionality:
-     * - ClientSession management
-     * - ReadPreference for server selection
-     * - Running getMores automatically when a local batch is exhausted
-     *
-     * @param command - The command that will start a cursor on the server.
-     * @param options - Configurations for running the command, bson options will apply to getMores
-     */
-    runCursorCommand(command, options) {
-        return new run_command_cursor_1.RunCommandCursor(this, command, options);
-    }
-}
-Db.SYSTEM_NAMESPACE_COLLECTION = CONSTANTS.SYSTEM_NAMESPACE_COLLECTION;
-Db.SYSTEM_INDEX_COLLECTION = CONSTANTS.SYSTEM_INDEX_COLLECTION;
-Db.SYSTEM_PROFILE_COLLECTION = CONSTANTS.SYSTEM_PROFILE_COLLECTION;
-Db.SYSTEM_USER_COLLECTION = CONSTANTS.SYSTEM_USER_COLLECTION;
-Db.SYSTEM_COMMAND_COLLECTION = CONSTANTS.SYSTEM_COMMAND_COLLECTION;
-Db.SYSTEM_JS_COLLECTION = CONSTANTS.SYSTEM_JS_COLLECTION;
-exports.Db = Db;
-//# sourceMappingURL=db.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/db.js.map b/server/data-import/node_modules/mongodb/lib/db.js.map
deleted file mode 100644
index 31a2cb1265e90262f94fbf6c3f722e6d00016b54..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/db.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/deps.js b/server/data-import/node_modules/mongodb/lib/deps.js
deleted file mode 100644
index 31987844a95c76659294cd23ac0201f65f918924..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/deps.js
+++ /dev/null
@@ -1,112 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getMongoDBClientEncryption = exports.aws4 = exports.getSocks = exports.getSnappy = exports.getGcpMetadata = exports.getAwsCredentialProvider = exports.getZstdLibrary = exports.ZStandard = exports.getKerberos = exports.Kerberos = void 0;
-const error_1 = require("./error");
-function makeErrorModule(error) {
-    const props = error ? { kModuleError: error } : {};
-    return new Proxy(props, {
-        get: (_, key) => {
-            if (key === 'kModuleError') {
-                return error;
-            }
-            throw error;
-        },
-        set: () => {
-            throw error;
-        }
-    });
-}
-exports.Kerberos = makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `kerberos` not found. Please install it to enable kerberos authentication'));
-function getKerberos() {
-    try {
-        // Ensure you always wrap an optional require in the try block NODE-3199
-        exports.Kerberos = require('kerberos');
-        return exports.Kerberos;
-    }
-    catch {
-        return exports.Kerberos;
-    }
-}
-exports.getKerberos = getKerberos;
-exports.ZStandard = makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `@mongodb-js/zstd` not found. Please install it to enable zstd compression'));
-function getZstdLibrary() {
-    try {
-        exports.ZStandard = require('@mongodb-js/zstd');
-        return exports.ZStandard;
-    }
-    catch {
-        return exports.ZStandard;
-    }
-}
-exports.getZstdLibrary = getZstdLibrary;
-function getAwsCredentialProvider() {
-    try {
-        // Ensure you always wrap an optional require in the try block NODE-3199
-        const credentialProvider = require('@aws-sdk/credential-providers');
-        return credentialProvider;
-    }
-    catch {
-        return makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `@aws-sdk/credential-providers` not found.' +
-            ' Please install it to enable getting aws credentials via the official sdk.'));
-    }
-}
-exports.getAwsCredentialProvider = getAwsCredentialProvider;
-function getGcpMetadata() {
-    try {
-        // Ensure you always wrap an optional require in the try block NODE-3199
-        const credentialProvider = require('gcp-metadata');
-        return credentialProvider;
-    }
-    catch {
-        return makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `gcp-metadata` not found.' +
-            ' Please install it to enable getting gcp credentials via the official sdk.'));
-    }
-}
-exports.getGcpMetadata = getGcpMetadata;
-function getSnappy() {
-    try {
-        // Ensure you always wrap an optional require in the try block NODE-3199
-        const value = require('snappy');
-        return value;
-    }
-    catch (cause) {
-        const kModuleError = new error_1.MongoMissingDependencyError('Optional module `snappy` not found. Please install it to enable snappy compression', { cause });
-        return { kModuleError };
-    }
-}
-exports.getSnappy = getSnappy;
-function getSocks() {
-    try {
-        // Ensure you always wrap an optional require in the try block NODE-3199
-        const value = require('socks');
-        return value;
-    }
-    catch (cause) {
-        const kModuleError = new error_1.MongoMissingDependencyError('Optional module `socks` not found. Please install it to connections over a SOCKS5 proxy', { cause });
-        return { kModuleError };
-    }
-}
-exports.getSocks = getSocks;
-exports.aws4 = makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `aws4` not found. Please install it to enable AWS authentication'));
-try {
-    // Ensure you always wrap an optional require in the try block NODE-3199
-    exports.aws4 = require('aws4');
-}
-catch { } // eslint-disable-line
-/** A utility function to get the instance of mongodb-client-encryption, if it exists. */
-function getMongoDBClientEncryption() {
-    let mongodbClientEncryption = null;
-    try {
-        // NOTE(NODE-3199): Ensure you always wrap an optional require literally in the try block
-        // Cannot be moved to helper utility function, bundlers search and replace the actual require call
-        // in a way that makes this line throw at bundle time, not runtime, catching here will make bundling succeed
-        mongodbClientEncryption = require('mongodb-client-encryption');
-    }
-    catch (cause) {
-        const kModuleError = new error_1.MongoMissingDependencyError('Optional module `mongodb-client-encryption` not found. Please install it to use auto encryption or ClientEncryption.', { cause });
-        return { kModuleError };
-    }
-    return mongodbClientEncryption;
-}
-exports.getMongoDBClientEncryption = getMongoDBClientEncryption;
-//# sourceMappingURL=deps.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/deps.js.map b/server/data-import/node_modules/mongodb/lib/deps.js.map
deleted file mode 100644
index cba890465b2db25f0be6a6a7b06eb638064bc9b5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/deps.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"deps.js","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/encrypter.js b/server/data-import/node_modules/mongodb/lib/encrypter.js
deleted file mode 100644
index 06ed119c18dc99fa925763c06ef0a50a3c704f19..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/encrypter.js
+++ /dev/null
@@ -1,105 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Encrypter = void 0;
-const util_1 = require("util");
-const auto_encrypter_1 = require("./client-side-encryption/auto_encrypter");
-const constants_1 = require("./constants");
-const deps_1 = require("./deps");
-const error_1 = require("./error");
-const mongo_client_1 = require("./mongo_client");
-/** @internal */
-const kInternalClient = Symbol('internalClient');
-/** @internal */
-class Encrypter {
-    constructor(client, uri, options) {
-        if (typeof options.autoEncryption !== 'object') {
-            throw new error_1.MongoInvalidArgumentError('Option "autoEncryption" must be specified');
-        }
-        // initialize to null, if we call getInternalClient, we may set this it is important to not overwrite those function calls.
-        this[kInternalClient] = null;
-        this.bypassAutoEncryption = !!options.autoEncryption.bypassAutoEncryption;
-        this.needsConnecting = false;
-        if (options.maxPoolSize === 0 && options.autoEncryption.keyVaultClient == null) {
-            options.autoEncryption.keyVaultClient = client;
-        }
-        else if (options.autoEncryption.keyVaultClient == null) {
-            options.autoEncryption.keyVaultClient = this.getInternalClient(client, uri, options);
-        }
-        if (this.bypassAutoEncryption) {
-            options.autoEncryption.metadataClient = undefined;
-        }
-        else if (options.maxPoolSize === 0) {
-            options.autoEncryption.metadataClient = client;
-        }
-        else {
-            options.autoEncryption.metadataClient = this.getInternalClient(client, uri, options);
-        }
-        if (options.proxyHost) {
-            options.autoEncryption.proxyOptions = {
-                proxyHost: options.proxyHost,
-                proxyPort: options.proxyPort,
-                proxyUsername: options.proxyUsername,
-                proxyPassword: options.proxyPassword
-            };
-        }
-        this.autoEncrypter = new auto_encrypter_1.AutoEncrypter(client, options.autoEncryption);
-    }
-    getInternalClient(client, uri, options) {
-        // TODO(NODE-4144): Remove new variable for type narrowing
-        let internalClient = this[kInternalClient];
-        if (internalClient == null) {
-            const clonedOptions = {};
-            for (const key of [
-                ...Object.getOwnPropertyNames(options),
-                ...Object.getOwnPropertySymbols(options)
-            ]) {
-                if (['autoEncryption', 'minPoolSize', 'servers', 'caseTranslate', 'dbName'].includes(key))
-                    continue;
-                Reflect.set(clonedOptions, key, Reflect.get(options, key));
-            }
-            clonedOptions.minPoolSize = 0;
-            internalClient = new mongo_client_1.MongoClient(uri, clonedOptions);
-            this[kInternalClient] = internalClient;
-            for (const eventName of constants_1.MONGO_CLIENT_EVENTS) {
-                for (const listener of client.listeners(eventName)) {
-                    internalClient.on(eventName, listener);
-                }
-            }
-            client.on('newListener', (eventName, listener) => {
-                internalClient?.on(eventName, listener);
-            });
-            this.needsConnecting = true;
-        }
-        return internalClient;
-    }
-    async connectInternalClient() {
-        // TODO(NODE-4144): Remove new variable for type narrowing
-        const internalClient = this[kInternalClient];
-        if (this.needsConnecting && internalClient != null) {
-            this.needsConnecting = false;
-            await internalClient.connect();
-        }
-    }
-    closeCallback(client, force, callback) {
-        (0, util_1.callbackify)(this.close.bind(this))(client, force, callback);
-    }
-    async close(client, force) {
-        const maybeError = await this.autoEncrypter.teardown(!!force).catch(e => e);
-        const internalClient = this[kInternalClient];
-        if (internalClient != null && client !== internalClient) {
-            return internalClient.close(force);
-        }
-        if (maybeError) {
-            throw maybeError;
-        }
-    }
-    static checkForMongoCrypt() {
-        const mongodbClientEncryption = (0, deps_1.getMongoDBClientEncryption)();
-        if ('kModuleError' in mongodbClientEncryption) {
-            throw new error_1.MongoMissingDependencyError('Auto-encryption requested, but the module is not installed. ' +
-                'Please add `mongodb-client-encryption` as a dependency of your project');
-        }
-    }
-}
-exports.Encrypter = Encrypter;
-//# sourceMappingURL=encrypter.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/encrypter.js.map b/server/data-import/node_modules/mongodb/lib/encrypter.js.map
deleted file mode 100644
index 2390182537c1428338cd27992dcfcc15e74b0695..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/encrypter.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"encrypter.js","sourceRoot":"","sources":["../src/encrypter.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/error.js b/server/data-import/node_modules/mongodb/lib/error.js
deleted file mode 100644
index 345ab65dec5d26770dc3a030c1c06cb69e388d11..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/error.js
+++ /dev/null
@@ -1,1183 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.isResumableError = exports.isNetworkTimeoutError = exports.isSDAMUnrecoverableError = exports.isNodeShuttingDownError = exports.isRetryableReadError = exports.isRetryableWriteError = exports.needsRetryableWriteLabel = exports.MongoWriteConcernError = exports.MongoServerSelectionError = exports.MongoSystemError = exports.MongoMissingDependencyError = exports.MongoMissingCredentialsError = exports.MongoCompatibilityError = exports.MongoInvalidArgumentError = exports.MongoParseError = exports.MongoNetworkTimeoutError = exports.MongoNetworkError = exports.isNetworkErrorBeforeHandshake = exports.MongoTopologyClosedError = exports.MongoCursorExhaustedError = exports.MongoServerClosedError = exports.MongoCursorInUseError = exports.MongoUnexpectedServerResponseError = exports.MongoGridFSChunkError = exports.MongoGridFSStreamError = exports.MongoTailableCursorError = exports.MongoChangeStreamError = exports.MongoAzureError = exports.MongoAWSError = exports.MongoKerberosError = exports.MongoExpiredSessionError = exports.MongoTransactionError = exports.MongoNotConnectedError = exports.MongoDecompressionError = exports.MongoBatchReExecutionError = exports.MongoRuntimeError = exports.MongoAPIError = exports.MongoDriverError = exports.MongoServerError = exports.MongoError = exports.MongoErrorLabel = exports.GET_MORE_RESUMABLE_CODES = exports.MONGODB_ERROR_CODES = exports.NODE_IS_RECOVERING_ERROR_MESSAGE = exports.LEGACY_NOT_PRIMARY_OR_SECONDARY_ERROR_MESSAGE = exports.LEGACY_NOT_WRITABLE_PRIMARY_ERROR_MESSAGE = void 0;
-/** @internal */
-const kErrorLabels = Symbol('errorLabels');
-/**
- * @internal
- * The legacy error message from the server that indicates the node is not a writable primary
- * https://github.com/mongodb/specifications/blob/b07c26dc40d04ac20349f989db531c9845fdd755/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#not-writable-primary-and-node-is-recovering
- */
-exports.LEGACY_NOT_WRITABLE_PRIMARY_ERROR_MESSAGE = new RegExp('not master', 'i');
-/**
- * @internal
- * The legacy error message from the server that indicates the node is not a primary or secondary
- * https://github.com/mongodb/specifications/blob/b07c26dc40d04ac20349f989db531c9845fdd755/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#not-writable-primary-and-node-is-recovering
- */
-exports.LEGACY_NOT_PRIMARY_OR_SECONDARY_ERROR_MESSAGE = new RegExp('not master or secondary', 'i');
-/**
- * @internal
- * The error message from the server that indicates the node is recovering
- * https://github.com/mongodb/specifications/blob/b07c26dc40d04ac20349f989db531c9845fdd755/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#not-writable-primary-and-node-is-recovering
- */
-exports.NODE_IS_RECOVERING_ERROR_MESSAGE = new RegExp('node is recovering', 'i');
-/** @internal MongoDB Error Codes */
-exports.MONGODB_ERROR_CODES = Object.freeze({
-    HostUnreachable: 6,
-    HostNotFound: 7,
-    NetworkTimeout: 89,
-    ShutdownInProgress: 91,
-    PrimarySteppedDown: 189,
-    ExceededTimeLimit: 262,
-    SocketException: 9001,
-    NotWritablePrimary: 10107,
-    InterruptedAtShutdown: 11600,
-    InterruptedDueToReplStateChange: 11602,
-    NotPrimaryNoSecondaryOk: 13435,
-    NotPrimaryOrSecondary: 13436,
-    StaleShardVersion: 63,
-    StaleEpoch: 150,
-    StaleConfig: 13388,
-    RetryChangeStream: 234,
-    FailedToSatisfyReadPreference: 133,
-    CursorNotFound: 43,
-    LegacyNotPrimary: 10058,
-    WriteConcernFailed: 64,
-    NamespaceNotFound: 26,
-    IllegalOperation: 20,
-    MaxTimeMSExpired: 50,
-    UnknownReplWriteConcern: 79,
-    UnsatisfiableWriteConcern: 100,
-    Reauthenticate: 391
-});
-// From spec@https://github.com/mongodb/specifications/blob/f93d78191f3db2898a59013a7ed5650352ef6da8/source/change-streams/change-streams.rst#resumable-error
-exports.GET_MORE_RESUMABLE_CODES = new Set([
-    exports.MONGODB_ERROR_CODES.HostUnreachable,
-    exports.MONGODB_ERROR_CODES.HostNotFound,
-    exports.MONGODB_ERROR_CODES.NetworkTimeout,
-    exports.MONGODB_ERROR_CODES.ShutdownInProgress,
-    exports.MONGODB_ERROR_CODES.PrimarySteppedDown,
-    exports.MONGODB_ERROR_CODES.ExceededTimeLimit,
-    exports.MONGODB_ERROR_CODES.SocketException,
-    exports.MONGODB_ERROR_CODES.NotWritablePrimary,
-    exports.MONGODB_ERROR_CODES.InterruptedAtShutdown,
-    exports.MONGODB_ERROR_CODES.InterruptedDueToReplStateChange,
-    exports.MONGODB_ERROR_CODES.NotPrimaryNoSecondaryOk,
-    exports.MONGODB_ERROR_CODES.NotPrimaryOrSecondary,
-    exports.MONGODB_ERROR_CODES.StaleShardVersion,
-    exports.MONGODB_ERROR_CODES.StaleEpoch,
-    exports.MONGODB_ERROR_CODES.StaleConfig,
-    exports.MONGODB_ERROR_CODES.RetryChangeStream,
-    exports.MONGODB_ERROR_CODES.FailedToSatisfyReadPreference,
-    exports.MONGODB_ERROR_CODES.CursorNotFound
-]);
-/** @public */
-exports.MongoErrorLabel = Object.freeze({
-    RetryableWriteError: 'RetryableWriteError',
-    TransientTransactionError: 'TransientTransactionError',
-    UnknownTransactionCommitResult: 'UnknownTransactionCommitResult',
-    ResumableChangeStreamError: 'ResumableChangeStreamError',
-    HandshakeError: 'HandshakeError',
-    ResetPool: 'ResetPool',
-    PoolRequstedRetry: 'PoolRequstedRetry',
-    InterruptInUseConnections: 'InterruptInUseConnections',
-    NoWritesPerformed: 'NoWritesPerformed'
-});
-function isAggregateError(e) {
-    return 'errors' in e && Array.isArray(e.errors);
-}
-/**
- * @public
- * @category Error
- *
- * @privateRemarks
- * mongodb-client-encryption has a dependency on this error, it uses the constructor with a string argument
- */
-class MongoError extends Error {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, options) {
-        super(message, options);
-        this[kErrorLabels] = new Set();
-    }
-    /** @internal */
-    static buildErrorMessage(e) {
-        if (typeof e === 'string') {
-            return e;
-        }
-        if (isAggregateError(e) && e.message.length === 0) {
-            return e.errors.length === 0
-                ? 'AggregateError has an empty errors array. Please check the `cause` property for more information.'
-                : e.errors.map(({ message }) => message).join(', ');
-        }
-        return e.message;
-    }
-    get name() {
-        return 'MongoError';
-    }
-    /** Legacy name for server error responses */
-    get errmsg() {
-        return this.message;
-    }
-    /**
-     * Checks the error to see if it has an error label
-     *
-     * @param label - The error label to check for
-     * @returns returns true if the error has the provided error label
-     */
-    hasErrorLabel(label) {
-        return this[kErrorLabels].has(label);
-    }
-    addErrorLabel(label) {
-        this[kErrorLabels].add(label);
-    }
-    get errorLabels() {
-        return Array.from(this[kErrorLabels]);
-    }
-}
-exports.MongoError = MongoError;
-/**
- * An error coming from the mongo server
- *
- * @public
- * @category Error
- */
-class MongoServerError extends MongoError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message.message || message.errmsg || message.$err || 'n/a');
-        if (message.errorLabels) {
-            this[kErrorLabels] = new Set(message.errorLabels);
-        }
-        for (const name in message) {
-            if (name !== 'errorLabels' && name !== 'errmsg' && name !== 'message')
-                this[name] = message[name];
-        }
-    }
-    get name() {
-        return 'MongoServerError';
-    }
-}
-exports.MongoServerError = MongoServerError;
-/**
- * An error generated by the driver
- *
- * @public
- * @category Error
- */
-class MongoDriverError extends MongoError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, options) {
-        super(message, options);
-    }
-    get name() {
-        return 'MongoDriverError';
-    }
-}
-exports.MongoDriverError = MongoDriverError;
-/**
- * An error generated when the driver API is used incorrectly
- *
- * @privateRemarks
- * Should **never** be directly instantiated
- *
- * @public
- * @category Error
- */
-class MongoAPIError extends MongoDriverError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, options) {
-        super(message, options);
-    }
-    get name() {
-        return 'MongoAPIError';
-    }
-}
-exports.MongoAPIError = MongoAPIError;
-/**
- * An error generated when the driver encounters unexpected input
- * or reaches an unexpected/invalid internal state
- *
- * @privateRemarks
- * Should **never** be directly instantiated.
- *
- * @public
- * @category Error
- */
-class MongoRuntimeError extends MongoDriverError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, options) {
-        super(message, options);
-    }
-    get name() {
-        return 'MongoRuntimeError';
-    }
-}
-exports.MongoRuntimeError = MongoRuntimeError;
-/**
- * An error generated when a batch command is re-executed after one of the commands in the batch
- * has failed
- *
- * @public
- * @category Error
- */
-class MongoBatchReExecutionError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message = 'This batch has already been executed, create new batch to execute') {
-        super(message);
-    }
-    get name() {
-        return 'MongoBatchReExecutionError';
-    }
-}
-exports.MongoBatchReExecutionError = MongoBatchReExecutionError;
-/**
- * An error generated when the driver fails to decompress
- * data received from the server.
- *
- * @public
- * @category Error
- */
-class MongoDecompressionError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoDecompressionError';
-    }
-}
-exports.MongoDecompressionError = MongoDecompressionError;
-/**
- * An error thrown when the user attempts to operate on a database or collection through a MongoClient
- * that has not yet successfully called the "connect" method
- *
- * @public
- * @category Error
- */
-class MongoNotConnectedError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoNotConnectedError';
-    }
-}
-exports.MongoNotConnectedError = MongoNotConnectedError;
-/**
- * An error generated when the user makes a mistake in the usage of transactions.
- * (e.g. attempting to commit a transaction with a readPreference other than primary)
- *
- * @public
- * @category Error
- */
-class MongoTransactionError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoTransactionError';
-    }
-}
-exports.MongoTransactionError = MongoTransactionError;
-/**
- * An error generated when the user attempts to operate
- * on a session that has expired or has been closed.
- *
- * @public
- * @category Error
- */
-class MongoExpiredSessionError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message = 'Cannot use a session that has ended') {
-        super(message);
-    }
-    get name() {
-        return 'MongoExpiredSessionError';
-    }
-}
-exports.MongoExpiredSessionError = MongoExpiredSessionError;
-/**
- * A error generated when the user attempts to authenticate
- * via Kerberos, but fails to connect to the Kerberos client.
- *
- * @public
- * @category Error
- */
-class MongoKerberosError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoKerberosError';
-    }
-}
-exports.MongoKerberosError = MongoKerberosError;
-/**
- * A error generated when the user attempts to authenticate
- * via AWS, but fails
- *
- * @public
- * @category Error
- */
-class MongoAWSError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoAWSError';
-    }
-}
-exports.MongoAWSError = MongoAWSError;
-/**
- * A error generated when the user attempts to authenticate
- * via Azure, but fails.
- *
- * @public
- * @category Error
- */
-class MongoAzureError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoAzureError';
-    }
-}
-exports.MongoAzureError = MongoAzureError;
-/**
- * An error generated when a ChangeStream operation fails to execute.
- *
- * @public
- * @category Error
- */
-class MongoChangeStreamError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoChangeStreamError';
-    }
-}
-exports.MongoChangeStreamError = MongoChangeStreamError;
-/**
- * An error thrown when the user calls a function or method not supported on a tailable cursor
- *
- * @public
- * @category Error
- */
-class MongoTailableCursorError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message = 'Tailable cursor does not support this operation') {
-        super(message);
-    }
-    get name() {
-        return 'MongoTailableCursorError';
-    }
-}
-exports.MongoTailableCursorError = MongoTailableCursorError;
-/** An error generated when a GridFSStream operation fails to execute.
- *
- * @public
- * @category Error
- */
-class MongoGridFSStreamError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoGridFSStreamError';
-    }
-}
-exports.MongoGridFSStreamError = MongoGridFSStreamError;
-/**
- * An error generated when a malformed or invalid chunk is
- * encountered when reading from a GridFSStream.
- *
- * @public
- * @category Error
- */
-class MongoGridFSChunkError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoGridFSChunkError';
-    }
-}
-exports.MongoGridFSChunkError = MongoGridFSChunkError;
-/**
- * An error generated when a **parsable** unexpected response comes from the server.
- * This is generally an error where the driver in a state expecting a certain behavior to occur in
- * the next message from MongoDB but it receives something else.
- * This error **does not** represent an issue with wire message formatting.
- *
- * #### Example
- * When an operation fails, it is the driver's job to retry it. It must perform serverSelection
- * again to make sure that it attempts the operation against a server in a good state. If server
- * selection returns a server that does not support retryable operations, this error is used.
- * This scenario is unlikely as retryable support would also have been determined on the first attempt
- * but it is possible the state change could report a selectable server that does not support retries.
- *
- * @public
- * @category Error
- */
-class MongoUnexpectedServerResponseError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoUnexpectedServerResponseError';
-    }
-}
-exports.MongoUnexpectedServerResponseError = MongoUnexpectedServerResponseError;
-/**
- * An error thrown when the user attempts to add options to a cursor that has already been
- * initialized
- *
- * @public
- * @category Error
- */
-class MongoCursorInUseError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message = 'Cursor is already initialized') {
-        super(message);
-    }
-    get name() {
-        return 'MongoCursorInUseError';
-    }
-}
-exports.MongoCursorInUseError = MongoCursorInUseError;
-/**
- * An error generated when an attempt is made to operate
- * on a closed/closing server.
- *
- * @public
- * @category Error
- */
-class MongoServerClosedError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message = 'Server is closed') {
-        super(message);
-    }
-    get name() {
-        return 'MongoServerClosedError';
-    }
-}
-exports.MongoServerClosedError = MongoServerClosedError;
-/**
- * An error thrown when an attempt is made to read from a cursor that has been exhausted
- *
- * @public
- * @category Error
- */
-class MongoCursorExhaustedError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message || 'Cursor is exhausted');
-    }
-    get name() {
-        return 'MongoCursorExhaustedError';
-    }
-}
-exports.MongoCursorExhaustedError = MongoCursorExhaustedError;
-/**
- * An error generated when an attempt is made to operate on a
- * dropped, or otherwise unavailable, database.
- *
- * @public
- * @category Error
- */
-class MongoTopologyClosedError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message = 'Topology is closed') {
-        super(message);
-    }
-    get name() {
-        return 'MongoTopologyClosedError';
-    }
-}
-exports.MongoTopologyClosedError = MongoTopologyClosedError;
-/** @internal */
-const kBeforeHandshake = Symbol('beforeHandshake');
-function isNetworkErrorBeforeHandshake(err) {
-    return err[kBeforeHandshake] === true;
-}
-exports.isNetworkErrorBeforeHandshake = isNetworkErrorBeforeHandshake;
-/**
- * An error indicating an issue with the network, including TCP errors and timeouts.
- * @public
- * @category Error
- */
-class MongoNetworkError extends MongoError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, options) {
-        super(message, { cause: options?.cause });
-        if (options && typeof options.beforeHandshake === 'boolean') {
-            this[kBeforeHandshake] = options.beforeHandshake;
-        }
-    }
-    get name() {
-        return 'MongoNetworkError';
-    }
-}
-exports.MongoNetworkError = MongoNetworkError;
-/**
- * An error indicating a network timeout occurred
- * @public
- * @category Error
- *
- * @privateRemarks
- * mongodb-client-encryption has a dependency on this error with an instanceof check
- */
-class MongoNetworkTimeoutError extends MongoNetworkError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, options) {
-        super(message, options);
-    }
-    get name() {
-        return 'MongoNetworkTimeoutError';
-    }
-}
-exports.MongoNetworkTimeoutError = MongoNetworkTimeoutError;
-/**
- * An error used when attempting to parse a value (like a connection string)
- * @public
- * @category Error
- */
-class MongoParseError extends MongoDriverError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoParseError';
-    }
-}
-exports.MongoParseError = MongoParseError;
-/**
- * An error generated when the user supplies malformed or unexpected arguments
- * or when a required argument or field is not provided.
- *
- *
- * @public
- * @category Error
- */
-class MongoInvalidArgumentError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoInvalidArgumentError';
-    }
-}
-exports.MongoInvalidArgumentError = MongoInvalidArgumentError;
-/**
- * An error generated when a feature that is not enabled or allowed for the current server
- * configuration is used
- *
- *
- * @public
- * @category Error
- */
-class MongoCompatibilityError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoCompatibilityError';
-    }
-}
-exports.MongoCompatibilityError = MongoCompatibilityError;
-/**
- * An error generated when the user fails to provide authentication credentials before attempting
- * to connect to a mongo server instance.
- *
- *
- * @public
- * @category Error
- */
-class MongoMissingCredentialsError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message) {
-        super(message);
-    }
-    get name() {
-        return 'MongoMissingCredentialsError';
-    }
-}
-exports.MongoMissingCredentialsError = MongoMissingCredentialsError;
-/**
- * An error generated when a required module or dependency is not present in the local environment
- *
- * @public
- * @category Error
- */
-class MongoMissingDependencyError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, options = {}) {
-        super(message, options);
-    }
-    get name() {
-        return 'MongoMissingDependencyError';
-    }
-}
-exports.MongoMissingDependencyError = MongoMissingDependencyError;
-/**
- * An error signifying a general system issue
- * @public
- * @category Error
- */
-class MongoSystemError extends MongoError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, reason) {
-        if (reason && reason.error) {
-            super(MongoError.buildErrorMessage(reason.error.message || reason.error), {
-                cause: reason.error
-            });
-        }
-        else {
-            super(message);
-        }
-        if (reason) {
-            this.reason = reason;
-        }
-        this.code = reason.error?.code;
-    }
-    get name() {
-        return 'MongoSystemError';
-    }
-}
-exports.MongoSystemError = MongoSystemError;
-/**
- * An error signifying a client-side server selection error
- * @public
- * @category Error
- */
-class MongoServerSelectionError extends MongoSystemError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, reason) {
-        super(message, reason);
-    }
-    get name() {
-        return 'MongoServerSelectionError';
-    }
-}
-exports.MongoServerSelectionError = MongoServerSelectionError;
-function makeWriteConcernResultObject(input) {
-    const output = Object.assign({}, input);
-    if (output.ok === 0) {
-        output.ok = 1;
-        delete output.errmsg;
-        delete output.code;
-        delete output.codeName;
-    }
-    return output;
-}
-/**
- * An error thrown when the server reports a writeConcernError
- * @public
- * @category Error
- */
-class MongoWriteConcernError extends MongoServerError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message, result) {
-        if (result && Array.isArray(result.errorLabels)) {
-            message.errorLabels = result.errorLabels;
-        }
-        super(message);
-        this.errInfo = message.errInfo;
-        if (result != null) {
-            this.result = makeWriteConcernResultObject(result);
-        }
-    }
-    get name() {
-        return 'MongoWriteConcernError';
-    }
-}
-exports.MongoWriteConcernError = MongoWriteConcernError;
-// https://github.com/mongodb/specifications/blob/master/source/retryable-reads/retryable-reads.rst#retryable-error
-const RETRYABLE_READ_ERROR_CODES = new Set([
-    exports.MONGODB_ERROR_CODES.HostUnreachable,
-    exports.MONGODB_ERROR_CODES.HostNotFound,
-    exports.MONGODB_ERROR_CODES.NetworkTimeout,
-    exports.MONGODB_ERROR_CODES.ShutdownInProgress,
-    exports.MONGODB_ERROR_CODES.PrimarySteppedDown,
-    exports.MONGODB_ERROR_CODES.SocketException,
-    exports.MONGODB_ERROR_CODES.NotWritablePrimary,
-    exports.MONGODB_ERROR_CODES.InterruptedAtShutdown,
-    exports.MONGODB_ERROR_CODES.InterruptedDueToReplStateChange,
-    exports.MONGODB_ERROR_CODES.NotPrimaryNoSecondaryOk,
-    exports.MONGODB_ERROR_CODES.NotPrimaryOrSecondary
-]);
-// see: https://github.com/mongodb/specifications/blob/master/source/retryable-writes/retryable-writes.rst#terms
-const RETRYABLE_WRITE_ERROR_CODES = new Set([
-    ...RETRYABLE_READ_ERROR_CODES,
-    exports.MONGODB_ERROR_CODES.ExceededTimeLimit
-]);
-function needsRetryableWriteLabel(error, maxWireVersion) {
-    // pre-4.4 server, then the driver adds an error label for every valid case
-    // execute operation will only inspect the label, code/message logic is handled here
-    if (error instanceof MongoNetworkError) {
-        return true;
-    }
-    if (error instanceof MongoError) {
-        if ((maxWireVersion >= 9 || isRetryableWriteError(error)) &&
-            !error.hasErrorLabel(exports.MongoErrorLabel.HandshakeError)) {
-            // If we already have the error label no need to add it again. 4.4+ servers add the label.
-            // In the case where we have a handshake error, need to fall down to the logic checking
-            // the codes.
-            return false;
-        }
-    }
-    if (error instanceof MongoWriteConcernError) {
-        return RETRYABLE_WRITE_ERROR_CODES.has(error.result?.code ?? error.code ?? 0);
-    }
-    if (error instanceof MongoError && typeof error.code === 'number') {
-        return RETRYABLE_WRITE_ERROR_CODES.has(error.code);
-    }
-    const isNotWritablePrimaryError = exports.LEGACY_NOT_WRITABLE_PRIMARY_ERROR_MESSAGE.test(error.message);
-    if (isNotWritablePrimaryError) {
-        return true;
-    }
-    const isNodeIsRecoveringError = exports.NODE_IS_RECOVERING_ERROR_MESSAGE.test(error.message);
-    if (isNodeIsRecoveringError) {
-        return true;
-    }
-    return false;
-}
-exports.needsRetryableWriteLabel = needsRetryableWriteLabel;
-function isRetryableWriteError(error) {
-    return (error.hasErrorLabel(exports.MongoErrorLabel.RetryableWriteError) ||
-        error.hasErrorLabel(exports.MongoErrorLabel.PoolRequstedRetry));
-}
-exports.isRetryableWriteError = isRetryableWriteError;
-/** Determines whether an error is something the driver should attempt to retry */
-function isRetryableReadError(error) {
-    const hasRetryableErrorCode = typeof error.code === 'number' ? RETRYABLE_READ_ERROR_CODES.has(error.code) : false;
-    if (hasRetryableErrorCode) {
-        return true;
-    }
-    if (error instanceof MongoNetworkError) {
-        return true;
-    }
-    const isNotWritablePrimaryError = exports.LEGACY_NOT_WRITABLE_PRIMARY_ERROR_MESSAGE.test(error.message);
-    if (isNotWritablePrimaryError) {
-        return true;
-    }
-    const isNodeIsRecoveringError = exports.NODE_IS_RECOVERING_ERROR_MESSAGE.test(error.message);
-    if (isNodeIsRecoveringError) {
-        return true;
-    }
-    return false;
-}
-exports.isRetryableReadError = isRetryableReadError;
-const SDAM_RECOVERING_CODES = new Set([
-    exports.MONGODB_ERROR_CODES.ShutdownInProgress,
-    exports.MONGODB_ERROR_CODES.PrimarySteppedDown,
-    exports.MONGODB_ERROR_CODES.InterruptedAtShutdown,
-    exports.MONGODB_ERROR_CODES.InterruptedDueToReplStateChange,
-    exports.MONGODB_ERROR_CODES.NotPrimaryOrSecondary
-]);
-const SDAM_NOT_PRIMARY_CODES = new Set([
-    exports.MONGODB_ERROR_CODES.NotWritablePrimary,
-    exports.MONGODB_ERROR_CODES.NotPrimaryNoSecondaryOk,
-    exports.MONGODB_ERROR_CODES.LegacyNotPrimary
-]);
-const SDAM_NODE_SHUTTING_DOWN_ERROR_CODES = new Set([
-    exports.MONGODB_ERROR_CODES.InterruptedAtShutdown,
-    exports.MONGODB_ERROR_CODES.ShutdownInProgress
-]);
-function isRecoveringError(err) {
-    if (typeof err.code === 'number') {
-        // If any error code exists, we ignore the error.message
-        return SDAM_RECOVERING_CODES.has(err.code);
-    }
-    return (exports.LEGACY_NOT_PRIMARY_OR_SECONDARY_ERROR_MESSAGE.test(err.message) ||
-        exports.NODE_IS_RECOVERING_ERROR_MESSAGE.test(err.message));
-}
-function isNotWritablePrimaryError(err) {
-    if (typeof err.code === 'number') {
-        // If any error code exists, we ignore the error.message
-        return SDAM_NOT_PRIMARY_CODES.has(err.code);
-    }
-    if (isRecoveringError(err)) {
-        return false;
-    }
-    return exports.LEGACY_NOT_WRITABLE_PRIMARY_ERROR_MESSAGE.test(err.message);
-}
-function isNodeShuttingDownError(err) {
-    return !!(typeof err.code === 'number' && SDAM_NODE_SHUTTING_DOWN_ERROR_CODES.has(err.code));
-}
-exports.isNodeShuttingDownError = isNodeShuttingDownError;
-/**
- * Determines whether SDAM can recover from a given error. If it cannot
- * then the pool will be cleared, and server state will completely reset
- * locally.
- *
- * @see https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#not-master-and-node-is-recovering
- */
-function isSDAMUnrecoverableError(error) {
-    // NOTE: null check is here for a strictly pre-CMAP world, a timeout or
-    //       close event are considered unrecoverable
-    if (error instanceof MongoParseError || error == null) {
-        return true;
-    }
-    return isRecoveringError(error) || isNotWritablePrimaryError(error);
-}
-exports.isSDAMUnrecoverableError = isSDAMUnrecoverableError;
-function isNetworkTimeoutError(err) {
-    return !!(err instanceof MongoNetworkError && err.message.match(/timed out/));
-}
-exports.isNetworkTimeoutError = isNetworkTimeoutError;
-function isResumableError(error, wireVersion) {
-    if (error == null || !(error instanceof MongoError)) {
-        return false;
-    }
-    if (error instanceof MongoNetworkError) {
-        return true;
-    }
-    if (wireVersion != null && wireVersion >= 9) {
-        // DRIVERS-1308: For 4.4 drivers running against 4.4 servers, drivers will add a special case to treat the CursorNotFound error code as resumable
-        if (error.code === exports.MONGODB_ERROR_CODES.CursorNotFound) {
-            return true;
-        }
-        return error.hasErrorLabel(exports.MongoErrorLabel.ResumableChangeStreamError);
-    }
-    if (typeof error.code === 'number') {
-        return exports.GET_MORE_RESUMABLE_CODES.has(error.code);
-    }
-    return false;
-}
-exports.isResumableError = isResumableError;
-//# sourceMappingURL=error.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/error.js.map b/server/data-import/node_modules/mongodb/lib/error.js.map
deleted file mode 100644
index e1ed613fe48ed22aa3bc36333779404ab6e6e48c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/error.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/explain.js b/server/data-import/node_modules/mongodb/lib/explain.js
deleted file mode 100644
index 4fb841e98c88517a02e9b0c28e13045d1256ddf6..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/explain.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Explain = exports.ExplainVerbosity = void 0;
-const error_1 = require("./error");
-/** @public */
-exports.ExplainVerbosity = Object.freeze({
-    queryPlanner: 'queryPlanner',
-    queryPlannerExtended: 'queryPlannerExtended',
-    executionStats: 'executionStats',
-    allPlansExecution: 'allPlansExecution'
-});
-/** @internal */
-class Explain {
-    constructor(verbosity) {
-        if (typeof verbosity === 'boolean') {
-            this.verbosity = verbosity
-                ? exports.ExplainVerbosity.allPlansExecution
-                : exports.ExplainVerbosity.queryPlanner;
-        }
-        else {
-            this.verbosity = verbosity;
-        }
-    }
-    static fromOptions(options) {
-        if (options?.explain == null)
-            return;
-        const explain = options.explain;
-        if (typeof explain === 'boolean' || typeof explain === 'string') {
-            return new Explain(explain);
-        }
-        throw new error_1.MongoInvalidArgumentError('Field "explain" must be a string or a boolean');
-    }
-}
-exports.Explain = Explain;
-//# sourceMappingURL=explain.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/explain.js.map b/server/data-import/node_modules/mongodb/lib/explain.js.map
deleted file mode 100644
index 8b114f1175b3bbc02e0c07d6db8fbecc0e1c8d65..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/explain.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"explain.js","sourceRoot":"","sources":["../src/explain.ts"],"names":[],"mappings":";;;AAAA,mCAAoD;AAEpD,cAAc;AACD,QAAA,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,YAAY,EAAE,cAAc;IAC5B,oBAAoB,EAAE,sBAAsB;IAC5C,cAAc,EAAE,gBAAgB;IAChC,iBAAiB,EAAE,mBAAmB;CAC9B,CAAC,CAAC;AAmBZ,gBAAgB;AAChB,MAAa,OAAO;IAGlB,YAAY,SAA+B;QACzC,IAAI,OAAO,SAAS,KAAK,SAAS,EAAE;YAClC,IAAI,CAAC,SAAS,GAAG,SAAS;gBACxB,CAAC,CAAC,wBAAgB,CAAC,iBAAiB;gBACpC,CAAC,CAAC,wBAAgB,CAAC,YAAY,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC5B;IACH,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAwB;QACzC,IAAI,OAAO,EAAE,OAAO,IAAI,IAAI;YAAE,OAAO;QAErC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/D,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;SAC7B;QAED,MAAM,IAAI,iCAAyB,CAAC,+CAA+C,CAAC,CAAC;IACvF,CAAC;CACF;AAvBD,0BAuBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/gridfs/download.js b/server/data-import/node_modules/mongodb/lib/gridfs/download.js
deleted file mode 100644
index 0a130e1d6344325b7167b1f52285a471282bd3cb..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/gridfs/download.js
+++ /dev/null
@@ -1,275 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.GridFSBucketReadStream = void 0;
-const stream_1 = require("stream");
-const error_1 = require("../error");
-/**
- * A readable stream that enables you to read buffers from GridFS.
- *
- * Do not instantiate this class directly. Use `openDownloadStream()` instead.
- * @public
- */
-class GridFSBucketReadStream extends stream_1.Readable {
-    /**
-     * @param chunks - Handle for chunks collection
-     * @param files - Handle for files collection
-     * @param readPreference - The read preference to use
-     * @param filter - The filter to use to find the file document
-     * @internal
-     */
-    constructor(chunks, files, readPreference, filter, options) {
-        super({ emitClose: true });
-        this.s = {
-            bytesToTrim: 0,
-            bytesToSkip: 0,
-            bytesRead: 0,
-            chunks,
-            expected: 0,
-            files,
-            filter,
-            init: false,
-            expectedEnd: 0,
-            options: {
-                start: 0,
-                end: 0,
-                ...options
-            },
-            readPreference
-        };
-    }
-    /**
-     * Reads from the cursor and pushes to the stream.
-     * Private Impl, do not call directly
-     * @internal
-     */
-    _read() {
-        if (this.destroyed)
-            return;
-        waitForFile(this, () => doRead(this));
-    }
-    /**
-     * Sets the 0-based offset in bytes to start streaming from. Throws
-     * an error if this stream has entered flowing mode
-     * (e.g. if you've already called `on('data')`)
-     *
-     * @param start - 0-based offset in bytes to start streaming from
-     */
-    start(start = 0) {
-        throwIfInitialized(this);
-        this.s.options.start = start;
-        return this;
-    }
-    /**
-     * Sets the 0-based offset in bytes to start streaming from. Throws
-     * an error if this stream has entered flowing mode
-     * (e.g. if you've already called `on('data')`)
-     *
-     * @param end - Offset in bytes to stop reading at
-     */
-    end(end = 0) {
-        throwIfInitialized(this);
-        this.s.options.end = end;
-        return this;
-    }
-    /**
-     * Marks this stream as aborted (will never push another `data` event)
-     * and kills the underlying cursor. Will emit the 'end' event, and then
-     * the 'close' event once the cursor is successfully killed.
-     */
-    async abort() {
-        this.push(null);
-        this.destroy();
-        await this.s.cursor?.close();
-    }
-}
-/**
- * Fires when the stream loaded the file document corresponding to the provided id.
- * @event
- */
-GridFSBucketReadStream.FILE = 'file';
-exports.GridFSBucketReadStream = GridFSBucketReadStream;
-function throwIfInitialized(stream) {
-    if (stream.s.init) {
-        throw new error_1.MongoGridFSStreamError('Options cannot be changed after the stream is initialized');
-    }
-}
-function doRead(stream) {
-    if (stream.destroyed)
-        return;
-    if (!stream.s.cursor)
-        return;
-    if (!stream.s.file)
-        return;
-    const handleReadResult = ({ error, doc }) => {
-        if (stream.destroyed) {
-            return;
-        }
-        if (error) {
-            stream.destroy(error);
-            return;
-        }
-        if (!doc) {
-            stream.push(null);
-            stream.s.cursor?.close().then(() => null, error => stream.destroy(error));
-            return;
-        }
-        if (!stream.s.file)
-            return;
-        const bytesRemaining = stream.s.file.length - stream.s.bytesRead;
-        const expectedN = stream.s.expected++;
-        const expectedLength = Math.min(stream.s.file.chunkSize, bytesRemaining);
-        if (doc.n > expectedN) {
-            return stream.destroy(new error_1.MongoGridFSChunkError(`ChunkIsMissing: Got unexpected n: ${doc.n}, expected: ${expectedN}`));
-        }
-        if (doc.n < expectedN) {
-            return stream.destroy(new error_1.MongoGridFSChunkError(`ExtraChunk: Got unexpected n: ${doc.n}, expected: ${expectedN}`));
-        }
-        let buf = Buffer.isBuffer(doc.data) ? doc.data : doc.data.buffer;
-        if (buf.byteLength !== expectedLength) {
-            if (bytesRemaining <= 0) {
-                return stream.destroy(new error_1.MongoGridFSChunkError(`ExtraChunk: Got unexpected n: ${doc.n}, expected file length ${stream.s.file.length} bytes but already read ${stream.s.bytesRead} bytes`));
-            }
-            return stream.destroy(new error_1.MongoGridFSChunkError(`ChunkIsWrongSize: Got unexpected length: ${buf.byteLength}, expected: ${expectedLength}`));
-        }
-        stream.s.bytesRead += buf.byteLength;
-        if (buf.byteLength === 0) {
-            return stream.push(null);
-        }
-        let sliceStart = null;
-        let sliceEnd = null;
-        if (stream.s.bytesToSkip != null) {
-            sliceStart = stream.s.bytesToSkip;
-            stream.s.bytesToSkip = 0;
-        }
-        const atEndOfStream = expectedN === stream.s.expectedEnd - 1;
-        const bytesLeftToRead = stream.s.options.end - stream.s.bytesToSkip;
-        if (atEndOfStream && stream.s.bytesToTrim != null) {
-            sliceEnd = stream.s.file.chunkSize - stream.s.bytesToTrim;
-        }
-        else if (stream.s.options.end && bytesLeftToRead < doc.data.byteLength) {
-            sliceEnd = bytesLeftToRead;
-        }
-        if (sliceStart != null || sliceEnd != null) {
-            buf = buf.slice(sliceStart || 0, sliceEnd || buf.byteLength);
-        }
-        stream.push(buf);
-        return;
-    };
-    stream.s.cursor.next().then(doc => handleReadResult({ error: null, doc }), error => handleReadResult({ error, doc: null }));
-}
-function init(stream) {
-    const findOneOptions = {};
-    if (stream.s.readPreference) {
-        findOneOptions.readPreference = stream.s.readPreference;
-    }
-    if (stream.s.options && stream.s.options.sort) {
-        findOneOptions.sort = stream.s.options.sort;
-    }
-    if (stream.s.options && stream.s.options.skip) {
-        findOneOptions.skip = stream.s.options.skip;
-    }
-    const handleReadResult = ({ error, doc }) => {
-        if (error) {
-            return stream.destroy(error);
-        }
-        if (!doc) {
-            const identifier = stream.s.filter._id
-                ? stream.s.filter._id.toString()
-                : stream.s.filter.filename;
-            const errmsg = `FileNotFound: file ${identifier} was not found`;
-            // TODO(NODE-3483)
-            const err = new error_1.MongoRuntimeError(errmsg);
-            err.code = 'ENOENT'; // TODO: NODE-3338 set property as part of constructor
-            return stream.destroy(err);
-        }
-        // If document is empty, kill the stream immediately and don't
-        // execute any reads
-        if (doc.length <= 0) {
-            stream.push(null);
-            return;
-        }
-        if (stream.destroyed) {
-            // If user destroys the stream before we have a cursor, wait
-            // until the query is done to say we're 'closed' because we can't
-            // cancel a query.
-            stream.destroy();
-            return;
-        }
-        try {
-            stream.s.bytesToSkip = handleStartOption(stream, doc, stream.s.options);
-        }
-        catch (error) {
-            return stream.destroy(error);
-        }
-        const filter = { files_id: doc._id };
-        // Currently (MongoDB 3.4.4) skip function does not support the index,
-        // it needs to retrieve all the documents first and then skip them. (CS-25811)
-        // As work around we use $gte on the "n" field.
-        if (stream.s.options && stream.s.options.start != null) {
-            const skip = Math.floor(stream.s.options.start / doc.chunkSize);
-            if (skip > 0) {
-                filter['n'] = { $gte: skip };
-            }
-        }
-        stream.s.cursor = stream.s.chunks.find(filter).sort({ n: 1 });
-        if (stream.s.readPreference) {
-            stream.s.cursor.withReadPreference(stream.s.readPreference);
-        }
-        stream.s.expectedEnd = Math.ceil(doc.length / doc.chunkSize);
-        stream.s.file = doc;
-        try {
-            stream.s.bytesToTrim = handleEndOption(stream, doc, stream.s.cursor, stream.s.options);
-        }
-        catch (error) {
-            return stream.destroy(error);
-        }
-        stream.emit(GridFSBucketReadStream.FILE, doc);
-        return;
-    };
-    stream.s.files.findOne(stream.s.filter, findOneOptions).then(doc => handleReadResult({ error: null, doc }), error => handleReadResult({ error, doc: null }));
-}
-function waitForFile(stream, callback) {
-    if (stream.s.file) {
-        return callback();
-    }
-    if (!stream.s.init) {
-        init(stream);
-        stream.s.init = true;
-    }
-    stream.once('file', () => {
-        callback();
-    });
-}
-function handleStartOption(stream, doc, options) {
-    if (options && options.start != null) {
-        if (options.start > doc.length) {
-            throw new error_1.MongoInvalidArgumentError(`Stream start (${options.start}) must not be more than the length of the file (${doc.length})`);
-        }
-        if (options.start < 0) {
-            throw new error_1.MongoInvalidArgumentError(`Stream start (${options.start}) must not be negative`);
-        }
-        if (options.end != null && options.end < options.start) {
-            throw new error_1.MongoInvalidArgumentError(`Stream start (${options.start}) must not be greater than stream end (${options.end})`);
-        }
-        stream.s.bytesRead = Math.floor(options.start / doc.chunkSize) * doc.chunkSize;
-        stream.s.expected = Math.floor(options.start / doc.chunkSize);
-        return options.start - stream.s.bytesRead;
-    }
-    throw new error_1.MongoInvalidArgumentError('Start option must be defined');
-}
-function handleEndOption(stream, doc, cursor, options) {
-    if (options && options.end != null) {
-        if (options.end > doc.length) {
-            throw new error_1.MongoInvalidArgumentError(`Stream end (${options.end}) must not be more than the length of the file (${doc.length})`);
-        }
-        if (options.start == null || options.start < 0) {
-            throw new error_1.MongoInvalidArgumentError(`Stream end (${options.end}) must not be negative`);
-        }
-        const start = options.start != null ? Math.floor(options.start / doc.chunkSize) : 0;
-        cursor.limit(Math.ceil(options.end / doc.chunkSize) - start);
-        stream.s.expectedEnd = Math.ceil(options.end / doc.chunkSize);
-        return Math.ceil(options.end / doc.chunkSize) * doc.chunkSize - options.end;
-    }
-    throw new error_1.MongoInvalidArgumentError('End option must be defined');
-}
-//# sourceMappingURL=download.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/gridfs/download.js.map b/server/data-import/node_modules/mongodb/lib/gridfs/download.js.map
deleted file mode 100644
index 480effe1e560755571dec39eb77b96fd90f8ecc4..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/gridfs/download.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/gridfs/download.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/gridfs/index.js b/server/data-import/node_modules/mongodb/lib/gridfs/index.js
deleted file mode 100644
index 5b42c2a38cd4b5a77851967af545e422eb257f2e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/gridfs/index.js
+++ /dev/null
@@ -1,128 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.GridFSBucket = void 0;
-const error_1 = require("../error");
-const mongo_types_1 = require("../mongo_types");
-const write_concern_1 = require("../write_concern");
-const download_1 = require("./download");
-const upload_1 = require("./upload");
-const DEFAULT_GRIDFS_BUCKET_OPTIONS = {
-    bucketName: 'fs',
-    chunkSizeBytes: 255 * 1024
-};
-/**
- * Constructor for a streaming GridFS interface
- * @public
- */
-class GridFSBucket extends mongo_types_1.TypedEventEmitter {
-    constructor(db, options) {
-        super();
-        this.setMaxListeners(0);
-        const privateOptions = {
-            ...DEFAULT_GRIDFS_BUCKET_OPTIONS,
-            ...options,
-            writeConcern: write_concern_1.WriteConcern.fromOptions(options)
-        };
-        this.s = {
-            db,
-            options: privateOptions,
-            _chunksCollection: db.collection(privateOptions.bucketName + '.chunks'),
-            _filesCollection: db.collection(privateOptions.bucketName + '.files'),
-            checkedIndexes: false,
-            calledOpenUploadStream: false
-        };
-    }
-    /**
-     * Returns a writable stream (GridFSBucketWriteStream) for writing
-     * buffers to GridFS. The stream's 'id' property contains the resulting
-     * file's id.
-     *
-     * @param filename - The value of the 'filename' key in the files doc
-     * @param options - Optional settings.
-     */
-    openUploadStream(filename, options) {
-        return new upload_1.GridFSBucketWriteStream(this, filename, options);
-    }
-    /**
-     * Returns a writable stream (GridFSBucketWriteStream) for writing
-     * buffers to GridFS for a custom file id. The stream's 'id' property contains the resulting
-     * file's id.
-     */
-    openUploadStreamWithId(id, filename, options) {
-        return new upload_1.GridFSBucketWriteStream(this, filename, { ...options, id });
-    }
-    /** Returns a readable stream (GridFSBucketReadStream) for streaming file data from GridFS. */
-    openDownloadStream(id, options) {
-        return new download_1.GridFSBucketReadStream(this.s._chunksCollection, this.s._filesCollection, this.s.options.readPreference, { _id: id }, options);
-    }
-    /**
-     * Deletes a file with the given id
-     *
-     * @param id - The id of the file doc
-     */
-    async delete(id) {
-        const { deletedCount } = await this.s._filesCollection.deleteOne({ _id: id });
-        // Delete orphaned chunks before returning FileNotFound
-        await this.s._chunksCollection.deleteMany({ files_id: id });
-        if (deletedCount === 0) {
-            // TODO(NODE-3483): Replace with more appropriate error
-            // Consider creating new error MongoGridFSFileNotFoundError
-            throw new error_1.MongoRuntimeError(`File not found for id ${id}`);
-        }
-    }
-    /** Convenience wrapper around find on the files collection */
-    find(filter = {}, options = {}) {
-        return this.s._filesCollection.find(filter, options);
-    }
-    /**
-     * Returns a readable stream (GridFSBucketReadStream) for streaming the
-     * file with the given name from GridFS. If there are multiple files with
-     * the same name, this will stream the most recent file with the given name
-     * (as determined by the `uploadDate` field). You can set the `revision`
-     * option to change this behavior.
-     */
-    openDownloadStreamByName(filename, options) {
-        let sort = { uploadDate: -1 };
-        let skip = undefined;
-        if (options && options.revision != null) {
-            if (options.revision >= 0) {
-                sort = { uploadDate: 1 };
-                skip = options.revision;
-            }
-            else {
-                skip = -options.revision - 1;
-            }
-        }
-        return new download_1.GridFSBucketReadStream(this.s._chunksCollection, this.s._filesCollection, this.s.options.readPreference, { filename }, { ...options, sort, skip });
-    }
-    /**
-     * Renames the file with the given _id to the given string
-     *
-     * @param id - the id of the file to rename
-     * @param filename - new name for the file
-     */
-    async rename(id, filename) {
-        const filter = { _id: id };
-        const update = { $set: { filename } };
-        const { matchedCount } = await this.s._filesCollection.updateOne(filter, update);
-        if (matchedCount === 0) {
-            throw new error_1.MongoRuntimeError(`File with id ${id} not found`);
-        }
-    }
-    /** Removes this bucket's files collection, followed by its chunks collection. */
-    async drop() {
-        await this.s._filesCollection.drop();
-        await this.s._chunksCollection.drop();
-    }
-}
-/**
- * When the first call to openUploadStream is made, the upload stream will
- * check to see if it needs to create the proper indexes on the chunks and
- * files collections. This event is fired either when 1) it determines that
- * no index creation is necessary, 2) when it successfully creates the
- * necessary indexes.
- * @event
- */
-GridFSBucket.INDEX = 'index';
-exports.GridFSBucket = GridFSBucket;
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/gridfs/index.js.map b/server/data-import/node_modules/mongodb/lib/gridfs/index.js.map
deleted file mode 100644
index 01d7288db3ee39c0ee853f6fe023bc5604641440..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/gridfs/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gridfs/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/gridfs/upload.js b/server/data-import/node_modules/mongodb/lib/gridfs/upload.js
deleted file mode 100644
index ed6aaead04b01edac2c2edccb88a68c0643f3910..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/gridfs/upload.js
+++ /dev/null
@@ -1,305 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.GridFSBucketWriteStream = void 0;
-const stream_1 = require("stream");
-const bson_1 = require("../bson");
-const error_1 = require("../error");
-const write_concern_1 = require("./../write_concern");
-/**
- * A writable stream that enables you to write buffers to GridFS.
- *
- * Do not instantiate this class directly. Use `openUploadStream()` instead.
- * @public
- */
-class GridFSBucketWriteStream extends stream_1.Writable {
-    /**
-     * @param bucket - Handle for this stream's corresponding bucket
-     * @param filename - The value of the 'filename' key in the files doc
-     * @param options - Optional settings.
-     * @internal
-     */
-    constructor(bucket, filename, options) {
-        super();
-        /**
-         * The document containing information about the inserted file.
-         * This property is defined _after_ the finish event has been emitted.
-         * It will remain `null` if an error occurs.
-         *
-         * @example
-         * ```ts
-         * fs.createReadStream('file.txt')
-         *   .pipe(bucket.openUploadStream('file.txt'))
-         *   .on('finish', function () {
-         *     console.log(this.gridFSFile)
-         *   })
-         * ```
-         */
-        this.gridFSFile = null;
-        options = options ?? {};
-        this.bucket = bucket;
-        this.chunks = bucket.s._chunksCollection;
-        this.filename = filename;
-        this.files = bucket.s._filesCollection;
-        this.options = options;
-        this.writeConcern = write_concern_1.WriteConcern.fromOptions(options) || bucket.s.options.writeConcern;
-        // Signals the write is all done
-        this.done = false;
-        this.id = options.id ? options.id : new bson_1.ObjectId();
-        // properly inherit the default chunksize from parent
-        this.chunkSizeBytes = options.chunkSizeBytes || this.bucket.s.options.chunkSizeBytes;
-        this.bufToStore = Buffer.alloc(this.chunkSizeBytes);
-        this.length = 0;
-        this.n = 0;
-        this.pos = 0;
-        this.state = {
-            streamEnd: false,
-            outstandingRequests: 0,
-            errored: false,
-            aborted: false
-        };
-        if (!this.bucket.s.calledOpenUploadStream) {
-            this.bucket.s.calledOpenUploadStream = true;
-            checkIndexes(this).then(() => {
-                this.bucket.s.checkedIndexes = true;
-                this.bucket.emit('index');
-            }, () => null);
-        }
-    }
-    /**
-     * @internal
-     *
-     * The stream is considered constructed when the indexes are done being created
-     */
-    _construct(callback) {
-        if (this.bucket.s.checkedIndexes) {
-            return process.nextTick(callback);
-        }
-        this.bucket.once('index', callback);
-    }
-    /**
-     * @internal
-     * Write a buffer to the stream.
-     *
-     * @param chunk - Buffer to write
-     * @param encoding - Optional encoding for the buffer
-     * @param callback - Function to call when the chunk was added to the buffer, or if the entire chunk was persisted to MongoDB if this chunk caused a flush.
-     */
-    _write(chunk, encoding, callback) {
-        doWrite(this, chunk, encoding, callback);
-    }
-    /** @internal */
-    _final(callback) {
-        if (this.state.streamEnd) {
-            return process.nextTick(callback);
-        }
-        this.state.streamEnd = true;
-        writeRemnant(this, callback);
-    }
-    /**
-     * Places this write stream into an aborted state (all future writes fail)
-     * and deletes all chunks that have already been written.
-     */
-    async abort() {
-        if (this.state.streamEnd) {
-            // TODO(NODE-3485): Replace with MongoGridFSStreamClosed
-            throw new error_1.MongoAPIError('Cannot abort a stream that has already completed');
-        }
-        if (this.state.aborted) {
-            // TODO(NODE-3485): Replace with MongoGridFSStreamClosed
-            throw new error_1.MongoAPIError('Cannot call abort() on a stream twice');
-        }
-        this.state.aborted = true;
-        await this.chunks.deleteMany({ files_id: this.id });
-    }
-}
-exports.GridFSBucketWriteStream = GridFSBucketWriteStream;
-function handleError(stream, error, callback) {
-    if (stream.state.errored) {
-        process.nextTick(callback);
-        return;
-    }
-    stream.state.errored = true;
-    process.nextTick(callback, error);
-}
-function createChunkDoc(filesId, n, data) {
-    return {
-        _id: new bson_1.ObjectId(),
-        files_id: filesId,
-        n,
-        data
-    };
-}
-async function checkChunksIndex(stream) {
-    const index = { files_id: 1, n: 1 };
-    let indexes;
-    try {
-        indexes = await stream.chunks.listIndexes().toArray();
-    }
-    catch (error) {
-        if (error instanceof error_1.MongoError && error.code === error_1.MONGODB_ERROR_CODES.NamespaceNotFound) {
-            indexes = [];
-        }
-        else {
-            throw error;
-        }
-    }
-    const hasChunksIndex = !!indexes.find(index => {
-        const keys = Object.keys(index.key);
-        if (keys.length === 2 && index.key.files_id === 1 && index.key.n === 1) {
-            return true;
-        }
-        return false;
-    });
-    if (!hasChunksIndex) {
-        await stream.chunks.createIndex(index, {
-            ...stream.writeConcern,
-            background: true,
-            unique: true
-        });
-    }
-}
-function checkDone(stream, callback) {
-    if (stream.done) {
-        return process.nextTick(callback);
-    }
-    if (stream.state.streamEnd && stream.state.outstandingRequests === 0 && !stream.state.errored) {
-        // Set done so we do not trigger duplicate createFilesDoc
-        stream.done = true;
-        // Create a new files doc
-        const gridFSFile = createFilesDoc(stream.id, stream.length, stream.chunkSizeBytes, stream.filename, stream.options.contentType, stream.options.aliases, stream.options.metadata);
-        if (isAborted(stream, callback)) {
-            return;
-        }
-        stream.files.insertOne(gridFSFile, { writeConcern: stream.writeConcern }).then(() => {
-            stream.gridFSFile = gridFSFile;
-            callback();
-        }, error => handleError(stream, error, callback));
-        return;
-    }
-    process.nextTick(callback);
-}
-async function checkIndexes(stream) {
-    const doc = await stream.files.findOne({}, { projection: { _id: 1 } });
-    if (doc != null) {
-        // If at least one document exists assume the collection has the required index
-        return;
-    }
-    const index = { filename: 1, uploadDate: 1 };
-    let indexes;
-    try {
-        indexes = await stream.files.listIndexes().toArray();
-    }
-    catch (error) {
-        if (error instanceof error_1.MongoError && error.code === error_1.MONGODB_ERROR_CODES.NamespaceNotFound) {
-            indexes = [];
-        }
-        else {
-            throw error;
-        }
-    }
-    const hasFileIndex = !!indexes.find(index => {
-        const keys = Object.keys(index.key);
-        if (keys.length === 2 && index.key.filename === 1 && index.key.uploadDate === 1) {
-            return true;
-        }
-        return false;
-    });
-    if (!hasFileIndex) {
-        await stream.files.createIndex(index, { background: false });
-    }
-    await checkChunksIndex(stream);
-}
-function createFilesDoc(_id, length, chunkSize, filename, contentType, aliases, metadata) {
-    const ret = {
-        _id,
-        length,
-        chunkSize,
-        uploadDate: new Date(),
-        filename
-    };
-    if (contentType) {
-        ret.contentType = contentType;
-    }
-    if (aliases) {
-        ret.aliases = aliases;
-    }
-    if (metadata) {
-        ret.metadata = metadata;
-    }
-    return ret;
-}
-function doWrite(stream, chunk, encoding, callback) {
-    if (isAborted(stream, callback)) {
-        return;
-    }
-    const inputBuf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, encoding);
-    stream.length += inputBuf.length;
-    // Input is small enough to fit in our buffer
-    if (stream.pos + inputBuf.length < stream.chunkSizeBytes) {
-        inputBuf.copy(stream.bufToStore, stream.pos);
-        stream.pos += inputBuf.length;
-        process.nextTick(callback);
-        return;
-    }
-    // Otherwise, buffer is too big for current chunk, so we need to flush
-    // to MongoDB.
-    let inputBufRemaining = inputBuf.length;
-    let spaceRemaining = stream.chunkSizeBytes - stream.pos;
-    let numToCopy = Math.min(spaceRemaining, inputBuf.length);
-    let outstandingRequests = 0;
-    while (inputBufRemaining > 0) {
-        const inputBufPos = inputBuf.length - inputBufRemaining;
-        inputBuf.copy(stream.bufToStore, stream.pos, inputBufPos, inputBufPos + numToCopy);
-        stream.pos += numToCopy;
-        spaceRemaining -= numToCopy;
-        let doc;
-        if (spaceRemaining === 0) {
-            doc = createChunkDoc(stream.id, stream.n, Buffer.from(stream.bufToStore));
-            ++stream.state.outstandingRequests;
-            ++outstandingRequests;
-            if (isAborted(stream, callback)) {
-                return;
-            }
-            stream.chunks.insertOne(doc, { writeConcern: stream.writeConcern }).then(() => {
-                --stream.state.outstandingRequests;
-                --outstandingRequests;
-                if (!outstandingRequests) {
-                    checkDone(stream, callback);
-                }
-            }, error => handleError(stream, error, callback));
-            spaceRemaining = stream.chunkSizeBytes;
-            stream.pos = 0;
-            ++stream.n;
-        }
-        inputBufRemaining -= numToCopy;
-        numToCopy = Math.min(spaceRemaining, inputBufRemaining);
-    }
-}
-function writeRemnant(stream, callback) {
-    // Buffer is empty, so don't bother to insert
-    if (stream.pos === 0) {
-        return checkDone(stream, callback);
-    }
-    ++stream.state.outstandingRequests;
-    // Create a new buffer to make sure the buffer isn't bigger than it needs
-    // to be.
-    const remnant = Buffer.alloc(stream.pos);
-    stream.bufToStore.copy(remnant, 0, 0, stream.pos);
-    const doc = createChunkDoc(stream.id, stream.n, remnant);
-    // If the stream was aborted, do not write remnant
-    if (isAborted(stream, callback)) {
-        return;
-    }
-    stream.chunks.insertOne(doc, { writeConcern: stream.writeConcern }).then(() => {
-        --stream.state.outstandingRequests;
-        checkDone(stream, callback);
-    }, error => handleError(stream, error, callback));
-}
-function isAborted(stream, callback) {
-    if (stream.state.aborted) {
-        process.nextTick(callback, new error_1.MongoAPIError('Stream has been aborted'));
-        return true;
-    }
-    return false;
-}
-//# sourceMappingURL=upload.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/gridfs/upload.js.map b/server/data-import/node_modules/mongodb/lib/gridfs/upload.js.map
deleted file mode 100644
index e1d42ea5defbd3a22af844994a84d8e45498305e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/gridfs/upload.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/gridfs/upload.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/index.js b/server/data-import/node_modules/mongodb/lib/index.js
deleted file mode 100644
index 41e192ba9636037f970f908e0846f7f9e9288682..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/index.js
+++ /dev/null
@@ -1,172 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.MongoUnexpectedServerResponseError = exports.MongoTransactionError = exports.MongoTopologyClosedError = exports.MongoTailableCursorError = exports.MongoSystemError = exports.MongoServerSelectionError = exports.MongoServerError = exports.MongoServerClosedError = exports.MongoRuntimeError = exports.MongoParseError = exports.MongoNotConnectedError = exports.MongoNetworkTimeoutError = exports.MongoNetworkError = exports.MongoMissingDependencyError = exports.MongoMissingCredentialsError = exports.MongoKerberosError = exports.MongoInvalidArgumentError = exports.MongoGridFSStreamError = exports.MongoGridFSChunkError = exports.MongoExpiredSessionError = exports.MongoError = exports.MongoDriverError = exports.MongoDecompressionError = exports.MongoCursorInUseError = exports.MongoCursorExhaustedError = exports.MongoCompatibilityError = exports.MongoChangeStreamError = exports.MongoBatchReExecutionError = exports.MongoAzureError = exports.MongoAWSError = exports.MongoAPIError = exports.ChangeStreamCursor = exports.ClientEncryption = exports.MongoBulkWriteError = exports.UUID = exports.Timestamp = exports.ObjectId = exports.MinKey = exports.MaxKey = exports.Long = exports.Int32 = exports.Double = exports.Decimal128 = exports.DBRef = exports.Code = exports.BSONType = exports.BSONSymbol = exports.BSONRegExp = exports.Binary = exports.BSON = void 0;
-exports.ConnectionPoolReadyEvent = exports.ConnectionPoolMonitoringEvent = exports.ConnectionPoolCreatedEvent = exports.ConnectionPoolClosedEvent = exports.ConnectionPoolClearedEvent = exports.ConnectionCreatedEvent = exports.ConnectionClosedEvent = exports.ConnectionCheckOutStartedEvent = exports.ConnectionCheckOutFailedEvent = exports.ConnectionCheckedOutEvent = exports.ConnectionCheckedInEvent = exports.CommandSucceededEvent = exports.CommandStartedEvent = exports.CommandFailedEvent = exports.WriteConcern = exports.ReadPreference = exports.ReadConcern = exports.TopologyType = exports.ServerType = exports.ReadPreferenceMode = exports.ReadConcernLevel = exports.ProfilingLevel = exports.ReturnDocument = exports.ServerApiVersion = exports.ExplainVerbosity = exports.MongoErrorLabel = exports.CURSOR_FLAGS = exports.Compressor = exports.AuthMechanism = exports.GSSAPICanonicalizationValue = exports.AutoEncryptionLoggerLevel = exports.BatchType = exports.UnorderedBulkOperation = exports.OrderedBulkOperation = exports.MongoClient = exports.ListIndexesCursor = exports.ListCollectionsCursor = exports.GridFSBucketWriteStream = exports.GridFSBucketReadStream = exports.GridFSBucket = exports.FindCursor = exports.Db = exports.Collection = exports.ClientSession = exports.ChangeStream = exports.CancellationToken = exports.AggregationCursor = exports.Admin = exports.AbstractCursor = exports.MongoWriteConcernError = void 0;
-exports.MongoCryptKMSRequestNetworkTimeoutError = exports.MongoCryptInvalidArgumentError = exports.MongoCryptError = exports.MongoCryptCreateEncryptedCollectionError = exports.MongoCryptCreateDataKeyError = exports.MongoCryptAzureKMSRequestError = exports.SrvPollingEvent = exports.TopologyOpeningEvent = exports.TopologyDescriptionChangedEvent = exports.TopologyClosedEvent = exports.ServerOpeningEvent = exports.ServerHeartbeatSucceededEvent = exports.ServerHeartbeatStartedEvent = exports.ServerHeartbeatFailedEvent = exports.ServerDescriptionChangedEvent = exports.ServerClosedEvent = exports.ConnectionReadyEvent = void 0;
-const admin_1 = require("./admin");
-Object.defineProperty(exports, "Admin", { enumerable: true, get: function () { return admin_1.Admin; } });
-const ordered_1 = require("./bulk/ordered");
-Object.defineProperty(exports, "OrderedBulkOperation", { enumerable: true, get: function () { return ordered_1.OrderedBulkOperation; } });
-const unordered_1 = require("./bulk/unordered");
-Object.defineProperty(exports, "UnorderedBulkOperation", { enumerable: true, get: function () { return unordered_1.UnorderedBulkOperation; } });
-const change_stream_1 = require("./change_stream");
-Object.defineProperty(exports, "ChangeStream", { enumerable: true, get: function () { return change_stream_1.ChangeStream; } });
-const collection_1 = require("./collection");
-Object.defineProperty(exports, "Collection", { enumerable: true, get: function () { return collection_1.Collection; } });
-const abstract_cursor_1 = require("./cursor/abstract_cursor");
-Object.defineProperty(exports, "AbstractCursor", { enumerable: true, get: function () { return abstract_cursor_1.AbstractCursor; } });
-const aggregation_cursor_1 = require("./cursor/aggregation_cursor");
-Object.defineProperty(exports, "AggregationCursor", { enumerable: true, get: function () { return aggregation_cursor_1.AggregationCursor; } });
-const find_cursor_1 = require("./cursor/find_cursor");
-Object.defineProperty(exports, "FindCursor", { enumerable: true, get: function () { return find_cursor_1.FindCursor; } });
-const list_collections_cursor_1 = require("./cursor/list_collections_cursor");
-Object.defineProperty(exports, "ListCollectionsCursor", { enumerable: true, get: function () { return list_collections_cursor_1.ListCollectionsCursor; } });
-const list_indexes_cursor_1 = require("./cursor/list_indexes_cursor");
-Object.defineProperty(exports, "ListIndexesCursor", { enumerable: true, get: function () { return list_indexes_cursor_1.ListIndexesCursor; } });
-const db_1 = require("./db");
-Object.defineProperty(exports, "Db", { enumerable: true, get: function () { return db_1.Db; } });
-const gridfs_1 = require("./gridfs");
-Object.defineProperty(exports, "GridFSBucket", { enumerable: true, get: function () { return gridfs_1.GridFSBucket; } });
-const download_1 = require("./gridfs/download");
-Object.defineProperty(exports, "GridFSBucketReadStream", { enumerable: true, get: function () { return download_1.GridFSBucketReadStream; } });
-const upload_1 = require("./gridfs/upload");
-Object.defineProperty(exports, "GridFSBucketWriteStream", { enumerable: true, get: function () { return upload_1.GridFSBucketWriteStream; } });
-const mongo_client_1 = require("./mongo_client");
-Object.defineProperty(exports, "MongoClient", { enumerable: true, get: function () { return mongo_client_1.MongoClient; } });
-const mongo_types_1 = require("./mongo_types");
-Object.defineProperty(exports, "CancellationToken", { enumerable: true, get: function () { return mongo_types_1.CancellationToken; } });
-const sessions_1 = require("./sessions");
-Object.defineProperty(exports, "ClientSession", { enumerable: true, get: function () { return sessions_1.ClientSession; } });
-/** @public */
-var bson_1 = require("./bson");
-Object.defineProperty(exports, "BSON", { enumerable: true, get: function () { return bson_1.BSON; } });
-var bson_2 = require("./bson");
-Object.defineProperty(exports, "Binary", { enumerable: true, get: function () { return bson_2.Binary; } });
-Object.defineProperty(exports, "BSONRegExp", { enumerable: true, get: function () { return bson_2.BSONRegExp; } });
-Object.defineProperty(exports, "BSONSymbol", { enumerable: true, get: function () { return bson_2.BSONSymbol; } });
-Object.defineProperty(exports, "BSONType", { enumerable: true, get: function () { return bson_2.BSONType; } });
-Object.defineProperty(exports, "Code", { enumerable: true, get: function () { return bson_2.Code; } });
-Object.defineProperty(exports, "DBRef", { enumerable: true, get: function () { return bson_2.DBRef; } });
-Object.defineProperty(exports, "Decimal128", { enumerable: true, get: function () { return bson_2.Decimal128; } });
-Object.defineProperty(exports, "Double", { enumerable: true, get: function () { return bson_2.Double; } });
-Object.defineProperty(exports, "Int32", { enumerable: true, get: function () { return bson_2.Int32; } });
-Object.defineProperty(exports, "Long", { enumerable: true, get: function () { return bson_2.Long; } });
-Object.defineProperty(exports, "MaxKey", { enumerable: true, get: function () { return bson_2.MaxKey; } });
-Object.defineProperty(exports, "MinKey", { enumerable: true, get: function () { return bson_2.MinKey; } });
-Object.defineProperty(exports, "ObjectId", { enumerable: true, get: function () { return bson_2.ObjectId; } });
-Object.defineProperty(exports, "Timestamp", { enumerable: true, get: function () { return bson_2.Timestamp; } });
-Object.defineProperty(exports, "UUID", { enumerable: true, get: function () { return bson_2.UUID; } });
-var common_1 = require("./bulk/common");
-Object.defineProperty(exports, "MongoBulkWriteError", { enumerable: true, get: function () { return common_1.MongoBulkWriteError; } });
-var client_encryption_1 = require("./client-side-encryption/client_encryption");
-Object.defineProperty(exports, "ClientEncryption", { enumerable: true, get: function () { return client_encryption_1.ClientEncryption; } });
-var change_stream_cursor_1 = require("./cursor/change_stream_cursor");
-Object.defineProperty(exports, "ChangeStreamCursor", { enumerable: true, get: function () { return change_stream_cursor_1.ChangeStreamCursor; } });
-var error_1 = require("./error");
-Object.defineProperty(exports, "MongoAPIError", { enumerable: true, get: function () { return error_1.MongoAPIError; } });
-Object.defineProperty(exports, "MongoAWSError", { enumerable: true, get: function () { return error_1.MongoAWSError; } });
-Object.defineProperty(exports, "MongoAzureError", { enumerable: true, get: function () { return error_1.MongoAzureError; } });
-Object.defineProperty(exports, "MongoBatchReExecutionError", { enumerable: true, get: function () { return error_1.MongoBatchReExecutionError; } });
-Object.defineProperty(exports, "MongoChangeStreamError", { enumerable: true, get: function () { return error_1.MongoChangeStreamError; } });
-Object.defineProperty(exports, "MongoCompatibilityError", { enumerable: true, get: function () { return error_1.MongoCompatibilityError; } });
-Object.defineProperty(exports, "MongoCursorExhaustedError", { enumerable: true, get: function () { return error_1.MongoCursorExhaustedError; } });
-Object.defineProperty(exports, "MongoCursorInUseError", { enumerable: true, get: function () { return error_1.MongoCursorInUseError; } });
-Object.defineProperty(exports, "MongoDecompressionError", { enumerable: true, get: function () { return error_1.MongoDecompressionError; } });
-Object.defineProperty(exports, "MongoDriverError", { enumerable: true, get: function () { return error_1.MongoDriverError; } });
-Object.defineProperty(exports, "MongoError", { enumerable: true, get: function () { return error_1.MongoError; } });
-Object.defineProperty(exports, "MongoExpiredSessionError", { enumerable: true, get: function () { return error_1.MongoExpiredSessionError; } });
-Object.defineProperty(exports, "MongoGridFSChunkError", { enumerable: true, get: function () { return error_1.MongoGridFSChunkError; } });
-Object.defineProperty(exports, "MongoGridFSStreamError", { enumerable: true, get: function () { return error_1.MongoGridFSStreamError; } });
-Object.defineProperty(exports, "MongoInvalidArgumentError", { enumerable: true, get: function () { return error_1.MongoInvalidArgumentError; } });
-Object.defineProperty(exports, "MongoKerberosError", { enumerable: true, get: function () { return error_1.MongoKerberosError; } });
-Object.defineProperty(exports, "MongoMissingCredentialsError", { enumerable: true, get: function () { return error_1.MongoMissingCredentialsError; } });
-Object.defineProperty(exports, "MongoMissingDependencyError", { enumerable: true, get: function () { return error_1.MongoMissingDependencyError; } });
-Object.defineProperty(exports, "MongoNetworkError", { enumerable: true, get: function () { return error_1.MongoNetworkError; } });
-Object.defineProperty(exports, "MongoNetworkTimeoutError", { enumerable: true, get: function () { return error_1.MongoNetworkTimeoutError; } });
-Object.defineProperty(exports, "MongoNotConnectedError", { enumerable: true, get: function () { return error_1.MongoNotConnectedError; } });
-Object.defineProperty(exports, "MongoParseError", { enumerable: true, get: function () { return error_1.MongoParseError; } });
-Object.defineProperty(exports, "MongoRuntimeError", { enumerable: true, get: function () { return error_1.MongoRuntimeError; } });
-Object.defineProperty(exports, "MongoServerClosedError", { enumerable: true, get: function () { return error_1.MongoServerClosedError; } });
-Object.defineProperty(exports, "MongoServerError", { enumerable: true, get: function () { return error_1.MongoServerError; } });
-Object.defineProperty(exports, "MongoServerSelectionError", { enumerable: true, get: function () { return error_1.MongoServerSelectionError; } });
-Object.defineProperty(exports, "MongoSystemError", { enumerable: true, get: function () { return error_1.MongoSystemError; } });
-Object.defineProperty(exports, "MongoTailableCursorError", { enumerable: true, get: function () { return error_1.MongoTailableCursorError; } });
-Object.defineProperty(exports, "MongoTopologyClosedError", { enumerable: true, get: function () { return error_1.MongoTopologyClosedError; } });
-Object.defineProperty(exports, "MongoTransactionError", { enumerable: true, get: function () { return error_1.MongoTransactionError; } });
-Object.defineProperty(exports, "MongoUnexpectedServerResponseError", { enumerable: true, get: function () { return error_1.MongoUnexpectedServerResponseError; } });
-Object.defineProperty(exports, "MongoWriteConcernError", { enumerable: true, get: function () { return error_1.MongoWriteConcernError; } });
-// enums
-var common_2 = require("./bulk/common");
-Object.defineProperty(exports, "BatchType", { enumerable: true, get: function () { return common_2.BatchType; } });
-var auto_encrypter_1 = require("./client-side-encryption/auto_encrypter");
-Object.defineProperty(exports, "AutoEncryptionLoggerLevel", { enumerable: true, get: function () { return auto_encrypter_1.AutoEncryptionLoggerLevel; } });
-var gssapi_1 = require("./cmap/auth/gssapi");
-Object.defineProperty(exports, "GSSAPICanonicalizationValue", { enumerable: true, get: function () { return gssapi_1.GSSAPICanonicalizationValue; } });
-var providers_1 = require("./cmap/auth/providers");
-Object.defineProperty(exports, "AuthMechanism", { enumerable: true, get: function () { return providers_1.AuthMechanism; } });
-var compression_1 = require("./cmap/wire_protocol/compression");
-Object.defineProperty(exports, "Compressor", { enumerable: true, get: function () { return compression_1.Compressor; } });
-var abstract_cursor_2 = require("./cursor/abstract_cursor");
-Object.defineProperty(exports, "CURSOR_FLAGS", { enumerable: true, get: function () { return abstract_cursor_2.CURSOR_FLAGS; } });
-var error_2 = require("./error");
-Object.defineProperty(exports, "MongoErrorLabel", { enumerable: true, get: function () { return error_2.MongoErrorLabel; } });
-var explain_1 = require("./explain");
-Object.defineProperty(exports, "ExplainVerbosity", { enumerable: true, get: function () { return explain_1.ExplainVerbosity; } });
-var mongo_client_2 = require("./mongo_client");
-Object.defineProperty(exports, "ServerApiVersion", { enumerable: true, get: function () { return mongo_client_2.ServerApiVersion; } });
-var find_and_modify_1 = require("./operations/find_and_modify");
-Object.defineProperty(exports, "ReturnDocument", { enumerable: true, get: function () { return find_and_modify_1.ReturnDocument; } });
-var set_profiling_level_1 = require("./operations/set_profiling_level");
-Object.defineProperty(exports, "ProfilingLevel", { enumerable: true, get: function () { return set_profiling_level_1.ProfilingLevel; } });
-var read_concern_1 = require("./read_concern");
-Object.defineProperty(exports, "ReadConcernLevel", { enumerable: true, get: function () { return read_concern_1.ReadConcernLevel; } });
-var read_preference_1 = require("./read_preference");
-Object.defineProperty(exports, "ReadPreferenceMode", { enumerable: true, get: function () { return read_preference_1.ReadPreferenceMode; } });
-var common_3 = require("./sdam/common");
-Object.defineProperty(exports, "ServerType", { enumerable: true, get: function () { return common_3.ServerType; } });
-Object.defineProperty(exports, "TopologyType", { enumerable: true, get: function () { return common_3.TopologyType; } });
-// Helper classes
-var read_concern_2 = require("./read_concern");
-Object.defineProperty(exports, "ReadConcern", { enumerable: true, get: function () { return read_concern_2.ReadConcern; } });
-var read_preference_2 = require("./read_preference");
-Object.defineProperty(exports, "ReadPreference", { enumerable: true, get: function () { return read_preference_2.ReadPreference; } });
-var write_concern_1 = require("./write_concern");
-Object.defineProperty(exports, "WriteConcern", { enumerable: true, get: function () { return write_concern_1.WriteConcern; } });
-// events
-var command_monitoring_events_1 = require("./cmap/command_monitoring_events");
-Object.defineProperty(exports, "CommandFailedEvent", { enumerable: true, get: function () { return command_monitoring_events_1.CommandFailedEvent; } });
-Object.defineProperty(exports, "CommandStartedEvent", { enumerable: true, get: function () { return command_monitoring_events_1.CommandStartedEvent; } });
-Object.defineProperty(exports, "CommandSucceededEvent", { enumerable: true, get: function () { return command_monitoring_events_1.CommandSucceededEvent; } });
-var connection_pool_events_1 = require("./cmap/connection_pool_events");
-Object.defineProperty(exports, "ConnectionCheckedInEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionCheckedInEvent; } });
-Object.defineProperty(exports, "ConnectionCheckedOutEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionCheckedOutEvent; } });
-Object.defineProperty(exports, "ConnectionCheckOutFailedEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionCheckOutFailedEvent; } });
-Object.defineProperty(exports, "ConnectionCheckOutStartedEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionCheckOutStartedEvent; } });
-Object.defineProperty(exports, "ConnectionClosedEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionClosedEvent; } });
-Object.defineProperty(exports, "ConnectionCreatedEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionCreatedEvent; } });
-Object.defineProperty(exports, "ConnectionPoolClearedEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionPoolClearedEvent; } });
-Object.defineProperty(exports, "ConnectionPoolClosedEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionPoolClosedEvent; } });
-Object.defineProperty(exports, "ConnectionPoolCreatedEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionPoolCreatedEvent; } });
-Object.defineProperty(exports, "ConnectionPoolMonitoringEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionPoolMonitoringEvent; } });
-Object.defineProperty(exports, "ConnectionPoolReadyEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionPoolReadyEvent; } });
-Object.defineProperty(exports, "ConnectionReadyEvent", { enumerable: true, get: function () { return connection_pool_events_1.ConnectionReadyEvent; } });
-var events_1 = require("./sdam/events");
-Object.defineProperty(exports, "ServerClosedEvent", { enumerable: true, get: function () { return events_1.ServerClosedEvent; } });
-Object.defineProperty(exports, "ServerDescriptionChangedEvent", { enumerable: true, get: function () { return events_1.ServerDescriptionChangedEvent; } });
-Object.defineProperty(exports, "ServerHeartbeatFailedEvent", { enumerable: true, get: function () { return events_1.ServerHeartbeatFailedEvent; } });
-Object.defineProperty(exports, "ServerHeartbeatStartedEvent", { enumerable: true, get: function () { return events_1.ServerHeartbeatStartedEvent; } });
-Object.defineProperty(exports, "ServerHeartbeatSucceededEvent", { enumerable: true, get: function () { return events_1.ServerHeartbeatSucceededEvent; } });
-Object.defineProperty(exports, "ServerOpeningEvent", { enumerable: true, get: function () { return events_1.ServerOpeningEvent; } });
-Object.defineProperty(exports, "TopologyClosedEvent", { enumerable: true, get: function () { return events_1.TopologyClosedEvent; } });
-Object.defineProperty(exports, "TopologyDescriptionChangedEvent", { enumerable: true, get: function () { return events_1.TopologyDescriptionChangedEvent; } });
-Object.defineProperty(exports, "TopologyOpeningEvent", { enumerable: true, get: function () { return events_1.TopologyOpeningEvent; } });
-var srv_polling_1 = require("./sdam/srv_polling");
-Object.defineProperty(exports, "SrvPollingEvent", { enumerable: true, get: function () { return srv_polling_1.SrvPollingEvent; } });
-var errors_1 = require("./client-side-encryption/errors");
-Object.defineProperty(exports, "MongoCryptAzureKMSRequestError", { enumerable: true, get: function () { return errors_1.MongoCryptAzureKMSRequestError; } });
-Object.defineProperty(exports, "MongoCryptCreateDataKeyError", { enumerable: true, get: function () { return errors_1.MongoCryptCreateDataKeyError; } });
-Object.defineProperty(exports, "MongoCryptCreateEncryptedCollectionError", { enumerable: true, get: function () { return errors_1.MongoCryptCreateEncryptedCollectionError; } });
-Object.defineProperty(exports, "MongoCryptError", { enumerable: true, get: function () { return errors_1.MongoCryptError; } });
-Object.defineProperty(exports, "MongoCryptInvalidArgumentError", { enumerable: true, get: function () { return errors_1.MongoCryptInvalidArgumentError; } });
-Object.defineProperty(exports, "MongoCryptKMSRequestNetworkTimeoutError", { enumerable: true, get: function () { return errors_1.MongoCryptKMSRequestNetworkTimeoutError; } });
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/index.js.map b/server/data-import/node_modules/mongodb/lib/index.js.map
deleted file mode 100644
index 57d0e2f997d247ab1ae1df99cabbf2149b70dc9c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/mongo_client.js b/server/data-import/node_modules/mongodb/lib/mongo_client.js
deleted file mode 100644
index e2a4dc4c462b779bc38f52266329ea5ad6fafa13..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/mongo_client.js
+++ /dev/null
@@ -1,363 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.MongoClient = exports.ServerApiVersion = void 0;
-const fs_1 = require("fs");
-const util_1 = require("util");
-const bson_1 = require("./bson");
-const change_stream_1 = require("./change_stream");
-const mongo_credentials_1 = require("./cmap/auth/mongo_credentials");
-const providers_1 = require("./cmap/auth/providers");
-const connection_string_1 = require("./connection_string");
-const constants_1 = require("./constants");
-const db_1 = require("./db");
-const error_1 = require("./error");
-const mongo_logger_1 = require("./mongo_logger");
-const mongo_types_1 = require("./mongo_types");
-const execute_operation_1 = require("./operations/execute_operation");
-const run_command_1 = require("./operations/run_command");
-const read_preference_1 = require("./read_preference");
-const server_selection_1 = require("./sdam/server_selection");
-const topology_1 = require("./sdam/topology");
-const sessions_1 = require("./sessions");
-const utils_1 = require("./utils");
-/** @public */
-exports.ServerApiVersion = Object.freeze({
-    v1: '1'
-});
-/** @internal */
-const kOptions = Symbol('options');
-/**
- * The **MongoClient** class is a class that allows for making Connections to MongoDB.
- * @public
- *
- * @remarks
- * The programmatically provided options take precedence over the URI options.
- *
- * @example
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * // Enable command monitoring for debugging
- * const client = new MongoClient('mongodb://localhost:27017', { monitorCommands: true });
- *
- * client.on('commandStarted', started => console.log(started));
- * client.db().collection('pets');
- * await client.insertOne({ name: 'spot', kind: 'dog' });
- * ```
- */
-class MongoClient extends mongo_types_1.TypedEventEmitter {
-    constructor(url, options) {
-        super();
-        this[kOptions] = (0, connection_string_1.parseOptions)(url, this, options);
-        this.mongoLogger = new mongo_logger_1.MongoLogger(this[kOptions].mongoLoggerOptions);
-        // eslint-disable-next-line @typescript-eslint/no-this-alias
-        const client = this;
-        // The internal state
-        this.s = {
-            url,
-            bsonOptions: (0, bson_1.resolveBSONOptions)(this[kOptions]),
-            namespace: (0, utils_1.ns)('admin'),
-            hasBeenClosed: false,
-            sessionPool: new sessions_1.ServerSessionPool(this),
-            activeSessions: new Set(),
-            get options() {
-                return client[kOptions];
-            },
-            get readConcern() {
-                return client[kOptions].readConcern;
-            },
-            get writeConcern() {
-                return client[kOptions].writeConcern;
-            },
-            get readPreference() {
-                return client[kOptions].readPreference;
-            },
-            get isMongoClient() {
-                return true;
-            }
-        };
-        this.checkForNonGenuineHosts();
-    }
-    /** @internal */
-    checkForNonGenuineHosts() {
-        const documentDBHostnames = this[kOptions].hosts.filter((hostAddress) => (0, utils_1.isHostMatch)(utils_1.DOCUMENT_DB_CHECK, hostAddress.host));
-        const srvHostIsDocumentDB = (0, utils_1.isHostMatch)(utils_1.DOCUMENT_DB_CHECK, this[kOptions].srvHost);
-        const cosmosDBHostnames = this[kOptions].hosts.filter((hostAddress) => (0, utils_1.isHostMatch)(utils_1.COSMOS_DB_CHECK, hostAddress.host));
-        const srvHostIsCosmosDB = (0, utils_1.isHostMatch)(utils_1.COSMOS_DB_CHECK, this[kOptions].srvHost);
-        if (documentDBHostnames.length !== 0 || srvHostIsDocumentDB) {
-            this.mongoLogger.info('client', utils_1.DOCUMENT_DB_MSG);
-        }
-        else if (cosmosDBHostnames.length !== 0 || srvHostIsCosmosDB) {
-            this.mongoLogger.info('client', utils_1.COSMOS_DB_MSG);
-        }
-    }
-    /** @see MongoOptions */
-    get options() {
-        return Object.freeze({ ...this[kOptions] });
-    }
-    get serverApi() {
-        return this[kOptions].serverApi && Object.freeze({ ...this[kOptions].serverApi });
-    }
-    /**
-     * Intended for APM use only
-     * @internal
-     */
-    get monitorCommands() {
-        return this[kOptions].monitorCommands;
-    }
-    set monitorCommands(value) {
-        this[kOptions].monitorCommands = value;
-    }
-    /** @internal */
-    get autoEncrypter() {
-        return this[kOptions].autoEncrypter;
-    }
-    get readConcern() {
-        return this.s.readConcern;
-    }
-    get writeConcern() {
-        return this.s.writeConcern;
-    }
-    get readPreference() {
-        return this.s.readPreference;
-    }
-    get bsonOptions() {
-        return this.s.bsonOptions;
-    }
-    /**
-     * Connect to MongoDB using a url
-     *
-     * @see docs.mongodb.org/manual/reference/connection-string/
-     */
-    async connect() {
-        if (this.connectionLock) {
-            return this.connectionLock;
-        }
-        try {
-            this.connectionLock = this._connect();
-            await this.connectionLock;
-        }
-        finally {
-            // release
-            this.connectionLock = undefined;
-        }
-        return this;
-    }
-    /**
-     * Create a topology to open the connection, must be locked to avoid topology leaks in concurrency scenario.
-     * Locking is enforced by the connect method.
-     *
-     * @internal
-     */
-    async _connect() {
-        if (this.topology && this.topology.isConnected()) {
-            return this;
-        }
-        const options = this[kOptions];
-        if (options.tls) {
-            if (typeof options.tlsCAFile === 'string') {
-                options.ca ??= await fs_1.promises.readFile(options.tlsCAFile);
-            }
-            if (typeof options.tlsCRLFile === 'string') {
-                options.crl ??= await fs_1.promises.readFile(options.tlsCRLFile);
-            }
-            if (typeof options.tlsCertificateKeyFile === 'string') {
-                if (!options.key || !options.cert) {
-                    const contents = await fs_1.promises.readFile(options.tlsCertificateKeyFile);
-                    options.key ??= contents;
-                    options.cert ??= contents;
-                }
-            }
-        }
-        if (typeof options.srvHost === 'string') {
-            const hosts = await (0, connection_string_1.resolveSRVRecord)(options);
-            for (const [index, host] of hosts.entries()) {
-                options.hosts[index] = host;
-            }
-        }
-        // It is important to perform validation of hosts AFTER SRV resolution, to check the real hostname,
-        // but BEFORE we even attempt connecting with a potentially not allowed hostname
-        if (options.credentials?.mechanism === providers_1.AuthMechanism.MONGODB_OIDC) {
-            const allowedHosts = options.credentials?.mechanismProperties?.ALLOWED_HOSTS || mongo_credentials_1.DEFAULT_ALLOWED_HOSTS;
-            const isServiceAuth = !!options.credentials?.mechanismProperties?.PROVIDER_NAME;
-            if (!isServiceAuth) {
-                for (const host of options.hosts) {
-                    if (!(0, utils_1.hostMatchesWildcards)(host.toHostPort().host, allowedHosts)) {
-                        throw new error_1.MongoInvalidArgumentError(`Host '${host}' is not valid for OIDC authentication with ALLOWED_HOSTS of '${allowedHosts.join(',')}'`);
-                    }
-                }
-            }
-        }
-        this.topology = new topology_1.Topology(this, options.hosts, options);
-        // Events can be emitted before initialization is complete so we have to
-        // save the reference to the topology on the client ASAP if the event handlers need to access it
-        this.topology.once(topology_1.Topology.OPEN, () => this.emit('open', this));
-        for (const event of constants_1.MONGO_CLIENT_EVENTS) {
-            this.topology.on(event, (...args) => this.emit(event, ...args));
-        }
-        const topologyConnect = async () => {
-            try {
-                await (0, util_1.promisify)(callback => this.topology?.connect(options, callback))();
-            }
-            catch (error) {
-                this.topology?.close({ force: true });
-                throw error;
-            }
-        };
-        if (this.autoEncrypter) {
-            await this.autoEncrypter?.init();
-            await topologyConnect();
-            await options.encrypter.connectInternalClient();
-        }
-        else {
-            await topologyConnect();
-        }
-        return this;
-    }
-    /**
-     * Close the client and its underlying connections
-     *
-     * @param force - Force close, emitting no events
-     */
-    async close(force = false) {
-        // There's no way to set hasBeenClosed back to false
-        Object.defineProperty(this.s, 'hasBeenClosed', {
-            value: true,
-            enumerable: true,
-            configurable: false,
-            writable: false
-        });
-        const activeSessionEnds = Array.from(this.s.activeSessions, session => session.endSession());
-        this.s.activeSessions.clear();
-        await Promise.all(activeSessionEnds);
-        if (this.topology == null) {
-            return;
-        }
-        // If we would attempt to select a server and get nothing back we short circuit
-        // to avoid the server selection timeout.
-        const selector = (0, server_selection_1.readPreferenceServerSelector)(read_preference_1.ReadPreference.primaryPreferred);
-        const topologyDescription = this.topology.description;
-        const serverDescriptions = Array.from(topologyDescription.servers.values());
-        const servers = selector(topologyDescription, serverDescriptions);
-        if (servers.length !== 0) {
-            const endSessions = Array.from(this.s.sessionPool.sessions, ({ id }) => id);
-            if (endSessions.length !== 0) {
-                await (0, execute_operation_1.executeOperation)(this, new run_command_1.RunAdminCommandOperation({ endSessions }, { readPreference: read_preference_1.ReadPreference.primaryPreferred, noResponse: true })).catch(() => null); // outcome does not matter;
-            }
-        }
-        // clear out references to old topology
-        const topology = this.topology;
-        this.topology = undefined;
-        await new Promise((resolve, reject) => {
-            topology.close({ force }, error => {
-                if (error)
-                    return reject(error);
-                const { encrypter } = this[kOptions];
-                if (encrypter) {
-                    return encrypter.closeCallback(this, force, error => {
-                        if (error)
-                            return reject(error);
-                        resolve();
-                    });
-                }
-                resolve();
-            });
-        });
-    }
-    /**
-     * Create a new Db instance sharing the current socket connections.
-     *
-     * @param dbName - The name of the database we want to use. If not provided, use database name from connection string.
-     * @param options - Optional settings for Db construction
-     */
-    db(dbName, options) {
-        options = options ?? {};
-        // Default to db from connection string if not provided
-        if (!dbName) {
-            dbName = this.options.dbName;
-        }
-        // Copy the options and add out internal override of the not shared flag
-        const finalOptions = Object.assign({}, this[kOptions], options);
-        // Return the db object
-        const db = new db_1.Db(this, dbName, finalOptions);
-        // Return the database
-        return db;
-    }
-    /**
-     * Connect to MongoDB using a url
-     *
-     * @remarks
-     * The programmatically provided options take precedence over the URI options.
-     *
-     * @see https://www.mongodb.com/docs/manual/reference/connection-string/
-     */
-    static async connect(url, options) {
-        const client = new this(url, options);
-        return client.connect();
-    }
-    /**
-     * Creates a new ClientSession. When using the returned session in an operation
-     * a corresponding ServerSession will be created.
-     *
-     * @remarks
-     * A ClientSession instance may only be passed to operations being performed on the same
-     * MongoClient it was started from.
-     */
-    startSession(options) {
-        const session = new sessions_1.ClientSession(this, this.s.sessionPool, { explicit: true, ...options }, this[kOptions]);
-        this.s.activeSessions.add(session);
-        session.once('ended', () => {
-            this.s.activeSessions.delete(session);
-        });
-        return session;
-    }
-    async withSession(optionsOrExecutor, executor) {
-        const options = {
-            // Always define an owner
-            owner: Symbol(),
-            // If it's an object inherit the options
-            ...(typeof optionsOrExecutor === 'object' ? optionsOrExecutor : {})
-        };
-        const withSessionCallback = typeof optionsOrExecutor === 'function' ? optionsOrExecutor : executor;
-        if (withSessionCallback == null) {
-            throw new error_1.MongoInvalidArgumentError('Missing required callback parameter');
-        }
-        const session = this.startSession(options);
-        try {
-            return await withSessionCallback(session);
-        }
-        finally {
-            try {
-                await session.endSession();
-            }
-            catch {
-                // We are not concerned with errors from endSession()
-            }
-        }
-    }
-    /**
-     * Create a new Change Stream, watching for new changes (insertions, updates,
-     * replacements, deletions, and invalidations) in this cluster. Will ignore all
-     * changes to system collections, as well as the local, admin, and config databases.
-     *
-     * @remarks
-     * watch() accepts two generic arguments for distinct use cases:
-     * - The first is to provide the schema that may be defined for all the data within the current cluster
-     * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument
-     *
-     * @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.
-     * @param options - Optional settings for the command
-     * @typeParam TSchema - Type of the data being detected by the change stream
-     * @typeParam TChange - Type of the whole change stream document emitted
-     */
-    watch(pipeline = [], options = {}) {
-        // Allow optionally not specifying a pipeline
-        if (!Array.isArray(pipeline)) {
-            options = pipeline;
-            pipeline = [];
-        }
-        return new change_stream_1.ChangeStream(this, pipeline, (0, utils_1.resolveOptions)(this, options));
-    }
-}
-exports.MongoClient = MongoClient;
-//# sourceMappingURL=mongo_client.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/mongo_client.js.map b/server/data-import/node_modules/mongodb/lib/mongo_client.js.map
deleted file mode 100644
index f0943dcce2bd2341e156f0e06c6f0e5a19049867..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/mongo_client.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"mongo_client.js","sourceRoot":"","sources":["../src/mongo_client.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/mongo_logger.js b/server/data-import/node_modules/mongodb/lib/mongo_logger.js
deleted file mode 100644
index 7e38cbc9236a08214e1071286978c354eaec11b2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/mongo_logger.js
+++ /dev/null
@@ -1,369 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.MongoLogger = exports.stringifyWithMaxLen = exports.createStdioLogger = exports.MongoLoggableComponent = exports.SEVERITY_LEVEL_MAP = exports.DEFAULT_MAX_DOCUMENT_LENGTH = exports.SeverityLevel = void 0;
-const bson_1 = require("bson");
-const util_1 = require("util");
-const constants_1 = require("./constants");
-const utils_1 = require("./utils");
-/** @internal */
-exports.SeverityLevel = Object.freeze({
-    EMERGENCY: 'emergency',
-    ALERT: 'alert',
-    CRITICAL: 'critical',
-    ERROR: 'error',
-    WARNING: 'warn',
-    NOTICE: 'notice',
-    INFORMATIONAL: 'info',
-    DEBUG: 'debug',
-    TRACE: 'trace',
-    OFF: 'off'
-});
-/** @internal */
-exports.DEFAULT_MAX_DOCUMENT_LENGTH = 1000;
-/** @internal */
-class SeverityLevelMap extends Map {
-    constructor(entries) {
-        const newEntries = [];
-        for (const [level, value] of entries) {
-            newEntries.push([value, level]);
-        }
-        newEntries.push(...entries);
-        super(newEntries);
-    }
-    getNumericSeverityLevel(severity) {
-        return this.get(severity);
-    }
-    getSeverityLevelName(level) {
-        return this.get(level);
-    }
-}
-/** @internal */
-exports.SEVERITY_LEVEL_MAP = new SeverityLevelMap([
-    [exports.SeverityLevel.OFF, -Infinity],
-    [exports.SeverityLevel.EMERGENCY, 0],
-    [exports.SeverityLevel.ALERT, 1],
-    [exports.SeverityLevel.CRITICAL, 2],
-    [exports.SeverityLevel.ERROR, 3],
-    [exports.SeverityLevel.WARNING, 4],
-    [exports.SeverityLevel.NOTICE, 5],
-    [exports.SeverityLevel.INFORMATIONAL, 6],
-    [exports.SeverityLevel.DEBUG, 7],
-    [exports.SeverityLevel.TRACE, 8]
-]);
-/** @internal */
-exports.MongoLoggableComponent = Object.freeze({
-    COMMAND: 'command',
-    TOPOLOGY: 'topology',
-    SERVER_SELECTION: 'serverSelection',
-    CONNECTION: 'connection',
-    CLIENT: 'client'
-});
-/**
- * Parses a string as one of SeverityLevel
- *
- * @param s - the value to be parsed
- * @returns one of SeverityLevel if value can be parsed as such, otherwise null
- */
-function parseSeverityFromString(s) {
-    const validSeverities = Object.values(exports.SeverityLevel);
-    const lowerSeverity = s?.toLowerCase();
-    if (lowerSeverity != null && validSeverities.includes(lowerSeverity)) {
-        return lowerSeverity;
-    }
-    return null;
-}
-/** @internal */
-function createStdioLogger(stream) {
-    return {
-        write: (log) => {
-            stream.write((0, util_1.inspect)(log, { compact: true, breakLength: Infinity }), 'utf-8');
-            return;
-        }
-    };
-}
-exports.createStdioLogger = createStdioLogger;
-/**
- * resolves the MONGODB_LOG_PATH and mongodbLogPath options from the environment and the
- * mongo client options respectively. The mongodbLogPath can be either 'stdout', 'stderr', a NodeJS
- * Writable or an object which has a `write` method with the signature:
- * ```ts
- * write(log: Log): void
- * ```
- *
- * @returns the MongoDBLogWritable object to write logs to
- */
-function resolveLogPath({ MONGODB_LOG_PATH }, { mongodbLogPath }) {
-    if (typeof mongodbLogPath === 'string' && /^stderr$/i.test(mongodbLogPath)) {
-        return createStdioLogger(process.stderr);
-    }
-    if (typeof mongodbLogPath === 'string' && /^stdout$/i.test(mongodbLogPath)) {
-        return createStdioLogger(process.stdout);
-    }
-    if (typeof mongodbLogPath === 'object' && typeof mongodbLogPath?.write === 'function') {
-        return mongodbLogPath;
-    }
-    if (MONGODB_LOG_PATH && /^stderr$/i.test(MONGODB_LOG_PATH)) {
-        return createStdioLogger(process.stderr);
-    }
-    if (MONGODB_LOG_PATH && /^stdout$/i.test(MONGODB_LOG_PATH)) {
-        return createStdioLogger(process.stdout);
-    }
-    return createStdioLogger(process.stderr);
-}
-function resolveSeverityConfiguration(clientOption, environmentOption, defaultSeverity) {
-    return (parseSeverityFromString(clientOption) ??
-        parseSeverityFromString(environmentOption) ??
-        defaultSeverity);
-}
-function compareSeverity(s0, s1) {
-    const s0Num = exports.SEVERITY_LEVEL_MAP.getNumericSeverityLevel(s0);
-    const s1Num = exports.SEVERITY_LEVEL_MAP.getNumericSeverityLevel(s1);
-    return s0Num < s1Num ? -1 : s0Num > s1Num ? 1 : 0;
-}
-/** @internal */
-function stringifyWithMaxLen(value, maxDocumentLength) {
-    const ejson = bson_1.EJSON.stringify(value);
-    return maxDocumentLength !== 0 && ejson.length > maxDocumentLength
-        ? `${ejson.slice(0, maxDocumentLength)}...`
-        : ejson;
-}
-exports.stringifyWithMaxLen = stringifyWithMaxLen;
-function isLogConvertible(obj) {
-    const objAsLogConvertible = obj;
-    // eslint-disable-next-line no-restricted-syntax
-    return objAsLogConvertible.toLog !== undefined && typeof objAsLogConvertible.toLog === 'function';
-}
-function attachCommandFields(log, commandEvent) {
-    log.commandName = commandEvent.commandName;
-    log.requestId = commandEvent.requestId;
-    log.driverConnectionId = commandEvent?.connectionId;
-    const { host, port } = utils_1.HostAddress.fromString(commandEvent.address).toHostPort();
-    log.serverHost = host;
-    log.serverPort = port;
-    if (commandEvent?.serviceId) {
-        log.serviceId = commandEvent.serviceId.toHexString();
-    }
-    return log;
-}
-function attachConnectionFields(log, connectionPoolEvent) {
-    const { host, port } = utils_1.HostAddress.fromString(connectionPoolEvent.address).toHostPort();
-    log.serverHost = host;
-    log.serverPort = port;
-    return log;
-}
-function defaultLogTransform(logObject, maxDocumentLength = exports.DEFAULT_MAX_DOCUMENT_LENGTH) {
-    let log = Object.create(null);
-    switch (logObject.name) {
-        case constants_1.COMMAND_STARTED:
-            log = attachCommandFields(log, logObject);
-            log.message = 'Command started';
-            log.command = stringifyWithMaxLen(logObject.command, maxDocumentLength);
-            log.databaseName = logObject.databaseName;
-            return log;
-        case constants_1.COMMAND_SUCCEEDED:
-            log = attachCommandFields(log, logObject);
-            log.message = 'Command succeeded';
-            log.durationMS = logObject.duration;
-            log.reply = stringifyWithMaxLen(logObject.reply, maxDocumentLength);
-            return log;
-        case constants_1.COMMAND_FAILED:
-            log = attachCommandFields(log, logObject);
-            log.message = 'Command failed';
-            log.durationMS = logObject.duration;
-            log.failure = logObject.failure;
-            return log;
-        case constants_1.CONNECTION_POOL_CREATED:
-            log = attachConnectionFields(log, logObject);
-            log.message = 'Connection pool created';
-            if (logObject.options) {
-                const { maxIdleTimeMS, minPoolSize, maxPoolSize, maxConnecting, waitQueueTimeoutMS } = logObject.options;
-                log = {
-                    ...log,
-                    maxIdleTimeMS,
-                    minPoolSize,
-                    maxPoolSize,
-                    maxConnecting,
-                    waitQueueTimeoutMS
-                };
-            }
-            return log;
-        case constants_1.CONNECTION_POOL_READY:
-            log = attachConnectionFields(log, logObject);
-            log.message = 'Connection pool ready';
-            return log;
-        case constants_1.CONNECTION_POOL_CLEARED:
-            log = attachConnectionFields(log, logObject);
-            log.message = 'Connection pool cleared';
-            if (logObject.serviceId?._bsontype === 'ObjectId') {
-                log.serviceId = logObject.serviceId.toHexString();
-            }
-            return log;
-        case constants_1.CONNECTION_POOL_CLOSED:
-            log = attachConnectionFields(log, logObject);
-            log.message = 'Connection pool closed';
-            return log;
-        case constants_1.CONNECTION_CREATED:
-            log = attachConnectionFields(log, logObject);
-            log.message = 'Connection created';
-            log.driverConnectionId = logObject.connectionId;
-            return log;
-        case constants_1.CONNECTION_READY:
-            log = attachConnectionFields(log, logObject);
-            log.message = 'Connection ready';
-            log.driverConnectionId = logObject.connectionId;
-            return log;
-        case constants_1.CONNECTION_CLOSED:
-            log = attachConnectionFields(log, logObject);
-            log.message = 'Connection closed';
-            log.driverConnectionId = logObject.connectionId;
-            switch (logObject.reason) {
-                case 'stale':
-                    log.reason = 'Connection became stale because the pool was cleared';
-                    break;
-                case 'idle':
-                    log.reason =
-                        'Connection has been available but unused for longer than the configured max idle time';
-                    break;
-                case 'error':
-                    log.reason = 'An error occurred while using the connection';
-                    if (logObject.error) {
-                        log.error = logObject.error;
-                    }
-                    break;
-                case 'poolClosed':
-                    log.reason = 'Connection pool was closed';
-                    break;
-                default:
-                    log.reason = `Unknown close reason: ${logObject.reason}`;
-            }
-            return log;
-        case constants_1.CONNECTION_CHECK_OUT_STARTED:
-            log = attachConnectionFields(log, logObject);
-            log.message = 'Connection checkout started';
-            return log;
-        case constants_1.CONNECTION_CHECK_OUT_FAILED:
-            log = attachConnectionFields(log, logObject);
-            log.message = 'Connection checkout failed';
-            switch (logObject.reason) {
-                case 'poolClosed':
-                    log.reason = 'Connection pool was closed';
-                    break;
-                case 'timeout':
-                    log.reason = 'Wait queue timeout elapsed without a connection becoming available';
-                    break;
-                case 'connectionError':
-                    log.reason = 'An error occurred while trying to establish a new connection';
-                    if (logObject.error) {
-                        log.error = logObject.error;
-                    }
-                    break;
-                default:
-                    log.reason = `Unknown close reason: ${logObject.reason}`;
-            }
-            return log;
-        case constants_1.CONNECTION_CHECKED_OUT:
-            log = attachConnectionFields(log, logObject);
-            log.message = 'Connection checked out';
-            log.driverConnectionId = logObject.connectionId;
-            return log;
-        case constants_1.CONNECTION_CHECKED_IN:
-            log = attachConnectionFields(log, logObject);
-            log.message = 'Connection checked in';
-            log.driverConnectionId = logObject.connectionId;
-            return log;
-        default:
-            for (const [key, value] of Object.entries(logObject)) {
-                if (value != null)
-                    log[key] = value;
-            }
-    }
-    return log;
-}
-/** @internal */
-class MongoLogger {
-    constructor(options) {
-        /**
-         * This method should be used when logging errors that do not have a public driver API for
-         * reporting errors.
-         */
-        this.error = this.log.bind(this, 'error');
-        /**
-         * This method should be used to log situations where undesirable application behaviour might
-         * occur. For example, failing to end sessions on `MongoClient.close`.
-         */
-        this.warn = this.log.bind(this, 'warn');
-        /**
-         * This method should be used to report high-level information about normal driver behaviour.
-         * For example, the creation of a `MongoClient`.
-         */
-        this.info = this.log.bind(this, 'info');
-        /**
-         * This method should be used to report information that would be helpful when debugging an
-         * application. For example, a command starting, succeeding or failing.
-         */
-        this.debug = this.log.bind(this, 'debug');
-        /**
-         * This method should be used to report fine-grained details related to logic flow. For example,
-         * entering and exiting a function body.
-         */
-        this.trace = this.log.bind(this, 'trace');
-        this.componentSeverities = options.componentSeverities;
-        this.maxDocumentLength = options.maxDocumentLength;
-        this.logDestination = options.logDestination;
-    }
-    log(severity, component, message) {
-        if (compareSeverity(severity, this.componentSeverities[component]) > 0)
-            return;
-        let logMessage = { t: new Date(), c: component, s: severity };
-        if (typeof message === 'string') {
-            logMessage.message = message;
-        }
-        else if (typeof message === 'object') {
-            if (isLogConvertible(message)) {
-                logMessage = { ...logMessage, ...message.toLog() };
-            }
-            else {
-                logMessage = { ...logMessage, ...defaultLogTransform(message, this.maxDocumentLength) };
-            }
-        }
-        this.logDestination.write(logMessage);
-    }
-    /**
-     * Merges options set through environment variables and the MongoClient, preferring environment
-     * variables when both are set, and substituting defaults for values not set. Options set in
-     * constructor take precedence over both environment variables and MongoClient options.
-     *
-     * @remarks
-     * When parsing component severity levels, invalid values are treated as unset and replaced with
-     * the default severity.
-     *
-     * @param envOptions - options set for the logger from the environment
-     * @param clientOptions - options set for the logger in the MongoClient options
-     * @returns a MongoLoggerOptions object to be used when instantiating a new MongoLogger
-     */
-    static resolveOptions(envOptions, clientOptions) {
-        // client options take precedence over env options
-        const combinedOptions = {
-            ...envOptions,
-            ...clientOptions,
-            mongodbLogPath: resolveLogPath(envOptions, clientOptions)
-        };
-        const defaultSeverity = resolveSeverityConfiguration(combinedOptions.mongodbLogComponentSeverities?.default, combinedOptions.MONGODB_LOG_ALL, exports.SeverityLevel.OFF);
-        return {
-            componentSeverities: {
-                command: resolveSeverityConfiguration(combinedOptions.mongodbLogComponentSeverities?.command, combinedOptions.MONGODB_LOG_COMMAND, defaultSeverity),
-                topology: resolveSeverityConfiguration(combinedOptions.mongodbLogComponentSeverities?.topology, combinedOptions.MONGODB_LOG_TOPOLOGY, defaultSeverity),
-                serverSelection: resolveSeverityConfiguration(combinedOptions.mongodbLogComponentSeverities?.serverSelection, combinedOptions.MONGODB_LOG_SERVER_SELECTION, defaultSeverity),
-                connection: resolveSeverityConfiguration(combinedOptions.mongodbLogComponentSeverities?.connection, combinedOptions.MONGODB_LOG_CONNECTION, defaultSeverity),
-                client: resolveSeverityConfiguration(combinedOptions.mongodbLogComponentSeverities?.client, combinedOptions.MONGODB_LOG_CLIENT, defaultSeverity),
-                default: defaultSeverity
-            },
-            maxDocumentLength: combinedOptions.mongodbLogMaxDocumentLength ??
-                (0, utils_1.parseUnsignedInteger)(combinedOptions.MONGODB_LOG_MAX_DOCUMENT_LENGTH) ??
-                1000,
-            logDestination: combinedOptions.mongodbLogPath
-        };
-    }
-}
-exports.MongoLogger = MongoLogger;
-//# sourceMappingURL=mongo_logger.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/mongo_logger.js.map b/server/data-import/node_modules/mongodb/lib/mongo_logger.js.map
deleted file mode 100644
index 38fafa3784a3228bc6d8020d928f40f764e39f13..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/mongo_logger.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"mongo_logger.js","sourceRoot":"","sources":["../src/mongo_logger.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/mongo_types.js b/server/data-import/node_modules/mongodb/lib/mongo_types.js
deleted file mode 100644
index 6a190aee09e32a37b8c50f1c73a5414e2dd91ee9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/mongo_types.js
+++ /dev/null
@@ -1,22 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.CancellationToken = exports.TypedEventEmitter = void 0;
-const events_1 = require("events");
-/**
- * Typescript type safe event emitter
- * @public
- */
-class TypedEventEmitter extends events_1.EventEmitter {
-    /** @internal */
-    emitAndLog(event, ...args) {
-        this.emit(event, ...args);
-        if (this.component)
-            this.mongoLogger?.debug(this.component, args[0]);
-    }
-}
-exports.TypedEventEmitter = TypedEventEmitter;
-/** @public */
-class CancellationToken extends TypedEventEmitter {
-}
-exports.CancellationToken = CancellationToken;
-//# sourceMappingURL=mongo_types.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/mongo_types.js.map b/server/data-import/node_modules/mongodb/lib/mongo_types.js.map
deleted file mode 100644
index e0cc18272cf8c59b7360f40a321a59fd33d85121..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/mongo_types.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"mongo_types.js","sourceRoot":"","sources":["../src/mongo_types.ts"],"names":[],"mappings":";;;AACA,mCAAsC;AA2YtC;;;GAGG;AAEH,MAAa,iBAAoD,SAAQ,qBAAY;IAKnF,gBAAgB;IACN,UAAU,CAClB,KAAwB,EACxB,GAAG,IAAkC;QAErC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;CACF;AAbD,8CAaC;AAED,cAAc;AACd,MAAa,iBAAkB,SAAQ,iBAAqC;CAAG;AAA/E,8CAA+E"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/aggregate.js b/server/data-import/node_modules/mongodb/lib/operations/aggregate.js
deleted file mode 100644
index cd23375c5cc9280f3155d842e3c27b840c2c26a0..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/aggregate.js
+++ /dev/null
@@ -1,92 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.AggregateOperation = exports.DB_AGGREGATE_COLLECTION = void 0;
-const error_1 = require("../error");
-const utils_1 = require("../utils");
-const write_concern_1 = require("../write_concern");
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/** @internal */
-exports.DB_AGGREGATE_COLLECTION = 1;
-const MIN_WIRE_VERSION_$OUT_READ_CONCERN_SUPPORT = 8;
-/** @internal */
-class AggregateOperation extends command_1.CommandOperation {
-    constructor(ns, pipeline, options) {
-        super(undefined, { ...options, dbName: ns.db });
-        this.options = { ...options };
-        // Covers when ns.collection is null, undefined or the empty string, use DB_AGGREGATE_COLLECTION
-        this.target = ns.collection || exports.DB_AGGREGATE_COLLECTION;
-        this.pipeline = pipeline;
-        // determine if we have a write stage, override read preference if so
-        this.hasWriteStage = false;
-        if (typeof options?.out === 'string') {
-            this.pipeline = this.pipeline.concat({ $out: options.out });
-            this.hasWriteStage = true;
-        }
-        else if (pipeline.length > 0) {
-            const finalStage = pipeline[pipeline.length - 1];
-            if (finalStage.$out || finalStage.$merge) {
-                this.hasWriteStage = true;
-            }
-        }
-        if (this.hasWriteStage) {
-            this.trySecondaryWrite = true;
-        }
-        else {
-            delete this.options.writeConcern;
-        }
-        if (this.explain && this.writeConcern) {
-            throw new error_1.MongoInvalidArgumentError('Option "explain" cannot be used on an aggregate call with writeConcern');
-        }
-        if (options?.cursor != null && typeof options.cursor !== 'object') {
-            throw new error_1.MongoInvalidArgumentError('Cursor options must be an object');
-        }
-    }
-    get canRetryRead() {
-        return !this.hasWriteStage;
-    }
-    addToPipeline(stage) {
-        this.pipeline.push(stage);
-    }
-    async execute(server, session) {
-        const options = this.options;
-        const serverWireVersion = (0, utils_1.maxWireVersion)(server);
-        const command = { aggregate: this.target, pipeline: this.pipeline };
-        if (this.hasWriteStage && serverWireVersion < MIN_WIRE_VERSION_$OUT_READ_CONCERN_SUPPORT) {
-            this.readConcern = undefined;
-        }
-        if (this.hasWriteStage && this.writeConcern) {
-            write_concern_1.WriteConcern.apply(command, this.writeConcern);
-        }
-        if (options.bypassDocumentValidation === true) {
-            command.bypassDocumentValidation = options.bypassDocumentValidation;
-        }
-        if (typeof options.allowDiskUse === 'boolean') {
-            command.allowDiskUse = options.allowDiskUse;
-        }
-        if (options.hint) {
-            command.hint = options.hint;
-        }
-        if (options.let) {
-            command.let = options.let;
-        }
-        // we check for undefined specifically here to allow falsy values
-        // eslint-disable-next-line no-restricted-syntax
-        if (options.comment !== undefined) {
-            command.comment = options.comment;
-        }
-        command.cursor = options.cursor || {};
-        if (options.batchSize && !this.hasWriteStage) {
-            command.cursor.batchSize = options.batchSize;
-        }
-        return super.executeCommand(server, session, command);
-    }
-}
-exports.AggregateOperation = AggregateOperation;
-(0, operation_1.defineAspects)(AggregateOperation, [
-    operation_1.Aspect.READ_OPERATION,
-    operation_1.Aspect.RETRYABLE,
-    operation_1.Aspect.EXPLAINABLE,
-    operation_1.Aspect.CURSOR_CREATING
-]);
-//# sourceMappingURL=aggregate.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/aggregate.js.map b/server/data-import/node_modules/mongodb/lib/operations/aggregate.js.map
deleted file mode 100644
index 72a089f9b592eb3af4a0393c5e2a611d0e041d6e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/aggregate.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/operations/aggregate.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/bulk_write.js b/server/data-import/node_modules/mongodb/lib/operations/bulk_write.js
deleted file mode 100644
index c399e7f59bfc0948c008dbd6c8a9479c98707705..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/bulk_write.js
+++ /dev/null
@@ -1,32 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.BulkWriteOperation = void 0;
-const operation_1 = require("./operation");
-/** @internal */
-class BulkWriteOperation extends operation_1.AbstractOperation {
-    constructor(collection, operations, options) {
-        super(options);
-        this.options = options;
-        this.collection = collection;
-        this.operations = operations;
-    }
-    async execute(server, session) {
-        const coll = this.collection;
-        const operations = this.operations;
-        const options = { ...this.options, ...this.bsonOptions, readPreference: this.readPreference };
-        // Create the bulk operation
-        const bulk = options.ordered === false
-            ? coll.initializeUnorderedBulkOp(options)
-            : coll.initializeOrderedBulkOp(options);
-        // for each op go through and add to the bulk
-        for (let i = 0; i < operations.length; i++) {
-            bulk.raw(operations[i]);
-        }
-        // Execute the bulk
-        const result = await bulk.execute({ ...options, session });
-        return result;
-    }
-}
-exports.BulkWriteOperation = BulkWriteOperation;
-(0, operation_1.defineAspects)(BulkWriteOperation, [operation_1.Aspect.WRITE_OPERATION]);
-//# sourceMappingURL=bulk_write.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/bulk_write.js.map b/server/data-import/node_modules/mongodb/lib/operations/bulk_write.js.map
deleted file mode 100644
index 7bb9aa4bfd638999aa68e74aa18371e0c5290a86..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/bulk_write.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"bulk_write.js","sourceRoot":"","sources":["../../src/operations/bulk_write.ts"],"names":[],"mappings":";;;AASA,2CAAuE;AAEvE,gBAAgB;AAChB,MAAa,kBAAmB,SAAQ,6BAAkC;IAKxE,YACE,UAAsB,EACtB,UAAmC,EACnC,OAAyB;QAEzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEQ,KAAK,CAAC,OAAO,CACpB,MAAc,EACd,OAAkC;QAElC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QAE9F,4BAA4B;QAC5B,MAAM,IAAI,GACR,OAAO,CAAC,OAAO,KAAK,KAAK;YACvB,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC;YACzC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAE5C,6CAA6C;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SACzB;QAED,mBAAmB;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAvCD,gDAuCC;AAED,IAAA,yBAAa,EAAC,kBAAkB,EAAE,CAAC,kBAAM,CAAC,eAAe,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/collections.js b/server/data-import/node_modules/mongodb/lib/operations/collections.js
deleted file mode 100644
index 8250d1c57ed6e546a5a823cfbab8aaf83dacefee..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/collections.js
+++ /dev/null
@@ -1,30 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.CollectionsOperation = void 0;
-const collection_1 = require("../collection");
-const operation_1 = require("./operation");
-/** @internal */
-class CollectionsOperation extends operation_1.AbstractOperation {
-    constructor(db, options) {
-        super(options);
-        this.options = options;
-        this.db = db;
-    }
-    async execute(server, session) {
-        // Let's get the collection names
-        const documents = await this.db
-            .listCollections({}, { ...this.options, nameOnly: true, readPreference: this.readPreference, session })
-            .toArray();
-        const collections = [];
-        for (const { name } of documents) {
-            if (!name.includes('$')) {
-                // Filter collections removing any illegal ones
-                collections.push(new collection_1.Collection(this.db, name, this.db.s.options));
-            }
-        }
-        // Return the collection objects
-        return collections;
-    }
-}
-exports.CollectionsOperation = CollectionsOperation;
-//# sourceMappingURL=collections.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/collections.js.map b/server/data-import/node_modules/mongodb/lib/operations/collections.js.map
deleted file mode 100644
index 957237789756a6ddce17d4f2b8c3473366793b26..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/collections.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/operations/collections.ts"],"names":[],"mappings":";;;AAAA,8CAA2C;AAI3C,2CAAuE;AAMvE,gBAAgB;AAChB,MAAa,oBAAqB,SAAQ,6BAA+B;IAIvE,YAAY,EAAM,EAAE,OAA2B;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAEQ,KAAK,CAAC,OAAO,CACpB,MAAc,EACd,OAAkC;QAElC,iCAAiC;QACjC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE;aAC5B,eAAe,CACd,EAAE,EACF,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAClF;aACA,OAAO,EAAE,CAAC;QACb,MAAM,WAAW,GAAiB,EAAE,CAAC;QACrC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACvB,+CAA+C;gBAC/C,WAAW,CAAC,IAAI,CAAC,IAAI,uBAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;aACpE;SACF;QACD,gCAAgC;QAChC,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AA/BD,oDA+BC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/command.js b/server/data-import/node_modules/mongodb/lib/operations/command.js
deleted file mode 100644
index f81cbf3ca46eb1ad5425aa87a3636b7d040f6f2d..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/command.js
+++ /dev/null
@@ -1,78 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.CommandOperation = void 0;
-const error_1 = require("../error");
-const explain_1 = require("../explain");
-const read_concern_1 = require("../read_concern");
-const server_selection_1 = require("../sdam/server_selection");
-const utils_1 = require("../utils");
-const write_concern_1 = require("../write_concern");
-const operation_1 = require("./operation");
-/** @internal */
-class CommandOperation extends operation_1.AbstractOperation {
-    constructor(parent, options) {
-        super(options);
-        this.options = options ?? {};
-        // NOTE: this was explicitly added for the add/remove user operations, it's likely
-        //       something we'd want to reconsider. Perhaps those commands can use `Admin`
-        //       as a parent?
-        const dbNameOverride = options?.dbName || options?.authdb;
-        if (dbNameOverride) {
-            this.ns = new utils_1.MongoDBNamespace(dbNameOverride, '$cmd');
-        }
-        else {
-            this.ns = parent
-                ? parent.s.namespace.withCollection('$cmd')
-                : new utils_1.MongoDBNamespace('admin', '$cmd');
-        }
-        this.readConcern = read_concern_1.ReadConcern.fromOptions(options);
-        this.writeConcern = write_concern_1.WriteConcern.fromOptions(options);
-        if (this.hasAspect(operation_1.Aspect.EXPLAINABLE)) {
-            this.explain = explain_1.Explain.fromOptions(options);
-        }
-        else if (options?.explain != null) {
-            throw new error_1.MongoInvalidArgumentError(`Option "explain" is not supported on this command`);
-        }
-    }
-    get canRetryWrite() {
-        if (this.hasAspect(operation_1.Aspect.EXPLAINABLE)) {
-            return this.explain == null;
-        }
-        return true;
-    }
-    async executeCommand(server, session, cmd) {
-        // TODO: consider making this a non-enumerable property
-        this.server = server;
-        const options = {
-            ...this.options,
-            ...this.bsonOptions,
-            readPreference: this.readPreference,
-            session
-        };
-        const serverWireVersion = (0, utils_1.maxWireVersion)(server);
-        const inTransaction = this.session && this.session.inTransaction();
-        if (this.readConcern && (0, utils_1.commandSupportsReadConcern)(cmd) && !inTransaction) {
-            Object.assign(cmd, { readConcern: this.readConcern });
-        }
-        if (this.trySecondaryWrite && serverWireVersion < server_selection_1.MIN_SECONDARY_WRITE_WIRE_VERSION) {
-            options.omitReadPreference = true;
-        }
-        if (this.writeConcern && this.hasAspect(operation_1.Aspect.WRITE_OPERATION) && !inTransaction) {
-            write_concern_1.WriteConcern.apply(cmd, this.writeConcern);
-        }
-        if (options.collation &&
-            typeof options.collation === 'object' &&
-            !this.hasAspect(operation_1.Aspect.SKIP_COLLATION)) {
-            Object.assign(cmd, { collation: options.collation });
-        }
-        if (typeof options.maxTimeMS === 'number') {
-            cmd.maxTimeMS = options.maxTimeMS;
-        }
-        if (this.hasAspect(operation_1.Aspect.EXPLAINABLE) && this.explain) {
-            cmd = (0, utils_1.decorateWithExplain)(cmd, this.explain);
-        }
-        return server.commandAsync(this.ns, cmd, options);
-    }
-}
-exports.CommandOperation = CommandOperation;
-//# sourceMappingURL=command.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/command.js.map b/server/data-import/node_modules/mongodb/lib/operations/command.js.map
deleted file mode 100644
index 7dc26b2c87f53cc3c949907789a40a25cbf0f3ed..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/command.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/operations/command.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/common_functions.js b/server/data-import/node_modules/mongodb/lib/operations/common_functions.js
deleted file mode 100644
index 2dee3a1fd3d135b5da7af8ccb308fd7ba21ad269..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/common_functions.js
+++ /dev/null
@@ -1,37 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.prepareDocs = exports.indexInformation = void 0;
-async function indexInformation(db, name, options) {
-    if (options == null) {
-        options = {};
-    }
-    // If we specified full information
-    const full = options.full == null ? false : options.full;
-    // Get the list of indexes of the specified collection
-    const indexes = await db.collection(name).listIndexes(options).toArray();
-    if (full)
-        return indexes;
-    const info = {};
-    for (const index of indexes) {
-        info[index.name] = Object.entries(index.key);
-    }
-    return info;
-}
-exports.indexInformation = indexInformation;
-function prepareDocs(coll, docs, options) {
-    const forceServerObjectId = typeof options.forceServerObjectId === 'boolean'
-        ? options.forceServerObjectId
-        : coll.s.db.options?.forceServerObjectId;
-    // no need to modify the docs if server sets the ObjectId
-    if (forceServerObjectId === true) {
-        return docs;
-    }
-    return docs.map(doc => {
-        if (doc._id == null) {
-            doc._id = coll.s.pkFactory.createPk();
-        }
-        return doc;
-    });
-}
-exports.prepareDocs = prepareDocs;
-//# sourceMappingURL=common_functions.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/common_functions.js.map b/server/data-import/node_modules/mongodb/lib/operations/common_functions.js.map
deleted file mode 100644
index 4dc8ccd96c95f5276eff9b5cfcf58c5fd5b66feb..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/common_functions.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"common_functions.js","sourceRoot":"","sources":["../../src/operations/common_functions.ts"],"names":[],"mappings":";;;AAwBO,KAAK,UAAU,gBAAgB,CACpC,EAAM,EACN,IAAY,EACZ,OAAiC;IAEjC,IAAI,OAAO,IAAI,IAAI,EAAE;QACnB,OAAO,GAAG,EAAE,CAAC;KACd;IACD,mCAAmC;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACzD,sDAAsD;IACtD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACzE,IAAI,IAAI;QAAE,OAAO,OAAO,CAAC;IAEzB,MAAM,IAAI,GAA6C,EAAE,CAAC;IAC1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC9C;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAnBD,4CAmBC;AAED,SAAgB,WAAW,CACzB,IAAgB,EAChB,IAAgB,EAChB,OAA0C;IAE1C,MAAM,mBAAmB,GACvB,OAAO,OAAO,CAAC,mBAAmB,KAAK,SAAS;QAC9C,CAAC,CAAC,OAAO,CAAC,mBAAmB;QAC7B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;IAE7C,yDAAyD;IACzD,IAAI,mBAAmB,KAAK,IAAI,EAAE;QAChC,OAAO,IAAI,CAAC;KACb;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACpB,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE;YACnB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SACvC;QAED,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAtBD,kCAsBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/count.js b/server/data-import/node_modules/mongodb/lib/operations/count.js
deleted file mode 100644
index 3fd32f882a57068e882d5761f545460be646703b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/count.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.CountOperation = void 0;
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/** @internal */
-class CountOperation extends command_1.CommandOperation {
-    constructor(namespace, filter, options) {
-        super({ s: { namespace: namespace } }, options);
-        this.options = options;
-        this.collectionName = namespace.collection;
-        this.query = filter;
-    }
-    async execute(server, session) {
-        const options = this.options;
-        const cmd = {
-            count: this.collectionName,
-            query: this.query
-        };
-        if (typeof options.limit === 'number') {
-            cmd.limit = options.limit;
-        }
-        if (typeof options.skip === 'number') {
-            cmd.skip = options.skip;
-        }
-        if (options.hint != null) {
-            cmd.hint = options.hint;
-        }
-        if (typeof options.maxTimeMS === 'number') {
-            cmd.maxTimeMS = options.maxTimeMS;
-        }
-        const result = await super.executeCommand(server, session, cmd);
-        return result ? result.n : 0;
-    }
-}
-exports.CountOperation = CountOperation;
-(0, operation_1.defineAspects)(CountOperation, [operation_1.Aspect.READ_OPERATION, operation_1.Aspect.RETRYABLE]);
-//# sourceMappingURL=count.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/count.js.map b/server/data-import/node_modules/mongodb/lib/operations/count.js.map
deleted file mode 100644
index 742df969e49069a2667be4064dda8ce8c74fc1bd..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/count.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"count.js","sourceRoot":"","sources":["../../src/operations/count.ts"],"names":[],"mappings":";;;AAKA,uCAA2E;AAC3E,2CAAoD;AAcpD,gBAAgB;AAChB,MAAa,cAAe,SAAQ,0BAAwB;IAK1D,YAAY,SAA2B,EAAE,MAAgB,EAAE,OAAqB;QAC9E,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAA2B,EAAE,OAAO,CAAC,CAAC;QAEzE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;IACtB,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,GAAG,GAAa;YACpB,KAAK,EAAE,IAAI,CAAC,cAAc;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QAEF,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;YACrC,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;SAC3B;QAED,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;YACpC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;SACzB;QAED,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;YACxB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;SACzB;QAED,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;YACzC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;SACnC;QAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;CACF;AAvCD,wCAuCC;AAED,IAAA,yBAAa,EAAC,cAAc,EAAE,CAAC,kBAAM,CAAC,cAAc,EAAE,kBAAM,CAAC,SAAS,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/count_documents.js b/server/data-import/node_modules/mongodb/lib/operations/count_documents.js
deleted file mode 100644
index a70c80c5938bfb5cf35685afcdcbaa02cac8efc0..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/count_documents.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.CountDocumentsOperation = void 0;
-const aggregate_1 = require("./aggregate");
-/** @internal */
-class CountDocumentsOperation extends aggregate_1.AggregateOperation {
-    constructor(collection, query, options) {
-        const pipeline = [];
-        pipeline.push({ $match: query });
-        if (typeof options.skip === 'number') {
-            pipeline.push({ $skip: options.skip });
-        }
-        if (typeof options.limit === 'number') {
-            pipeline.push({ $limit: options.limit });
-        }
-        pipeline.push({ $group: { _id: 1, n: { $sum: 1 } } });
-        super(collection.s.namespace, pipeline, options);
-    }
-    async execute(server, session) {
-        const result = await super.execute(server, session);
-        // NOTE: We're avoiding creating a cursor here to reduce the callstack.
-        const response = result;
-        if (response.cursor == null || response.cursor.firstBatch == null) {
-            return 0;
-        }
-        const docs = response.cursor.firstBatch;
-        return docs.length ? docs[0].n : 0;
-    }
-}
-exports.CountDocumentsOperation = CountDocumentsOperation;
-//# sourceMappingURL=count_documents.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/count_documents.js.map b/server/data-import/node_modules/mongodb/lib/operations/count_documents.js.map
deleted file mode 100644
index 4cf9f0f27aca376226a810334b4de735c6316c68..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/count_documents.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"count_documents.js","sourceRoot":"","sources":["../../src/operations/count_documents.ts"],"names":[],"mappings":";;;AAIA,2CAAwE;AAUxE,gBAAgB;AAChB,MAAa,uBAAwB,SAAQ,8BAA0B;IACrE,YAAY,UAAsB,EAAE,KAAe,EAAE,OAA8B;QACjF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjC,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;YACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;SACxC;QAED,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;YACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;SAC1C;QAED,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAEtD,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEpD,uEAAuE;QACvE,MAAM,QAAQ,GAAG,MAA6B,CAAC;QAC/C,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE;YACjE,OAAO,CAAC,CAAC;SACV;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;CACF;AA9BD,0DA8BC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/create_collection.js b/server/data-import/node_modules/mongodb/lib/operations/create_collection.js
deleted file mode 100644
index 98954d8f16dd4b69f6e32d3ec8b09140cef6ffaa..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/create_collection.js
+++ /dev/null
@@ -1,99 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.CreateCollectionOperation = void 0;
-const constants_1 = require("../cmap/wire_protocol/constants");
-const collection_1 = require("../collection");
-const error_1 = require("../error");
-const command_1 = require("./command");
-const indexes_1 = require("./indexes");
-const operation_1 = require("./operation");
-const ILLEGAL_COMMAND_FIELDS = new Set([
-    'w',
-    'wtimeout',
-    'j',
-    'fsync',
-    'autoIndexId',
-    'pkFactory',
-    'raw',
-    'readPreference',
-    'session',
-    'readConcern',
-    'writeConcern',
-    'raw',
-    'fieldsAsRaw',
-    'useBigInt64',
-    'promoteLongs',
-    'promoteValues',
-    'promoteBuffers',
-    'bsonRegExp',
-    'serializeFunctions',
-    'ignoreUndefined',
-    'enableUtf8Validation'
-]);
-/* @internal */
-const INVALID_QE_VERSION = 'Driver support of Queryable Encryption is incompatible with server. Upgrade server to use Queryable Encryption.';
-/** @internal */
-class CreateCollectionOperation extends command_1.CommandOperation {
-    constructor(db, name, options = {}) {
-        super(db, options);
-        this.options = options;
-        this.db = db;
-        this.name = name;
-    }
-    async execute(server, session) {
-        const db = this.db;
-        const name = this.name;
-        const options = this.options;
-        const encryptedFields = options.encryptedFields ??
-            db.client.options.autoEncryption?.encryptedFieldsMap?.[`${db.databaseName}.${name}`];
-        if (encryptedFields) {
-            // Creating a QE collection required min server of 7.0.0
-            // TODO(NODE-5353): Get wire version information from connection.
-            if (!server.loadBalanced &&
-                server.description.maxWireVersion < constants_1.MIN_SUPPORTED_QE_WIRE_VERSION) {
-                throw new error_1.MongoCompatibilityError(`${INVALID_QE_VERSION} The minimum server version required is ${constants_1.MIN_SUPPORTED_QE_SERVER_VERSION}`);
-            }
-            // Create auxilliary collections for queryable encryption support.
-            const escCollection = encryptedFields.escCollection ?? `enxcol_.${name}.esc`;
-            const ecocCollection = encryptedFields.ecocCollection ?? `enxcol_.${name}.ecoc`;
-            for (const collectionName of [escCollection, ecocCollection]) {
-                const createOp = new CreateCollectionOperation(db, collectionName, {
-                    clusteredIndex: {
-                        key: { _id: 1 },
-                        unique: true
-                    }
-                });
-                await createOp.executeWithoutEncryptedFieldsCheck(server, session);
-            }
-            if (!options.encryptedFields) {
-                this.options = { ...this.options, encryptedFields };
-            }
-        }
-        const coll = await this.executeWithoutEncryptedFieldsCheck(server, session);
-        if (encryptedFields) {
-            // Create the required index for queryable encryption support.
-            const createIndexOp = new indexes_1.CreateIndexOperation(db, name, { __safeContent__: 1 }, {});
-            await createIndexOp.execute(server, session);
-        }
-        return coll;
-    }
-    async executeWithoutEncryptedFieldsCheck(server, session) {
-        const db = this.db;
-        const name = this.name;
-        const options = this.options;
-        const cmd = { create: name };
-        for (const n in options) {
-            if (options[n] != null &&
-                typeof options[n] !== 'function' &&
-                !ILLEGAL_COMMAND_FIELDS.has(n)) {
-                cmd[n] = options[n];
-            }
-        }
-        // otherwise just execute the command
-        await super.executeCommand(server, session, cmd);
-        return new collection_1.Collection(db, name, options);
-    }
-}
-exports.CreateCollectionOperation = CreateCollectionOperation;
-(0, operation_1.defineAspects)(CreateCollectionOperation, [operation_1.Aspect.WRITE_OPERATION]);
-//# sourceMappingURL=create_collection.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/create_collection.js.map b/server/data-import/node_modules/mongodb/lib/operations/create_collection.js.map
deleted file mode 100644
index 972920694a22cc828b38476a9d9a05d0f5019781..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/create_collection.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"create_collection.js","sourceRoot":"","sources":["../../src/operations/create_collection.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/delete.js b/server/data-import/node_modules/mongodb/lib/operations/delete.js
deleted file mode 100644
index ffd2fb9058e6def6e986cc1d8158c759eed3bf15..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/delete.js
+++ /dev/null
@@ -1,112 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.makeDeleteStatement = exports.DeleteManyOperation = exports.DeleteOneOperation = exports.DeleteOperation = void 0;
-const error_1 = require("../error");
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/** @internal */
-class DeleteOperation extends command_1.CommandOperation {
-    constructor(ns, statements, options) {
-        super(undefined, options);
-        this.options = options;
-        this.ns = ns;
-        this.statements = statements;
-    }
-    get canRetryWrite() {
-        if (super.canRetryWrite === false) {
-            return false;
-        }
-        return this.statements.every(op => (op.limit != null ? op.limit > 0 : true));
-    }
-    async execute(server, session) {
-        const options = this.options ?? {};
-        const ordered = typeof options.ordered === 'boolean' ? options.ordered : true;
-        const command = {
-            delete: this.ns.collection,
-            deletes: this.statements,
-            ordered
-        };
-        if (options.let) {
-            command.let = options.let;
-        }
-        // we check for undefined specifically here to allow falsy values
-        // eslint-disable-next-line no-restricted-syntax
-        if (options.comment !== undefined) {
-            command.comment = options.comment;
-        }
-        const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0;
-        if (unacknowledgedWrite) {
-            if (this.statements.find((o) => o.hint)) {
-                // TODO(NODE-3541): fix error for hint with unacknowledged writes
-                throw new error_1.MongoCompatibilityError(`hint is not supported with unacknowledged writes`);
-            }
-        }
-        return super.executeCommand(server, session, command);
-    }
-}
-exports.DeleteOperation = DeleteOperation;
-class DeleteOneOperation extends DeleteOperation {
-    constructor(collection, filter, options) {
-        super(collection.s.namespace, [makeDeleteStatement(filter, { ...options, limit: 1 })], options);
-    }
-    async execute(server, session) {
-        const res = (await super.execute(server, session));
-        if (this.explain)
-            return res;
-        if (res.code)
-            throw new error_1.MongoServerError(res);
-        if (res.writeErrors)
-            throw new error_1.MongoServerError(res.writeErrors[0]);
-        return {
-            acknowledged: this.writeConcern?.w !== 0,
-            deletedCount: res.n
-        };
-    }
-}
-exports.DeleteOneOperation = DeleteOneOperation;
-class DeleteManyOperation extends DeleteOperation {
-    constructor(collection, filter, options) {
-        super(collection.s.namespace, [makeDeleteStatement(filter, options)], options);
-    }
-    async execute(server, session) {
-        const res = (await super.execute(server, session));
-        if (this.explain)
-            return res;
-        if (res.code)
-            throw new error_1.MongoServerError(res);
-        if (res.writeErrors)
-            throw new error_1.MongoServerError(res.writeErrors[0]);
-        return {
-            acknowledged: this.writeConcern?.w !== 0,
-            deletedCount: res.n
-        };
-    }
-}
-exports.DeleteManyOperation = DeleteManyOperation;
-function makeDeleteStatement(filter, options) {
-    const op = {
-        q: filter,
-        limit: typeof options.limit === 'number' ? options.limit : 0
-    };
-    if (options.collation) {
-        op.collation = options.collation;
-    }
-    if (options.hint) {
-        op.hint = options.hint;
-    }
-    return op;
-}
-exports.makeDeleteStatement = makeDeleteStatement;
-(0, operation_1.defineAspects)(DeleteOperation, [operation_1.Aspect.RETRYABLE, operation_1.Aspect.WRITE_OPERATION]);
-(0, operation_1.defineAspects)(DeleteOneOperation, [
-    operation_1.Aspect.RETRYABLE,
-    operation_1.Aspect.WRITE_OPERATION,
-    operation_1.Aspect.EXPLAINABLE,
-    operation_1.Aspect.SKIP_COLLATION
-]);
-(0, operation_1.defineAspects)(DeleteManyOperation, [
-    operation_1.Aspect.WRITE_OPERATION,
-    operation_1.Aspect.EXPLAINABLE,
-    operation_1.Aspect.SKIP_COLLATION
-]);
-//# sourceMappingURL=delete.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/delete.js.map b/server/data-import/node_modules/mongodb/lib/operations/delete.js.map
deleted file mode 100644
index d214f589adefc349d290583400bfa4c6809d4e40..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/delete.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/operations/delete.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/distinct.js b/server/data-import/node_modules/mongodb/lib/operations/distinct.js
deleted file mode 100644
index b42be6a7bf4e4c4e52a7a833ce392abeeb0f51d5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/distinct.js
+++ /dev/null
@@ -1,57 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.DistinctOperation = void 0;
-const utils_1 = require("../utils");
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/**
- * Return a list of distinct values for the given key across a collection.
- * @internal
- */
-class DistinctOperation extends command_1.CommandOperation {
-    /**
-     * Construct a Distinct operation.
-     *
-     * @param collection - Collection instance.
-     * @param key - Field of the document to find distinct values for.
-     * @param query - The query for filtering the set of documents to which we apply the distinct filter.
-     * @param options - Optional settings. See Collection.prototype.distinct for a list of options.
-     */
-    constructor(collection, key, query, options) {
-        super(collection, options);
-        this.options = options ?? {};
-        this.collection = collection;
-        this.key = key;
-        this.query = query;
-    }
-    async execute(server, session) {
-        const coll = this.collection;
-        const key = this.key;
-        const query = this.query;
-        const options = this.options;
-        // Distinct command
-        const cmd = {
-            distinct: coll.collectionName,
-            key: key,
-            query: query
-        };
-        // Add maxTimeMS if defined
-        if (typeof options.maxTimeMS === 'number') {
-            cmd.maxTimeMS = options.maxTimeMS;
-        }
-        // we check for undefined specifically here to allow falsy values
-        // eslint-disable-next-line no-restricted-syntax
-        if (typeof options.comment !== 'undefined') {
-            cmd.comment = options.comment;
-        }
-        // Do we have a readConcern specified
-        (0, utils_1.decorateWithReadConcern)(cmd, coll, options);
-        // Have we specified collation
-        (0, utils_1.decorateWithCollation)(cmd, coll, options);
-        const result = await super.executeCommand(server, session, cmd);
-        return this.explain ? result : result.values;
-    }
-}
-exports.DistinctOperation = DistinctOperation;
-(0, operation_1.defineAspects)(DistinctOperation, [operation_1.Aspect.READ_OPERATION, operation_1.Aspect.RETRYABLE, operation_1.Aspect.EXPLAINABLE]);
-//# sourceMappingURL=distinct.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/distinct.js.map b/server/data-import/node_modules/mongodb/lib/operations/distinct.js.map
deleted file mode 100644
index 77ea98e5d99515e6042f890409e0b893346f591a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/distinct.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"distinct.js","sourceRoot":"","sources":["../../src/operations/distinct.ts"],"names":[],"mappings":";;;AAIA,oCAA0E;AAC1E,uCAA2E;AAC3E,2CAAoD;AAKpD;;;GAGG;AACH,MAAa,iBAAkB,SAAQ,0BAAuB;IAQ5D;;;;;;;OAOG;IACH,YAAY,UAAsB,EAAE,GAAW,EAAE,KAAe,EAAE,OAAyB;QACzF,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,mBAAmB;QACnB,MAAM,GAAG,GAAa;YACpB,QAAQ,EAAE,IAAI,CAAC,cAAc;YAC7B,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,KAAK;SACb,CAAC;QAEF,2BAA2B;QAC3B,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;YACzC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;SACnC;QAED,iEAAiE;QACjE,gDAAgD;QAChD,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,WAAW,EAAE;YAC1C,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;SAC/B;QAED,qCAAqC;QACrC,IAAA,+BAAuB,EAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE5C,8BAA8B;QAC9B,IAAA,6BAAqB,EAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAEhE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/C,CAAC;CACF;AA3DD,8CA2DC;AAED,IAAA,yBAAa,EAAC,iBAAiB,EAAE,CAAC,kBAAM,CAAC,cAAc,EAAE,kBAAM,CAAC,SAAS,EAAE,kBAAM,CAAC,WAAW,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/drop.js b/server/data-import/node_modules/mongodb/lib/operations/drop.js
deleted file mode 100644
index 002722832dc923ee38bb5b2dc54795866b1c19b8..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/drop.js
+++ /dev/null
@@ -1,70 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.DropDatabaseOperation = exports.DropCollectionOperation = void 0;
-const error_1 = require("../error");
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/** @internal */
-class DropCollectionOperation extends command_1.CommandOperation {
-    constructor(db, name, options = {}) {
-        super(db, options);
-        this.db = db;
-        this.options = options;
-        this.name = name;
-    }
-    async execute(server, session) {
-        const db = this.db;
-        const options = this.options;
-        const name = this.name;
-        const encryptedFieldsMap = db.client.options.autoEncryption?.encryptedFieldsMap;
-        let encryptedFields = options.encryptedFields ?? encryptedFieldsMap?.[`${db.databaseName}.${name}`];
-        if (!encryptedFields && encryptedFieldsMap) {
-            // If the MongoClient was configured with an encryptedFieldsMap,
-            // and no encryptedFields config was available in it or explicitly
-            // passed as an argument, the spec tells us to look one up using
-            // listCollections().
-            const listCollectionsResult = await db
-                .listCollections({ name }, { nameOnly: false })
-                .toArray();
-            encryptedFields = listCollectionsResult?.[0]?.options?.encryptedFields;
-        }
-        if (encryptedFields) {
-            const escCollection = encryptedFields.escCollection || `enxcol_.${name}.esc`;
-            const ecocCollection = encryptedFields.ecocCollection || `enxcol_.${name}.ecoc`;
-            for (const collectionName of [escCollection, ecocCollection]) {
-                // Drop auxilliary collections, ignoring potential NamespaceNotFound errors.
-                const dropOp = new DropCollectionOperation(db, collectionName);
-                try {
-                    await dropOp.executeWithoutEncryptedFieldsCheck(server, session);
-                }
-                catch (err) {
-                    if (!(err instanceof error_1.MongoServerError) ||
-                        err.code !== error_1.MONGODB_ERROR_CODES.NamespaceNotFound) {
-                        throw err;
-                    }
-                }
-            }
-        }
-        return this.executeWithoutEncryptedFieldsCheck(server, session);
-    }
-    async executeWithoutEncryptedFieldsCheck(server, session) {
-        await super.executeCommand(server, session, { drop: this.name });
-        return true;
-    }
-}
-exports.DropCollectionOperation = DropCollectionOperation;
-/** @internal */
-class DropDatabaseOperation extends command_1.CommandOperation {
-    constructor(db, options) {
-        super(db, options);
-        this.options = options;
-    }
-    async execute(server, session) {
-        await super.executeCommand(server, session, { dropDatabase: 1 });
-        return true;
-    }
-}
-exports.DropDatabaseOperation = DropDatabaseOperation;
-(0, operation_1.defineAspects)(DropCollectionOperation, [operation_1.Aspect.WRITE_OPERATION]);
-(0, operation_1.defineAspects)(DropDatabaseOperation, [operation_1.Aspect.WRITE_OPERATION]);
-//# sourceMappingURL=drop.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/drop.js.map b/server/data-import/node_modules/mongodb/lib/operations/drop.js.map
deleted file mode 100644
index 36637eb394b41fd7edde18df5aa62382d9776632..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/drop.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"drop.js","sourceRoot":"","sources":["../../src/operations/drop.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/estimated_document_count.js b/server/data-import/node_modules/mongodb/lib/operations/estimated_document_count.js
deleted file mode 100644
index 5ef506ede81e8df092e1a125a82596e812ee7185..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/estimated_document_count.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.EstimatedDocumentCountOperation = void 0;
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/** @internal */
-class EstimatedDocumentCountOperation extends command_1.CommandOperation {
-    constructor(collection, options = {}) {
-        super(collection, options);
-        this.options = options;
-        this.collectionName = collection.collectionName;
-    }
-    async execute(server, session) {
-        const cmd = { count: this.collectionName };
-        if (typeof this.options.maxTimeMS === 'number') {
-            cmd.maxTimeMS = this.options.maxTimeMS;
-        }
-        // we check for undefined specifically here to allow falsy values
-        // eslint-disable-next-line no-restricted-syntax
-        if (this.options.comment !== undefined) {
-            cmd.comment = this.options.comment;
-        }
-        const response = await super.executeCommand(server, session, cmd);
-        return response?.n || 0;
-    }
-}
-exports.EstimatedDocumentCountOperation = EstimatedDocumentCountOperation;
-(0, operation_1.defineAspects)(EstimatedDocumentCountOperation, [
-    operation_1.Aspect.READ_OPERATION,
-    operation_1.Aspect.RETRYABLE,
-    operation_1.Aspect.CURSOR_CREATING
-]);
-//# sourceMappingURL=estimated_document_count.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/estimated_document_count.js.map b/server/data-import/node_modules/mongodb/lib/operations/estimated_document_count.js.map
deleted file mode 100644
index 8eca0ac66cb32c1070dcb1826ccf5f6823d58c09..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/estimated_document_count.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"estimated_document_count.js","sourceRoot":"","sources":["../../src/operations/estimated_document_count.ts"],"names":[],"mappings":";;;AAIA,uCAA2E;AAC3E,2CAAoD;AAYpD,gBAAgB;AAChB,MAAa,+BAAgC,SAAQ,0BAAwB;IAI3E,YAAY,UAAsB,EAAE,UAAyC,EAAE;QAC7E,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;IAClD,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,GAAG,GAAa,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QAErD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC9C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;SACxC;QAED,iEAAiE;QACjE,gDAAgD;QAChD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YACtC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SACpC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAElE,OAAO,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AA3BD,0EA2BC;AAED,IAAA,yBAAa,EAAC,+BAA+B,EAAE;IAC7C,kBAAM,CAAC,cAAc;IACrB,kBAAM,CAAC,SAAS;IAChB,kBAAM,CAAC,eAAe;CACvB,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/execute_operation.js b/server/data-import/node_modules/mongodb/lib/operations/execute_operation.js
deleted file mode 100644
index b6a60d690a80611b01a05dcaca0a0d7dd2f21a1b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/execute_operation.js
+++ /dev/null
@@ -1,165 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.executeOperation = void 0;
-const error_1 = require("../error");
-const read_preference_1 = require("../read_preference");
-const server_selection_1 = require("../sdam/server_selection");
-const utils_1 = require("../utils");
-const operation_1 = require("./operation");
-const MMAPv1_RETRY_WRITES_ERROR_CODE = error_1.MONGODB_ERROR_CODES.IllegalOperation;
-const MMAPv1_RETRY_WRITES_ERROR_MESSAGE = 'This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string.';
-function executeOperation(client, operation, callback) {
-    return (0, utils_1.maybeCallback)(() => executeOperationAsync(client, operation), callback);
-}
-exports.executeOperation = executeOperation;
-async function executeOperationAsync(client, operation) {
-    if (!(operation instanceof operation_1.AbstractOperation)) {
-        // TODO(NODE-3483): Extend MongoRuntimeError
-        throw new error_1.MongoRuntimeError('This method requires a valid operation instance');
-    }
-    if (client.topology == null) {
-        // Auto connect on operation
-        if (client.s.hasBeenClosed) {
-            throw new error_1.MongoNotConnectedError('Client must be connected before running operations');
-        }
-        client.s.options[Symbol.for('@@mdb.skipPingOnConnect')] = true;
-        try {
-            await client.connect();
-        }
-        finally {
-            delete client.s.options[Symbol.for('@@mdb.skipPingOnConnect')];
-        }
-    }
-    const { topology } = client;
-    if (topology == null) {
-        throw new error_1.MongoRuntimeError('client.connect did not create a topology but also did not throw');
-    }
-    // The driver sessions spec mandates that we implicitly create sessions for operations
-    // that are not explicitly provided with a session.
-    let session = operation.session;
-    let owner;
-    if (session == null) {
-        owner = Symbol();
-        session = client.startSession({ owner, explicit: false });
-    }
-    else if (session.hasEnded) {
-        throw new error_1.MongoExpiredSessionError('Use of expired sessions is not permitted');
-    }
-    else if (session.snapshotEnabled && !topology.capabilities.supportsSnapshotReads) {
-        throw new error_1.MongoCompatibilityError('Snapshot reads require MongoDB 5.0 or later');
-    }
-    else if (session.client !== client) {
-        throw new error_1.MongoInvalidArgumentError('ClientSession must be from the same MongoClient');
-    }
-    const readPreference = operation.readPreference ?? read_preference_1.ReadPreference.primary;
-    const inTransaction = !!session?.inTransaction();
-    if (inTransaction && !readPreference.equals(read_preference_1.ReadPreference.primary)) {
-        throw new error_1.MongoTransactionError(`Read preference in a transaction must be primary, not: ${readPreference.mode}`);
-    }
-    if (session?.isPinned && session.transaction.isCommitted && !operation.bypassPinningCheck) {
-        session.unpin();
-    }
-    let selector;
-    if (operation.hasAspect(operation_1.Aspect.MUST_SELECT_SAME_SERVER)) {
-        // GetMore and KillCursor operations must always select the same server, but run through
-        // server selection to potentially force monitor checks if the server is
-        // in an unknown state.
-        selector = (0, server_selection_1.sameServerSelector)(operation.server?.description);
-    }
-    else if (operation.trySecondaryWrite) {
-        // If operation should try to write to secondary use the custom server selector
-        // otherwise provide the read preference.
-        selector = (0, server_selection_1.secondaryWritableServerSelector)(topology.commonWireVersion, readPreference);
-    }
-    else {
-        selector = readPreference;
-    }
-    const server = await topology.selectServerAsync(selector, { session });
-    if (session == null) {
-        // No session also means it is not retryable, early exit
-        return operation.execute(server, undefined);
-    }
-    if (!operation.hasAspect(operation_1.Aspect.RETRYABLE)) {
-        // non-retryable operation, early exit
-        try {
-            return await operation.execute(server, session);
-        }
-        finally {
-            if (session?.owner != null && session.owner === owner) {
-                await session.endSession().catch(() => null);
-            }
-        }
-    }
-    const willRetryRead = topology.s.options.retryReads && !inTransaction && operation.canRetryRead;
-    const willRetryWrite = topology.s.options.retryWrites &&
-        !inTransaction &&
-        (0, utils_1.supportsRetryableWrites)(server) &&
-        operation.canRetryWrite;
-    const hasReadAspect = operation.hasAspect(operation_1.Aspect.READ_OPERATION);
-    const hasWriteAspect = operation.hasAspect(operation_1.Aspect.WRITE_OPERATION);
-    const willRetry = (hasReadAspect && willRetryRead) || (hasWriteAspect && willRetryWrite);
-    if (hasWriteAspect && willRetryWrite) {
-        operation.options.willRetryWrite = true;
-        session.incrementTransactionNumber();
-    }
-    try {
-        return await operation.execute(server, session);
-    }
-    catch (operationError) {
-        if (willRetry && operationError instanceof error_1.MongoError) {
-            return await retryOperation(operation, operationError, {
-                session,
-                topology,
-                selector
-            });
-        }
-        throw operationError;
-    }
-    finally {
-        if (session?.owner != null && session.owner === owner) {
-            await session.endSession().catch(() => null);
-        }
-    }
-}
-async function retryOperation(operation, originalError, { session, topology, selector }) {
-    const isWriteOperation = operation.hasAspect(operation_1.Aspect.WRITE_OPERATION);
-    const isReadOperation = operation.hasAspect(operation_1.Aspect.READ_OPERATION);
-    if (isWriteOperation && originalError.code === MMAPv1_RETRY_WRITES_ERROR_CODE) {
-        throw new error_1.MongoServerError({
-            message: MMAPv1_RETRY_WRITES_ERROR_MESSAGE,
-            errmsg: MMAPv1_RETRY_WRITES_ERROR_MESSAGE,
-            originalError
-        });
-    }
-    if (isWriteOperation && !(0, error_1.isRetryableWriteError)(originalError)) {
-        throw originalError;
-    }
-    if (isReadOperation && !(0, error_1.isRetryableReadError)(originalError)) {
-        throw originalError;
-    }
-    if (originalError instanceof error_1.MongoNetworkError &&
-        session.isPinned &&
-        !session.inTransaction() &&
-        operation.hasAspect(operation_1.Aspect.CURSOR_CREATING)) {
-        // If we have a cursor and the initial command fails with a network error,
-        // we can retry it on another connection. So we need to check it back in, clear the
-        // pool for the service id, and retry again.
-        session.unpin({ force: true, forceClear: true });
-    }
-    // select a new server, and attempt to retry the operation
-    const server = await topology.selectServerAsync(selector, { session });
-    if (isWriteOperation && !(0, utils_1.supportsRetryableWrites)(server)) {
-        throw new error_1.MongoUnexpectedServerResponseError('Selected server does not support retryable writes');
-    }
-    try {
-        return await operation.execute(server, session);
-    }
-    catch (retryError) {
-        if (retryError instanceof error_1.MongoError &&
-            retryError.hasErrorLabel(error_1.MongoErrorLabel.NoWritesPerformed)) {
-            throw originalError;
-        }
-        throw retryError;
-    }
-}
-//# sourceMappingURL=execute_operation.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/execute_operation.js.map b/server/data-import/node_modules/mongodb/lib/operations/execute_operation.js.map
deleted file mode 100644
index 148a65d6b941355e72f7f271c3064312fbff3ac0..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/execute_operation.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"execute_operation.js","sourceRoot":"","sources":["../../src/operations/execute_operation.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/find.js b/server/data-import/node_modules/mongodb/lib/operations/find.js
deleted file mode 100644
index 3bd6a17bdfa9ea39fc1f39741d6fcc232d72283c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/find.js
+++ /dev/null
@@ -1,149 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.FindOperation = void 0;
-const error_1 = require("../error");
-const read_concern_1 = require("../read_concern");
-const sort_1 = require("../sort");
-const utils_1 = require("../utils");
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/** @internal */
-class FindOperation extends command_1.CommandOperation {
-    constructor(collection, ns, filter = {}, options = {}) {
-        super(collection, options);
-        this.options = { ...options };
-        delete this.options.writeConcern;
-        this.ns = ns;
-        if (typeof filter !== 'object' || Array.isArray(filter)) {
-            throw new error_1.MongoInvalidArgumentError('Query filter must be a plain object or ObjectId');
-        }
-        // special case passing in an ObjectId as a filter
-        this.filter = filter != null && filter._bsontype === 'ObjectId' ? { _id: filter } : filter;
-    }
-    async execute(server, session) {
-        this.server = server;
-        const options = this.options;
-        let findCommand = makeFindCommand(this.ns, this.filter, options);
-        if (this.explain) {
-            findCommand = (0, utils_1.decorateWithExplain)(findCommand, this.explain);
-        }
-        return server.commandAsync(this.ns, findCommand, {
-            ...this.options,
-            ...this.bsonOptions,
-            documentsReturnedIn: 'firstBatch',
-            session
-        });
-    }
-}
-exports.FindOperation = FindOperation;
-function makeFindCommand(ns, filter, options) {
-    const findCommand = {
-        find: ns.collection,
-        filter
-    };
-    if (options.sort) {
-        findCommand.sort = (0, sort_1.formatSort)(options.sort);
-    }
-    if (options.projection) {
-        let projection = options.projection;
-        if (projection && Array.isArray(projection)) {
-            projection = projection.length
-                ? projection.reduce((result, field) => {
-                    result[field] = 1;
-                    return result;
-                }, {})
-                : { _id: 1 };
-        }
-        findCommand.projection = projection;
-    }
-    if (options.hint) {
-        findCommand.hint = (0, utils_1.normalizeHintField)(options.hint);
-    }
-    if (typeof options.skip === 'number') {
-        findCommand.skip = options.skip;
-    }
-    if (typeof options.limit === 'number') {
-        if (options.limit < 0) {
-            findCommand.limit = -options.limit;
-            findCommand.singleBatch = true;
-        }
-        else {
-            findCommand.limit = options.limit;
-        }
-    }
-    if (typeof options.batchSize === 'number') {
-        if (options.batchSize < 0) {
-            if (options.limit &&
-                options.limit !== 0 &&
-                Math.abs(options.batchSize) < Math.abs(options.limit)) {
-                findCommand.limit = -options.batchSize;
-            }
-            findCommand.singleBatch = true;
-        }
-        else {
-            findCommand.batchSize = options.batchSize;
-        }
-    }
-    if (typeof options.singleBatch === 'boolean') {
-        findCommand.singleBatch = options.singleBatch;
-    }
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (options.comment !== undefined) {
-        findCommand.comment = options.comment;
-    }
-    if (typeof options.maxTimeMS === 'number') {
-        findCommand.maxTimeMS = options.maxTimeMS;
-    }
-    const readConcern = read_concern_1.ReadConcern.fromOptions(options);
-    if (readConcern) {
-        findCommand.readConcern = readConcern.toJSON();
-    }
-    if (options.max) {
-        findCommand.max = options.max;
-    }
-    if (options.min) {
-        findCommand.min = options.min;
-    }
-    if (typeof options.returnKey === 'boolean') {
-        findCommand.returnKey = options.returnKey;
-    }
-    if (typeof options.showRecordId === 'boolean') {
-        findCommand.showRecordId = options.showRecordId;
-    }
-    if (typeof options.tailable === 'boolean') {
-        findCommand.tailable = options.tailable;
-    }
-    if (typeof options.oplogReplay === 'boolean') {
-        findCommand.oplogReplay = options.oplogReplay;
-    }
-    if (typeof options.timeout === 'boolean') {
-        findCommand.noCursorTimeout = !options.timeout;
-    }
-    else if (typeof options.noCursorTimeout === 'boolean') {
-        findCommand.noCursorTimeout = options.noCursorTimeout;
-    }
-    if (typeof options.awaitData === 'boolean') {
-        findCommand.awaitData = options.awaitData;
-    }
-    if (typeof options.allowPartialResults === 'boolean') {
-        findCommand.allowPartialResults = options.allowPartialResults;
-    }
-    if (options.collation) {
-        findCommand.collation = options.collation;
-    }
-    if (typeof options.allowDiskUse === 'boolean') {
-        findCommand.allowDiskUse = options.allowDiskUse;
-    }
-    if (options.let) {
-        findCommand.let = options.let;
-    }
-    return findCommand;
-}
-(0, operation_1.defineAspects)(FindOperation, [
-    operation_1.Aspect.READ_OPERATION,
-    operation_1.Aspect.RETRYABLE,
-    operation_1.Aspect.EXPLAINABLE,
-    operation_1.Aspect.CURSOR_CREATING
-]);
-//# sourceMappingURL=find.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/find.js.map b/server/data-import/node_modules/mongodb/lib/operations/find.js.map
deleted file mode 100644
index b03e5911308790af98437132a612df270a0fbd20..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/find.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"find.js","sourceRoot":"","sources":["../../src/operations/find.ts"],"names":[],"mappings":";;;AAEA,oCAAqD;AACrD,kDAA8C;AAG9C,kCAAgD;AAChD,oCAA0F;AAC1F,uCAAkG;AAClG,2CAA+D;AA0D/D,gBAAgB;AAChB,MAAa,aAAc,SAAQ,0BAA0B;IAW3D,YACE,UAAkC,EAClC,EAAoB,EACpB,SAAmB,EAAE,EACrB,UAAuB,EAAE;QAEzB,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAEb,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvD,MAAM,IAAI,iCAAyB,CAAC,iDAAiD,CAAC,CAAC;SACxF;QAED,kDAAkD;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7F,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,IAAI,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,WAAW,GAAG,IAAA,2BAAmB,EAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAC9D;QAED,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE;YAC/C,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,IAAI,CAAC,WAAW;YACnB,mBAAmB,EAAE,YAAY;YACjC,OAAO;SACR,CAAC,CAAC;IACL,CAAC;CACF;AAhDD,sCAgDC;AAED,SAAS,eAAe,CAAC,EAAoB,EAAE,MAAgB,EAAE,OAAoB;IACnF,MAAM,WAAW,GAAa;QAC5B,IAAI,EAAE,EAAE,CAAC,UAAU;QACnB,MAAM;KACP,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,WAAW,CAAC,IAAI,GAAG,IAAA,iBAAU,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7C;IAED,IAAI,OAAO,CAAC,UAAU,EAAE;QACtB,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACpC,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC3C,UAAU,GAAG,UAAU,CAAC,MAAM;gBAC5B,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAClC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAClB,OAAO,MAAM,CAAC;gBAChB,CAAC,EAAE,EAAE,CAAC;gBACR,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAChB;QAED,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;KACrC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,WAAW,CAAC,IAAI,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACrD;IAED,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;QACpC,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;KACjC;IAED,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;QACrC,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;YACrB,WAAW,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;YACnC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;SAChC;aAAM;YACL,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;SACnC;KACF;IAED,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;QACzC,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;YACzB,IACE,OAAO,CAAC,KAAK;gBACb,OAAO,CAAC,KAAK,KAAK,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EACrD;gBACA,WAAW,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;aACxC;YAED,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;SAChC;aAAM;YACL,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;SAC3C;KACF;IAED,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE;QAC5C,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;KAC/C;IAED,iEAAiE;IACjE,gDAAgD;IAChD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;QACjC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;KACvC;IAED,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;QACzC,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;KAC3C;IAED,MAAM,WAAW,GAAG,0BAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,WAAW,EAAE;QACf,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;KAChD;IAED,IAAI,OAAO,CAAC,GAAG,EAAE;QACf,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;KAC/B;IAED,IAAI,OAAO,CAAC,GAAG,EAAE;QACf,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;KAC/B;IAED,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;QAC1C,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;KAC3C;IAED,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE;QAC7C,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;KACjD;IAED,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;QACzC,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;KACzC;IAED,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE;QAC5C,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;KAC/C;IAED,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;QACxC,WAAW,CAAC,eAAe,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;KAChD;SAAM,IAAI,OAAO,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE;QACvD,WAAW,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;KACvD;IAED,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;QAC1C,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;KAC3C;IAED,IAAI,OAAO,OAAO,CAAC,mBAAmB,KAAK,SAAS,EAAE;QACpD,WAAW,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;KAC/D;IAED,IAAI,OAAO,CAAC,SAAS,EAAE;QACrB,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;KAC3C;IAED,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE;QAC7C,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;KACjD;IAED,IAAI,OAAO,CAAC,GAAG,EAAE;QACf,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;KAC/B;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,IAAA,yBAAa,EAAC,aAAa,EAAE;IAC3B,kBAAM,CAAC,cAAc;IACrB,kBAAM,CAAC,SAAS;IAChB,kBAAM,CAAC,WAAW;IAClB,kBAAM,CAAC,eAAe;CACvB,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/find_and_modify.js b/server/data-import/node_modules/mongodb/lib/operations/find_and_modify.js
deleted file mode 100644
index 978e324c682dd9d34f3e29cf5b4f6fce242bbbe0..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/find_and_modify.js
+++ /dev/null
@@ -1,148 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.FindOneAndUpdateOperation = exports.FindOneAndReplaceOperation = exports.FindOneAndDeleteOperation = exports.ReturnDocument = void 0;
-const error_1 = require("../error");
-const read_preference_1 = require("../read_preference");
-const sort_1 = require("../sort");
-const utils_1 = require("../utils");
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/** @public */
-exports.ReturnDocument = Object.freeze({
-    BEFORE: 'before',
-    AFTER: 'after'
-});
-function configureFindAndModifyCmdBaseUpdateOpts(cmdBase, options) {
-    cmdBase.new = options.returnDocument === exports.ReturnDocument.AFTER;
-    cmdBase.upsert = options.upsert === true;
-    if (options.bypassDocumentValidation === true) {
-        cmdBase.bypassDocumentValidation = options.bypassDocumentValidation;
-    }
-    return cmdBase;
-}
-/** @internal */
-class FindAndModifyOperation extends command_1.CommandOperation {
-    constructor(collection, query, options) {
-        super(collection, options);
-        this.options = options ?? {};
-        this.cmdBase = {
-            remove: false,
-            new: false,
-            upsert: false
-        };
-        options.includeResultMetadata ??= false;
-        const sort = (0, sort_1.formatSort)(options.sort);
-        if (sort) {
-            this.cmdBase.sort = sort;
-        }
-        if (options.projection) {
-            this.cmdBase.fields = options.projection;
-        }
-        if (options.maxTimeMS) {
-            this.cmdBase.maxTimeMS = options.maxTimeMS;
-        }
-        // Decorate the findAndModify command with the write Concern
-        if (options.writeConcern) {
-            this.cmdBase.writeConcern = options.writeConcern;
-        }
-        if (options.let) {
-            this.cmdBase.let = options.let;
-        }
-        // we check for undefined specifically here to allow falsy values
-        // eslint-disable-next-line no-restricted-syntax
-        if (options.comment !== undefined) {
-            this.cmdBase.comment = options.comment;
-        }
-        // force primary read preference
-        this.readPreference = read_preference_1.ReadPreference.primary;
-        this.collection = collection;
-        this.query = query;
-    }
-    async execute(server, session) {
-        const coll = this.collection;
-        const query = this.query;
-        const options = { ...this.options, ...this.bsonOptions };
-        // Create findAndModify command object
-        const cmd = {
-            findAndModify: coll.collectionName,
-            query: query,
-            ...this.cmdBase
-        };
-        // Have we specified collation
-        try {
-            (0, utils_1.decorateWithCollation)(cmd, coll, options);
-        }
-        catch (err) {
-            return err;
-        }
-        if (options.hint) {
-            // TODO: once this method becomes a CommandOperation we will have the server
-            // in place to check.
-            const unacknowledgedWrite = this.writeConcern?.w === 0;
-            if (unacknowledgedWrite || (0, utils_1.maxWireVersion)(server) < 8) {
-                throw new error_1.MongoCompatibilityError('The current topology does not support a hint on findAndModify commands');
-            }
-            cmd.hint = options.hint;
-        }
-        // Execute the command
-        const result = await super.executeCommand(server, session, cmd);
-        return options.includeResultMetadata ? result : result.value ?? null;
-    }
-}
-/** @internal */
-class FindOneAndDeleteOperation extends FindAndModifyOperation {
-    constructor(collection, filter, options) {
-        // Basic validation
-        if (filter == null || typeof filter !== 'object') {
-            throw new error_1.MongoInvalidArgumentError('Argument "filter" must be an object');
-        }
-        super(collection, filter, options);
-        this.cmdBase.remove = true;
-    }
-}
-exports.FindOneAndDeleteOperation = FindOneAndDeleteOperation;
-/** @internal */
-class FindOneAndReplaceOperation extends FindAndModifyOperation {
-    constructor(collection, filter, replacement, options) {
-        if (filter == null || typeof filter !== 'object') {
-            throw new error_1.MongoInvalidArgumentError('Argument "filter" must be an object');
-        }
-        if (replacement == null || typeof replacement !== 'object') {
-            throw new error_1.MongoInvalidArgumentError('Argument "replacement" must be an object');
-        }
-        if ((0, utils_1.hasAtomicOperators)(replacement)) {
-            throw new error_1.MongoInvalidArgumentError('Replacement document must not contain atomic operators');
-        }
-        super(collection, filter, options);
-        this.cmdBase.update = replacement;
-        configureFindAndModifyCmdBaseUpdateOpts(this.cmdBase, options);
-    }
-}
-exports.FindOneAndReplaceOperation = FindOneAndReplaceOperation;
-/** @internal */
-class FindOneAndUpdateOperation extends FindAndModifyOperation {
-    constructor(collection, filter, update, options) {
-        if (filter == null || typeof filter !== 'object') {
-            throw new error_1.MongoInvalidArgumentError('Argument "filter" must be an object');
-        }
-        if (update == null || typeof update !== 'object') {
-            throw new error_1.MongoInvalidArgumentError('Argument "update" must be an object');
-        }
-        if (!(0, utils_1.hasAtomicOperators)(update)) {
-            throw new error_1.MongoInvalidArgumentError('Update document requires atomic operators');
-        }
-        super(collection, filter, options);
-        this.cmdBase.update = update;
-        configureFindAndModifyCmdBaseUpdateOpts(this.cmdBase, options);
-        if (options.arrayFilters) {
-            this.cmdBase.arrayFilters = options.arrayFilters;
-        }
-    }
-}
-exports.FindOneAndUpdateOperation = FindOneAndUpdateOperation;
-(0, operation_1.defineAspects)(FindAndModifyOperation, [
-    operation_1.Aspect.WRITE_OPERATION,
-    operation_1.Aspect.RETRYABLE,
-    operation_1.Aspect.EXPLAINABLE
-]);
-//# sourceMappingURL=find_and_modify.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/find_and_modify.js.map b/server/data-import/node_modules/mongodb/lib/operations/find_and_modify.js.map
deleted file mode 100644
index 4d08cc99e5480c7ea6394d2c22167255f6d53c40..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/find_and_modify.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"find_and_modify.js","sourceRoot":"","sources":["../../src/operations/find_and_modify.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/get_more.js b/server/data-import/node_modules/mongodb/lib/operations/get_more.js
deleted file mode 100644
index ecefe156cb1cb0476d3f7fe01531fe2502c9d698..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/get_more.js
+++ /dev/null
@@ -1,58 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.GetMoreOperation = void 0;
-const error_1 = require("../error");
-const utils_1 = require("../utils");
-const operation_1 = require("./operation");
-/** @internal */
-class GetMoreOperation extends operation_1.AbstractOperation {
-    constructor(ns, cursorId, server, options) {
-        super(options);
-        this.options = options;
-        this.ns = ns;
-        this.cursorId = cursorId;
-        this.server = server;
-    }
-    /**
-     * Although there is a server already associated with the get more operation, the signature
-     * for execute passes a server so we will just use that one.
-     */
-    async execute(server, _session) {
-        if (server !== this.server) {
-            throw new error_1.MongoRuntimeError('Getmore must run on the same server operation began on');
-        }
-        if (this.cursorId == null || this.cursorId.isZero()) {
-            throw new error_1.MongoRuntimeError('Unable to iterate cursor with no id');
-        }
-        const collection = this.ns.collection;
-        if (collection == null) {
-            // Cursors should have adopted the namespace returned by MongoDB
-            // which should always defined a collection name (even a pseudo one, ex. db.aggregate())
-            throw new error_1.MongoRuntimeError('A collection name must be determined before getMore');
-        }
-        const getMoreCmd = {
-            getMore: this.cursorId,
-            collection
-        };
-        if (typeof this.options.batchSize === 'number') {
-            getMoreCmd.batchSize = Math.abs(this.options.batchSize);
-        }
-        if (typeof this.options.maxAwaitTimeMS === 'number') {
-            getMoreCmd.maxTimeMS = this.options.maxAwaitTimeMS;
-        }
-        // we check for undefined specifically here to allow falsy values
-        // eslint-disable-next-line no-restricted-syntax
-        if (this.options.comment !== undefined && (0, utils_1.maxWireVersion)(server) >= 9) {
-            getMoreCmd.comment = this.options.comment;
-        }
-        const commandOptions = {
-            returnFieldSelector: null,
-            documentsReturnedIn: 'nextBatch',
-            ...this.options
-        };
-        return server.commandAsync(this.ns, getMoreCmd, commandOptions);
-    }
-}
-exports.GetMoreOperation = GetMoreOperation;
-(0, operation_1.defineAspects)(GetMoreOperation, [operation_1.Aspect.READ_OPERATION, operation_1.Aspect.MUST_SELECT_SAME_SERVER]);
-//# sourceMappingURL=get_more.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/get_more.js.map b/server/data-import/node_modules/mongodb/lib/operations/get_more.js.map
deleted file mode 100644
index 478cbba37c1c8c5ead9e5c00378d1eb932b487da..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/get_more.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"get_more.js","sourceRoot":"","sources":["../../src/operations/get_more.ts"],"names":[],"mappings":";;;AACA,oCAA6C;AAG7C,oCAAiE;AACjE,2CAA8F;AA+B9F,gBAAgB;AAChB,MAAa,gBAAiB,SAAQ,6BAAiB;IAIrD,YAAY,EAAoB,EAAE,QAAc,EAAE,MAAc,EAAE,OAAuB;QACvF,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;OAGG;IACM,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,QAAmC;QACxE,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;YAC1B,MAAM,IAAI,yBAAiB,CAAC,wDAAwD,CAAC,CAAC;SACvF;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;YACnD,MAAM,IAAI,yBAAiB,CAAC,qCAAqC,CAAC,CAAC;SACpE;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;QACtC,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,gEAAgE;YAChE,wFAAwF;YACxF,MAAM,IAAI,yBAAiB,CAAC,qDAAqD,CAAC,CAAC;SACpF;QAED,MAAM,UAAU,GAAmB;YACjC,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,UAAU;SACX,CAAC;QAEF,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC9C,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACzD;QAED,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,QAAQ,EAAE;YACnD,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;SACpD;QAED,iEAAiE;QACjE,gDAAgD;QAChD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,IAAA,sBAAc,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACrE,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SAC3C;QAED,MAAM,cAAc,GAAG;YACrB,mBAAmB,EAAE,IAAI;YACzB,mBAAmB,EAAE,WAAW;YAChC,GAAG,IAAI,CAAC,OAAO;SAChB,CAAC;QAEF,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;IAClE,CAAC;CACF;AA5DD,4CA4DC;AAED,IAAA,yBAAa,EAAC,gBAAgB,EAAE,CAAC,kBAAM,CAAC,cAAc,EAAE,kBAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/indexes.js b/server/data-import/node_modules/mongodb/lib/operations/indexes.js
deleted file mode 100644
index 6868ec43cedbaab55621a12bdf4c4da68ca02457..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/indexes.js
+++ /dev/null
@@ -1,246 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.IndexInformationOperation = exports.IndexExistsOperation = exports.ListIndexesOperation = exports.DropIndexOperation = exports.EnsureIndexOperation = exports.CreateIndexOperation = exports.CreateIndexesOperation = exports.IndexesOperation = void 0;
-const error_1 = require("../error");
-const read_preference_1 = require("../read_preference");
-const utils_1 = require("../utils");
-const command_1 = require("./command");
-const common_functions_1 = require("./common_functions");
-const operation_1 = require("./operation");
-const VALID_INDEX_OPTIONS = new Set([
-    'background',
-    'unique',
-    'name',
-    'partialFilterExpression',
-    'sparse',
-    'hidden',
-    'expireAfterSeconds',
-    'storageEngine',
-    'collation',
-    'version',
-    // text indexes
-    'weights',
-    'default_language',
-    'language_override',
-    'textIndexVersion',
-    // 2d-sphere indexes
-    '2dsphereIndexVersion',
-    // 2d indexes
-    'bits',
-    'min',
-    'max',
-    // geoHaystack Indexes
-    'bucketSize',
-    // wildcard indexes
-    'wildcardProjection'
-]);
-function isIndexDirection(x) {
-    return (typeof x === 'number' || x === '2d' || x === '2dsphere' || x === 'text' || x === 'geoHaystack');
-}
-function isSingleIndexTuple(t) {
-    return Array.isArray(t) && t.length === 2 && isIndexDirection(t[1]);
-}
-function makeIndexSpec(indexSpec, options) {
-    const key = new Map();
-    const indexSpecs = !Array.isArray(indexSpec) || isSingleIndexTuple(indexSpec) ? [indexSpec] : indexSpec;
-    // Iterate through array and handle different types
-    for (const spec of indexSpecs) {
-        if (typeof spec === 'string') {
-            key.set(spec, 1);
-        }
-        else if (Array.isArray(spec)) {
-            key.set(spec[0], spec[1] ?? 1);
-        }
-        else if (spec instanceof Map) {
-            for (const [property, value] of spec) {
-                key.set(property, value);
-            }
-        }
-        else if ((0, utils_1.isObject)(spec)) {
-            for (const [property, value] of Object.entries(spec)) {
-                key.set(property, value);
-            }
-        }
-    }
-    return { ...options, key };
-}
-/** @internal */
-class IndexesOperation extends operation_1.AbstractOperation {
-    constructor(collection, options) {
-        super(options);
-        this.options = options;
-        this.collection = collection;
-    }
-    async execute(_server, session) {
-        const coll = this.collection;
-        const options = this.options;
-        return (0, common_functions_1.indexInformation)(coll.s.db, coll.collectionName, {
-            full: true,
-            ...options,
-            readPreference: this.readPreference,
-            session
-        });
-    }
-}
-exports.IndexesOperation = IndexesOperation;
-/** @internal */
-class CreateIndexesOperation extends command_1.CommandOperation {
-    constructor(parent, collectionName, indexes, options) {
-        super(parent, options);
-        this.options = options ?? {};
-        this.collectionName = collectionName;
-        this.indexes = indexes.map(userIndex => {
-            // Ensure the key is a Map to preserve index key ordering
-            const key = userIndex.key instanceof Map ? userIndex.key : new Map(Object.entries(userIndex.key));
-            const name = userIndex.name != null ? userIndex.name : Array.from(key).flat().join('_');
-            const validIndexOptions = Object.fromEntries(Object.entries({ ...userIndex }).filter(([optionName]) => VALID_INDEX_OPTIONS.has(optionName)));
-            return {
-                ...validIndexOptions,
-                name,
-                key
-            };
-        });
-    }
-    async execute(server, session) {
-        const options = this.options;
-        const indexes = this.indexes;
-        const serverWireVersion = (0, utils_1.maxWireVersion)(server);
-        const cmd = { createIndexes: this.collectionName, indexes };
-        if (options.commitQuorum != null) {
-            if (serverWireVersion < 9) {
-                throw new error_1.MongoCompatibilityError('Option `commitQuorum` for `createIndexes` not supported on servers < 4.4');
-            }
-            cmd.commitQuorum = options.commitQuorum;
-        }
-        // collation is set on each index, it should not be defined at the root
-        this.options.collation = undefined;
-        await super.executeCommand(server, session, cmd);
-        const indexNames = indexes.map(index => index.name || '');
-        return indexNames;
-    }
-}
-exports.CreateIndexesOperation = CreateIndexesOperation;
-/** @internal */
-class CreateIndexOperation extends CreateIndexesOperation {
-    constructor(parent, collectionName, indexSpec, options) {
-        super(parent, collectionName, [makeIndexSpec(indexSpec, options)], options);
-    }
-    async execute(server, session) {
-        const indexNames = await super.execute(server, session);
-        return indexNames[0];
-    }
-}
-exports.CreateIndexOperation = CreateIndexOperation;
-/** @internal */
-class EnsureIndexOperation extends CreateIndexOperation {
-    constructor(db, collectionName, indexSpec, options) {
-        super(db, collectionName, indexSpec, options);
-        this.readPreference = read_preference_1.ReadPreference.primary;
-        this.db = db;
-        this.collectionName = collectionName;
-    }
-    async execute(server, session) {
-        const indexName = this.indexes[0].name;
-        const indexes = await this.db
-            .collection(this.collectionName)
-            .listIndexes({ session })
-            .toArray()
-            .catch(error => {
-            if (error instanceof error_1.MongoError && error.code === error_1.MONGODB_ERROR_CODES.NamespaceNotFound)
-                return [];
-            throw error;
-        });
-        if (indexName && indexes.some(index => index.name === indexName))
-            return indexName;
-        return super.execute(server, session);
-    }
-}
-exports.EnsureIndexOperation = EnsureIndexOperation;
-/** @internal */
-class DropIndexOperation extends command_1.CommandOperation {
-    constructor(collection, indexName, options) {
-        super(collection, options);
-        this.options = options ?? {};
-        this.collection = collection;
-        this.indexName = indexName;
-    }
-    async execute(server, session) {
-        const cmd = { dropIndexes: this.collection.collectionName, index: this.indexName };
-        return super.executeCommand(server, session, cmd);
-    }
-}
-exports.DropIndexOperation = DropIndexOperation;
-/** @internal */
-class ListIndexesOperation extends command_1.CommandOperation {
-    constructor(collection, options) {
-        super(collection, options);
-        this.options = { ...options };
-        delete this.options.writeConcern;
-        this.collectionNamespace = collection.s.namespace;
-    }
-    async execute(server, session) {
-        const serverWireVersion = (0, utils_1.maxWireVersion)(server);
-        const cursor = this.options.batchSize ? { batchSize: this.options.batchSize } : {};
-        const command = { listIndexes: this.collectionNamespace.collection, cursor };
-        // we check for undefined specifically here to allow falsy values
-        // eslint-disable-next-line no-restricted-syntax
-        if (serverWireVersion >= 9 && this.options.comment !== undefined) {
-            command.comment = this.options.comment;
-        }
-        return super.executeCommand(server, session, command);
-    }
-}
-exports.ListIndexesOperation = ListIndexesOperation;
-/** @internal */
-class IndexExistsOperation extends operation_1.AbstractOperation {
-    constructor(collection, indexes, options) {
-        super(options);
-        this.options = options;
-        this.collection = collection;
-        this.indexes = indexes;
-    }
-    async execute(server, session) {
-        const coll = this.collection;
-        const indexes = this.indexes;
-        const info = await (0, common_functions_1.indexInformation)(coll.s.db, coll.collectionName, {
-            ...this.options,
-            readPreference: this.readPreference,
-            session
-        });
-        // Let's check for the index names
-        if (!Array.isArray(indexes))
-            return info[indexes] != null;
-        // All keys found return true
-        return indexes.every(indexName => info[indexName] != null);
-    }
-}
-exports.IndexExistsOperation = IndexExistsOperation;
-/** @internal */
-class IndexInformationOperation extends operation_1.AbstractOperation {
-    constructor(db, name, options) {
-        super(options);
-        this.options = options ?? {};
-        this.db = db;
-        this.name = name;
-    }
-    async execute(server, session) {
-        const db = this.db;
-        const name = this.name;
-        return (0, common_functions_1.indexInformation)(db, name, {
-            ...this.options,
-            readPreference: this.readPreference,
-            session
-        });
-    }
-}
-exports.IndexInformationOperation = IndexInformationOperation;
-(0, operation_1.defineAspects)(ListIndexesOperation, [
-    operation_1.Aspect.READ_OPERATION,
-    operation_1.Aspect.RETRYABLE,
-    operation_1.Aspect.CURSOR_CREATING
-]);
-(0, operation_1.defineAspects)(CreateIndexesOperation, [operation_1.Aspect.WRITE_OPERATION]);
-(0, operation_1.defineAspects)(CreateIndexOperation, [operation_1.Aspect.WRITE_OPERATION]);
-(0, operation_1.defineAspects)(EnsureIndexOperation, [operation_1.Aspect.WRITE_OPERATION]);
-(0, operation_1.defineAspects)(DropIndexOperation, [operation_1.Aspect.WRITE_OPERATION]);
-//# sourceMappingURL=indexes.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/indexes.js.map b/server/data-import/node_modules/mongodb/lib/operations/indexes.js.map
deleted file mode 100644
index 0a6f85ec19b22e749457bd4044c72770cee3c03f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/indexes.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"indexes.js","sourceRoot":"","sources":["../../src/operations/indexes.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/insert.js b/server/data-import/node_modules/mongodb/lib/operations/insert.js
deleted file mode 100644
index 47d41da860583d715cb2bd09a6b3a1321c8df2a2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/insert.js
+++ /dev/null
@@ -1,93 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.InsertManyOperation = exports.InsertOneOperation = exports.InsertOperation = void 0;
-const error_1 = require("../error");
-const write_concern_1 = require("../write_concern");
-const bulk_write_1 = require("./bulk_write");
-const command_1 = require("./command");
-const common_functions_1 = require("./common_functions");
-const operation_1 = require("./operation");
-/** @internal */
-class InsertOperation extends command_1.CommandOperation {
-    constructor(ns, documents, options) {
-        super(undefined, options);
-        this.options = { ...options, checkKeys: options.checkKeys ?? false };
-        this.ns = ns;
-        this.documents = documents;
-    }
-    async execute(server, session) {
-        const options = this.options ?? {};
-        const ordered = typeof options.ordered === 'boolean' ? options.ordered : true;
-        const command = {
-            insert: this.ns.collection,
-            documents: this.documents,
-            ordered
-        };
-        if (typeof options.bypassDocumentValidation === 'boolean') {
-            command.bypassDocumentValidation = options.bypassDocumentValidation;
-        }
-        // we check for undefined specifically here to allow falsy values
-        // eslint-disable-next-line no-restricted-syntax
-        if (options.comment !== undefined) {
-            command.comment = options.comment;
-        }
-        return super.executeCommand(server, session, command);
-    }
-}
-exports.InsertOperation = InsertOperation;
-class InsertOneOperation extends InsertOperation {
-    constructor(collection, doc, options) {
-        super(collection.s.namespace, (0, common_functions_1.prepareDocs)(collection, [doc], options), options);
-    }
-    async execute(server, session) {
-        const res = await super.execute(server, session);
-        if (res.code)
-            throw new error_1.MongoServerError(res);
-        if (res.writeErrors) {
-            // This should be a WriteError but we can't change it now because of error hierarchy
-            throw new error_1.MongoServerError(res.writeErrors[0]);
-        }
-        return {
-            acknowledged: this.writeConcern?.w !== 0,
-            insertedId: this.documents[0]._id
-        };
-    }
-}
-exports.InsertOneOperation = InsertOneOperation;
-/** @internal */
-class InsertManyOperation extends operation_1.AbstractOperation {
-    constructor(collection, docs, options) {
-        super(options);
-        if (!Array.isArray(docs)) {
-            throw new error_1.MongoInvalidArgumentError('Argument "docs" must be an array of documents');
-        }
-        this.options = options;
-        this.collection = collection;
-        this.docs = docs;
-    }
-    async execute(server, session) {
-        const coll = this.collection;
-        const options = { ...this.options, ...this.bsonOptions, readPreference: this.readPreference };
-        const writeConcern = write_concern_1.WriteConcern.fromOptions(options);
-        const bulkWriteOperation = new bulk_write_1.BulkWriteOperation(coll, (0, common_functions_1.prepareDocs)(coll, this.docs, options).map(document => ({ insertOne: { document } })), options);
-        try {
-            const res = await bulkWriteOperation.execute(server, session);
-            return {
-                acknowledged: writeConcern?.w !== 0,
-                insertedCount: res.insertedCount,
-                insertedIds: res.insertedIds
-            };
-        }
-        catch (err) {
-            if (err && err.message === 'Operation must be an object with an operation key') {
-                throw new error_1.MongoInvalidArgumentError('Collection.insertMany() cannot be called with an array that has null/undefined values');
-            }
-            throw err;
-        }
-    }
-}
-exports.InsertManyOperation = InsertManyOperation;
-(0, operation_1.defineAspects)(InsertOperation, [operation_1.Aspect.RETRYABLE, operation_1.Aspect.WRITE_OPERATION]);
-(0, operation_1.defineAspects)(InsertOneOperation, [operation_1.Aspect.RETRYABLE, operation_1.Aspect.WRITE_OPERATION]);
-(0, operation_1.defineAspects)(InsertManyOperation, [operation_1.Aspect.WRITE_OPERATION]);
-//# sourceMappingURL=insert.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/insert.js.map b/server/data-import/node_modules/mongodb/lib/operations/insert.js.map
deleted file mode 100644
index 061cebc309465847b2b89aa78a2f3404d7f05e5e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/insert.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"insert.js","sourceRoot":"","sources":["../../src/operations/insert.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/is_capped.js b/server/data-import/node_modules/mongodb/lib/operations/is_capped.js
deleted file mode 100644
index c93e7f5ef29ad8c514e22f759d6ded8a32582f9d..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/is_capped.js
+++ /dev/null
@@ -1,25 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.IsCappedOperation = void 0;
-const error_1 = require("../error");
-const operation_1 = require("./operation");
-/** @internal */
-class IsCappedOperation extends operation_1.AbstractOperation {
-    constructor(collection, options) {
-        super(options);
-        this.options = options;
-        this.collection = collection;
-    }
-    async execute(server, session) {
-        const coll = this.collection;
-        const [collection] = await coll.s.db
-            .listCollections({ name: coll.collectionName }, { ...this.options, nameOnly: false, readPreference: this.readPreference, session })
-            .toArray();
-        if (collection == null || collection.options == null) {
-            throw new error_1.MongoAPIError(`collection ${coll.namespace} not found`);
-        }
-        return !!collection.options?.capped;
-    }
-}
-exports.IsCappedOperation = IsCappedOperation;
-//# sourceMappingURL=is_capped.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/is_capped.js.map b/server/data-import/node_modules/mongodb/lib/operations/is_capped.js.map
deleted file mode 100644
index 36a90137e873d4bef652b64304e84f2cd5fb3d8a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/is_capped.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"is_capped.js","sourceRoot":"","sources":["../../src/operations/is_capped.ts"],"names":[],"mappings":";;;AACA,oCAAyC;AAGzC,2CAAuE;AAEvE,gBAAgB;AAChB,MAAa,iBAAkB,SAAQ,6BAA0B;IAI/D,YAAY,UAAsB,EAAE,OAAyB;QAC3D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE;aACjC,eAAe,CACd,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,EAC7B,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CACnF;aACA,OAAO,EAAE,CAAC;QACb,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,EAAE;YACpD,MAAM,IAAI,qBAAa,CAAC,cAAc,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC;SACnE;QACD,OAAO,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;IACtC,CAAC;CACF;AAvBD,8CAuBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/kill_cursors.js b/server/data-import/node_modules/mongodb/lib/operations/kill_cursors.js
deleted file mode 100644
index 7c8f47802c3ea6ef4e77e01fc112ca6545c10f46..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/kill_cursors.js
+++ /dev/null
@@ -1,37 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.KillCursorsOperation = void 0;
-const error_1 = require("../error");
-const operation_1 = require("./operation");
-class KillCursorsOperation extends operation_1.AbstractOperation {
-    constructor(cursorId, ns, server, options) {
-        super(options);
-        this.ns = ns;
-        this.cursorId = cursorId;
-        this.server = server;
-    }
-    async execute(server, session) {
-        if (server !== this.server) {
-            throw new error_1.MongoRuntimeError('Killcursor must run on the same server operation began on');
-        }
-        const killCursors = this.ns.collection;
-        if (killCursors == null) {
-            // Cursors should have adopted the namespace returned by MongoDB
-            // which should always defined a collection name (even a pseudo one, ex. db.aggregate())
-            throw new error_1.MongoRuntimeError('A collection name must be determined before killCursors');
-        }
-        const killCursorsCommand = {
-            killCursors,
-            cursors: [this.cursorId]
-        };
-        try {
-            await server.commandAsync(this.ns, killCursorsCommand, { session });
-        }
-        catch {
-            // The driver should never emit errors from killCursors, this is spec-ed behavior
-        }
-    }
-}
-exports.KillCursorsOperation = KillCursorsOperation;
-(0, operation_1.defineAspects)(KillCursorsOperation, [operation_1.Aspect.MUST_SELECT_SAME_SERVER]);
-//# sourceMappingURL=kill_cursors.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/kill_cursors.js.map b/server/data-import/node_modules/mongodb/lib/operations/kill_cursors.js.map
deleted file mode 100644
index eb6b8beee9de538f68c72cd19a1eafe83d1fabb2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/kill_cursors.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"kill_cursors.js","sourceRoot":"","sources":["../../src/operations/kill_cursors.ts"],"names":[],"mappings":";;;AACA,oCAA6C;AAI7C,2CAA8F;AAY9F,MAAa,oBAAqB,SAAQ,6BAAiB;IAGzD,YAAY,QAAc,EAAE,EAAoB,EAAE,MAAc,EAAE,OAAyB;QACzF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;YAC1B,MAAM,IAAI,yBAAiB,CAAC,2DAA2D,CAAC,CAAC;SAC1F;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;QACvC,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,gEAAgE;YAChE,wFAAwF;YACxF,MAAM,IAAI,yBAAiB,CAAC,yDAAyD,CAAC,CAAC;SACxF;QAED,MAAM,kBAAkB,GAAuB;YAC7C,WAAW;YACX,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;SACzB,CAAC;QACF,IAAI;YACF,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;SACrE;QAAC,MAAM;YACN,iFAAiF;SAClF;IACH,CAAC;CACF;AAhCD,oDAgCC;AAED,IAAA,yBAAa,EAAC,oBAAoB,EAAE,CAAC,kBAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/list_collections.js b/server/data-import/node_modules/mongodb/lib/operations/list_collections.js
deleted file mode 100644
index 80cc5610921d5e3024ee948eab2f62a7e7fcb0e9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/list_collections.js
+++ /dev/null
@@ -1,47 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ListCollectionsOperation = void 0;
-const utils_1 = require("../utils");
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/** @internal */
-class ListCollectionsOperation extends command_1.CommandOperation {
-    constructor(db, filter, options) {
-        super(db, options);
-        this.options = { ...options };
-        delete this.options.writeConcern;
-        this.db = db;
-        this.filter = filter;
-        this.nameOnly = !!this.options.nameOnly;
-        this.authorizedCollections = !!this.options.authorizedCollections;
-        if (typeof this.options.batchSize === 'number') {
-            this.batchSize = this.options.batchSize;
-        }
-    }
-    async execute(server, session) {
-        return super.executeCommand(server, session, this.generateCommand((0, utils_1.maxWireVersion)(server)));
-    }
-    /* This is here for the purpose of unit testing the final command that gets sent. */
-    generateCommand(wireVersion) {
-        const command = {
-            listCollections: 1,
-            filter: this.filter,
-            cursor: this.batchSize ? { batchSize: this.batchSize } : {},
-            nameOnly: this.nameOnly,
-            authorizedCollections: this.authorizedCollections
-        };
-        // we check for undefined specifically here to allow falsy values
-        // eslint-disable-next-line no-restricted-syntax
-        if (wireVersion >= 9 && this.options.comment !== undefined) {
-            command.comment = this.options.comment;
-        }
-        return command;
-    }
-}
-exports.ListCollectionsOperation = ListCollectionsOperation;
-(0, operation_1.defineAspects)(ListCollectionsOperation, [
-    operation_1.Aspect.READ_OPERATION,
-    operation_1.Aspect.RETRYABLE,
-    operation_1.Aspect.CURSOR_CREATING
-]);
-//# sourceMappingURL=list_collections.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/list_collections.js.map b/server/data-import/node_modules/mongodb/lib/operations/list_collections.js.map
deleted file mode 100644
index 4527c4a03944955c01b43d686f9c9fc58cc77bfe..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/list_collections.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"list_collections.js","sourceRoot":"","sources":["../../src/operations/list_collections.ts"],"names":[],"mappings":";;;AAIA,oCAA0C;AAC1C,uCAA2E;AAC3E,2CAAoD;AAYpD,gBAAgB;AAChB,MAAa,wBAAyB,SAAQ,0BAA0B;IAetE,YAAY,EAAM,EAAE,MAAgB,EAAE,OAAgC;QACpE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAEnB,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;QAElE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;SACzC;IACH,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,OAAO,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,oFAAoF;IACpF,eAAe,CAAC,WAAmB;QACjC,MAAM,OAAO,GAAa;YACxB,eAAe,EAAE,CAAC;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;YAC3D,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;SAClD,CAAC;QAEF,iEAAiE;QACjE,gDAAgD;QAChD,IAAI,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YAC1D,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SACxC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AApDD,4DAoDC;AAcD,IAAA,yBAAa,EAAC,wBAAwB,EAAE;IACtC,kBAAM,CAAC,cAAc;IACrB,kBAAM,CAAC,SAAS;IAChB,kBAAM,CAAC,eAAe;CACvB,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/list_databases.js b/server/data-import/node_modules/mongodb/lib/operations/list_databases.js
deleted file mode 100644
index 6fd69da60adda5b69fd6e7b8763fd26cabcd3948..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/list_databases.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ListDatabasesOperation = void 0;
-const utils_1 = require("../utils");
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/** @internal */
-class ListDatabasesOperation extends command_1.CommandOperation {
-    constructor(db, options) {
-        super(db, options);
-        this.options = options ?? {};
-        this.ns = new utils_1.MongoDBNamespace('admin', '$cmd');
-    }
-    async execute(server, session) {
-        const cmd = { listDatabases: 1 };
-        if (typeof this.options.nameOnly === 'boolean') {
-            cmd.nameOnly = this.options.nameOnly;
-        }
-        if (this.options.filter) {
-            cmd.filter = this.options.filter;
-        }
-        if (typeof this.options.authorizedDatabases === 'boolean') {
-            cmd.authorizedDatabases = this.options.authorizedDatabases;
-        }
-        // we check for undefined specifically here to allow falsy values
-        // eslint-disable-next-line no-restricted-syntax
-        if ((0, utils_1.maxWireVersion)(server) >= 9 && this.options.comment !== undefined) {
-            cmd.comment = this.options.comment;
-        }
-        return super.executeCommand(server, session, cmd);
-    }
-}
-exports.ListDatabasesOperation = ListDatabasesOperation;
-(0, operation_1.defineAspects)(ListDatabasesOperation, [operation_1.Aspect.READ_OPERATION, operation_1.Aspect.RETRYABLE]);
-//# sourceMappingURL=list_databases.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/list_databases.js.map b/server/data-import/node_modules/mongodb/lib/operations/list_databases.js.map
deleted file mode 100644
index db66161a6af057972bbe1289a0a2e02a3b52e510..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/list_databases.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"list_databases.js","sourceRoot":"","sources":["../../src/operations/list_databases.ts"],"names":[],"mappings":";;;AAKA,oCAA4D;AAC5D,uCAA2E;AAC3E,2CAAoD;AAoBpD,gBAAgB;AAChB,MAAa,sBAAuB,SAAQ,0BAAqC;IAG/E,YAAY,EAAM,EAAE,OAA8B;QAChD,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,EAAE,GAAG,IAAI,wBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAEQ,KAAK,CAAC,OAAO,CACpB,MAAc,EACd,OAAkC;QAElC,MAAM,GAAG,GAAa,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;QAE3C,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC9C,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;SACtC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SAClC;QAED,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS,EAAE;YACzD,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;SAC5D;QAED,iEAAiE;QACjE,gDAAgD;QAChD,IAAI,IAAA,sBAAc,EAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YACrE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SACpC;QAED,OAAO,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAmB,CAAC;IACtE,CAAC;CACF;AAnCD,wDAmCC;AAED,IAAA,yBAAa,EAAC,sBAAsB,EAAE,CAAC,kBAAM,CAAC,cAAc,EAAE,kBAAM,CAAC,SAAS,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/operation.js b/server/data-import/node_modules/mongodb/lib/operations/operation.js
deleted file mode 100644
index 1f165abe36acbedab03cebe812c336a9ab6a7169..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/operation.js
+++ /dev/null
@@ -1,69 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.defineAspects = exports.AbstractOperation = exports.Aspect = void 0;
-const bson_1 = require("../bson");
-const read_preference_1 = require("../read_preference");
-exports.Aspect = {
-    READ_OPERATION: Symbol('READ_OPERATION'),
-    WRITE_OPERATION: Symbol('WRITE_OPERATION'),
-    RETRYABLE: Symbol('RETRYABLE'),
-    EXPLAINABLE: Symbol('EXPLAINABLE'),
-    SKIP_COLLATION: Symbol('SKIP_COLLATION'),
-    CURSOR_CREATING: Symbol('CURSOR_CREATING'),
-    MUST_SELECT_SAME_SERVER: Symbol('MUST_SELECT_SAME_SERVER')
-};
-/** @internal */
-const kSession = Symbol('session');
-/**
- * This class acts as a parent class for any operation and is responsible for setting this.options,
- * as well as setting and getting a session.
- * Additionally, this class implements `hasAspect`, which determines whether an operation has
- * a specific aspect.
- * @internal
- */
-class AbstractOperation {
-    constructor(options = {}) {
-        this.readPreference = this.hasAspect(exports.Aspect.WRITE_OPERATION)
-            ? read_preference_1.ReadPreference.primary
-            : read_preference_1.ReadPreference.fromOptions(options) ?? read_preference_1.ReadPreference.primary;
-        // Pull the BSON serialize options from the already-resolved options
-        this.bsonOptions = (0, bson_1.resolveBSONOptions)(options);
-        this[kSession] = options.session != null ? options.session : undefined;
-        this.options = options;
-        this.bypassPinningCheck = !!options.bypassPinningCheck;
-        this.trySecondaryWrite = false;
-    }
-    hasAspect(aspect) {
-        const ctor = this.constructor;
-        if (ctor.aspects == null) {
-            return false;
-        }
-        return ctor.aspects.has(aspect);
-    }
-    get session() {
-        return this[kSession];
-    }
-    clearSession() {
-        this[kSession] = undefined;
-    }
-    get canRetryRead() {
-        return true;
-    }
-    get canRetryWrite() {
-        return true;
-    }
-}
-exports.AbstractOperation = AbstractOperation;
-function defineAspects(operation, aspects) {
-    if (!Array.isArray(aspects) && !(aspects instanceof Set)) {
-        aspects = [aspects];
-    }
-    aspects = new Set(aspects);
-    Object.defineProperty(operation, 'aspects', {
-        value: aspects,
-        writable: false
-    });
-    return aspects;
-}
-exports.defineAspects = defineAspects;
-//# sourceMappingURL=operation.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/operation.js.map b/server/data-import/node_modules/mongodb/lib/operations/operation.js.map
deleted file mode 100644
index d8ea9b6e3af9e7bf026d2b1eca6470db8f09a923..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/operation.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../src/operations/operation.ts"],"names":[],"mappings":";;;AAAA,kCAAuF;AACvF,wDAA6E;AAKhE,QAAA,MAAM,GAAG;IACpB,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC1C,uBAAuB,EAAE,MAAM,CAAC,yBAAyB,CAAC;CAClD,CAAC;AAwBX,gBAAgB;AAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAEnC;;;;;;GAMG;AACH,MAAsB,iBAAiB;IAcrC,YAAY,UAA4B,EAAE;QACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAM,CAAC,eAAe,CAAC;YAC1D,CAAC,CAAC,gCAAc,CAAC,OAAO;YACxB,CAAC,CAAC,gCAAc,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,gCAAc,CAAC,OAAO,CAAC;QAElE,oEAAoE;QACpE,IAAI,CAAC,WAAW,GAAG,IAAA,yBAAkB,EAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACvD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;IAID,SAAS,CAAC,MAAc;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAmC,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACxB,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAvDD,8CAuDC;AAED,SAAgB,aAAa,CAC3B,SAA+B,EAC/B,OAAwC;IAExC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,YAAY,GAAG,CAAC,EAAE;QACxD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;KACrB;IAED,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE;QAC1C,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAfD,sCAeC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/options_operation.js b/server/data-import/node_modules/mongodb/lib/operations/options_operation.js
deleted file mode 100644
index 7a08048710fbdebc113f532f72b8757d28b8d495..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/options_operation.js
+++ /dev/null
@@ -1,25 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.OptionsOperation = void 0;
-const error_1 = require("../error");
-const operation_1 = require("./operation");
-/** @internal */
-class OptionsOperation extends operation_1.AbstractOperation {
-    constructor(collection, options) {
-        super(options);
-        this.options = options;
-        this.collection = collection;
-    }
-    async execute(server, session) {
-        const coll = this.collection;
-        const [collection] = await coll.s.db
-            .listCollections({ name: coll.collectionName }, { ...this.options, nameOnly: false, readPreference: this.readPreference, session })
-            .toArray();
-        if (collection == null || collection.options == null) {
-            throw new error_1.MongoAPIError(`collection ${coll.namespace} not found`);
-        }
-        return collection.options;
-    }
-}
-exports.OptionsOperation = OptionsOperation;
-//# sourceMappingURL=options_operation.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/options_operation.js.map b/server/data-import/node_modules/mongodb/lib/operations/options_operation.js.map
deleted file mode 100644
index 909f9c30b064d6afff7e0d73d7c84e49b9aa9a61..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/options_operation.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"options_operation.js","sourceRoot":"","sources":["../../src/operations/options_operation.ts"],"names":[],"mappings":";;;AAEA,oCAAyC;AAGzC,2CAAuE;AAEvE,gBAAgB;AAChB,MAAa,gBAAiB,SAAQ,6BAA2B;IAI/D,YAAY,UAAsB,EAAE,OAAyB;QAC3D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE;aACjC,eAAe,CACd,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,EAC7B,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CACnF;aACA,OAAO,EAAE,CAAC;QACb,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,EAAE;YACpD,MAAM,IAAI,qBAAa,CAAC,cAAc,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC;SACnE;QACD,OAAO,UAAU,CAAC,OAAO,CAAC;IAC5B,CAAC;CACF;AAvBD,4CAuBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/profiling_level.js b/server/data-import/node_modules/mongodb/lib/operations/profiling_level.js
deleted file mode 100644
index 1dfb7299a7ae1f6326a2a50dbbbbcedd293327d0..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/profiling_level.js
+++ /dev/null
@@ -1,30 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ProfilingLevelOperation = void 0;
-const error_1 = require("../error");
-const command_1 = require("./command");
-/** @internal */
-class ProfilingLevelOperation extends command_1.CommandOperation {
-    constructor(db, options) {
-        super(db, options);
-        this.options = options;
-    }
-    async execute(server, session) {
-        const doc = await super.executeCommand(server, session, { profile: -1 });
-        if (doc.ok === 1) {
-            const was = doc.was;
-            if (was === 0)
-                return 'off';
-            if (was === 1)
-                return 'slow_only';
-            if (was === 2)
-                return 'all';
-            throw new error_1.MongoUnexpectedServerResponseError(`Illegal profiling level value ${was}`);
-        }
-        else {
-            throw new error_1.MongoUnexpectedServerResponseError('Error with profile command');
-        }
-    }
-}
-exports.ProfilingLevelOperation = ProfilingLevelOperation;
-//# sourceMappingURL=profiling_level.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/profiling_level.js.map b/server/data-import/node_modules/mongodb/lib/operations/profiling_level.js.map
deleted file mode 100644
index b836dbeec5951b69d43dede2a2bb77e90a02f00b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/profiling_level.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"profiling_level.js","sourceRoot":"","sources":["../../src/operations/profiling_level.ts"],"names":[],"mappings":";;;AACA,oCAA8D;AAG9D,uCAA2E;AAK3E,gBAAgB;AAChB,MAAa,uBAAwB,SAAQ,0BAAwB;IAGnE,YAAY,EAAM,EAAE,OAA8B;QAChD,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE;YAChB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;YACpB,IAAI,GAAG,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC5B,IAAI,GAAG,KAAK,CAAC;gBAAE,OAAO,WAAW,CAAC;YAClC,IAAI,GAAG,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC5B,MAAM,IAAI,0CAAkC,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;SACtF;aAAM;YACL,MAAM,IAAI,0CAAkC,CAAC,4BAA4B,CAAC,CAAC;SAC5E;IACH,CAAC;CACF;AApBD,0DAoBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/remove_user.js b/server/data-import/node_modules/mongodb/lib/operations/remove_user.js
deleted file mode 100644
index 54ed3b8373c6297b57d3dc6c8d4a4f05a3a54b2f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/remove_user.js
+++ /dev/null
@@ -1,20 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.RemoveUserOperation = void 0;
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/** @internal */
-class RemoveUserOperation extends command_1.CommandOperation {
-    constructor(db, username, options) {
-        super(db, options);
-        this.options = options;
-        this.username = username;
-    }
-    async execute(server, session) {
-        await super.executeCommand(server, session, { dropUser: this.username });
-        return true;
-    }
-}
-exports.RemoveUserOperation = RemoveUserOperation;
-(0, operation_1.defineAspects)(RemoveUserOperation, [operation_1.Aspect.WRITE_OPERATION]);
-//# sourceMappingURL=remove_user.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/remove_user.js.map b/server/data-import/node_modules/mongodb/lib/operations/remove_user.js.map
deleted file mode 100644
index 23609369dbc297678f00cf95c59f174025889704..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/remove_user.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"remove_user.js","sourceRoot":"","sources":["../../src/operations/remove_user.ts"],"names":[],"mappings":";;;AAGA,uCAA2E;AAC3E,2CAAoD;AAKpD,gBAAgB;AAChB,MAAa,mBAAoB,SAAQ,0BAAyB;IAIhE,YAAY,EAAM,EAAE,QAAgB,EAAE,OAA0B;QAC9D,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAdD,kDAcC;AAED,IAAA,yBAAa,EAAC,mBAAmB,EAAE,CAAC,kBAAM,CAAC,eAAe,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/rename.js b/server/data-import/node_modules/mongodb/lib/operations/rename.js
deleted file mode 100644
index 667213e341b9f1e51647b52c61d5a05caf5dd856..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/rename.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.RenameOperation = void 0;
-const collection_1 = require("../collection");
-const utils_1 = require("../utils");
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/** @internal */
-class RenameOperation extends command_1.CommandOperation {
-    constructor(collection, newName, options) {
-        super(collection, options);
-        this.collection = collection;
-        this.newName = newName;
-        this.options = options;
-        this.ns = new utils_1.MongoDBNamespace('admin', '$cmd');
-    }
-    async execute(server, session) {
-        // Build the command
-        const renameCollection = this.collection.namespace;
-        const toCollection = this.collection.s.namespace.withCollection(this.newName).toString();
-        const dropTarget = typeof this.options.dropTarget === 'boolean' ? this.options.dropTarget : false;
-        const command = {
-            renameCollection: renameCollection,
-            to: toCollection,
-            dropTarget: dropTarget
-        };
-        await super.executeCommand(server, session, command);
-        return new collection_1.Collection(this.collection.s.db, this.newName, this.collection.s.options);
-    }
-}
-exports.RenameOperation = RenameOperation;
-(0, operation_1.defineAspects)(RenameOperation, [operation_1.Aspect.WRITE_OPERATION]);
-//# sourceMappingURL=rename.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/rename.js.map b/server/data-import/node_modules/mongodb/lib/operations/rename.js.map
deleted file mode 100644
index 90221b540c833ab8af8dca2f74f96b3d2366d3f7..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/rename.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"rename.js","sourceRoot":"","sources":["../../src/operations/rename.ts"],"names":[],"mappings":";;;AACA,8CAA2C;AAG3C,oCAA4C;AAC5C,uCAA2E;AAC3E,2CAAoD;AAUpD,gBAAgB;AAChB,MAAa,eAAgB,SAAQ,0BAA0B;IAC7D,YACS,UAAsB,EACtB,OAAe,EACN,OAAsB;QAEtC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAJpB,eAAU,GAAV,UAAU,CAAY;QACtB,YAAO,GAAP,OAAO,CAAQ;QACN,YAAO,GAAP,OAAO,CAAe;QAGtC,IAAI,CAAC,EAAE,GAAG,IAAI,wBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,oBAAoB;QACpB,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzF,MAAM,UAAU,GACd,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;QAEjF,MAAM,OAAO,GAAG;YACd,gBAAgB,EAAE,gBAAgB;YAClC,EAAE,EAAE,YAAY;YAChB,UAAU,EAAE,UAAU;SACvB,CAAC;QAEF,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,uBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACvF,CAAC;CACF;AA1BD,0CA0BC;AAED,IAAA,yBAAa,EAAC,eAAe,EAAE,CAAC,kBAAM,CAAC,eAAe,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/run_command.js b/server/data-import/node_modules/mongodb/lib/operations/run_command.js
deleted file mode 100644
index 6d916c9cb0a75adbd9f60b5621842beff5ed91fe..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/run_command.js
+++ /dev/null
@@ -1,41 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.RunAdminCommandOperation = exports.RunCommandOperation = void 0;
-const utils_1 = require("../utils");
-const operation_1 = require("./operation");
-/** @internal */
-class RunCommandOperation extends operation_1.AbstractOperation {
-    constructor(parent, command, options) {
-        super(options);
-        this.command = command;
-        this.options = options;
-        this.ns = parent.s.namespace.withCollection('$cmd');
-    }
-    async execute(server, session) {
-        this.server = server;
-        return server.commandAsync(this.ns, this.command, {
-            ...this.options,
-            readPreference: this.readPreference,
-            session
-        });
-    }
-}
-exports.RunCommandOperation = RunCommandOperation;
-class RunAdminCommandOperation extends operation_1.AbstractOperation {
-    constructor(command, options) {
-        super(options);
-        this.command = command;
-        this.options = options;
-        this.ns = new utils_1.MongoDBNamespace('admin', '$cmd');
-    }
-    async execute(server, session) {
-        this.server = server;
-        return server.commandAsync(this.ns, this.command, {
-            ...this.options,
-            readPreference: this.readPreference,
-            session
-        });
-    }
-}
-exports.RunAdminCommandOperation = RunAdminCommandOperation;
-//# sourceMappingURL=run_command.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/run_command.js.map b/server/data-import/node_modules/mongodb/lib/operations/run_command.js.map
deleted file mode 100644
index 4a8c73009c9cd4ff25bf8259a3bce38bd37097ac..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/run_command.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"run_command.js","sourceRoot":"","sources":["../../src/operations/run_command.ts"],"names":[],"mappings":";;;AAMA,oCAA4C;AAC5C,2CAAgD;AAUhD,gBAAgB;AAChB,MAAa,mBAAkC,SAAQ,6BAAoB;IACzE,YAAY,MAAU,EAAS,OAAiB,EAAkB,OAA0B;QAC1F,KAAK,CAAC,OAAO,CAAC,CAAC;QADc,YAAO,GAAP,OAAO,CAAU;QAAkB,YAAO,GAAP,OAAO,CAAmB;QAE1F,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE;YAChD,GAAG,IAAI,CAAC,OAAO;YACf,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,OAAO;SACR,CAAmB,CAAC;IACvB,CAAC;CACF;AAdD,kDAcC;AAED,MAAa,wBAAuC,SAAQ,6BAAoB;IAC9E,YACS,OAAiB,EACR,OAGf;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QANR,YAAO,GAAP,OAAO,CAAU;QACR,YAAO,GAAP,OAAO,CAGtB;QAGD,IAAI,CAAC,EAAE,GAAG,IAAI,wBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE;YAChD,GAAG,IAAI,CAAC,OAAO;YACf,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,OAAO;SACR,CAAmB,CAAC;IACvB,CAAC;CACF;AApBD,4DAoBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/search_indexes/create.js b/server/data-import/node_modules/mongodb/lib/operations/search_indexes/create.js
deleted file mode 100644
index bf37ea8d2fbb568bed3d0b2e188ace092cff31aa..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/search_indexes/create.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.CreateSearchIndexesOperation = void 0;
-const operation_1 = require("../operation");
-/** @internal */
-class CreateSearchIndexesOperation extends operation_1.AbstractOperation {
-    constructor(collection, descriptions) {
-        super();
-        this.collection = collection;
-        this.descriptions = descriptions;
-    }
-    async execute(server, session) {
-        const namespace = this.collection.fullNamespace;
-        const command = {
-            createSearchIndexes: namespace.collection,
-            indexes: this.descriptions
-        };
-        const res = await server.commandAsync(namespace, command, { session });
-        const indexesCreated = res?.indexesCreated ?? [];
-        return indexesCreated.map(({ name }) => name);
-    }
-}
-exports.CreateSearchIndexesOperation = CreateSearchIndexesOperation;
-//# sourceMappingURL=create.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/search_indexes/create.js.map b/server/data-import/node_modules/mongodb/lib/operations/search_indexes/create.js.map
deleted file mode 100644
index 038116bbd173e8f0692bbdc23e5be98908faa624..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/search_indexes/create.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/operations/search_indexes/create.ts"],"names":[],"mappings":";;;AAKA,4CAAiD;AAajD,gBAAgB;AAChB,MAAa,4BAA6B,SAAQ,6BAA2B;IAC3E,YACmB,UAAsB,EACtB,YAAmD;QAEpE,KAAK,EAAE,CAAC;QAHS,eAAU,GAAV,UAAU,CAAY;QACtB,iBAAY,GAAZ,YAAY,CAAuC;IAGtE,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAChD,MAAM,OAAO,GAAG;YACd,mBAAmB,EAAE,SAAS,CAAC,UAAU;YACzC,OAAO,EAAE,IAAI,CAAC,YAAY;SAC3B,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvE,MAAM,cAAc,GAA4B,GAAG,EAAE,cAAc,IAAI,EAAE,CAAC;QAC1E,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AApBD,oEAoBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/search_indexes/drop.js b/server/data-import/node_modules/mongodb/lib/operations/search_indexes/drop.js
deleted file mode 100644
index 01c6c7e75b01650b016caf361ada620d0f8501aa..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/search_indexes/drop.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.DropSearchIndexOperation = void 0;
-const error_1 = require("../../error");
-const operation_1 = require("../operation");
-/** @internal */
-class DropSearchIndexOperation extends operation_1.AbstractOperation {
-    constructor(collection, name) {
-        super();
-        this.collection = collection;
-        this.name = name;
-    }
-    async execute(server, session) {
-        const namespace = this.collection.fullNamespace;
-        const command = {
-            dropSearchIndex: namespace.collection
-        };
-        if (typeof this.name === 'string') {
-            command.name = this.name;
-        }
-        try {
-            await server.commandAsync(namespace, command, { session });
-        }
-        catch (error) {
-            const isNamespaceNotFoundError = error instanceof error_1.MongoServerError && error.code === error_1.MONGODB_ERROR_CODES.NamespaceNotFound;
-            if (!isNamespaceNotFoundError) {
-                throw error;
-            }
-        }
-    }
-}
-exports.DropSearchIndexOperation = DropSearchIndexOperation;
-//# sourceMappingURL=drop.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/search_indexes/drop.js.map b/server/data-import/node_modules/mongodb/lib/operations/search_indexes/drop.js.map
deleted file mode 100644
index e99df4f48ce606b8855d954bc079bc8417be548f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/search_indexes/drop.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"drop.js","sourceRoot":"","sources":["../../../src/operations/search_indexes/drop.ts"],"names":[],"mappings":";;;AAGA,uCAAoE;AAGpE,4CAAiD;AAEjD,gBAAgB;AAChB,MAAa,wBAAyB,SAAQ,6BAAuB;IACnE,YAA6B,UAAsB,EAAmB,IAAY;QAChF,KAAK,EAAE,CAAC;QADmB,eAAU,GAAV,UAAU,CAAY;QAAmB,SAAI,GAAJ,IAAI,CAAQ;IAElF,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAEhD,MAAM,OAAO,GAAa;YACxB,eAAe,EAAE,SAAS,CAAC,UAAU;SACtC,CAAC;QAEF,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YACjC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAC1B;QAED,IAAI;YACF,MAAM,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;SAC5D;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,wBAAwB,GAC5B,KAAK,YAAY,wBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,2BAAmB,CAAC,iBAAiB,CAAC;YAC5F,IAAI,CAAC,wBAAwB,EAAE;gBAC7B,MAAM,KAAK,CAAC;aACb;SACF;IACH,CAAC;CACF;AA1BD,4DA0BC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/search_indexes/update.js b/server/data-import/node_modules/mongodb/lib/operations/search_indexes/update.js
deleted file mode 100644
index d6b1f50e79afea847c1c2477882c1c53f17e708c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/search_indexes/update.js
+++ /dev/null
@@ -1,25 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.UpdateSearchIndexOperation = void 0;
-const operation_1 = require("../operation");
-/** @internal */
-class UpdateSearchIndexOperation extends operation_1.AbstractOperation {
-    constructor(collection, name, definition) {
-        super();
-        this.collection = collection;
-        this.name = name;
-        this.definition = definition;
-    }
-    async execute(server, session) {
-        const namespace = this.collection.fullNamespace;
-        const command = {
-            updateSearchIndex: namespace.collection,
-            name: this.name,
-            definition: this.definition
-        };
-        await server.commandAsync(namespace, command, { session });
-        return;
-    }
-}
-exports.UpdateSearchIndexOperation = UpdateSearchIndexOperation;
-//# sourceMappingURL=update.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/search_indexes/update.js.map b/server/data-import/node_modules/mongodb/lib/operations/search_indexes/update.js.map
deleted file mode 100644
index eff76bdff8ad9811f1c6cf25376190dd6004cd76..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/search_indexes/update.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/operations/search_indexes/update.ts"],"names":[],"mappings":";;;AAKA,4CAAiD;AAEjD,gBAAgB;AAChB,MAAa,0BAA2B,SAAQ,6BAAuB;IACrE,YACmB,UAAsB,EACtB,IAAY,EACZ,UAAoB;QAErC,KAAK,EAAE,CAAC;QAJS,eAAU,GAAV,UAAU,CAAY;QACtB,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAU;IAGvC,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAChD,MAAM,OAAO,GAAG;YACd,iBAAiB,EAAE,SAAS,CAAC,UAAU;YACvC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;QAEF,MAAM,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;CACF;AApBD,gEAoBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/set_profiling_level.js b/server/data-import/node_modules/mongodb/lib/operations/set_profiling_level.js
deleted file mode 100644
index 7eb7e7bcae0cbd01a8af304bfb738b58e852d832..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/set_profiling_level.js
+++ /dev/null
@@ -1,46 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.SetProfilingLevelOperation = exports.ProfilingLevel = void 0;
-const error_1 = require("../error");
-const utils_1 = require("../utils");
-const command_1 = require("./command");
-const levelValues = new Set(['off', 'slow_only', 'all']);
-/** @public */
-exports.ProfilingLevel = Object.freeze({
-    off: 'off',
-    slowOnly: 'slow_only',
-    all: 'all'
-});
-/** @internal */
-class SetProfilingLevelOperation extends command_1.CommandOperation {
-    constructor(db, level, options) {
-        super(db, options);
-        this.options = options;
-        switch (level) {
-            case exports.ProfilingLevel.off:
-                this.profile = 0;
-                break;
-            case exports.ProfilingLevel.slowOnly:
-                this.profile = 1;
-                break;
-            case exports.ProfilingLevel.all:
-                this.profile = 2;
-                break;
-            default:
-                this.profile = 0;
-                break;
-        }
-        this.level = level;
-    }
-    async execute(server, session) {
-        const level = this.level;
-        if (!levelValues.has(level)) {
-            throw new error_1.MongoInvalidArgumentError(`Profiling level must be one of "${(0, utils_1.enumToString)(exports.ProfilingLevel)}"`);
-        }
-        // TODO(NODE-3483): Determine error to put here
-        await super.executeCommand(server, session, { profile: this.profile });
-        return level;
-    }
-}
-exports.SetProfilingLevelOperation = SetProfilingLevelOperation;
-//# sourceMappingURL=set_profiling_level.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/set_profiling_level.js.map b/server/data-import/node_modules/mongodb/lib/operations/set_profiling_level.js.map
deleted file mode 100644
index c751cb94ea2c34a075851036e06d0a251d4b6e6f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/set_profiling_level.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"set_profiling_level.js","sourceRoot":"","sources":["../../src/operations/set_profiling_level.ts"],"names":[],"mappings":";;;AACA,oCAAqD;AAGrD,oCAAwC;AACxC,uCAA2E;AAE3E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAEzD,cAAc;AACD,QAAA,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,GAAG,EAAE,KAAK;IACV,QAAQ,EAAE,WAAW;IACrB,GAAG,EAAE,KAAK;CACF,CAAC,CAAC;AAQZ,gBAAgB;AAChB,MAAa,0BAA2B,SAAQ,0BAAgC;IAK9E,YAAY,EAAM,EAAE,KAAqB,EAAE,OAAiC;QAC1E,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,QAAQ,KAAK,EAAE;YACb,KAAK,sBAAc,CAAC,GAAG;gBACrB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,sBAAc,CAAC,QAAQ;gBAC1B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,sBAAc,CAAC,GAAG;gBACrB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBACjB,MAAM;YACR;gBACE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBACjB,MAAM;SACT;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEQ,KAAK,CAAC,OAAO,CACpB,MAAc,EACd,OAAkC;QAElC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC3B,MAAM,IAAI,iCAAyB,CACjC,mCAAmC,IAAA,oBAAY,EAAC,sBAAc,CAAC,GAAG,CACnE,CAAC;SACH;QAED,+CAA+C;QAC/C,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA1CD,gEA0CC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/stats.js b/server/data-import/node_modules/mongodb/lib/operations/stats.js
deleted file mode 100644
index 0b601123a348f6f456f4d0eae9879fc0f84e04ba..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/stats.js
+++ /dev/null
@@ -1,22 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.DbStatsOperation = void 0;
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/** @internal */
-class DbStatsOperation extends command_1.CommandOperation {
-    constructor(db, options) {
-        super(db, options);
-        this.options = options;
-    }
-    async execute(server, session) {
-        const command = { dbStats: true };
-        if (this.options.scale != null) {
-            command.scale = this.options.scale;
-        }
-        return super.executeCommand(server, session, command);
-    }
-}
-exports.DbStatsOperation = DbStatsOperation;
-(0, operation_1.defineAspects)(DbStatsOperation, [operation_1.Aspect.READ_OPERATION]);
-//# sourceMappingURL=stats.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/stats.js.map b/server/data-import/node_modules/mongodb/lib/operations/stats.js.map
deleted file mode 100644
index f5fd4cb7e955533c7d4e6b82083d20004eec76ef..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/stats.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/operations/stats.ts"],"names":[],"mappings":";;;AAIA,uCAA2E;AAC3E,2CAAoD;AAQpD,gBAAgB;AAChB,MAAa,gBAAiB,SAAQ,0BAA0B;IAG9D,YAAY,EAAM,EAAE,OAAuB;QACzC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,OAAO,GAAa,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;YAC9B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;SACpC;QAED,OAAO,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;CACF;AAhBD,4CAgBC;AAED,IAAA,yBAAa,EAAC,gBAAgB,EAAE,CAAC,kBAAM,CAAC,cAAc,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/update.js b/server/data-import/node_modules/mongodb/lib/operations/update.js
deleted file mode 100644
index 2ce84cafa08abe9314611d7d940b5d634f349492..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/update.js
+++ /dev/null
@@ -1,176 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.makeUpdateStatement = exports.ReplaceOneOperation = exports.UpdateManyOperation = exports.UpdateOneOperation = exports.UpdateOperation = void 0;
-const error_1 = require("../error");
-const utils_1 = require("../utils");
-const command_1 = require("./command");
-const operation_1 = require("./operation");
-/**
- * @internal
- * UpdateOperation is used in bulk write, while UpdateOneOperation and UpdateManyOperation are only used in the collections API
- */
-class UpdateOperation extends command_1.CommandOperation {
-    constructor(ns, statements, options) {
-        super(undefined, options);
-        this.options = options;
-        this.ns = ns;
-        this.statements = statements;
-    }
-    get canRetryWrite() {
-        if (super.canRetryWrite === false) {
-            return false;
-        }
-        return this.statements.every(op => op.multi == null || op.multi === false);
-    }
-    async execute(server, session) {
-        const options = this.options ?? {};
-        const ordered = typeof options.ordered === 'boolean' ? options.ordered : true;
-        const command = {
-            update: this.ns.collection,
-            updates: this.statements,
-            ordered
-        };
-        if (typeof options.bypassDocumentValidation === 'boolean') {
-            command.bypassDocumentValidation = options.bypassDocumentValidation;
-        }
-        if (options.let) {
-            command.let = options.let;
-        }
-        // we check for undefined specifically here to allow falsy values
-        // eslint-disable-next-line no-restricted-syntax
-        if (options.comment !== undefined) {
-            command.comment = options.comment;
-        }
-        const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0;
-        if (unacknowledgedWrite) {
-            if (this.statements.find((o) => o.hint)) {
-                // TODO(NODE-3541): fix error for hint with unacknowledged writes
-                throw new error_1.MongoCompatibilityError(`hint is not supported with unacknowledged writes`);
-            }
-        }
-        return super.executeCommand(server, session, command);
-    }
-}
-exports.UpdateOperation = UpdateOperation;
-/** @internal */
-class UpdateOneOperation extends UpdateOperation {
-    constructor(collection, filter, update, options) {
-        super(collection.s.namespace, [makeUpdateStatement(filter, update, { ...options, multi: false })], options);
-        if (!(0, utils_1.hasAtomicOperators)(update)) {
-            throw new error_1.MongoInvalidArgumentError('Update document requires atomic operators');
-        }
-    }
-    async execute(server, session) {
-        const res = await super.execute(server, session);
-        if (this.explain != null)
-            return res;
-        if (res.code)
-            throw new error_1.MongoServerError(res);
-        if (res.writeErrors)
-            throw new error_1.MongoServerError(res.writeErrors[0]);
-        return {
-            acknowledged: this.writeConcern?.w !== 0,
-            modifiedCount: res.nModified ?? res.n,
-            upsertedId: Array.isArray(res.upserted) && res.upserted.length > 0 ? res.upserted[0]._id : null,
-            upsertedCount: Array.isArray(res.upserted) && res.upserted.length ? res.upserted.length : 0,
-            matchedCount: Array.isArray(res.upserted) && res.upserted.length > 0 ? 0 : res.n
-        };
-    }
-}
-exports.UpdateOneOperation = UpdateOneOperation;
-/** @internal */
-class UpdateManyOperation extends UpdateOperation {
-    constructor(collection, filter, update, options) {
-        super(collection.s.namespace, [makeUpdateStatement(filter, update, { ...options, multi: true })], options);
-        if (!(0, utils_1.hasAtomicOperators)(update)) {
-            throw new error_1.MongoInvalidArgumentError('Update document requires atomic operators');
-        }
-    }
-    async execute(server, session) {
-        const res = await super.execute(server, session);
-        if (this.explain != null)
-            return res;
-        if (res.code)
-            throw new error_1.MongoServerError(res);
-        if (res.writeErrors)
-            throw new error_1.MongoServerError(res.writeErrors[0]);
-        return {
-            acknowledged: this.writeConcern?.w !== 0,
-            modifiedCount: res.nModified ?? res.n,
-            upsertedId: Array.isArray(res.upserted) && res.upserted.length > 0 ? res.upserted[0]._id : null,
-            upsertedCount: Array.isArray(res.upserted) && res.upserted.length ? res.upserted.length : 0,
-            matchedCount: Array.isArray(res.upserted) && res.upserted.length > 0 ? 0 : res.n
-        };
-    }
-}
-exports.UpdateManyOperation = UpdateManyOperation;
-/** @internal */
-class ReplaceOneOperation extends UpdateOperation {
-    constructor(collection, filter, replacement, options) {
-        super(collection.s.namespace, [makeUpdateStatement(filter, replacement, { ...options, multi: false })], options);
-        if ((0, utils_1.hasAtomicOperators)(replacement)) {
-            throw new error_1.MongoInvalidArgumentError('Replacement document must not contain atomic operators');
-        }
-    }
-    async execute(server, session) {
-        const res = await super.execute(server, session);
-        if (this.explain != null)
-            return res;
-        if (res.code)
-            throw new error_1.MongoServerError(res);
-        if (res.writeErrors)
-            throw new error_1.MongoServerError(res.writeErrors[0]);
-        return {
-            acknowledged: this.writeConcern?.w !== 0,
-            modifiedCount: res.nModified ?? res.n,
-            upsertedId: Array.isArray(res.upserted) && res.upserted.length > 0 ? res.upserted[0]._id : null,
-            upsertedCount: Array.isArray(res.upserted) && res.upserted.length ? res.upserted.length : 0,
-            matchedCount: Array.isArray(res.upserted) && res.upserted.length > 0 ? 0 : res.n
-        };
-    }
-}
-exports.ReplaceOneOperation = ReplaceOneOperation;
-function makeUpdateStatement(filter, update, options) {
-    if (filter == null || typeof filter !== 'object') {
-        throw new error_1.MongoInvalidArgumentError('Selector must be a valid JavaScript object');
-    }
-    if (update == null || typeof update !== 'object') {
-        throw new error_1.MongoInvalidArgumentError('Document must be a valid JavaScript object');
-    }
-    const op = { q: filter, u: update };
-    if (typeof options.upsert === 'boolean') {
-        op.upsert = options.upsert;
-    }
-    if (options.multi) {
-        op.multi = options.multi;
-    }
-    if (options.hint) {
-        op.hint = options.hint;
-    }
-    if (options.arrayFilters) {
-        op.arrayFilters = options.arrayFilters;
-    }
-    if (options.collation) {
-        op.collation = options.collation;
-    }
-    return op;
-}
-exports.makeUpdateStatement = makeUpdateStatement;
-(0, operation_1.defineAspects)(UpdateOperation, [operation_1.Aspect.RETRYABLE, operation_1.Aspect.WRITE_OPERATION, operation_1.Aspect.SKIP_COLLATION]);
-(0, operation_1.defineAspects)(UpdateOneOperation, [
-    operation_1.Aspect.RETRYABLE,
-    operation_1.Aspect.WRITE_OPERATION,
-    operation_1.Aspect.EXPLAINABLE,
-    operation_1.Aspect.SKIP_COLLATION
-]);
-(0, operation_1.defineAspects)(UpdateManyOperation, [
-    operation_1.Aspect.WRITE_OPERATION,
-    operation_1.Aspect.EXPLAINABLE,
-    operation_1.Aspect.SKIP_COLLATION
-]);
-(0, operation_1.defineAspects)(ReplaceOneOperation, [
-    operation_1.Aspect.RETRYABLE,
-    operation_1.Aspect.WRITE_OPERATION,
-    operation_1.Aspect.SKIP_COLLATION
-]);
-//# sourceMappingURL=update.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/update.js.map b/server/data-import/node_modules/mongodb/lib/operations/update.js.map
deleted file mode 100644
index fd7c9435e57900cdbb7929c627fa48a2cdd69acb..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/update.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/operations/update.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/validate_collection.js b/server/data-import/node_modules/mongodb/lib/operations/validate_collection.js
deleted file mode 100644
index 793356e81e54b2556ad1124467faf82ddc291581..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/validate_collection.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ValidateCollectionOperation = void 0;
-const error_1 = require("../error");
-const command_1 = require("./command");
-/** @internal */
-class ValidateCollectionOperation extends command_1.CommandOperation {
-    constructor(admin, collectionName, options) {
-        // Decorate command with extra options
-        const command = { validate: collectionName };
-        const keys = Object.keys(options);
-        for (let i = 0; i < keys.length; i++) {
-            if (Object.prototype.hasOwnProperty.call(options, keys[i]) && keys[i] !== 'session') {
-                command[keys[i]] = options[keys[i]];
-            }
-        }
-        super(admin.s.db, options);
-        this.options = options;
-        this.command = command;
-        this.collectionName = collectionName;
-    }
-    async execute(server, session) {
-        const collectionName = this.collectionName;
-        const doc = await super.executeCommand(server, session, this.command);
-        if (doc.result != null && typeof doc.result !== 'string')
-            throw new error_1.MongoUnexpectedServerResponseError('Error with validation data');
-        if (doc.result != null && doc.result.match(/exception|corrupt/) != null)
-            throw new error_1.MongoUnexpectedServerResponseError(`Invalid collection ${collectionName}`);
-        if (doc.valid != null && !doc.valid)
-            throw new error_1.MongoUnexpectedServerResponseError(`Invalid collection ${collectionName}`);
-        return doc;
-    }
-}
-exports.ValidateCollectionOperation = ValidateCollectionOperation;
-//# sourceMappingURL=validate_collection.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/operations/validate_collection.js.map b/server/data-import/node_modules/mongodb/lib/operations/validate_collection.js.map
deleted file mode 100644
index 10282922e7bc75657bddb42c46a3b19c4b96d2e2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/operations/validate_collection.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"validate_collection.js","sourceRoot":"","sources":["../../src/operations/validate_collection.ts"],"names":[],"mappings":";;;AAEA,oCAA8D;AAG9D,uCAA2E;AAQ3E,gBAAgB;AAChB,MAAa,2BAA4B,SAAQ,0BAA0B;IAKzE,YAAY,KAAY,EAAE,cAAsB,EAAE,OAAkC;QAClF,sCAAsC;QACtC,MAAM,OAAO,GAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;gBACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAI,OAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACnD;SACF;QAED,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAkC;QACvE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAE3C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtE,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;YACtD,MAAM,IAAI,0CAAkC,CAAC,4BAA4B,CAAC,CAAC;QAC7E,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,IAAI;YACrE,MAAM,IAAI,0CAAkC,CAAC,sBAAsB,cAAc,EAAE,CAAC,CAAC;QACvF,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK;YACjC,MAAM,IAAI,0CAAkC,CAAC,sBAAsB,cAAc,EAAE,CAAC,CAAC;QAEvF,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAlCD,kEAkCC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/read_concern.js b/server/data-import/node_modules/mongodb/lib/read_concern.js
deleted file mode 100644
index aed3e22741a0b92aa672b7a7e6aa1b134486f612..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/read_concern.js
+++ /dev/null
@@ -1,73 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ReadConcern = exports.ReadConcernLevel = void 0;
-/** @public */
-exports.ReadConcernLevel = Object.freeze({
-    local: 'local',
-    majority: 'majority',
-    linearizable: 'linearizable',
-    available: 'available',
-    snapshot: 'snapshot'
-});
-/**
- * The MongoDB ReadConcern, which allows for control of the consistency and isolation properties
- * of the data read from replica sets and replica set shards.
- * @public
- *
- * @see https://www.mongodb.com/docs/manual/reference/read-concern/index.html
- */
-class ReadConcern {
-    /** Constructs a ReadConcern from the read concern level.*/
-    constructor(level) {
-        /**
-         * A spec test exists that allows level to be any string.
-         * "invalid readConcern with out stage"
-         * @see ./test/spec/crud/v2/aggregate-out-readConcern.json
-         * @see https://github.com/mongodb/specifications/blob/master/source/read-write-concern/read-write-concern.rst#unknown-levels-and-additional-options-for-string-based-readconcerns
-         */
-        this.level = exports.ReadConcernLevel[level] ?? level;
-    }
-    /**
-     * Construct a ReadConcern given an options object.
-     *
-     * @param options - The options object from which to extract the write concern.
-     */
-    static fromOptions(options) {
-        if (options == null) {
-            return;
-        }
-        if (options.readConcern) {
-            const { readConcern } = options;
-            if (readConcern instanceof ReadConcern) {
-                return readConcern;
-            }
-            else if (typeof readConcern === 'string') {
-                return new ReadConcern(readConcern);
-            }
-            else if ('level' in readConcern && readConcern.level) {
-                return new ReadConcern(readConcern.level);
-            }
-        }
-        if (options.level) {
-            return new ReadConcern(options.level);
-        }
-        return;
-    }
-    static get MAJORITY() {
-        return exports.ReadConcernLevel.majority;
-    }
-    static get AVAILABLE() {
-        return exports.ReadConcernLevel.available;
-    }
-    static get LINEARIZABLE() {
-        return exports.ReadConcernLevel.linearizable;
-    }
-    static get SNAPSHOT() {
-        return exports.ReadConcernLevel.snapshot;
-    }
-    toJSON() {
-        return { level: this.level };
-    }
-}
-exports.ReadConcern = ReadConcern;
-//# sourceMappingURL=read_concern.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/read_concern.js.map b/server/data-import/node_modules/mongodb/lib/read_concern.js.map
deleted file mode 100644
index 5df31985fc519b288951520b71eb9ae140f8027b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/read_concern.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"read_concern.js","sourceRoot":"","sources":["../src/read_concern.ts"],"names":[],"mappings":";;;AAEA,cAAc;AACD,QAAA,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACZ,CAAC,CAAC;AAQZ;;;;;;GAMG;AACH,MAAa,WAAW;IAGtB,2DAA2D;IAC3D,YAAY,KAAuB;QACjC;;;;;WAKG;QACH,IAAI,CAAC,KAAK,GAAG,wBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,OAGlB;QACC,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO;SACR;QAED,IAAI,OAAO,CAAC,WAAW,EAAE;YACvB,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;YAChC,IAAI,WAAW,YAAY,WAAW,EAAE;gBACtC,OAAO,WAAW,CAAC;aACpB;iBAAM,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;gBAC1C,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;aACrC;iBAAM,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE;gBACtD,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC3C;SACF;QAED,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACvC;QACD,OAAO;IACT,CAAC;IAED,MAAM,KAAK,QAAQ;QACjB,OAAO,wBAAgB,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,MAAM,KAAK,SAAS;QAClB,OAAO,wBAAgB,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,MAAM,KAAK,YAAY;QACrB,OAAO,wBAAgB,CAAC,YAAY,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,QAAQ;QACjB,OAAO,wBAAgB,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACF;AA/DD,kCA+DC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/read_preference.js b/server/data-import/node_modules/mongodb/lib/read_preference.js
deleted file mode 100644
index d8823991353c8521c3855d255313f9019fa52ceb..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/read_preference.js
+++ /dev/null
@@ -1,195 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ReadPreference = exports.ReadPreferenceMode = void 0;
-const error_1 = require("./error");
-/** @public */
-exports.ReadPreferenceMode = Object.freeze({
-    primary: 'primary',
-    primaryPreferred: 'primaryPreferred',
-    secondary: 'secondary',
-    secondaryPreferred: 'secondaryPreferred',
-    nearest: 'nearest'
-});
-/**
- * The **ReadPreference** class is a class that represents a MongoDB ReadPreference and is
- * used to construct connections.
- * @public
- *
- * @see https://www.mongodb.com/docs/manual/core/read-preference/
- */
-class ReadPreference {
-    /**
-     * @param mode - A string describing the read preference mode (primary|primaryPreferred|secondary|secondaryPreferred|nearest)
-     * @param tags - A tag set used to target reads to members with the specified tag(s). tagSet is not available if using read preference mode primary.
-     * @param options - Additional read preference options
-     */
-    constructor(mode, tags, options) {
-        if (!ReadPreference.isValid(mode)) {
-            throw new error_1.MongoInvalidArgumentError(`Invalid read preference mode ${JSON.stringify(mode)}`);
-        }
-        if (options == null && typeof tags === 'object' && !Array.isArray(tags)) {
-            options = tags;
-            tags = undefined;
-        }
-        else if (tags && !Array.isArray(tags)) {
-            throw new error_1.MongoInvalidArgumentError('ReadPreference tags must be an array');
-        }
-        this.mode = mode;
-        this.tags = tags;
-        this.hedge = options?.hedge;
-        this.maxStalenessSeconds = undefined;
-        this.minWireVersion = undefined;
-        options = options ?? {};
-        if (options.maxStalenessSeconds != null) {
-            if (options.maxStalenessSeconds <= 0) {
-                throw new error_1.MongoInvalidArgumentError('maxStalenessSeconds must be a positive integer');
-            }
-            this.maxStalenessSeconds = options.maxStalenessSeconds;
-            // NOTE: The minimum required wire version is 5 for this read preference. If the existing
-            //       topology has a lower value then a MongoError will be thrown during server selection.
-            this.minWireVersion = 5;
-        }
-        if (this.mode === ReadPreference.PRIMARY) {
-            if (this.tags && Array.isArray(this.tags) && this.tags.length > 0) {
-                throw new error_1.MongoInvalidArgumentError('Primary read preference cannot be combined with tags');
-            }
-            if (this.maxStalenessSeconds) {
-                throw new error_1.MongoInvalidArgumentError('Primary read preference cannot be combined with maxStalenessSeconds');
-            }
-            if (this.hedge) {
-                throw new error_1.MongoInvalidArgumentError('Primary read preference cannot be combined with hedge');
-            }
-        }
-    }
-    // Support the deprecated `preference` property introduced in the porcelain layer
-    get preference() {
-        return this.mode;
-    }
-    static fromString(mode) {
-        return new ReadPreference(mode);
-    }
-    /**
-     * Construct a ReadPreference given an options object.
-     *
-     * @param options - The options object from which to extract the read preference.
-     */
-    static fromOptions(options) {
-        if (!options)
-            return;
-        const readPreference = options.readPreference ?? options.session?.transaction.options.readPreference;
-        const readPreferenceTags = options.readPreferenceTags;
-        if (readPreference == null) {
-            return;
-        }
-        if (typeof readPreference === 'string') {
-            return new ReadPreference(readPreference, readPreferenceTags, {
-                maxStalenessSeconds: options.maxStalenessSeconds,
-                hedge: options.hedge
-            });
-        }
-        else if (!(readPreference instanceof ReadPreference) && typeof readPreference === 'object') {
-            const mode = readPreference.mode || readPreference.preference;
-            if (mode && typeof mode === 'string') {
-                return new ReadPreference(mode, readPreference.tags ?? readPreferenceTags, {
-                    maxStalenessSeconds: readPreference.maxStalenessSeconds,
-                    hedge: options.hedge
-                });
-            }
-        }
-        if (readPreferenceTags) {
-            readPreference.tags = readPreferenceTags;
-        }
-        return readPreference;
-    }
-    /**
-     * Replaces options.readPreference with a ReadPreference instance
-     */
-    static translate(options) {
-        if (options.readPreference == null)
-            return options;
-        const r = options.readPreference;
-        if (typeof r === 'string') {
-            options.readPreference = new ReadPreference(r);
-        }
-        else if (r && !(r instanceof ReadPreference) && typeof r === 'object') {
-            const mode = r.mode || r.preference;
-            if (mode && typeof mode === 'string') {
-                options.readPreference = new ReadPreference(mode, r.tags, {
-                    maxStalenessSeconds: r.maxStalenessSeconds
-                });
-            }
-        }
-        else if (!(r instanceof ReadPreference)) {
-            throw new error_1.MongoInvalidArgumentError(`Invalid read preference: ${r}`);
-        }
-        return options;
-    }
-    /**
-     * Validate if a mode is legal
-     *
-     * @param mode - The string representing the read preference mode.
-     */
-    static isValid(mode) {
-        const VALID_MODES = new Set([
-            ReadPreference.PRIMARY,
-            ReadPreference.PRIMARY_PREFERRED,
-            ReadPreference.SECONDARY,
-            ReadPreference.SECONDARY_PREFERRED,
-            ReadPreference.NEAREST,
-            null
-        ]);
-        return VALID_MODES.has(mode);
-    }
-    /**
-     * Validate if a mode is legal
-     *
-     * @param mode - The string representing the read preference mode.
-     */
-    isValid(mode) {
-        return ReadPreference.isValid(typeof mode === 'string' ? mode : this.mode);
-    }
-    /**
-     * Indicates that this readPreference needs the "SecondaryOk" bit when sent over the wire
-     * @see https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/#op-query
-     */
-    secondaryOk() {
-        const NEEDS_SECONDARYOK = new Set([
-            ReadPreference.PRIMARY_PREFERRED,
-            ReadPreference.SECONDARY,
-            ReadPreference.SECONDARY_PREFERRED,
-            ReadPreference.NEAREST
-        ]);
-        return NEEDS_SECONDARYOK.has(this.mode);
-    }
-    /**
-     * Check if the two ReadPreferences are equivalent
-     *
-     * @param readPreference - The read preference with which to check equality
-     */
-    equals(readPreference) {
-        return readPreference.mode === this.mode;
-    }
-    /** Return JSON representation */
-    toJSON() {
-        const readPreference = { mode: this.mode };
-        if (Array.isArray(this.tags))
-            readPreference.tags = this.tags;
-        if (this.maxStalenessSeconds)
-            readPreference.maxStalenessSeconds = this.maxStalenessSeconds;
-        if (this.hedge)
-            readPreference.hedge = this.hedge;
-        return readPreference;
-    }
-}
-ReadPreference.PRIMARY = exports.ReadPreferenceMode.primary;
-ReadPreference.PRIMARY_PREFERRED = exports.ReadPreferenceMode.primaryPreferred;
-ReadPreference.SECONDARY = exports.ReadPreferenceMode.secondary;
-ReadPreference.SECONDARY_PREFERRED = exports.ReadPreferenceMode.secondaryPreferred;
-ReadPreference.NEAREST = exports.ReadPreferenceMode.nearest;
-ReadPreference.primary = new ReadPreference(exports.ReadPreferenceMode.primary);
-ReadPreference.primaryPreferred = new ReadPreference(exports.ReadPreferenceMode.primaryPreferred);
-ReadPreference.secondary = new ReadPreference(exports.ReadPreferenceMode.secondary);
-ReadPreference.secondaryPreferred = new ReadPreference(exports.ReadPreferenceMode.secondaryPreferred);
-ReadPreference.nearest = new ReadPreference(exports.ReadPreferenceMode.nearest);
-exports.ReadPreference = ReadPreference;
-//# sourceMappingURL=read_preference.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/read_preference.js.map b/server/data-import/node_modules/mongodb/lib/read_preference.js.map
deleted file mode 100644
index 70ba71ac4d33327540ab0e029ac49942dbc75d3e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/read_preference.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"read_preference.js","sourceRoot":"","sources":["../src/read_preference.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/common.js b/server/data-import/node_modules/mongodb/lib/sdam/common.js
deleted file mode 100644
index 60b96aa30f81ce0003b3c50de8d181bbb16aecf9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/common.js
+++ /dev/null
@@ -1,56 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports._advanceClusterTime = exports.drainTimerQueue = exports.ServerType = exports.TopologyType = exports.STATE_CONNECTED = exports.STATE_CONNECTING = exports.STATE_CLOSED = exports.STATE_CLOSING = void 0;
-const timers_1 = require("timers");
-// shared state names
-exports.STATE_CLOSING = 'closing';
-exports.STATE_CLOSED = 'closed';
-exports.STATE_CONNECTING = 'connecting';
-exports.STATE_CONNECTED = 'connected';
-/**
- * An enumeration of topology types we know about
- * @public
- */
-exports.TopologyType = Object.freeze({
-    Single: 'Single',
-    ReplicaSetNoPrimary: 'ReplicaSetNoPrimary',
-    ReplicaSetWithPrimary: 'ReplicaSetWithPrimary',
-    Sharded: 'Sharded',
-    Unknown: 'Unknown',
-    LoadBalanced: 'LoadBalanced'
-});
-/**
- * An enumeration of server types we know about
- * @public
- */
-exports.ServerType = Object.freeze({
-    Standalone: 'Standalone',
-    Mongos: 'Mongos',
-    PossiblePrimary: 'PossiblePrimary',
-    RSPrimary: 'RSPrimary',
-    RSSecondary: 'RSSecondary',
-    RSArbiter: 'RSArbiter',
-    RSOther: 'RSOther',
-    RSGhost: 'RSGhost',
-    Unknown: 'Unknown',
-    LoadBalancer: 'LoadBalancer'
-});
-/** @internal */
-function drainTimerQueue(queue) {
-    queue.forEach(timers_1.clearTimeout);
-    queue.clear();
-}
-exports.drainTimerQueue = drainTimerQueue;
-/** Shared function to determine clusterTime for a given topology or session */
-function _advanceClusterTime(entity, $clusterTime) {
-    if (entity.clusterTime == null) {
-        entity.clusterTime = $clusterTime;
-    }
-    else {
-        if ($clusterTime.clusterTime.greaterThan(entity.clusterTime.clusterTime)) {
-            entity.clusterTime = $clusterTime;
-        }
-    }
-}
-exports._advanceClusterTime = _advanceClusterTime;
-//# sourceMappingURL=common.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/common.js.map b/server/data-import/node_modules/mongodb/lib/sdam/common.js.map
deleted file mode 100644
index 95a76c42d76e67f182c22d2eac4d60ab6fa84572..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/common.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/sdam/common.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAMtC,qBAAqB;AACR,QAAA,aAAa,GAAG,SAAS,CAAC;AAC1B,QAAA,YAAY,GAAG,QAAQ,CAAC;AACxB,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,eAAe,GAAG,WAAW,CAAC;AAE3C;;;GAGG;AACU,QAAA,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,QAAQ;IAChB,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;CACpB,CAAC,CAAC;AAKZ;;;GAGG;AACU,QAAA,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,iBAAiB;IAClC,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;CACpB,CAAC,CAAC;AAQZ,gBAAgB;AAChB,SAAgB,eAAe,CAAC,KAAiB;IAC/C,KAAK,CAAC,OAAO,CAAC,qBAAY,CAAC,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAHD,0CAGC;AAWD,+EAA+E;AAC/E,SAAgB,mBAAmB,CACjC,MAAgC,EAChC,YAAyB;IAEzB,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE;QAC9B,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC;KACnC;SAAM;QACL,IAAI,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;YACxE,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC;SACnC;KACF;AACH,CAAC;AAXD,kDAWC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/events.js b/server/data-import/node_modules/mongodb/lib/sdam/events.js
deleted file mode 100644
index deadda82fa12f6d2f09174cce6d18e0311f28056..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/events.js
+++ /dev/null
@@ -1,128 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ServerHeartbeatFailedEvent = exports.ServerHeartbeatSucceededEvent = exports.ServerHeartbeatStartedEvent = exports.TopologyClosedEvent = exports.TopologyOpeningEvent = exports.TopologyDescriptionChangedEvent = exports.ServerClosedEvent = exports.ServerOpeningEvent = exports.ServerDescriptionChangedEvent = void 0;
-/**
- * Emitted when server description changes, but does NOT include changes to the RTT.
- * @public
- * @category Event
- */
-class ServerDescriptionChangedEvent {
-    /** @internal */
-    constructor(topologyId, address, previousDescription, newDescription) {
-        this.topologyId = topologyId;
-        this.address = address;
-        this.previousDescription = previousDescription;
-        this.newDescription = newDescription;
-    }
-}
-exports.ServerDescriptionChangedEvent = ServerDescriptionChangedEvent;
-/**
- * Emitted when server is initialized.
- * @public
- * @category Event
- */
-class ServerOpeningEvent {
-    /** @internal */
-    constructor(topologyId, address) {
-        this.topologyId = topologyId;
-        this.address = address;
-    }
-}
-exports.ServerOpeningEvent = ServerOpeningEvent;
-/**
- * Emitted when server is closed.
- * @public
- * @category Event
- */
-class ServerClosedEvent {
-    /** @internal */
-    constructor(topologyId, address) {
-        this.topologyId = topologyId;
-        this.address = address;
-    }
-}
-exports.ServerClosedEvent = ServerClosedEvent;
-/**
- * Emitted when topology description changes.
- * @public
- * @category Event
- */
-class TopologyDescriptionChangedEvent {
-    /** @internal */
-    constructor(topologyId, previousDescription, newDescription) {
-        this.topologyId = topologyId;
-        this.previousDescription = previousDescription;
-        this.newDescription = newDescription;
-    }
-}
-exports.TopologyDescriptionChangedEvent = TopologyDescriptionChangedEvent;
-/**
- * Emitted when topology is initialized.
- * @public
- * @category Event
- */
-class TopologyOpeningEvent {
-    /** @internal */
-    constructor(topologyId) {
-        this.topologyId = topologyId;
-    }
-}
-exports.TopologyOpeningEvent = TopologyOpeningEvent;
-/**
- * Emitted when topology is closed.
- * @public
- * @category Event
- */
-class TopologyClosedEvent {
-    /** @internal */
-    constructor(topologyId) {
-        this.topologyId = topologyId;
-    }
-}
-exports.TopologyClosedEvent = TopologyClosedEvent;
-/**
- * Emitted when the server monitor’s hello command is started - immediately before
- * the hello command is serialized into raw BSON and written to the socket.
- *
- * @public
- * @category Event
- */
-class ServerHeartbeatStartedEvent {
-    /** @internal */
-    constructor(connectionId, awaited) {
-        this.connectionId = connectionId;
-        this.awaited = awaited;
-    }
-}
-exports.ServerHeartbeatStartedEvent = ServerHeartbeatStartedEvent;
-/**
- * Emitted when the server monitor’s hello succeeds.
- * @public
- * @category Event
- */
-class ServerHeartbeatSucceededEvent {
-    /** @internal */
-    constructor(connectionId, duration, reply, awaited) {
-        this.connectionId = connectionId;
-        this.duration = duration;
-        this.reply = reply ?? {};
-        this.awaited = awaited;
-    }
-}
-exports.ServerHeartbeatSucceededEvent = ServerHeartbeatSucceededEvent;
-/**
- * Emitted when the server monitor’s hello fails, either with an “ok: 0” or a socket exception.
- * @public
- * @category Event
- */
-class ServerHeartbeatFailedEvent {
-    /** @internal */
-    constructor(connectionId, duration, failure, awaited) {
-        this.connectionId = connectionId;
-        this.duration = duration;
-        this.failure = failure;
-        this.awaited = awaited;
-    }
-}
-exports.ServerHeartbeatFailedEvent = ServerHeartbeatFailedEvent;
-//# sourceMappingURL=events.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/events.js.map b/server/data-import/node_modules/mongodb/lib/sdam/events.js.map
deleted file mode 100644
index ecfbb19fe47223988a9caa3526c0f552136d86d1..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/events.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/sdam/events.ts"],"names":[],"mappings":";;;AAIA;;;;GAIG;AACH,MAAa,6BAA6B;IAUxC,gBAAgB;IAChB,YACE,UAAkB,EAClB,OAAe,EACf,mBAAsC,EACtC,cAAiC;QAEjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;CACF;AAtBD,sEAsBC;AAED;;;;GAIG;AACH,MAAa,kBAAkB;IAM7B,gBAAgB;IAChB,YAAY,UAAkB,EAAE,OAAe;QAC7C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAXD,gDAWC;AAED;;;;GAIG;AACH,MAAa,iBAAiB;IAM5B,gBAAgB;IAChB,YAAY,UAAkB,EAAE,OAAe;QAC7C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAXD,8CAWC;AAED;;;;GAIG;AACH,MAAa,+BAA+B;IAQ1C,gBAAgB;IAChB,YACE,UAAkB,EAClB,mBAAwC,EACxC,cAAmC;QAEnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;CACF;AAlBD,0EAkBC;AAED;;;;GAIG;AACH,MAAa,oBAAoB;IAI/B,gBAAgB;IAChB,YAAY,UAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AARD,oDAQC;AAED;;;;GAIG;AACH,MAAa,mBAAmB;IAI9B,gBAAgB;IAChB,YAAY,UAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AARD,kDAQC;AAED;;;;;;GAMG;AACH,MAAa,2BAA2B;IAMtC,gBAAgB;IAChB,YAAY,YAAoB,EAAE,OAAgB;QAChD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAXD,kEAWC;AAED;;;;GAIG;AACH,MAAa,6BAA6B;IAUxC,gBAAgB;IAChB,YAAY,YAAoB,EAAE,QAAgB,EAAE,KAAsB,EAAE,OAAgB;QAC1F,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAjBD,sEAiBC;AAED;;;;GAIG;AACH,MAAa,0BAA0B;IAUrC,gBAAgB;IAChB,YAAY,YAAoB,EAAE,QAAgB,EAAE,OAAc,EAAE,OAAgB;QAClF,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAjBD,gEAiBC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/monitor.js b/server/data-import/node_modules/mongodb/lib/sdam/monitor.js
deleted file mode 100644
index a758a8b0c5c415ab99712568530b4d0fe6923a40..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/monitor.js
+++ /dev/null
@@ -1,443 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.MonitorInterval = exports.RTTPinger = exports.Monitor = exports.ServerMonitoringMode = void 0;
-const timers_1 = require("timers");
-const bson_1 = require("../bson");
-const connect_1 = require("../cmap/connect");
-const connection_1 = require("../cmap/connection");
-const client_metadata_1 = require("../cmap/handshake/client_metadata");
-const constants_1 = require("../constants");
-const error_1 = require("../error");
-const mongo_types_1 = require("../mongo_types");
-const utils_1 = require("../utils");
-const common_1 = require("./common");
-const events_1 = require("./events");
-const server_1 = require("./server");
-/** @internal */
-const kServer = Symbol('server');
-/** @internal */
-const kMonitorId = Symbol('monitorId');
-/** @internal */
-const kConnection = Symbol('connection');
-/** @internal */
-const kCancellationToken = Symbol('cancellationToken');
-/** @internal */
-const kRoundTripTime = Symbol('roundTripTime');
-const STATE_IDLE = 'idle';
-const STATE_MONITORING = 'monitoring';
-const stateTransition = (0, utils_1.makeStateMachine)({
-    [common_1.STATE_CLOSING]: [common_1.STATE_CLOSING, STATE_IDLE, common_1.STATE_CLOSED],
-    [common_1.STATE_CLOSED]: [common_1.STATE_CLOSED, STATE_MONITORING],
-    [STATE_IDLE]: [STATE_IDLE, STATE_MONITORING, common_1.STATE_CLOSING],
-    [STATE_MONITORING]: [STATE_MONITORING, STATE_IDLE, common_1.STATE_CLOSING]
-});
-const INVALID_REQUEST_CHECK_STATES = new Set([common_1.STATE_CLOSING, common_1.STATE_CLOSED, STATE_MONITORING]);
-function isInCloseState(monitor) {
-    return monitor.s.state === common_1.STATE_CLOSED || monitor.s.state === common_1.STATE_CLOSING;
-}
-/** @public */
-exports.ServerMonitoringMode = Object.freeze({
-    auto: 'auto',
-    poll: 'poll',
-    stream: 'stream'
-});
-/** @internal */
-class Monitor extends mongo_types_1.TypedEventEmitter {
-    get connection() {
-        return this[kConnection];
-    }
-    constructor(server, options) {
-        super();
-        this[kServer] = server;
-        this[kConnection] = undefined;
-        this[kCancellationToken] = new mongo_types_1.CancellationToken();
-        this[kCancellationToken].setMaxListeners(Infinity);
-        this[kMonitorId] = undefined;
-        this.s = {
-            state: common_1.STATE_CLOSED
-        };
-        this.address = server.description.address;
-        this.options = Object.freeze({
-            connectTimeoutMS: options.connectTimeoutMS ?? 10000,
-            heartbeatFrequencyMS: options.heartbeatFrequencyMS ?? 10000,
-            minHeartbeatFrequencyMS: options.minHeartbeatFrequencyMS ?? 500,
-            serverMonitoringMode: options.serverMonitoringMode
-        });
-        this.isRunningInFaasEnv = (0, client_metadata_1.getFAASEnv)() != null;
-        const cancellationToken = this[kCancellationToken];
-        // TODO: refactor this to pull it directly from the pool, requires new ConnectionPool integration
-        const connectOptions = Object.assign({
-            id: '<monitor>',
-            generation: server.pool.generation,
-            connectionType: connection_1.Connection,
-            cancellationToken,
-            hostAddress: server.description.hostAddress
-        }, options, 
-        // force BSON serialization options
-        {
-            raw: false,
-            useBigInt64: false,
-            promoteLongs: true,
-            promoteValues: true,
-            promoteBuffers: true
-        });
-        // ensure no authentication is used for monitoring
-        delete connectOptions.credentials;
-        if (connectOptions.autoEncrypter) {
-            delete connectOptions.autoEncrypter;
-        }
-        this.connectOptions = Object.freeze(connectOptions);
-    }
-    connect() {
-        if (this.s.state !== common_1.STATE_CLOSED) {
-            return;
-        }
-        // start
-        const heartbeatFrequencyMS = this.options.heartbeatFrequencyMS;
-        const minHeartbeatFrequencyMS = this.options.minHeartbeatFrequencyMS;
-        this[kMonitorId] = new MonitorInterval(monitorServer(this), {
-            heartbeatFrequencyMS: heartbeatFrequencyMS,
-            minHeartbeatFrequencyMS: minHeartbeatFrequencyMS,
-            immediate: true
-        });
-    }
-    requestCheck() {
-        if (INVALID_REQUEST_CHECK_STATES.has(this.s.state)) {
-            return;
-        }
-        this[kMonitorId]?.wake();
-    }
-    reset() {
-        const topologyVersion = this[kServer].description.topologyVersion;
-        if (isInCloseState(this) || topologyVersion == null) {
-            return;
-        }
-        stateTransition(this, common_1.STATE_CLOSING);
-        resetMonitorState(this);
-        // restart monitor
-        stateTransition(this, STATE_IDLE);
-        // restart monitoring
-        const heartbeatFrequencyMS = this.options.heartbeatFrequencyMS;
-        const minHeartbeatFrequencyMS = this.options.minHeartbeatFrequencyMS;
-        this[kMonitorId] = new MonitorInterval(monitorServer(this), {
-            heartbeatFrequencyMS: heartbeatFrequencyMS,
-            minHeartbeatFrequencyMS: minHeartbeatFrequencyMS
-        });
-    }
-    close() {
-        if (isInCloseState(this)) {
-            return;
-        }
-        stateTransition(this, common_1.STATE_CLOSING);
-        resetMonitorState(this);
-        // close monitor
-        this.emit('close');
-        stateTransition(this, common_1.STATE_CLOSED);
-    }
-}
-exports.Monitor = Monitor;
-function resetMonitorState(monitor) {
-    monitor[kMonitorId]?.stop();
-    monitor[kMonitorId] = undefined;
-    monitor.rttPinger?.close();
-    monitor.rttPinger = undefined;
-    monitor[kCancellationToken].emit('cancel');
-    monitor[kConnection]?.destroy({ force: true });
-    monitor[kConnection] = undefined;
-}
-function useStreamingProtocol(monitor, topologyVersion) {
-    // If we have no topology version we always poll no matter
-    // what the user provided, since the server does not support
-    // the streaming protocol.
-    if (topologyVersion == null)
-        return false;
-    const serverMonitoringMode = monitor.options.serverMonitoringMode;
-    if (serverMonitoringMode === exports.ServerMonitoringMode.poll)
-        return false;
-    if (serverMonitoringMode === exports.ServerMonitoringMode.stream)
-        return true;
-    // If we are in auto mode, we need to figure out if we're in a FaaS
-    // environment or not and choose the appropriate mode.
-    if (monitor.isRunningInFaasEnv)
-        return false;
-    return true;
-}
-function checkServer(monitor, callback) {
-    let start = (0, utils_1.now)();
-    const topologyVersion = monitor[kServer].description.topologyVersion;
-    const isAwaitable = useStreamingProtocol(monitor, topologyVersion);
-    monitor.emit(server_1.Server.SERVER_HEARTBEAT_STARTED, new events_1.ServerHeartbeatStartedEvent(monitor.address, isAwaitable));
-    function failureHandler(err, awaited) {
-        monitor[kConnection]?.destroy({ force: true });
-        monitor[kConnection] = undefined;
-        monitor.emit(server_1.Server.SERVER_HEARTBEAT_FAILED, new events_1.ServerHeartbeatFailedEvent(monitor.address, (0, utils_1.calculateDurationInMs)(start), err, awaited));
-        const error = !(err instanceof error_1.MongoError)
-            ? new error_1.MongoError(error_1.MongoError.buildErrorMessage(err), { cause: err })
-            : err;
-        error.addErrorLabel(error_1.MongoErrorLabel.ResetPool);
-        if (error instanceof error_1.MongoNetworkTimeoutError) {
-            error.addErrorLabel(error_1.MongoErrorLabel.InterruptInUseConnections);
-        }
-        monitor.emit('resetServer', error);
-        callback(err);
-    }
-    const connection = monitor[kConnection];
-    if (connection && !connection.closed) {
-        const { serverApi, helloOk } = connection;
-        const connectTimeoutMS = monitor.options.connectTimeoutMS;
-        const maxAwaitTimeMS = monitor.options.heartbeatFrequencyMS;
-        const cmd = {
-            [serverApi?.version || helloOk ? 'hello' : constants_1.LEGACY_HELLO_COMMAND]: 1,
-            ...(isAwaitable && topologyVersion
-                ? { maxAwaitTimeMS, topologyVersion: makeTopologyVersion(topologyVersion) }
-                : {})
-        };
-        const options = isAwaitable
-            ? {
-                socketTimeoutMS: connectTimeoutMS ? connectTimeoutMS + maxAwaitTimeMS : 0,
-                exhaustAllowed: true
-            }
-            : { socketTimeoutMS: connectTimeoutMS };
-        if (isAwaitable && monitor.rttPinger == null) {
-            monitor.rttPinger = new RTTPinger(monitor[kCancellationToken], Object.assign({ heartbeatFrequencyMS: monitor.options.heartbeatFrequencyMS }, monitor.connectOptions));
-        }
-        connection.command((0, utils_1.ns)('admin.$cmd'), cmd, options, (err, hello) => {
-            if (err) {
-                return failureHandler(err, isAwaitable);
-            }
-            if (!('isWritablePrimary' in hello)) {
-                // Provide hello-style response document.
-                hello.isWritablePrimary = hello[constants_1.LEGACY_HELLO_COMMAND];
-            }
-            const duration = isAwaitable && monitor.rttPinger
-                ? monitor.rttPinger.roundTripTime
-                : (0, utils_1.calculateDurationInMs)(start);
-            monitor.emit(server_1.Server.SERVER_HEARTBEAT_SUCCEEDED, new events_1.ServerHeartbeatSucceededEvent(monitor.address, duration, hello, isAwaitable));
-            // If we are using the streaming protocol then we immediately issue another 'started'
-            // event, otherwise the "check" is complete and return to the main monitor loop.
-            if (isAwaitable) {
-                monitor.emit(server_1.Server.SERVER_HEARTBEAT_STARTED, new events_1.ServerHeartbeatStartedEvent(monitor.address, true));
-                start = (0, utils_1.now)();
-            }
-            else {
-                monitor.rttPinger?.close();
-                monitor.rttPinger = undefined;
-                callback(undefined, hello);
-            }
-        });
-        return;
-    }
-    // connecting does an implicit `hello`
-    (0, connect_1.connect)(monitor.connectOptions, (err, conn) => {
-        if (err) {
-            monitor[kConnection] = undefined;
-            failureHandler(err, false);
-            return;
-        }
-        if (conn) {
-            // Tell the connection that we are using the streaming protocol so that the
-            // connection's message stream will only read the last hello on the buffer.
-            conn.isMonitoringConnection = true;
-            if (isInCloseState(monitor)) {
-                conn.destroy({ force: true });
-                return;
-            }
-            monitor[kConnection] = conn;
-            monitor.emit(server_1.Server.SERVER_HEARTBEAT_SUCCEEDED, new events_1.ServerHeartbeatSucceededEvent(monitor.address, (0, utils_1.calculateDurationInMs)(start), conn.hello, useStreamingProtocol(monitor, conn.hello?.topologyVersion)));
-            callback(undefined, conn.hello);
-        }
-    });
-}
-function monitorServer(monitor) {
-    return (callback) => {
-        if (monitor.s.state === STATE_MONITORING) {
-            process.nextTick(callback);
-            return;
-        }
-        stateTransition(monitor, STATE_MONITORING);
-        function done() {
-            if (!isInCloseState(monitor)) {
-                stateTransition(monitor, STATE_IDLE);
-            }
-            callback();
-        }
-        checkServer(monitor, (err, hello) => {
-            if (err) {
-                // otherwise an error occurred on initial discovery, also bail
-                if (monitor[kServer].description.type === common_1.ServerType.Unknown) {
-                    return done();
-                }
-            }
-            // if the check indicates streaming is supported, immediately reschedule monitoring
-            if (useStreamingProtocol(monitor, hello?.topologyVersion)) {
-                (0, timers_1.setTimeout)(() => {
-                    if (!isInCloseState(monitor)) {
-                        monitor[kMonitorId]?.wake();
-                    }
-                }, 0);
-            }
-            done();
-        });
-    };
-}
-function makeTopologyVersion(tv) {
-    return {
-        processId: tv.processId,
-        // tests mock counter as just number, but in a real situation counter should always be a Long
-        // TODO(NODE-2674): Preserve int64 sent from MongoDB
-        counter: bson_1.Long.isLong(tv.counter) ? tv.counter : bson_1.Long.fromNumber(tv.counter)
-    };
-}
-/** @internal */
-class RTTPinger {
-    constructor(cancellationToken, options) {
-        this.connection = undefined;
-        this[kCancellationToken] = cancellationToken;
-        this[kRoundTripTime] = 0;
-        this.closed = false;
-        const heartbeatFrequencyMS = options.heartbeatFrequencyMS;
-        this[kMonitorId] = (0, timers_1.setTimeout)(() => measureRoundTripTime(this, options), heartbeatFrequencyMS);
-    }
-    get roundTripTime() {
-        return this[kRoundTripTime];
-    }
-    close() {
-        this.closed = true;
-        (0, timers_1.clearTimeout)(this[kMonitorId]);
-        this.connection?.destroy({ force: true });
-        this.connection = undefined;
-    }
-}
-exports.RTTPinger = RTTPinger;
-function measureRoundTripTime(rttPinger, options) {
-    const start = (0, utils_1.now)();
-    options.cancellationToken = rttPinger[kCancellationToken];
-    const heartbeatFrequencyMS = options.heartbeatFrequencyMS;
-    if (rttPinger.closed) {
-        return;
-    }
-    function measureAndReschedule(conn) {
-        if (rttPinger.closed) {
-            conn?.destroy({ force: true });
-            return;
-        }
-        if (rttPinger.connection == null) {
-            rttPinger.connection = conn;
-        }
-        rttPinger[kRoundTripTime] = (0, utils_1.calculateDurationInMs)(start);
-        rttPinger[kMonitorId] = (0, timers_1.setTimeout)(() => measureRoundTripTime(rttPinger, options), heartbeatFrequencyMS);
-    }
-    const connection = rttPinger.connection;
-    if (connection == null) {
-        (0, connect_1.connect)(options, (err, conn) => {
-            if (err) {
-                rttPinger.connection = undefined;
-                rttPinger[kRoundTripTime] = 0;
-                return;
-            }
-            measureAndReschedule(conn);
-        });
-        return;
-    }
-    const commandName = connection.serverApi?.version || connection.helloOk ? 'hello' : constants_1.LEGACY_HELLO_COMMAND;
-    connection.commandAsync((0, utils_1.ns)('admin.$cmd'), { [commandName]: 1 }, undefined).then(() => measureAndReschedule(), () => {
-        rttPinger.connection?.destroy({ force: true });
-        rttPinger.connection = undefined;
-        rttPinger[kRoundTripTime] = 0;
-        return;
-    });
-}
-/**
- * @internal
- */
-class MonitorInterval {
-    constructor(fn, options = {}) {
-        this.isExpeditedCallToFnScheduled = false;
-        this.stopped = false;
-        this.isExecutionInProgress = false;
-        this.hasExecutedOnce = false;
-        this._executeAndReschedule = () => {
-            if (this.stopped)
-                return;
-            if (this.timerId) {
-                (0, timers_1.clearTimeout)(this.timerId);
-            }
-            this.isExpeditedCallToFnScheduled = false;
-            this.isExecutionInProgress = true;
-            this.fn(() => {
-                this.lastExecutionEnded = (0, utils_1.now)();
-                this.isExecutionInProgress = false;
-                this._reschedule(this.heartbeatFrequencyMS);
-            });
-        };
-        this.fn = fn;
-        this.lastExecutionEnded = -Infinity;
-        this.heartbeatFrequencyMS = options.heartbeatFrequencyMS ?? 1000;
-        this.minHeartbeatFrequencyMS = options.minHeartbeatFrequencyMS ?? 500;
-        if (options.immediate) {
-            this._executeAndReschedule();
-        }
-        else {
-            this._reschedule(undefined);
-        }
-    }
-    wake() {
-        const currentTime = (0, utils_1.now)();
-        const timeSinceLastCall = currentTime - this.lastExecutionEnded;
-        // TODO(NODE-4674): Add error handling and logging to the monitor
-        if (timeSinceLastCall < 0) {
-            return this._executeAndReschedule();
-        }
-        if (this.isExecutionInProgress) {
-            return;
-        }
-        // debounce multiple calls to wake within the `minInterval`
-        if (this.isExpeditedCallToFnScheduled) {
-            return;
-        }
-        // reschedule a call as soon as possible, ensuring the call never happens
-        // faster than the `minInterval`
-        if (timeSinceLastCall < this.minHeartbeatFrequencyMS) {
-            this.isExpeditedCallToFnScheduled = true;
-            this._reschedule(this.minHeartbeatFrequencyMS - timeSinceLastCall);
-            return;
-        }
-        this._executeAndReschedule();
-    }
-    stop() {
-        this.stopped = true;
-        if (this.timerId) {
-            (0, timers_1.clearTimeout)(this.timerId);
-            this.timerId = undefined;
-        }
-        this.lastExecutionEnded = -Infinity;
-        this.isExpeditedCallToFnScheduled = false;
-    }
-    toString() {
-        return JSON.stringify(this);
-    }
-    toJSON() {
-        const currentTime = (0, utils_1.now)();
-        const timeSinceLastCall = currentTime - this.lastExecutionEnded;
-        return {
-            timerId: this.timerId != null ? 'set' : 'cleared',
-            lastCallTime: this.lastExecutionEnded,
-            isExpeditedCheckScheduled: this.isExpeditedCallToFnScheduled,
-            stopped: this.stopped,
-            heartbeatFrequencyMS: this.heartbeatFrequencyMS,
-            minHeartbeatFrequencyMS: this.minHeartbeatFrequencyMS,
-            currentTime,
-            timeSinceLastCall
-        };
-    }
-    _reschedule(ms) {
-        if (this.stopped)
-            return;
-        if (this.timerId) {
-            (0, timers_1.clearTimeout)(this.timerId);
-        }
-        this.timerId = (0, timers_1.setTimeout)(this._executeAndReschedule, ms || this.heartbeatFrequencyMS);
-    }
-}
-exports.MonitorInterval = MonitorInterval;
-//# sourceMappingURL=monitor.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/monitor.js.map b/server/data-import/node_modules/mongodb/lib/sdam/monitor.js.map
deleted file mode 100644
index 64c3d9e2b18f89d57be237a90b9d63e1e05d93ef..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/monitor.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/sdam/monitor.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/server.js b/server/data-import/node_modules/mongodb/lib/sdam/server.js
deleted file mode 100644
index c5a39396bfe4be223b33aaea3c53f67c94b8b152..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/server.js
+++ /dev/null
@@ -1,381 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Server = void 0;
-const util_1 = require("util");
-const connection_1 = require("../cmap/connection");
-const connection_pool_1 = require("../cmap/connection_pool");
-const errors_1 = require("../cmap/errors");
-const constants_1 = require("../constants");
-const error_1 = require("../error");
-const mongo_types_1 = require("../mongo_types");
-const transactions_1 = require("../transactions");
-const utils_1 = require("../utils");
-const common_1 = require("./common");
-const monitor_1 = require("./monitor");
-const server_description_1 = require("./server_description");
-const stateTransition = (0, utils_1.makeStateMachine)({
-    [common_1.STATE_CLOSED]: [common_1.STATE_CLOSED, common_1.STATE_CONNECTING],
-    [common_1.STATE_CONNECTING]: [common_1.STATE_CONNECTING, common_1.STATE_CLOSING, common_1.STATE_CONNECTED, common_1.STATE_CLOSED],
-    [common_1.STATE_CONNECTED]: [common_1.STATE_CONNECTED, common_1.STATE_CLOSING, common_1.STATE_CLOSED],
-    [common_1.STATE_CLOSING]: [common_1.STATE_CLOSING, common_1.STATE_CLOSED]
-});
-/** @internal */
-class Server extends mongo_types_1.TypedEventEmitter {
-    /**
-     * Create a server
-     */
-    constructor(topology, description, options) {
-        super();
-        this.commandAsync = (0, util_1.promisify)((ns, cmd, options, 
-        // callback type defines Document result because result is never nullish when it succeeds, otherwise promise rejects
-        callback) => this.command(ns, cmd, options, callback));
-        this.serverApi = options.serverApi;
-        const poolOptions = { hostAddress: description.hostAddress, ...options };
-        this.topology = topology;
-        this.pool = new connection_pool_1.ConnectionPool(this, poolOptions);
-        this.s = {
-            description,
-            options,
-            state: common_1.STATE_CLOSED,
-            operationCount: 0
-        };
-        for (const event of [...constants_1.CMAP_EVENTS, ...constants_1.APM_EVENTS]) {
-            this.pool.on(event, (e) => this.emit(event, e));
-        }
-        this.pool.on(connection_1.Connection.CLUSTER_TIME_RECEIVED, (clusterTime) => {
-            this.clusterTime = clusterTime;
-        });
-        if (this.loadBalanced) {
-            this.monitor = null;
-            // monitoring is disabled in load balancing mode
-            return;
-        }
-        // create the monitor
-        this.monitor = new monitor_1.Monitor(this, this.s.options);
-        for (const event of constants_1.HEARTBEAT_EVENTS) {
-            this.monitor.on(event, (e) => this.emit(event, e));
-        }
-        this.monitor.on('resetServer', (error) => markServerUnknown(this, error));
-        this.monitor.on(Server.SERVER_HEARTBEAT_SUCCEEDED, (event) => {
-            this.emit(Server.DESCRIPTION_RECEIVED, new server_description_1.ServerDescription(this.description.hostAddress, event.reply, {
-                roundTripTime: calculateRoundTripTime(this.description.roundTripTime, event.duration)
-            }));
-            if (this.s.state === common_1.STATE_CONNECTING) {
-                stateTransition(this, common_1.STATE_CONNECTED);
-                this.emit(Server.CONNECT, this);
-            }
-        });
-    }
-    get clusterTime() {
-        return this.topology.clusterTime;
-    }
-    set clusterTime(clusterTime) {
-        this.topology.clusterTime = clusterTime;
-    }
-    get description() {
-        return this.s.description;
-    }
-    get name() {
-        return this.s.description.address;
-    }
-    get autoEncrypter() {
-        if (this.s.options && this.s.options.autoEncrypter) {
-            return this.s.options.autoEncrypter;
-        }
-        return;
-    }
-    get loadBalanced() {
-        return this.topology.description.type === common_1.TopologyType.LoadBalanced;
-    }
-    /**
-     * Initiate server connect
-     */
-    connect() {
-        if (this.s.state !== common_1.STATE_CLOSED) {
-            return;
-        }
-        stateTransition(this, common_1.STATE_CONNECTING);
-        // If in load balancer mode we automatically set the server to
-        // a load balancer. It never transitions out of this state and
-        // has no monitor.
-        if (!this.loadBalanced) {
-            this.monitor?.connect();
-        }
-        else {
-            stateTransition(this, common_1.STATE_CONNECTED);
-            this.emit(Server.CONNECT, this);
-        }
-    }
-    /** Destroy the server connection */
-    destroy(options, callback) {
-        if (typeof options === 'function') {
-            callback = options;
-            options = { force: false };
-        }
-        options = Object.assign({}, { force: false }, options);
-        if (this.s.state === common_1.STATE_CLOSED) {
-            if (typeof callback === 'function') {
-                callback();
-            }
-            return;
-        }
-        stateTransition(this, common_1.STATE_CLOSING);
-        if (!this.loadBalanced) {
-            this.monitor?.close();
-        }
-        this.pool.close(options, err => {
-            stateTransition(this, common_1.STATE_CLOSED);
-            this.emit('closed');
-            if (typeof callback === 'function') {
-                callback(err);
-            }
-        });
-    }
-    /**
-     * Immediately schedule monitoring of this server. If there already an attempt being made
-     * this will be a no-op.
-     */
-    requestCheck() {
-        if (!this.loadBalanced) {
-            this.monitor?.requestCheck();
-        }
-    }
-    /**
-     * Execute a command
-     * @internal
-     */
-    command(ns, cmd, options, callback) {
-        if (callback == null) {
-            throw new error_1.MongoInvalidArgumentError('Callback must be provided');
-        }
-        if (ns.db == null || typeof ns === 'string') {
-            throw new error_1.MongoInvalidArgumentError('Namespace must not be a string');
-        }
-        if (this.s.state === common_1.STATE_CLOSING || this.s.state === common_1.STATE_CLOSED) {
-            callback(new error_1.MongoServerClosedError());
-            return;
-        }
-        // Clone the options
-        const finalOptions = Object.assign({}, options, { wireProtocolCommand: false });
-        // There are cases where we need to flag the read preference not to get sent in
-        // the command, such as pre-5.0 servers attempting to perform an aggregate write
-        // with a non-primary read preference. In this case the effective read preference
-        // (primary) is not the same as the provided and must be removed completely.
-        if (finalOptions.omitReadPreference) {
-            delete finalOptions.readPreference;
-        }
-        const session = finalOptions.session;
-        const conn = session?.pinnedConnection;
-        // NOTE: This is a hack! We can't retrieve the connections used for executing an operation
-        //       (and prevent them from being checked back in) at the point of operation execution.
-        //       This should be considered as part of the work for NODE-2882
-        // NOTE:
-        //       When incrementing operation count, it's important that we increment it before we
-        //       attempt to check out a connection from the pool.  This ensures that operations that
-        //       are waiting for a connection are included in the operation count.  Load balanced
-        //       mode will only ever have a single server, so the operation count doesn't matter.
-        //       Incrementing the operation count above the logic to handle load balanced mode would
-        //       require special logic to decrement it again, or would double increment (the load
-        //       balanced code makes a recursive call).  Instead, we increment the count after this
-        //       check.
-        if (this.loadBalanced && session && conn == null && isPinnableCommand(cmd, session)) {
-            this.pool.checkOut((err, checkedOut) => {
-                if (err || checkedOut == null) {
-                    if (callback)
-                        return callback(err);
-                    return;
-                }
-                session.pin(checkedOut);
-                this.command(ns, cmd, finalOptions, callback);
-            });
-            return;
-        }
-        this.incrementOperationCount();
-        this.pool.withConnection(conn, (err, conn, cb) => {
-            if (err || !conn) {
-                this.decrementOperationCount();
-                if (!err) {
-                    return cb(new error_1.MongoRuntimeError('Failed to create connection without error'));
-                }
-                if (!(err instanceof errors_1.PoolClearedError)) {
-                    this.handleError(err);
-                }
-                return cb(err);
-            }
-            conn.command(ns, cmd, finalOptions, makeOperationHandler(this, conn, cmd, finalOptions, (error, response) => {
-                this.decrementOperationCount();
-                cb(error, response);
-            }));
-        }, callback);
-    }
-    /**
-     * Handle SDAM error
-     * @internal
-     */
-    handleError(error, connection) {
-        if (!(error instanceof error_1.MongoError)) {
-            return;
-        }
-        const isStaleError = error.connectionGeneration && error.connectionGeneration < this.pool.generation;
-        if (isStaleError) {
-            return;
-        }
-        const isNetworkNonTimeoutError = error instanceof error_1.MongoNetworkError && !(error instanceof error_1.MongoNetworkTimeoutError);
-        const isNetworkTimeoutBeforeHandshakeError = (0, error_1.isNetworkErrorBeforeHandshake)(error);
-        const isAuthHandshakeError = error.hasErrorLabel(error_1.MongoErrorLabel.HandshakeError);
-        if (isNetworkNonTimeoutError || isNetworkTimeoutBeforeHandshakeError || isAuthHandshakeError) {
-            // In load balanced mode we never mark the server as unknown and always
-            // clear for the specific service id.
-            if (!this.loadBalanced) {
-                error.addErrorLabel(error_1.MongoErrorLabel.ResetPool);
-                markServerUnknown(this, error);
-            }
-            else if (connection) {
-                this.pool.clear({ serviceId: connection.serviceId });
-            }
-        }
-        else {
-            if ((0, error_1.isSDAMUnrecoverableError)(error)) {
-                if (shouldHandleStateChangeError(this, error)) {
-                    const shouldClearPool = (0, utils_1.maxWireVersion)(this) <= 7 || (0, error_1.isNodeShuttingDownError)(error);
-                    if (this.loadBalanced && connection && shouldClearPool) {
-                        this.pool.clear({ serviceId: connection.serviceId });
-                    }
-                    if (!this.loadBalanced) {
-                        if (shouldClearPool) {
-                            error.addErrorLabel(error_1.MongoErrorLabel.ResetPool);
-                        }
-                        markServerUnknown(this, error);
-                        process.nextTick(() => this.requestCheck());
-                    }
-                }
-            }
-        }
-    }
-    /**
-     * Decrement the operation count, returning the new count.
-     */
-    decrementOperationCount() {
-        return (this.s.operationCount -= 1);
-    }
-    /**
-     * Increment the operation count, returning the new count.
-     */
-    incrementOperationCount() {
-        return (this.s.operationCount += 1);
-    }
-}
-/** @event */
-Server.SERVER_HEARTBEAT_STARTED = constants_1.SERVER_HEARTBEAT_STARTED;
-/** @event */
-Server.SERVER_HEARTBEAT_SUCCEEDED = constants_1.SERVER_HEARTBEAT_SUCCEEDED;
-/** @event */
-Server.SERVER_HEARTBEAT_FAILED = constants_1.SERVER_HEARTBEAT_FAILED;
-/** @event */
-Server.CONNECT = constants_1.CONNECT;
-/** @event */
-Server.DESCRIPTION_RECEIVED = constants_1.DESCRIPTION_RECEIVED;
-/** @event */
-Server.CLOSED = constants_1.CLOSED;
-/** @event */
-Server.ENDED = constants_1.ENDED;
-exports.Server = Server;
-function calculateRoundTripTime(oldRtt, duration) {
-    if (oldRtt === -1) {
-        return duration;
-    }
-    const alpha = 0.2;
-    return alpha * duration + (1 - alpha) * oldRtt;
-}
-function markServerUnknown(server, error) {
-    // Load balancer servers can never be marked unknown.
-    if (server.loadBalanced) {
-        return;
-    }
-    if (error instanceof error_1.MongoNetworkError && !(error instanceof error_1.MongoNetworkTimeoutError)) {
-        server.monitor?.reset();
-    }
-    server.emit(Server.DESCRIPTION_RECEIVED, new server_description_1.ServerDescription(server.description.hostAddress, undefined, { error }));
-}
-function isPinnableCommand(cmd, session) {
-    if (session) {
-        return (session.inTransaction() ||
-            'aggregate' in cmd ||
-            'find' in cmd ||
-            'getMore' in cmd ||
-            'listCollections' in cmd ||
-            'listIndexes' in cmd);
-    }
-    return false;
-}
-function connectionIsStale(pool, connection) {
-    if (connection.serviceId) {
-        return (connection.generation !== pool.serviceGenerations.get(connection.serviceId.toHexString()));
-    }
-    return connection.generation !== pool.generation;
-}
-function shouldHandleStateChangeError(server, err) {
-    const etv = err.topologyVersion;
-    const stv = server.description.topologyVersion;
-    return (0, server_description_1.compareTopologyVersion)(stv, etv) < 0;
-}
-function inActiveTransaction(session, cmd) {
-    return session && session.inTransaction() && !(0, transactions_1.isTransactionCommand)(cmd);
-}
-/** this checks the retryWrites option passed down from the client options, it
- * does not check if the server supports retryable writes */
-function isRetryableWritesEnabled(topology) {
-    return topology.s.options.retryWrites !== false;
-}
-function makeOperationHandler(server, connection, cmd, options, callback) {
-    const session = options?.session;
-    return function handleOperationResult(error, result) {
-        // We should not swallow an error if it is present.
-        if (error == null && result != null) {
-            return callback(undefined, result);
-        }
-        if (options != null && 'noResponse' in options && options.noResponse === true) {
-            return callback(undefined, null);
-        }
-        if (!error) {
-            return callback(new error_1.MongoUnexpectedServerResponseError('Empty response with no error'));
-        }
-        if (!(error instanceof error_1.MongoError)) {
-            // Node.js or some other error we have not special handling for
-            return callback(error);
-        }
-        if (connectionIsStale(server.pool, connection)) {
-            return callback(error);
-        }
-        if (error instanceof error_1.MongoNetworkError) {
-            if (session && !session.hasEnded && session.serverSession) {
-                session.serverSession.isDirty = true;
-            }
-            // inActiveTransaction check handles commit and abort.
-            if (inActiveTransaction(session, cmd) &&
-                !error.hasErrorLabel(error_1.MongoErrorLabel.TransientTransactionError)) {
-                error.addErrorLabel(error_1.MongoErrorLabel.TransientTransactionError);
-            }
-            if ((isRetryableWritesEnabled(server.topology) || (0, transactions_1.isTransactionCommand)(cmd)) &&
-                (0, utils_1.supportsRetryableWrites)(server) &&
-                !inActiveTransaction(session, cmd)) {
-                error.addErrorLabel(error_1.MongoErrorLabel.RetryableWriteError);
-            }
-        }
-        else {
-            if ((isRetryableWritesEnabled(server.topology) || (0, transactions_1.isTransactionCommand)(cmd)) &&
-                (0, error_1.needsRetryableWriteLabel)(error, (0, utils_1.maxWireVersion)(server)) &&
-                !inActiveTransaction(session, cmd)) {
-                error.addErrorLabel(error_1.MongoErrorLabel.RetryableWriteError);
-            }
-        }
-        if (session &&
-            session.isPinned &&
-            error.hasErrorLabel(error_1.MongoErrorLabel.TransientTransactionError)) {
-            session.unpin({ force: true });
-        }
-        server.handleError(error, connection);
-        return callback(error);
-    };
-}
-//# sourceMappingURL=server.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/server.js.map b/server/data-import/node_modules/mongodb/lib/sdam/server.js.map
deleted file mode 100644
index f114789794497f085e2d199a9ad30760b478eceb..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/server.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/sdam/server.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/server_description.js b/server/data-import/node_modules/mongodb/lib/sdam/server_description.js
deleted file mode 100644
index 1cf4da3715d0e9649e8c218fa497bf349f2b232b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/server_description.js
+++ /dev/null
@@ -1,189 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.compareTopologyVersion = exports.parseServerType = exports.ServerDescription = void 0;
-const bson_1 = require("../bson");
-const error_1 = require("../error");
-const utils_1 = require("../utils");
-const common_1 = require("./common");
-const WRITABLE_SERVER_TYPES = new Set([
-    common_1.ServerType.RSPrimary,
-    common_1.ServerType.Standalone,
-    common_1.ServerType.Mongos,
-    common_1.ServerType.LoadBalancer
-]);
-const DATA_BEARING_SERVER_TYPES = new Set([
-    common_1.ServerType.RSPrimary,
-    common_1.ServerType.RSSecondary,
-    common_1.ServerType.Mongos,
-    common_1.ServerType.Standalone,
-    common_1.ServerType.LoadBalancer
-]);
-/**
- * The client's view of a single server, based on the most recent hello outcome.
- *
- * Internal type, not meant to be directly instantiated
- * @public
- */
-class ServerDescription {
-    /**
-     * Create a ServerDescription
-     * @internal
-     *
-     * @param address - The address of the server
-     * @param hello - An optional hello response for this server
-     */
-    constructor(address, hello, options = {}) {
-        if (address == null || address === '') {
-            throw new error_1.MongoRuntimeError('ServerDescription must be provided with a non-empty address');
-        }
-        this.address =
-            typeof address === 'string'
-                ? utils_1.HostAddress.fromString(address).toString() // Use HostAddress to normalize
-                : address.toString();
-        this.type = parseServerType(hello, options);
-        this.hosts = hello?.hosts?.map((host) => host.toLowerCase()) ?? [];
-        this.passives = hello?.passives?.map((host) => host.toLowerCase()) ?? [];
-        this.arbiters = hello?.arbiters?.map((host) => host.toLowerCase()) ?? [];
-        this.tags = hello?.tags ?? {};
-        this.minWireVersion = hello?.minWireVersion ?? 0;
-        this.maxWireVersion = hello?.maxWireVersion ?? 0;
-        this.roundTripTime = options?.roundTripTime ?? -1;
-        this.lastUpdateTime = (0, utils_1.now)();
-        this.lastWriteDate = hello?.lastWrite?.lastWriteDate ?? 0;
-        this.error = options.error ?? null;
-        // TODO(NODE-2674): Preserve int64 sent from MongoDB
-        this.topologyVersion = this.error?.topologyVersion ?? hello?.topologyVersion ?? null;
-        this.setName = hello?.setName ?? null;
-        this.setVersion = hello?.setVersion ?? null;
-        this.electionId = hello?.electionId ?? null;
-        this.logicalSessionTimeoutMinutes = hello?.logicalSessionTimeoutMinutes ?? null;
-        this.primary = hello?.primary ?? null;
-        this.me = hello?.me?.toLowerCase() ?? null;
-        this.$clusterTime = hello?.$clusterTime ?? null;
-    }
-    get hostAddress() {
-        return utils_1.HostAddress.fromString(this.address);
-    }
-    get allHosts() {
-        return this.hosts.concat(this.arbiters).concat(this.passives);
-    }
-    /** Is this server available for reads*/
-    get isReadable() {
-        return this.type === common_1.ServerType.RSSecondary || this.isWritable;
-    }
-    /** Is this server data bearing */
-    get isDataBearing() {
-        return DATA_BEARING_SERVER_TYPES.has(this.type);
-    }
-    /** Is this server available for writes */
-    get isWritable() {
-        return WRITABLE_SERVER_TYPES.has(this.type);
-    }
-    get host() {
-        const chopLength = `:${this.port}`.length;
-        return this.address.slice(0, -chopLength);
-    }
-    get port() {
-        const port = this.address.split(':').pop();
-        return port ? Number.parseInt(port, 10) : 27017;
-    }
-    /**
-     * Determines if another `ServerDescription` is equal to this one per the rules defined
-     * in the {@link https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#serverdescription|SDAM spec}
-     */
-    equals(other) {
-        // Despite using the comparator that would determine a nullish topologyVersion as greater than
-        // for equality we should only always perform direct equality comparison
-        const topologyVersionsEqual = this.topologyVersion === other?.topologyVersion ||
-            compareTopologyVersion(this.topologyVersion, other?.topologyVersion) === 0;
-        const electionIdsEqual = this.electionId != null && other?.electionId != null
-            ? (0, utils_1.compareObjectId)(this.electionId, other.electionId) === 0
-            : this.electionId === other?.electionId;
-        return (other != null &&
-            (0, utils_1.errorStrictEqual)(this.error, other.error) &&
-            this.type === other.type &&
-            this.minWireVersion === other.minWireVersion &&
-            (0, utils_1.arrayStrictEqual)(this.hosts, other.hosts) &&
-            tagsStrictEqual(this.tags, other.tags) &&
-            this.setName === other.setName &&
-            this.setVersion === other.setVersion &&
-            electionIdsEqual &&
-            this.primary === other.primary &&
-            this.logicalSessionTimeoutMinutes === other.logicalSessionTimeoutMinutes &&
-            topologyVersionsEqual);
-    }
-}
-exports.ServerDescription = ServerDescription;
-// Parses a `hello` message and determines the server type
-function parseServerType(hello, options) {
-    if (options?.loadBalanced) {
-        return common_1.ServerType.LoadBalancer;
-    }
-    if (!hello || !hello.ok) {
-        return common_1.ServerType.Unknown;
-    }
-    if (hello.isreplicaset) {
-        return common_1.ServerType.RSGhost;
-    }
-    if (hello.msg && hello.msg === 'isdbgrid') {
-        return common_1.ServerType.Mongos;
-    }
-    if (hello.setName) {
-        if (hello.hidden) {
-            return common_1.ServerType.RSOther;
-        }
-        else if (hello.isWritablePrimary) {
-            return common_1.ServerType.RSPrimary;
-        }
-        else if (hello.secondary) {
-            return common_1.ServerType.RSSecondary;
-        }
-        else if (hello.arbiterOnly) {
-            return common_1.ServerType.RSArbiter;
-        }
-        else {
-            return common_1.ServerType.RSOther;
-        }
-    }
-    return common_1.ServerType.Standalone;
-}
-exports.parseServerType = parseServerType;
-function tagsStrictEqual(tags, tags2) {
-    const tagsKeys = Object.keys(tags);
-    const tags2Keys = Object.keys(tags2);
-    return (tagsKeys.length === tags2Keys.length &&
-        tagsKeys.every((key) => tags2[key] === tags[key]));
-}
-/**
- * Compares two topology versions.
- *
- * 1. If the response topologyVersion is unset or the ServerDescription's
- *    topologyVersion is null, the client MUST assume the response is more recent.
- * 1. If the response's topologyVersion.processId is not equal to the
- *    ServerDescription's, the client MUST assume the response is more recent.
- * 1. If the response's topologyVersion.processId is equal to the
- *    ServerDescription's, the client MUST use the counter field to determine
- *    which topologyVersion is more recent.
- *
- * ```ts
- * currentTv <   newTv === -1
- * currentTv === newTv === 0
- * currentTv >   newTv === 1
- * ```
- */
-function compareTopologyVersion(currentTv, newTv) {
-    if (currentTv == null || newTv == null) {
-        return -1;
-    }
-    if (!currentTv.processId.equals(newTv.processId)) {
-        return -1;
-    }
-    // TODO(NODE-2674): Preserve int64 sent from MongoDB
-    const currentCounter = bson_1.Long.isLong(currentTv.counter)
-        ? currentTv.counter
-        : bson_1.Long.fromNumber(currentTv.counter);
-    const newCounter = bson_1.Long.isLong(newTv.counter) ? newTv.counter : bson_1.Long.fromNumber(newTv.counter);
-    return currentCounter.compare(newCounter);
-}
-exports.compareTopologyVersion = compareTopologyVersion;
-//# sourceMappingURL=server_description.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/server_description.js.map b/server/data-import/node_modules/mongodb/lib/sdam/server_description.js.map
deleted file mode 100644
index 00d94032274dc10ebd025c95fc59ef3dbef8c5b9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/server_description.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"server_description.js","sourceRoot":"","sources":["../../src/sdam/server_description.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/server_selection.js b/server/data-import/node_modules/mongodb/lib/sdam/server_selection.js
deleted file mode 100644
index 36e2816203fe233c338b383bdb6196ba1a08d36a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/server_selection.js
+++ /dev/null
@@ -1,226 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.readPreferenceServerSelector = exports.secondaryWritableServerSelector = exports.sameServerSelector = exports.writableServerSelector = exports.MIN_SECONDARY_WRITE_WIRE_VERSION = void 0;
-const error_1 = require("../error");
-const read_preference_1 = require("../read_preference");
-const common_1 = require("./common");
-// max staleness constants
-const IDLE_WRITE_PERIOD = 10000;
-const SMALLEST_MAX_STALENESS_SECONDS = 90;
-//  Minimum version to try writes on secondaries.
-exports.MIN_SECONDARY_WRITE_WIRE_VERSION = 13;
-/**
- * Returns a server selector that selects for writable servers
- */
-function writableServerSelector() {
-    return (topologyDescription, servers) => latencyWindowReducer(topologyDescription, servers.filter((s) => s.isWritable));
-}
-exports.writableServerSelector = writableServerSelector;
-/**
- * The purpose of this selector is to select the same server, only
- * if it is in a state that it can have commands sent to it.
- */
-function sameServerSelector(description) {
-    return (topologyDescription, servers) => {
-        if (!description)
-            return [];
-        // Filter the servers to match the provided description only if
-        // the type is not unknown.
-        return servers.filter(sd => {
-            return sd.address === description.address && sd.type !== common_1.ServerType.Unknown;
-        });
-    };
-}
-exports.sameServerSelector = sameServerSelector;
-/**
- * Returns a server selector that uses a read preference to select a
- * server potentially for a write on a secondary.
- */
-function secondaryWritableServerSelector(wireVersion, readPreference) {
-    // If server version < 5.0, read preference always primary.
-    // If server version >= 5.0...
-    // - If read preference is supplied, use that.
-    // - If no read preference is supplied, use primary.
-    if (!readPreference ||
-        !wireVersion ||
-        (wireVersion && wireVersion < exports.MIN_SECONDARY_WRITE_WIRE_VERSION)) {
-        return readPreferenceServerSelector(read_preference_1.ReadPreference.primary);
-    }
-    return readPreferenceServerSelector(readPreference);
-}
-exports.secondaryWritableServerSelector = secondaryWritableServerSelector;
-/**
- * Reduces the passed in array of servers by the rules of the "Max Staleness" specification
- * found here: https://github.com/mongodb/specifications/blob/master/source/max-staleness/max-staleness.rst
- *
- * @param readPreference - The read preference providing max staleness guidance
- * @param topologyDescription - The topology description
- * @param servers - The list of server descriptions to be reduced
- * @returns The list of servers that satisfy the requirements of max staleness
- */
-function maxStalenessReducer(readPreference, topologyDescription, servers) {
-    if (readPreference.maxStalenessSeconds == null || readPreference.maxStalenessSeconds < 0) {
-        return servers;
-    }
-    const maxStaleness = readPreference.maxStalenessSeconds;
-    const maxStalenessVariance = (topologyDescription.heartbeatFrequencyMS + IDLE_WRITE_PERIOD) / 1000;
-    if (maxStaleness < maxStalenessVariance) {
-        throw new error_1.MongoInvalidArgumentError(`Option "maxStalenessSeconds" must be at least ${maxStalenessVariance} seconds`);
-    }
-    if (maxStaleness < SMALLEST_MAX_STALENESS_SECONDS) {
-        throw new error_1.MongoInvalidArgumentError(`Option "maxStalenessSeconds" must be at least ${SMALLEST_MAX_STALENESS_SECONDS} seconds`);
-    }
-    if (topologyDescription.type === common_1.TopologyType.ReplicaSetWithPrimary) {
-        const primary = Array.from(topologyDescription.servers.values()).filter(primaryFilter)[0];
-        return servers.reduce((result, server) => {
-            const stalenessMS = server.lastUpdateTime -
-                server.lastWriteDate -
-                (primary.lastUpdateTime - primary.lastWriteDate) +
-                topologyDescription.heartbeatFrequencyMS;
-            const staleness = stalenessMS / 1000;
-            const maxStalenessSeconds = readPreference.maxStalenessSeconds ?? 0;
-            if (staleness <= maxStalenessSeconds) {
-                result.push(server);
-            }
-            return result;
-        }, []);
-    }
-    if (topologyDescription.type === common_1.TopologyType.ReplicaSetNoPrimary) {
-        if (servers.length === 0) {
-            return servers;
-        }
-        const sMax = servers.reduce((max, s) => s.lastWriteDate > max.lastWriteDate ? s : max);
-        return servers.reduce((result, server) => {
-            const stalenessMS = sMax.lastWriteDate - server.lastWriteDate + topologyDescription.heartbeatFrequencyMS;
-            const staleness = stalenessMS / 1000;
-            const maxStalenessSeconds = readPreference.maxStalenessSeconds ?? 0;
-            if (staleness <= maxStalenessSeconds) {
-                result.push(server);
-            }
-            return result;
-        }, []);
-    }
-    return servers;
-}
-/**
- * Determines whether a server's tags match a given set of tags
- *
- * @param tagSet - The requested tag set to match
- * @param serverTags - The server's tags
- */
-function tagSetMatch(tagSet, serverTags) {
-    const keys = Object.keys(tagSet);
-    const serverTagKeys = Object.keys(serverTags);
-    for (let i = 0; i < keys.length; ++i) {
-        const key = keys[i];
-        if (serverTagKeys.indexOf(key) === -1 || serverTags[key] !== tagSet[key]) {
-            return false;
-        }
-    }
-    return true;
-}
-/**
- * Reduces a set of server descriptions based on tags requested by the read preference
- *
- * @param readPreference - The read preference providing the requested tags
- * @param servers - The list of server descriptions to reduce
- * @returns The list of servers matching the requested tags
- */
-function tagSetReducer(readPreference, servers) {
-    if (readPreference.tags == null ||
-        (Array.isArray(readPreference.tags) && readPreference.tags.length === 0)) {
-        return servers;
-    }
-    for (let i = 0; i < readPreference.tags.length; ++i) {
-        const tagSet = readPreference.tags[i];
-        const serversMatchingTagset = servers.reduce((matched, server) => {
-            if (tagSetMatch(tagSet, server.tags))
-                matched.push(server);
-            return matched;
-        }, []);
-        if (serversMatchingTagset.length) {
-            return serversMatchingTagset;
-        }
-    }
-    return [];
-}
-/**
- * Reduces a list of servers to ensure they fall within an acceptable latency window. This is
- * further specified in the "Server Selection" specification, found here:
- * https://github.com/mongodb/specifications/blob/master/source/server-selection/server-selection.rst
- *
- * @param topologyDescription - The topology description
- * @param servers - The list of servers to reduce
- * @returns The servers which fall within an acceptable latency window
- */
-function latencyWindowReducer(topologyDescription, servers) {
-    const low = servers.reduce((min, server) => min === -1 ? server.roundTripTime : Math.min(server.roundTripTime, min), -1);
-    const high = low + topologyDescription.localThresholdMS;
-    return servers.reduce((result, server) => {
-        if (server.roundTripTime <= high && server.roundTripTime >= low)
-            result.push(server);
-        return result;
-    }, []);
-}
-// filters
-function primaryFilter(server) {
-    return server.type === common_1.ServerType.RSPrimary;
-}
-function secondaryFilter(server) {
-    return server.type === common_1.ServerType.RSSecondary;
-}
-function nearestFilter(server) {
-    return server.type === common_1.ServerType.RSSecondary || server.type === common_1.ServerType.RSPrimary;
-}
-function knownFilter(server) {
-    return server.type !== common_1.ServerType.Unknown;
-}
-function loadBalancerFilter(server) {
-    return server.type === common_1.ServerType.LoadBalancer;
-}
-/**
- * Returns a function which selects servers based on a provided read preference
- *
- * @param readPreference - The read preference to select with
- */
-function readPreferenceServerSelector(readPreference) {
-    if (!readPreference.isValid()) {
-        throw new error_1.MongoInvalidArgumentError('Invalid read preference specified');
-    }
-    return (topologyDescription, servers) => {
-        const commonWireVersion = topologyDescription.commonWireVersion;
-        if (commonWireVersion &&
-            readPreference.minWireVersion &&
-            readPreference.minWireVersion > commonWireVersion) {
-            throw new error_1.MongoCompatibilityError(`Minimum wire version '${readPreference.minWireVersion}' required, but found '${commonWireVersion}'`);
-        }
-        if (topologyDescription.type === common_1.TopologyType.LoadBalanced) {
-            return servers.filter(loadBalancerFilter);
-        }
-        if (topologyDescription.type === common_1.TopologyType.Unknown) {
-            return [];
-        }
-        if (topologyDescription.type === common_1.TopologyType.Single ||
-            topologyDescription.type === common_1.TopologyType.Sharded) {
-            return latencyWindowReducer(topologyDescription, servers.filter(knownFilter));
-        }
-        const mode = readPreference.mode;
-        if (mode === read_preference_1.ReadPreference.PRIMARY) {
-            return servers.filter(primaryFilter);
-        }
-        if (mode === read_preference_1.ReadPreference.PRIMARY_PREFERRED) {
-            const result = servers.filter(primaryFilter);
-            if (result.length) {
-                return result;
-            }
-        }
-        const filter = mode === read_preference_1.ReadPreference.NEAREST ? nearestFilter : secondaryFilter;
-        const selectedServers = latencyWindowReducer(topologyDescription, tagSetReducer(readPreference, maxStalenessReducer(readPreference, topologyDescription, servers.filter(filter))));
-        if (mode === read_preference_1.ReadPreference.SECONDARY_PREFERRED && selectedServers.length === 0) {
-            return servers.filter(primaryFilter);
-        }
-        return selectedServers;
-    };
-}
-exports.readPreferenceServerSelector = readPreferenceServerSelector;
-//# sourceMappingURL=server_selection.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/server_selection.js.map b/server/data-import/node_modules/mongodb/lib/sdam/server_selection.js.map
deleted file mode 100644
index 50c687dcf1d2bd1330d89222dba067310bca8f45..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/server_selection.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"server_selection.js","sourceRoot":"","sources":["../../src/sdam/server_selection.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/srv_polling.js b/server/data-import/node_modules/mongodb/lib/sdam/srv_polling.js
deleted file mode 100644
index dfa4120bc2efac0b32ad92abec49277b20c40f30..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/srv_polling.js
+++ /dev/null
@@ -1,103 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.SrvPoller = exports.SrvPollingEvent = void 0;
-const dns = require("dns");
-const timers_1 = require("timers");
-const error_1 = require("../error");
-const mongo_types_1 = require("../mongo_types");
-const utils_1 = require("../utils");
-/**
- * @internal
- * @category Event
- */
-class SrvPollingEvent {
-    constructor(srvRecords) {
-        this.srvRecords = srvRecords;
-    }
-    hostnames() {
-        return new Set(this.srvRecords.map(r => utils_1.HostAddress.fromSrvRecord(r).toString()));
-    }
-}
-exports.SrvPollingEvent = SrvPollingEvent;
-/** @internal */
-class SrvPoller extends mongo_types_1.TypedEventEmitter {
-    constructor(options) {
-        super();
-        if (!options || !options.srvHost) {
-            throw new error_1.MongoRuntimeError('Options for SrvPoller must exist and include srvHost');
-        }
-        this.srvHost = options.srvHost;
-        this.srvMaxHosts = options.srvMaxHosts ?? 0;
-        this.srvServiceName = options.srvServiceName ?? 'mongodb';
-        this.rescanSrvIntervalMS = 60000;
-        this.heartbeatFrequencyMS = options.heartbeatFrequencyMS ?? 10000;
-        this.haMode = false;
-        this.generation = 0;
-        this._timeout = undefined;
-    }
-    get srvAddress() {
-        return `_${this.srvServiceName}._tcp.${this.srvHost}`;
-    }
-    get intervalMS() {
-        return this.haMode ? this.heartbeatFrequencyMS : this.rescanSrvIntervalMS;
-    }
-    start() {
-        if (!this._timeout) {
-            this.schedule();
-        }
-    }
-    stop() {
-        if (this._timeout) {
-            (0, timers_1.clearTimeout)(this._timeout);
-            this.generation += 1;
-            this._timeout = undefined;
-        }
-    }
-    // TODO(NODE-4994): implement new logging logic for SrvPoller failures
-    schedule() {
-        if (this._timeout) {
-            (0, timers_1.clearTimeout)(this._timeout);
-        }
-        this._timeout = (0, timers_1.setTimeout)(() => {
-            this._poll().catch(() => null);
-        }, this.intervalMS);
-    }
-    success(srvRecords) {
-        this.haMode = false;
-        this.schedule();
-        this.emit(SrvPoller.SRV_RECORD_DISCOVERY, new SrvPollingEvent(srvRecords));
-    }
-    failure() {
-        this.haMode = true;
-        this.schedule();
-    }
-    async _poll() {
-        const generation = this.generation;
-        let srvRecords;
-        try {
-            srvRecords = await dns.promises.resolveSrv(this.srvAddress);
-        }
-        catch (dnsError) {
-            this.failure();
-            return;
-        }
-        if (generation !== this.generation) {
-            return;
-        }
-        const finalAddresses = [];
-        for (const record of srvRecords) {
-            if ((0, utils_1.matchesParentDomain)(record.name, this.srvHost)) {
-                finalAddresses.push(record);
-            }
-        }
-        if (!finalAddresses.length) {
-            this.failure();
-            return;
-        }
-        this.success(finalAddresses);
-    }
-}
-/** @event */
-SrvPoller.SRV_RECORD_DISCOVERY = 'srvRecordDiscovery';
-exports.SrvPoller = SrvPoller;
-//# sourceMappingURL=srv_polling.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/srv_polling.js.map b/server/data-import/node_modules/mongodb/lib/sdam/srv_polling.js.map
deleted file mode 100644
index 0ba9051552beffee5a2b4ebf5c523d062ca431a8..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/srv_polling.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"srv_polling.js","sourceRoot":"","sources":["../../src/sdam/srv_polling.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/topology.js b/server/data-import/node_modules/mongodb/lib/sdam/topology.js
deleted file mode 100644
index 1806b741b7b07f7f3a28735a74a107395b39866a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/topology.js
+++ /dev/null
@@ -1,612 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ServerCapabilities = exports.Topology = void 0;
-const util_1 = require("util");
-const connection_string_1 = require("../connection_string");
-const constants_1 = require("../constants");
-const error_1 = require("../error");
-const mongo_types_1 = require("../mongo_types");
-const read_preference_1 = require("../read_preference");
-const utils_1 = require("../utils");
-const common_1 = require("./common");
-const events_1 = require("./events");
-const server_1 = require("./server");
-const server_description_1 = require("./server_description");
-const server_selection_1 = require("./server_selection");
-const srv_polling_1 = require("./srv_polling");
-const topology_description_1 = require("./topology_description");
-// Global state
-let globalTopologyCounter = 0;
-const stateTransition = (0, utils_1.makeStateMachine)({
-    [common_1.STATE_CLOSED]: [common_1.STATE_CLOSED, common_1.STATE_CONNECTING],
-    [common_1.STATE_CONNECTING]: [common_1.STATE_CONNECTING, common_1.STATE_CLOSING, common_1.STATE_CONNECTED, common_1.STATE_CLOSED],
-    [common_1.STATE_CONNECTED]: [common_1.STATE_CONNECTED, common_1.STATE_CLOSING, common_1.STATE_CLOSED],
-    [common_1.STATE_CLOSING]: [common_1.STATE_CLOSING, common_1.STATE_CLOSED]
-});
-/** @internal */
-const kCancelled = Symbol('cancelled');
-/** @internal */
-const kWaitQueue = Symbol('waitQueue');
-/**
- * A container of server instances representing a connection to a MongoDB topology.
- * @internal
- */
-class Topology extends mongo_types_1.TypedEventEmitter {
-    /**
-     * @param seedlist - a list of HostAddress instances to connect to
-     */
-    constructor(client, seeds, options) {
-        super();
-        this.client = client;
-        this.selectServerAsync = (0, util_1.promisify)((selector, options, callback) => this.selectServer(selector, options, callback));
-        // Options should only be undefined in tests, MongoClient will always have defined options
-        options = options ?? {
-            hosts: [utils_1.HostAddress.fromString('localhost:27017')],
-            ...Object.fromEntries(connection_string_1.DEFAULT_OPTIONS.entries()),
-            ...Object.fromEntries(connection_string_1.FEATURE_FLAGS.entries())
-        };
-        if (typeof seeds === 'string') {
-            seeds = [utils_1.HostAddress.fromString(seeds)];
-        }
-        else if (!Array.isArray(seeds)) {
-            seeds = [seeds];
-        }
-        const seedlist = [];
-        for (const seed of seeds) {
-            if (typeof seed === 'string') {
-                seedlist.push(utils_1.HostAddress.fromString(seed));
-            }
-            else if (seed instanceof utils_1.HostAddress) {
-                seedlist.push(seed);
-            }
-            else {
-                // FIXME(NODE-3483): May need to be a MongoParseError
-                throw new error_1.MongoRuntimeError(`Topology cannot be constructed from ${JSON.stringify(seed)}`);
-            }
-        }
-        const topologyType = topologyTypeFromOptions(options);
-        const topologyId = globalTopologyCounter++;
-        const selectedHosts = options.srvMaxHosts == null ||
-            options.srvMaxHosts === 0 ||
-            options.srvMaxHosts >= seedlist.length
-            ? seedlist
-            : (0, utils_1.shuffle)(seedlist, options.srvMaxHosts);
-        const serverDescriptions = new Map();
-        for (const hostAddress of selectedHosts) {
-            serverDescriptions.set(hostAddress.toString(), new server_description_1.ServerDescription(hostAddress));
-        }
-        this[kWaitQueue] = new utils_1.List();
-        this.s = {
-            // the id of this topology
-            id: topologyId,
-            // passed in options
-            options,
-            // initial seedlist of servers to connect to
-            seedlist,
-            // initial state
-            state: common_1.STATE_CLOSED,
-            // the topology description
-            description: new topology_description_1.TopologyDescription(topologyType, serverDescriptions, options.replicaSet, undefined, undefined, undefined, options),
-            serverSelectionTimeoutMS: options.serverSelectionTimeoutMS,
-            heartbeatFrequencyMS: options.heartbeatFrequencyMS,
-            minHeartbeatFrequencyMS: options.minHeartbeatFrequencyMS,
-            // a map of server instances to normalized addresses
-            servers: new Map(),
-            credentials: options?.credentials,
-            clusterTime: undefined,
-            // timer management
-            connectionTimers: new Set(),
-            detectShardedTopology: ev => this.detectShardedTopology(ev),
-            detectSrvRecords: ev => this.detectSrvRecords(ev)
-        };
-        if (options.srvHost && !options.loadBalanced) {
-            this.s.srvPoller =
-                options.srvPoller ??
-                    new srv_polling_1.SrvPoller({
-                        heartbeatFrequencyMS: this.s.heartbeatFrequencyMS,
-                        srvHost: options.srvHost,
-                        srvMaxHosts: options.srvMaxHosts,
-                        srvServiceName: options.srvServiceName
-                    });
-            this.on(Topology.TOPOLOGY_DESCRIPTION_CHANGED, this.s.detectShardedTopology);
-        }
-    }
-    detectShardedTopology(event) {
-        const previousType = event.previousDescription.type;
-        const newType = event.newDescription.type;
-        const transitionToSharded = previousType !== common_1.TopologyType.Sharded && newType === common_1.TopologyType.Sharded;
-        const srvListeners = this.s.srvPoller?.listeners(srv_polling_1.SrvPoller.SRV_RECORD_DISCOVERY);
-        const listeningToSrvPolling = !!srvListeners?.includes(this.s.detectSrvRecords);
-        if (transitionToSharded && !listeningToSrvPolling) {
-            this.s.srvPoller?.on(srv_polling_1.SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords);
-            this.s.srvPoller?.start();
-        }
-    }
-    detectSrvRecords(ev) {
-        const previousTopologyDescription = this.s.description;
-        this.s.description = this.s.description.updateFromSrvPollingEvent(ev, this.s.options.srvMaxHosts);
-        if (this.s.description === previousTopologyDescription) {
-            // Nothing changed, so return
-            return;
-        }
-        updateServers(this);
-        this.emit(Topology.TOPOLOGY_DESCRIPTION_CHANGED, new events_1.TopologyDescriptionChangedEvent(this.s.id, previousTopologyDescription, this.s.description));
-    }
-    /**
-     * @returns A `TopologyDescription` for this topology
-     */
-    get description() {
-        return this.s.description;
-    }
-    get loadBalanced() {
-        return this.s.options.loadBalanced;
-    }
-    get capabilities() {
-        return new ServerCapabilities(this.lastHello());
-    }
-    connect(options, callback) {
-        if (typeof options === 'function')
-            (callback = options), (options = {});
-        options = options ?? {};
-        if (this.s.state === common_1.STATE_CONNECTED) {
-            if (typeof callback === 'function') {
-                callback();
-            }
-            return;
-        }
-        stateTransition(this, common_1.STATE_CONNECTING);
-        // emit SDAM monitoring events
-        this.emit(Topology.TOPOLOGY_OPENING, new events_1.TopologyOpeningEvent(this.s.id));
-        // emit an event for the topology change
-        this.emit(Topology.TOPOLOGY_DESCRIPTION_CHANGED, new events_1.TopologyDescriptionChangedEvent(this.s.id, new topology_description_1.TopologyDescription(common_1.TopologyType.Unknown), // initial is always Unknown
-        this.s.description));
-        // connect all known servers, then attempt server selection to connect
-        const serverDescriptions = Array.from(this.s.description.servers.values());
-        this.s.servers = new Map(serverDescriptions.map(serverDescription => [
-            serverDescription.address,
-            createAndConnectServer(this, serverDescription)
-        ]));
-        // In load balancer mode we need to fake a server description getting
-        // emitted from the monitor, since the monitor doesn't exist.
-        if (this.s.options.loadBalanced) {
-            for (const description of serverDescriptions) {
-                const newDescription = new server_description_1.ServerDescription(description.hostAddress, undefined, {
-                    loadBalanced: this.s.options.loadBalanced
-                });
-                this.serverUpdateHandler(newDescription);
-            }
-        }
-        const exitWithError = (error) => callback ? callback(error) : this.emit(Topology.ERROR, error);
-        const readPreference = options.readPreference ?? read_preference_1.ReadPreference.primary;
-        this.selectServer((0, server_selection_1.readPreferenceServerSelector)(readPreference), options, (err, server) => {
-            if (err) {
-                return this.close({ force: false }, () => exitWithError(err));
-            }
-            // TODO: NODE-2471
-            const skipPingOnConnect = this.s.options[Symbol.for('@@mdb.skipPingOnConnect')] === true;
-            if (!skipPingOnConnect && server && this.s.credentials) {
-                server.command((0, utils_1.ns)('admin.$cmd'), { ping: 1 }, {}, err => {
-                    if (err) {
-                        return exitWithError(err);
-                    }
-                    stateTransition(this, common_1.STATE_CONNECTED);
-                    this.emit(Topology.OPEN, this);
-                    this.emit(Topology.CONNECT, this);
-                    callback?.(undefined, this);
-                });
-                return;
-            }
-            stateTransition(this, common_1.STATE_CONNECTED);
-            this.emit(Topology.OPEN, this);
-            this.emit(Topology.CONNECT, this);
-            callback?.(undefined, this);
-        });
-    }
-    close(options, callback) {
-        options = options ?? { force: false };
-        if (this.s.state === common_1.STATE_CLOSED || this.s.state === common_1.STATE_CLOSING) {
-            return callback?.();
-        }
-        const destroyedServers = Array.from(this.s.servers.values(), server => {
-            return (0, util_1.promisify)(destroyServer)(server, this, { force: !!options?.force });
-        });
-        Promise.all(destroyedServers)
-            .then(() => {
-            this.s.servers.clear();
-            stateTransition(this, common_1.STATE_CLOSING);
-            drainWaitQueue(this[kWaitQueue], new error_1.MongoTopologyClosedError());
-            (0, common_1.drainTimerQueue)(this.s.connectionTimers);
-            if (this.s.srvPoller) {
-                this.s.srvPoller.stop();
-                this.s.srvPoller.removeListener(srv_polling_1.SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords);
-            }
-            this.removeListener(Topology.TOPOLOGY_DESCRIPTION_CHANGED, this.s.detectShardedTopology);
-            stateTransition(this, common_1.STATE_CLOSED);
-            // emit an event for close
-            this.emit(Topology.TOPOLOGY_CLOSED, new events_1.TopologyClosedEvent(this.s.id));
-        })
-            .finally(() => callback?.());
-    }
-    /**
-     * Selects a server according to the selection predicate provided
-     *
-     * @param selector - An optional selector to select servers by, defaults to a random selection within a latency window
-     * @param options - Optional settings related to server selection
-     * @param callback - The callback used to indicate success or failure
-     * @returns An instance of a `Server` meeting the criteria of the predicate provided
-     */
-    selectServer(selector, options, callback) {
-        let serverSelector;
-        if (typeof selector !== 'function') {
-            if (typeof selector === 'string') {
-                serverSelector = (0, server_selection_1.readPreferenceServerSelector)(read_preference_1.ReadPreference.fromString(selector));
-            }
-            else {
-                let readPreference;
-                if (selector instanceof read_preference_1.ReadPreference) {
-                    readPreference = selector;
-                }
-                else {
-                    read_preference_1.ReadPreference.translate(options);
-                    readPreference = options.readPreference || read_preference_1.ReadPreference.primary;
-                }
-                serverSelector = (0, server_selection_1.readPreferenceServerSelector)(readPreference);
-            }
-        }
-        else {
-            serverSelector = selector;
-        }
-        options = Object.assign({}, { serverSelectionTimeoutMS: this.s.serverSelectionTimeoutMS }, options);
-        const isSharded = this.description.type === common_1.TopologyType.Sharded;
-        const session = options.session;
-        const transaction = session && session.transaction;
-        if (isSharded && transaction && transaction.server) {
-            callback(undefined, transaction.server);
-            return;
-        }
-        const waitQueueMember = {
-            serverSelector,
-            transaction,
-            callback,
-            timeoutController: new utils_1.TimeoutController(options.serverSelectionTimeoutMS)
-        };
-        waitQueueMember.timeoutController.signal.addEventListener('abort', () => {
-            waitQueueMember[kCancelled] = true;
-            waitQueueMember.timeoutController.clear();
-            const timeoutError = new error_1.MongoServerSelectionError(`Server selection timed out after ${options.serverSelectionTimeoutMS} ms`, this.description);
-            waitQueueMember.callback(timeoutError);
-        });
-        this[kWaitQueue].push(waitQueueMember);
-        processWaitQueue(this);
-    }
-    /**
-     * Update the internal TopologyDescription with a ServerDescription
-     *
-     * @param serverDescription - The server to update in the internal list of server descriptions
-     */
-    serverUpdateHandler(serverDescription) {
-        if (!this.s.description.hasServer(serverDescription.address)) {
-            return;
-        }
-        // ignore this server update if its from an outdated topologyVersion
-        if (isStaleServerDescription(this.s.description, serverDescription)) {
-            return;
-        }
-        // these will be used for monitoring events later
-        const previousTopologyDescription = this.s.description;
-        const previousServerDescription = this.s.description.servers.get(serverDescription.address);
-        if (!previousServerDescription) {
-            return;
-        }
-        // Driver Sessions Spec: "Whenever a driver receives a cluster time from
-        // a server it MUST compare it to the current highest seen cluster time
-        // for the deployment. If the new cluster time is higher than the
-        // highest seen cluster time it MUST become the new highest seen cluster
-        // time. Two cluster times are compared using only the BsonTimestamp
-        // value of the clusterTime embedded field."
-        const clusterTime = serverDescription.$clusterTime;
-        if (clusterTime) {
-            (0, common_1._advanceClusterTime)(this, clusterTime);
-        }
-        // If we already know all the information contained in this updated description, then
-        // we don't need to emit SDAM events, but still need to update the description, in order
-        // to keep client-tracked attributes like last update time and round trip time up to date
-        const equalDescriptions = previousServerDescription && previousServerDescription.equals(serverDescription);
-        // first update the TopologyDescription
-        this.s.description = this.s.description.update(serverDescription);
-        if (this.s.description.compatibilityError) {
-            this.emit(Topology.ERROR, new error_1.MongoCompatibilityError(this.s.description.compatibilityError));
-            return;
-        }
-        // emit monitoring events for this change
-        if (!equalDescriptions) {
-            const newDescription = this.s.description.servers.get(serverDescription.address);
-            if (newDescription) {
-                this.emit(Topology.SERVER_DESCRIPTION_CHANGED, new events_1.ServerDescriptionChangedEvent(this.s.id, serverDescription.address, previousServerDescription, newDescription));
-            }
-        }
-        // update server list from updated descriptions
-        updateServers(this, serverDescription);
-        // attempt to resolve any outstanding server selection attempts
-        if (this[kWaitQueue].length > 0) {
-            processWaitQueue(this);
-        }
-        if (!equalDescriptions) {
-            this.emit(Topology.TOPOLOGY_DESCRIPTION_CHANGED, new events_1.TopologyDescriptionChangedEvent(this.s.id, previousTopologyDescription, this.s.description));
-        }
-    }
-    auth(credentials, callback) {
-        if (typeof credentials === 'function')
-            (callback = credentials), (credentials = undefined);
-        if (typeof callback === 'function')
-            callback(undefined, true);
-    }
-    get clientMetadata() {
-        return this.s.options.metadata;
-    }
-    isConnected() {
-        return this.s.state === common_1.STATE_CONNECTED;
-    }
-    isDestroyed() {
-        return this.s.state === common_1.STATE_CLOSED;
-    }
-    // NOTE: There are many places in code where we explicitly check the last hello
-    //       to do feature support detection. This should be done any other way, but for
-    //       now we will just return the first hello seen, which should suffice.
-    lastHello() {
-        const serverDescriptions = Array.from(this.description.servers.values());
-        if (serverDescriptions.length === 0)
-            return {};
-        const sd = serverDescriptions.filter((sd) => sd.type !== common_1.ServerType.Unknown)[0];
-        const result = sd || { maxWireVersion: this.description.commonWireVersion };
-        return result;
-    }
-    get commonWireVersion() {
-        return this.description.commonWireVersion;
-    }
-    get logicalSessionTimeoutMinutes() {
-        return this.description.logicalSessionTimeoutMinutes;
-    }
-    get clusterTime() {
-        return this.s.clusterTime;
-    }
-    set clusterTime(clusterTime) {
-        this.s.clusterTime = clusterTime;
-    }
-}
-/** @event */
-Topology.SERVER_OPENING = constants_1.SERVER_OPENING;
-/** @event */
-Topology.SERVER_CLOSED = constants_1.SERVER_CLOSED;
-/** @event */
-Topology.SERVER_DESCRIPTION_CHANGED = constants_1.SERVER_DESCRIPTION_CHANGED;
-/** @event */
-Topology.TOPOLOGY_OPENING = constants_1.TOPOLOGY_OPENING;
-/** @event */
-Topology.TOPOLOGY_CLOSED = constants_1.TOPOLOGY_CLOSED;
-/** @event */
-Topology.TOPOLOGY_DESCRIPTION_CHANGED = constants_1.TOPOLOGY_DESCRIPTION_CHANGED;
-/** @event */
-Topology.ERROR = constants_1.ERROR;
-/** @event */
-Topology.OPEN = constants_1.OPEN;
-/** @event */
-Topology.CONNECT = constants_1.CONNECT;
-/** @event */
-Topology.CLOSE = constants_1.CLOSE;
-/** @event */
-Topology.TIMEOUT = constants_1.TIMEOUT;
-exports.Topology = Topology;
-/** Destroys a server, and removes all event listeners from the instance */
-function destroyServer(server, topology, options, callback) {
-    options = options ?? { force: false };
-    for (const event of constants_1.LOCAL_SERVER_EVENTS) {
-        server.removeAllListeners(event);
-    }
-    server.destroy(options, () => {
-        topology.emit(Topology.SERVER_CLOSED, new events_1.ServerClosedEvent(topology.s.id, server.description.address));
-        for (const event of constants_1.SERVER_RELAY_EVENTS) {
-            server.removeAllListeners(event);
-        }
-        if (typeof callback === 'function') {
-            callback();
-        }
-    });
-}
-/** Predicts the TopologyType from options */
-function topologyTypeFromOptions(options) {
-    if (options?.directConnection) {
-        return common_1.TopologyType.Single;
-    }
-    if (options?.replicaSet) {
-        return common_1.TopologyType.ReplicaSetNoPrimary;
-    }
-    if (options?.loadBalanced) {
-        return common_1.TopologyType.LoadBalanced;
-    }
-    return common_1.TopologyType.Unknown;
-}
-/**
- * Creates new server instances and attempts to connect them
- *
- * @param topology - The topology that this server belongs to
- * @param serverDescription - The description for the server to initialize and connect to
- */
-function createAndConnectServer(topology, serverDescription) {
-    topology.emit(Topology.SERVER_OPENING, new events_1.ServerOpeningEvent(topology.s.id, serverDescription.address));
-    const server = new server_1.Server(topology, serverDescription, topology.s.options);
-    for (const event of constants_1.SERVER_RELAY_EVENTS) {
-        server.on(event, (e) => topology.emit(event, e));
-    }
-    server.on(server_1.Server.DESCRIPTION_RECEIVED, description => topology.serverUpdateHandler(description));
-    server.connect();
-    return server;
-}
-/**
- * @param topology - Topology to update.
- * @param incomingServerDescription - New server description.
- */
-function updateServers(topology, incomingServerDescription) {
-    // update the internal server's description
-    if (incomingServerDescription && topology.s.servers.has(incomingServerDescription.address)) {
-        const server = topology.s.servers.get(incomingServerDescription.address);
-        if (server) {
-            server.s.description = incomingServerDescription;
-            if (incomingServerDescription.error instanceof error_1.MongoError &&
-                incomingServerDescription.error.hasErrorLabel(error_1.MongoErrorLabel.ResetPool)) {
-                const interruptInUseConnections = incomingServerDescription.error.hasErrorLabel(error_1.MongoErrorLabel.InterruptInUseConnections);
-                server.pool.clear({ interruptInUseConnections });
-            }
-            else if (incomingServerDescription.error == null) {
-                const newTopologyType = topology.s.description.type;
-                const shouldMarkPoolReady = incomingServerDescription.isDataBearing ||
-                    (incomingServerDescription.type !== common_1.ServerType.Unknown &&
-                        newTopologyType === common_1.TopologyType.Single);
-                if (shouldMarkPoolReady) {
-                    server.pool.ready();
-                }
-            }
-        }
-    }
-    // add new servers for all descriptions we currently don't know about locally
-    for (const serverDescription of topology.description.servers.values()) {
-        if (!topology.s.servers.has(serverDescription.address)) {
-            const server = createAndConnectServer(topology, serverDescription);
-            topology.s.servers.set(serverDescription.address, server);
-        }
-    }
-    // for all servers no longer known, remove their descriptions and destroy their instances
-    for (const entry of topology.s.servers) {
-        const serverAddress = entry[0];
-        if (topology.description.hasServer(serverAddress)) {
-            continue;
-        }
-        if (!topology.s.servers.has(serverAddress)) {
-            continue;
-        }
-        const server = topology.s.servers.get(serverAddress);
-        topology.s.servers.delete(serverAddress);
-        // prepare server for garbage collection
-        if (server) {
-            destroyServer(server, topology);
-        }
-    }
-}
-function drainWaitQueue(queue, err) {
-    while (queue.length) {
-        const waitQueueMember = queue.shift();
-        if (!waitQueueMember) {
-            continue;
-        }
-        waitQueueMember.timeoutController.clear();
-        if (!waitQueueMember[kCancelled]) {
-            waitQueueMember.callback(err);
-        }
-    }
-}
-function processWaitQueue(topology) {
-    if (topology.s.state === common_1.STATE_CLOSED) {
-        drainWaitQueue(topology[kWaitQueue], new error_1.MongoTopologyClosedError());
-        return;
-    }
-    const isSharded = topology.description.type === common_1.TopologyType.Sharded;
-    const serverDescriptions = Array.from(topology.description.servers.values());
-    const membersToProcess = topology[kWaitQueue].length;
-    for (let i = 0; i < membersToProcess; ++i) {
-        const waitQueueMember = topology[kWaitQueue].shift();
-        if (!waitQueueMember) {
-            continue;
-        }
-        if (waitQueueMember[kCancelled]) {
-            continue;
-        }
-        let selectedDescriptions;
-        try {
-            const serverSelector = waitQueueMember.serverSelector;
-            selectedDescriptions = serverSelector
-                ? serverSelector(topology.description, serverDescriptions)
-                : serverDescriptions;
-        }
-        catch (e) {
-            waitQueueMember.timeoutController.clear();
-            waitQueueMember.callback(e);
-            continue;
-        }
-        let selectedServer;
-        if (selectedDescriptions.length === 0) {
-            topology[kWaitQueue].push(waitQueueMember);
-            continue;
-        }
-        else if (selectedDescriptions.length === 1) {
-            selectedServer = topology.s.servers.get(selectedDescriptions[0].address);
-        }
-        else {
-            const descriptions = (0, utils_1.shuffle)(selectedDescriptions, 2);
-            const server1 = topology.s.servers.get(descriptions[0].address);
-            const server2 = topology.s.servers.get(descriptions[1].address);
-            selectedServer =
-                server1 && server2 && server1.s.operationCount < server2.s.operationCount
-                    ? server1
-                    : server2;
-        }
-        if (!selectedServer) {
-            waitQueueMember.callback(new error_1.MongoServerSelectionError('server selection returned a server description but the server was not found in the topology', topology.description));
-            return;
-        }
-        const transaction = waitQueueMember.transaction;
-        if (isSharded && transaction && transaction.isActive && selectedServer) {
-            transaction.pinServer(selectedServer);
-        }
-        waitQueueMember.timeoutController.clear();
-        waitQueueMember.callback(undefined, selectedServer);
-    }
-    if (topology[kWaitQueue].length > 0) {
-        // ensure all server monitors attempt monitoring soon
-        for (const [, server] of topology.s.servers) {
-            process.nextTick(function scheduleServerCheck() {
-                return server.requestCheck();
-            });
-        }
-    }
-}
-function isStaleServerDescription(topologyDescription, incomingServerDescription) {
-    const currentServerDescription = topologyDescription.servers.get(incomingServerDescription.address);
-    const currentTopologyVersion = currentServerDescription?.topologyVersion;
-    return ((0, server_description_1.compareTopologyVersion)(currentTopologyVersion, incomingServerDescription.topologyVersion) > 0);
-}
-/** @public */
-class ServerCapabilities {
-    constructor(hello) {
-        this.minWireVersion = hello.minWireVersion || 0;
-        this.maxWireVersion = hello.maxWireVersion || 0;
-    }
-    get hasAggregationCursor() {
-        return this.maxWireVersion >= 1;
-    }
-    get hasWriteCommands() {
-        return this.maxWireVersion >= 2;
-    }
-    get hasTextSearch() {
-        return this.minWireVersion >= 0;
-    }
-    get hasAuthCommands() {
-        return this.maxWireVersion >= 1;
-    }
-    get hasListCollectionsCommand() {
-        return this.maxWireVersion >= 3;
-    }
-    get hasListIndexesCommand() {
-        return this.maxWireVersion >= 3;
-    }
-    get supportsSnapshotReads() {
-        return this.maxWireVersion >= 13;
-    }
-    get commandsTakeWriteConcern() {
-        return this.maxWireVersion >= 5;
-    }
-    get commandsTakeCollation() {
-        return this.maxWireVersion >= 5;
-    }
-}
-exports.ServerCapabilities = ServerCapabilities;
-//# sourceMappingURL=topology.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/topology.js.map b/server/data-import/node_modules/mongodb/lib/sdam/topology.js.map
deleted file mode 100644
index 43374f9d0412008673ca42e1b99abf1382200ee3..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/topology.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"topology.js","sourceRoot":"","sources":["../../src/sdam/topology.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/topology_description.js b/server/data-import/node_modules/mongodb/lib/sdam/topology_description.js
deleted file mode 100644
index 6ee1b0c2e5ead842ac7174c640e0ea1b656f876c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/topology_description.js
+++ /dev/null
@@ -1,360 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.TopologyDescription = void 0;
-const WIRE_CONSTANTS = require("../cmap/wire_protocol/constants");
-const error_1 = require("../error");
-const utils_1 = require("../utils");
-const common_1 = require("./common");
-const server_description_1 = require("./server_description");
-// constants related to compatibility checks
-const MIN_SUPPORTED_SERVER_VERSION = WIRE_CONSTANTS.MIN_SUPPORTED_SERVER_VERSION;
-const MAX_SUPPORTED_SERVER_VERSION = WIRE_CONSTANTS.MAX_SUPPORTED_SERVER_VERSION;
-const MIN_SUPPORTED_WIRE_VERSION = WIRE_CONSTANTS.MIN_SUPPORTED_WIRE_VERSION;
-const MAX_SUPPORTED_WIRE_VERSION = WIRE_CONSTANTS.MAX_SUPPORTED_WIRE_VERSION;
-const MONGOS_OR_UNKNOWN = new Set([common_1.ServerType.Mongos, common_1.ServerType.Unknown]);
-const MONGOS_OR_STANDALONE = new Set([common_1.ServerType.Mongos, common_1.ServerType.Standalone]);
-const NON_PRIMARY_RS_MEMBERS = new Set([
-    common_1.ServerType.RSSecondary,
-    common_1.ServerType.RSArbiter,
-    common_1.ServerType.RSOther
-]);
-/**
- * Representation of a deployment of servers
- * @public
- */
-class TopologyDescription {
-    /**
-     * Create a TopologyDescription
-     */
-    constructor(topologyType, serverDescriptions = null, setName = null, maxSetVersion = null, maxElectionId = null, commonWireVersion = null, options = null) {
-        options = options ?? {};
-        this.type = topologyType ?? common_1.TopologyType.Unknown;
-        this.servers = serverDescriptions ?? new Map();
-        this.stale = false;
-        this.compatible = true;
-        this.heartbeatFrequencyMS = options.heartbeatFrequencyMS ?? 0;
-        this.localThresholdMS = options.localThresholdMS ?? 15;
-        this.setName = setName ?? null;
-        this.maxElectionId = maxElectionId ?? null;
-        this.maxSetVersion = maxSetVersion ?? null;
-        this.commonWireVersion = commonWireVersion ?? 0;
-        // determine server compatibility
-        for (const serverDescription of this.servers.values()) {
-            // Load balancer mode is always compatible.
-            if (serverDescription.type === common_1.ServerType.Unknown ||
-                serverDescription.type === common_1.ServerType.LoadBalancer) {
-                continue;
-            }
-            if (serverDescription.minWireVersion > MAX_SUPPORTED_WIRE_VERSION) {
-                this.compatible = false;
-                this.compatibilityError = `Server at ${serverDescription.address} requires wire version ${serverDescription.minWireVersion}, but this version of the driver only supports up to ${MAX_SUPPORTED_WIRE_VERSION} (MongoDB ${MAX_SUPPORTED_SERVER_VERSION})`;
-            }
-            if (serverDescription.maxWireVersion < MIN_SUPPORTED_WIRE_VERSION) {
-                this.compatible = false;
-                this.compatibilityError = `Server at ${serverDescription.address} reports wire version ${serverDescription.maxWireVersion}, but this version of the driver requires at least ${MIN_SUPPORTED_WIRE_VERSION} (MongoDB ${MIN_SUPPORTED_SERVER_VERSION}).`;
-                break;
-            }
-        }
-        // Whenever a client updates the TopologyDescription from a hello response, it MUST set
-        // TopologyDescription.logicalSessionTimeoutMinutes to the smallest logicalSessionTimeoutMinutes
-        // value among ServerDescriptions of all data-bearing server types. If any have a null
-        // logicalSessionTimeoutMinutes, then TopologyDescription.logicalSessionTimeoutMinutes MUST be
-        // set to null.
-        this.logicalSessionTimeoutMinutes = null;
-        for (const [, server] of this.servers) {
-            if (server.isReadable) {
-                if (server.logicalSessionTimeoutMinutes == null) {
-                    // If any of the servers have a null logicalSessionsTimeout, then the whole topology does
-                    this.logicalSessionTimeoutMinutes = null;
-                    break;
-                }
-                if (this.logicalSessionTimeoutMinutes == null) {
-                    // First server with a non null logicalSessionsTimeout
-                    this.logicalSessionTimeoutMinutes = server.logicalSessionTimeoutMinutes;
-                    continue;
-                }
-                // Always select the smaller of the:
-                // current server logicalSessionsTimeout and the topologies logicalSessionsTimeout
-                this.logicalSessionTimeoutMinutes = Math.min(this.logicalSessionTimeoutMinutes, server.logicalSessionTimeoutMinutes);
-            }
-        }
-    }
-    /**
-     * Returns a new TopologyDescription based on the SrvPollingEvent
-     * @internal
-     */
-    updateFromSrvPollingEvent(ev, srvMaxHosts = 0) {
-        /** The SRV addresses defines the set of addresses we should be using */
-        const incomingHostnames = ev.hostnames();
-        const currentHostnames = new Set(this.servers.keys());
-        const hostnamesToAdd = new Set(incomingHostnames);
-        const hostnamesToRemove = new Set();
-        for (const hostname of currentHostnames) {
-            // filter hostnamesToAdd (made from incomingHostnames) down to what is *not* present in currentHostnames
-            hostnamesToAdd.delete(hostname);
-            if (!incomingHostnames.has(hostname)) {
-                // If the SRV Records no longer include this hostname
-                // we have to stop using it
-                hostnamesToRemove.add(hostname);
-            }
-        }
-        if (hostnamesToAdd.size === 0 && hostnamesToRemove.size === 0) {
-            // No new hosts to add and none to remove
-            return this;
-        }
-        const serverDescriptions = new Map(this.servers);
-        for (const removedHost of hostnamesToRemove) {
-            serverDescriptions.delete(removedHost);
-        }
-        if (hostnamesToAdd.size > 0) {
-            if (srvMaxHosts === 0) {
-                // Add all!
-                for (const hostToAdd of hostnamesToAdd) {
-                    serverDescriptions.set(hostToAdd, new server_description_1.ServerDescription(hostToAdd));
-                }
-            }
-            else if (serverDescriptions.size < srvMaxHosts) {
-                // Add only the amount needed to get us back to srvMaxHosts
-                const selectedHosts = (0, utils_1.shuffle)(hostnamesToAdd, srvMaxHosts - serverDescriptions.size);
-                for (const selectedHostToAdd of selectedHosts) {
-                    serverDescriptions.set(selectedHostToAdd, new server_description_1.ServerDescription(selectedHostToAdd));
-                }
-            }
-        }
-        return new TopologyDescription(this.type, serverDescriptions, this.setName, this.maxSetVersion, this.maxElectionId, this.commonWireVersion, { heartbeatFrequencyMS: this.heartbeatFrequencyMS, localThresholdMS: this.localThresholdMS });
-    }
-    /**
-     * Returns a copy of this description updated with a given ServerDescription
-     * @internal
-     */
-    update(serverDescription) {
-        const address = serverDescription.address;
-        // potentially mutated values
-        let { type: topologyType, setName, maxSetVersion, maxElectionId, commonWireVersion } = this;
-        const serverType = serverDescription.type;
-        const serverDescriptions = new Map(this.servers);
-        // update common wire version
-        if (serverDescription.maxWireVersion !== 0) {
-            if (commonWireVersion == null) {
-                commonWireVersion = serverDescription.maxWireVersion;
-            }
-            else {
-                commonWireVersion = Math.min(commonWireVersion, serverDescription.maxWireVersion);
-            }
-        }
-        if (typeof serverDescription.setName === 'string' &&
-            typeof setName === 'string' &&
-            serverDescription.setName !== setName) {
-            if (topologyType === common_1.TopologyType.Single) {
-                // "Single" Topology with setName mismatch is direct connection usage, mark unknown do not remove
-                serverDescription = new server_description_1.ServerDescription(address);
-            }
-            else {
-                serverDescriptions.delete(address);
-            }
-        }
-        // update the actual server description
-        serverDescriptions.set(address, serverDescription);
-        if (topologyType === common_1.TopologyType.Single) {
-            // once we are defined as single, that never changes
-            return new TopologyDescription(common_1.TopologyType.Single, serverDescriptions, setName, maxSetVersion, maxElectionId, commonWireVersion, { heartbeatFrequencyMS: this.heartbeatFrequencyMS, localThresholdMS: this.localThresholdMS });
-        }
-        if (topologyType === common_1.TopologyType.Unknown) {
-            if (serverType === common_1.ServerType.Standalone && this.servers.size !== 1) {
-                serverDescriptions.delete(address);
-            }
-            else {
-                topologyType = topologyTypeForServerType(serverType);
-            }
-        }
-        if (topologyType === common_1.TopologyType.Sharded) {
-            if (!MONGOS_OR_UNKNOWN.has(serverType)) {
-                serverDescriptions.delete(address);
-            }
-        }
-        if (topologyType === common_1.TopologyType.ReplicaSetNoPrimary) {
-            if (MONGOS_OR_STANDALONE.has(serverType)) {
-                serverDescriptions.delete(address);
-            }
-            if (serverType === common_1.ServerType.RSPrimary) {
-                const result = updateRsFromPrimary(serverDescriptions, serverDescription, setName, maxSetVersion, maxElectionId);
-                topologyType = result[0];
-                setName = result[1];
-                maxSetVersion = result[2];
-                maxElectionId = result[3];
-            }
-            else if (NON_PRIMARY_RS_MEMBERS.has(serverType)) {
-                const result = updateRsNoPrimaryFromMember(serverDescriptions, serverDescription, setName);
-                topologyType = result[0];
-                setName = result[1];
-            }
-        }
-        if (topologyType === common_1.TopologyType.ReplicaSetWithPrimary) {
-            if (MONGOS_OR_STANDALONE.has(serverType)) {
-                serverDescriptions.delete(address);
-                topologyType = checkHasPrimary(serverDescriptions);
-            }
-            else if (serverType === common_1.ServerType.RSPrimary) {
-                const result = updateRsFromPrimary(serverDescriptions, serverDescription, setName, maxSetVersion, maxElectionId);
-                topologyType = result[0];
-                setName = result[1];
-                maxSetVersion = result[2];
-                maxElectionId = result[3];
-            }
-            else if (NON_PRIMARY_RS_MEMBERS.has(serverType)) {
-                topologyType = updateRsWithPrimaryFromMember(serverDescriptions, serverDescription, setName);
-            }
-            else {
-                topologyType = checkHasPrimary(serverDescriptions);
-            }
-        }
-        return new TopologyDescription(topologyType, serverDescriptions, setName, maxSetVersion, maxElectionId, commonWireVersion, { heartbeatFrequencyMS: this.heartbeatFrequencyMS, localThresholdMS: this.localThresholdMS });
-    }
-    get error() {
-        const descriptionsWithError = Array.from(this.servers.values()).filter((sd) => sd.error);
-        if (descriptionsWithError.length > 0) {
-            return descriptionsWithError[0].error;
-        }
-        return null;
-    }
-    /**
-     * Determines if the topology description has any known servers
-     */
-    get hasKnownServers() {
-        return Array.from(this.servers.values()).some((sd) => sd.type !== common_1.ServerType.Unknown);
-    }
-    /**
-     * Determines if this topology description has a data-bearing server available.
-     */
-    get hasDataBearingServers() {
-        return Array.from(this.servers.values()).some((sd) => sd.isDataBearing);
-    }
-    /**
-     * Determines if the topology has a definition for the provided address
-     * @internal
-     */
-    hasServer(address) {
-        return this.servers.has(address);
-    }
-}
-exports.TopologyDescription = TopologyDescription;
-function topologyTypeForServerType(serverType) {
-    switch (serverType) {
-        case common_1.ServerType.Standalone:
-            return common_1.TopologyType.Single;
-        case common_1.ServerType.Mongos:
-            return common_1.TopologyType.Sharded;
-        case common_1.ServerType.RSPrimary:
-            return common_1.TopologyType.ReplicaSetWithPrimary;
-        case common_1.ServerType.RSOther:
-        case common_1.ServerType.RSSecondary:
-            return common_1.TopologyType.ReplicaSetNoPrimary;
-        default:
-            return common_1.TopologyType.Unknown;
-    }
-}
-function updateRsFromPrimary(serverDescriptions, serverDescription, setName = null, maxSetVersion = null, maxElectionId = null) {
-    setName = setName || serverDescription.setName;
-    if (setName !== serverDescription.setName) {
-        serverDescriptions.delete(serverDescription.address);
-        return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId];
-    }
-    if (serverDescription.maxWireVersion >= 17) {
-        const electionIdComparison = (0, utils_1.compareObjectId)(maxElectionId, serverDescription.electionId);
-        const maxElectionIdIsEqual = electionIdComparison === 0;
-        const maxElectionIdIsLess = electionIdComparison === -1;
-        const maxSetVersionIsLessOrEqual = (maxSetVersion ?? -1) <= (serverDescription.setVersion ?? -1);
-        if (maxElectionIdIsLess || (maxElectionIdIsEqual && maxSetVersionIsLessOrEqual)) {
-            // The reported electionId was greater
-            // or the electionId was equal and reported setVersion was greater
-            // Always update both values, they are a tuple
-            maxElectionId = serverDescription.electionId;
-            maxSetVersion = serverDescription.setVersion;
-        }
-        else {
-            // Stale primary
-            // replace serverDescription with a default ServerDescription of type "Unknown"
-            serverDescriptions.set(serverDescription.address, new server_description_1.ServerDescription(serverDescription.address));
-            return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId];
-        }
-    }
-    else {
-        const electionId = serverDescription.electionId ? serverDescription.electionId : null;
-        if (serverDescription.setVersion && electionId) {
-            if (maxSetVersion && maxElectionId) {
-                if (maxSetVersion > serverDescription.setVersion ||
-                    (0, utils_1.compareObjectId)(maxElectionId, electionId) > 0) {
-                    // this primary is stale, we must remove it
-                    serverDescriptions.set(serverDescription.address, new server_description_1.ServerDescription(serverDescription.address));
-                    return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId];
-                }
-            }
-            maxElectionId = serverDescription.electionId;
-        }
-        if (serverDescription.setVersion != null &&
-            (maxSetVersion == null || serverDescription.setVersion > maxSetVersion)) {
-            maxSetVersion = serverDescription.setVersion;
-        }
-    }
-    // We've heard from the primary. Is it the same primary as before?
-    for (const [address, server] of serverDescriptions) {
-        if (server.type === common_1.ServerType.RSPrimary && server.address !== serverDescription.address) {
-            // Reset old primary's type to Unknown.
-            serverDescriptions.set(address, new server_description_1.ServerDescription(server.address));
-            // There can only be one primary
-            break;
-        }
-    }
-    // Discover new hosts from this primary's response.
-    serverDescription.allHosts.forEach((address) => {
-        if (!serverDescriptions.has(address)) {
-            serverDescriptions.set(address, new server_description_1.ServerDescription(address));
-        }
-    });
-    // Remove hosts not in the response.
-    const currentAddresses = Array.from(serverDescriptions.keys());
-    const responseAddresses = serverDescription.allHosts;
-    currentAddresses
-        .filter((addr) => responseAddresses.indexOf(addr) === -1)
-        .forEach((address) => {
-        serverDescriptions.delete(address);
-    });
-    return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId];
-}
-function updateRsWithPrimaryFromMember(serverDescriptions, serverDescription, setName = null) {
-    if (setName == null) {
-        // TODO(NODE-3483): should be an appropriate runtime error
-        throw new error_1.MongoRuntimeError('Argument "setName" is required if connected to a replica set');
-    }
-    if (setName !== serverDescription.setName ||
-        (serverDescription.me && serverDescription.address !== serverDescription.me)) {
-        serverDescriptions.delete(serverDescription.address);
-    }
-    return checkHasPrimary(serverDescriptions);
-}
-function updateRsNoPrimaryFromMember(serverDescriptions, serverDescription, setName = null) {
-    const topologyType = common_1.TopologyType.ReplicaSetNoPrimary;
-    setName = setName ?? serverDescription.setName;
-    if (setName !== serverDescription.setName) {
-        serverDescriptions.delete(serverDescription.address);
-        return [topologyType, setName];
-    }
-    serverDescription.allHosts.forEach((address) => {
-        if (!serverDescriptions.has(address)) {
-            serverDescriptions.set(address, new server_description_1.ServerDescription(address));
-        }
-    });
-    if (serverDescription.me && serverDescription.address !== serverDescription.me) {
-        serverDescriptions.delete(serverDescription.address);
-    }
-    return [topologyType, setName];
-}
-function checkHasPrimary(serverDescriptions) {
-    for (const serverDescription of serverDescriptions.values()) {
-        if (serverDescription.type === common_1.ServerType.RSPrimary) {
-            return common_1.TopologyType.ReplicaSetWithPrimary;
-        }
-    }
-    return common_1.TopologyType.ReplicaSetNoPrimary;
-}
-//# sourceMappingURL=topology_description.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sdam/topology_description.js.map b/server/data-import/node_modules/mongodb/lib/sdam/topology_description.js.map
deleted file mode 100644
index 1999f817478fa58f5617473db794e608133d1bbc..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sdam/topology_description.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"topology_description.js","sourceRoot":"","sources":["../../src/sdam/topology_description.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sessions.js b/server/data-import/node_modules/mongodb/lib/sessions.js
deleted file mode 100644
index cbdbaa9a90f9fe224374c412e1750f99066bc6de..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sessions.js
+++ /dev/null
@@ -1,737 +0,0 @@
-"use strict";
-var _a;
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.updateSessionFromResponse = exports.applySession = exports.ServerSessionPool = exports.ServerSession = exports.maybeClearPinnedConnection = exports.ClientSession = void 0;
-const util_1 = require("util");
-const bson_1 = require("./bson");
-const metrics_1 = require("./cmap/metrics");
-const shared_1 = require("./cmap/wire_protocol/shared");
-const constants_1 = require("./constants");
-const error_1 = require("./error");
-const mongo_types_1 = require("./mongo_types");
-const execute_operation_1 = require("./operations/execute_operation");
-const run_command_1 = require("./operations/run_command");
-const read_concern_1 = require("./read_concern");
-const read_preference_1 = require("./read_preference");
-const common_1 = require("./sdam/common");
-const transactions_1 = require("./transactions");
-const utils_1 = require("./utils");
-const write_concern_1 = require("./write_concern");
-const minWireVersionForShardedTransactions = 8;
-/** @internal */
-const kServerSession = Symbol('serverSession');
-/** @internal */
-const kSnapshotTime = Symbol('snapshotTime');
-/** @internal */
-const kSnapshotEnabled = Symbol('snapshotEnabled');
-/** @internal */
-const kPinnedConnection = Symbol('pinnedConnection');
-/** @internal Accumulates total number of increments to add to txnNumber when applying session to command */
-const kTxnNumberIncrement = Symbol('txnNumberIncrement');
-/**
- * A class representing a client session on the server
- *
- * NOTE: not meant to be instantiated directly.
- * @public
- */
-class ClientSession extends mongo_types_1.TypedEventEmitter {
-    /**
-     * Create a client session.
-     * @internal
-     * @param client - The current client
-     * @param sessionPool - The server session pool (Internal Class)
-     * @param options - Optional settings
-     * @param clientOptions - Optional settings provided when creating a MongoClient
-     */
-    constructor(client, sessionPool, options, clientOptions) {
-        super();
-        /** @internal */
-        this[_a] = false;
-        if (client == null) {
-            // TODO(NODE-3483)
-            throw new error_1.MongoRuntimeError('ClientSession requires a MongoClient');
-        }
-        if (sessionPool == null || !(sessionPool instanceof ServerSessionPool)) {
-            // TODO(NODE-3483)
-            throw new error_1.MongoRuntimeError('ClientSession requires a ServerSessionPool');
-        }
-        options = options ?? {};
-        if (options.snapshot === true) {
-            this[kSnapshotEnabled] = true;
-            if (options.causalConsistency === true) {
-                throw new error_1.MongoInvalidArgumentError('Properties "causalConsistency" and "snapshot" are mutually exclusive');
-            }
-        }
-        this.client = client;
-        this.sessionPool = sessionPool;
-        this.hasEnded = false;
-        this.clientOptions = clientOptions;
-        this.explicit = !!options.explicit;
-        this[kServerSession] = this.explicit ? this.sessionPool.acquire() : null;
-        this[kTxnNumberIncrement] = 0;
-        const defaultCausalConsistencyValue = this.explicit && options.snapshot !== true;
-        this.supports = {
-            // if we can enable causal consistency, do so by default
-            causalConsistency: options.causalConsistency ?? defaultCausalConsistencyValue
-        };
-        this.clusterTime = options.initialClusterTime;
-        this.operationTime = undefined;
-        this.owner = options.owner;
-        this.defaultTransactionOptions = Object.assign({}, options.defaultTransactionOptions);
-        this.transaction = new transactions_1.Transaction();
-    }
-    /** The server id associated with this session */
-    get id() {
-        return this[kServerSession]?.id;
-    }
-    get serverSession() {
-        let serverSession = this[kServerSession];
-        if (serverSession == null) {
-            if (this.explicit) {
-                throw new error_1.MongoRuntimeError('Unexpected null serverSession for an explicit session');
-            }
-            if (this.hasEnded) {
-                throw new error_1.MongoRuntimeError('Unexpected null serverSession for an ended implicit session');
-            }
-            serverSession = this.sessionPool.acquire();
-            this[kServerSession] = serverSession;
-        }
-        return serverSession;
-    }
-    /** Whether or not this session is configured for snapshot reads */
-    get snapshotEnabled() {
-        return this[kSnapshotEnabled];
-    }
-    get loadBalanced() {
-        return this.client.topology?.description.type === common_1.TopologyType.LoadBalanced;
-    }
-    /** @internal */
-    get pinnedConnection() {
-        return this[kPinnedConnection];
-    }
-    /** @internal */
-    pin(conn) {
-        if (this[kPinnedConnection]) {
-            throw TypeError('Cannot pin multiple connections to the same session');
-        }
-        this[kPinnedConnection] = conn;
-        conn.emit(constants_1.PINNED, this.inTransaction() ? metrics_1.ConnectionPoolMetrics.TXN : metrics_1.ConnectionPoolMetrics.CURSOR);
-    }
-    /** @internal */
-    unpin(options) {
-        if (this.loadBalanced) {
-            return maybeClearPinnedConnection(this, options);
-        }
-        this.transaction.unpinServer();
-    }
-    get isPinned() {
-        return this.loadBalanced ? !!this[kPinnedConnection] : this.transaction.isPinned;
-    }
-    /**
-     * Ends this session on the server
-     *
-     * @param options - Optional settings. Currently reserved for future use
-     */
-    async endSession(options) {
-        try {
-            if (this.inTransaction()) {
-                await this.abortTransaction();
-            }
-            if (!this.hasEnded) {
-                const serverSession = this[kServerSession];
-                if (serverSession != null) {
-                    // release the server session back to the pool
-                    this.sessionPool.release(serverSession);
-                    // Make sure a new serverSession never makes it onto this ClientSession
-                    Object.defineProperty(this, kServerSession, {
-                        value: ServerSession.clone(serverSession),
-                        writable: false
-                    });
-                }
-                // mark the session as ended, and emit a signal
-                this.hasEnded = true;
-                this.emit('ended', this);
-            }
-        }
-        catch {
-            // spec indicates that we should ignore all errors for `endSessions`
-        }
-        finally {
-            maybeClearPinnedConnection(this, { force: true, ...options });
-        }
-    }
-    /**
-     * Advances the operationTime for a ClientSession.
-     *
-     * @param operationTime - the `BSON.Timestamp` of the operation type it is desired to advance to
-     */
-    advanceOperationTime(operationTime) {
-        if (this.operationTime == null) {
-            this.operationTime = operationTime;
-            return;
-        }
-        if (operationTime.greaterThan(this.operationTime)) {
-            this.operationTime = operationTime;
-        }
-    }
-    /**
-     * Advances the clusterTime for a ClientSession to the provided clusterTime of another ClientSession
-     *
-     * @param clusterTime - the $clusterTime returned by the server from another session in the form of a document containing the `BSON.Timestamp` clusterTime and signature
-     */
-    advanceClusterTime(clusterTime) {
-        if (!clusterTime || typeof clusterTime !== 'object') {
-            throw new error_1.MongoInvalidArgumentError('input cluster time must be an object');
-        }
-        if (!clusterTime.clusterTime || clusterTime.clusterTime._bsontype !== 'Timestamp') {
-            throw new error_1.MongoInvalidArgumentError('input cluster time "clusterTime" property must be a valid BSON Timestamp');
-        }
-        if (!clusterTime.signature ||
-            clusterTime.signature.hash?._bsontype !== 'Binary' ||
-            (typeof clusterTime.signature.keyId !== 'bigint' &&
-                typeof clusterTime.signature.keyId !== 'number' &&
-                clusterTime.signature.keyId?._bsontype !== 'Long') // apparently we decode the key to number?
-        ) {
-            throw new error_1.MongoInvalidArgumentError('input cluster time must have a valid "signature" property with BSON Binary hash and BSON Long keyId');
-        }
-        (0, common_1._advanceClusterTime)(this, clusterTime);
-    }
-    /**
-     * Used to determine if this session equals another
-     *
-     * @param session - The session to compare to
-     */
-    equals(session) {
-        if (!(session instanceof ClientSession)) {
-            return false;
-        }
-        if (this.id == null || session.id == null) {
-            return false;
-        }
-        return utils_1.ByteUtils.equals(this.id.id.buffer, session.id.id.buffer);
-    }
-    /**
-     * Increment the transaction number on the internal ServerSession
-     *
-     * @privateRemarks
-     * This helper increments a value stored on the client session that will be
-     * added to the serverSession's txnNumber upon applying it to a command.
-     * This is because the serverSession is lazily acquired after a connection is obtained
-     */
-    incrementTransactionNumber() {
-        this[kTxnNumberIncrement] += 1;
-    }
-    /** @returns whether this session is currently in a transaction or not */
-    inTransaction() {
-        return this.transaction.isActive;
-    }
-    /**
-     * Starts a new transaction with the given options.
-     *
-     * @param options - Options for the transaction
-     */
-    startTransaction(options) {
-        if (this[kSnapshotEnabled]) {
-            throw new error_1.MongoCompatibilityError('Transactions are not supported in snapshot sessions');
-        }
-        if (this.inTransaction()) {
-            throw new error_1.MongoTransactionError('Transaction already in progress');
-        }
-        if (this.isPinned && this.transaction.isCommitted) {
-            this.unpin();
-        }
-        const topologyMaxWireVersion = (0, utils_1.maxWireVersion)(this.client.topology);
-        if ((0, shared_1.isSharded)(this.client.topology) &&
-            topologyMaxWireVersion != null &&
-            topologyMaxWireVersion < minWireVersionForShardedTransactions) {
-            throw new error_1.MongoCompatibilityError('Transactions are not supported on sharded clusters in MongoDB < 4.2.');
-        }
-        // increment txnNumber
-        this.incrementTransactionNumber();
-        // create transaction state
-        this.transaction = new transactions_1.Transaction({
-            readConcern: options?.readConcern ??
-                this.defaultTransactionOptions.readConcern ??
-                this.clientOptions?.readConcern,
-            writeConcern: options?.writeConcern ??
-                this.defaultTransactionOptions.writeConcern ??
-                this.clientOptions?.writeConcern,
-            readPreference: options?.readPreference ??
-                this.defaultTransactionOptions.readPreference ??
-                this.clientOptions?.readPreference,
-            maxCommitTimeMS: options?.maxCommitTimeMS ?? this.defaultTransactionOptions.maxCommitTimeMS
-        });
-        this.transaction.transition(transactions_1.TxnState.STARTING_TRANSACTION);
-    }
-    /**
-     * Commits the currently active transaction in this session.
-     */
-    async commitTransaction() {
-        return endTransactionAsync(this, 'commitTransaction');
-    }
-    /**
-     * Aborts the currently active transaction in this session.
-     */
-    async abortTransaction() {
-        return endTransactionAsync(this, 'abortTransaction');
-    }
-    /**
-     * This is here to ensure that ClientSession is never serialized to BSON.
-     */
-    toBSON() {
-        throw new error_1.MongoRuntimeError('ClientSession cannot be serialized to BSON.');
-    }
-    /**
-     * Starts a transaction and runs a provided function, ensuring the commitTransaction is always attempted when all operations run in the function have completed.
-     *
-     * **IMPORTANT:** This method requires the user to return a Promise, and `await` all operations.
-     *
-     * @remarks
-     * This function:
-     * - If all operations successfully complete and the `commitTransaction` operation is successful, then this function will return the result of the provided function.
-     * - If the transaction is unable to complete or an error is thrown from within the provided function, then this function will throw an error.
-     *   - If the transaction is manually aborted within the provided function it will not throw.
-     * - May be called multiple times if the driver needs to attempt to retry the operations.
-     *
-     * Checkout a descriptive example here:
-     * @see https://www.mongodb.com/blog/post/quick-start-nodejs--mongodb--how-to-implement-transactions
-     *
-     * @param fn - callback to run within a transaction
-     * @param options - optional settings for the transaction
-     * @returns A raw command response or undefined
-     */
-    async withTransaction(fn, options) {
-        const startTime = (0, utils_1.now)();
-        return attemptTransaction(this, startTime, fn, options);
-    }
-}
-exports.ClientSession = ClientSession;
-_a = kSnapshotEnabled;
-const MAX_WITH_TRANSACTION_TIMEOUT = 120000;
-const NON_DETERMINISTIC_WRITE_CONCERN_ERRORS = new Set([
-    'CannotSatisfyWriteConcern',
-    'UnknownReplWriteConcern',
-    'UnsatisfiableWriteConcern'
-]);
-function hasNotTimedOut(startTime, max) {
-    return (0, utils_1.calculateDurationInMs)(startTime) < max;
-}
-function isUnknownTransactionCommitResult(err) {
-    const isNonDeterministicWriteConcernError = err instanceof error_1.MongoServerError &&
-        err.codeName &&
-        NON_DETERMINISTIC_WRITE_CONCERN_ERRORS.has(err.codeName);
-    return (isMaxTimeMSExpiredError(err) ||
-        (!isNonDeterministicWriteConcernError &&
-            err.code !== error_1.MONGODB_ERROR_CODES.UnsatisfiableWriteConcern &&
-            err.code !== error_1.MONGODB_ERROR_CODES.UnknownReplWriteConcern));
-}
-function maybeClearPinnedConnection(session, options) {
-    // unpin a connection if it has been pinned
-    const conn = session[kPinnedConnection];
-    const error = options?.error;
-    if (session.inTransaction() &&
-        error &&
-        error instanceof error_1.MongoError &&
-        error.hasErrorLabel(error_1.MongoErrorLabel.TransientTransactionError)) {
-        return;
-    }
-    const topology = session.client.topology;
-    // NOTE: the spec talks about what to do on a network error only, but the tests seem to
-    //       to validate that we don't unpin on _all_ errors?
-    if (conn && topology != null) {
-        const servers = Array.from(topology.s.servers.values());
-        const loadBalancer = servers[0];
-        if (options?.error == null || options?.force) {
-            loadBalancer.pool.checkIn(conn);
-            conn.emit(constants_1.UNPINNED, session.transaction.state !== transactions_1.TxnState.NO_TRANSACTION
-                ? metrics_1.ConnectionPoolMetrics.TXN
-                : metrics_1.ConnectionPoolMetrics.CURSOR);
-            if (options?.forceClear) {
-                loadBalancer.pool.clear({ serviceId: conn.serviceId });
-            }
-        }
-        session[kPinnedConnection] = undefined;
-    }
-}
-exports.maybeClearPinnedConnection = maybeClearPinnedConnection;
-function isMaxTimeMSExpiredError(err) {
-    if (err == null || !(err instanceof error_1.MongoServerError)) {
-        return false;
-    }
-    return (err.code === error_1.MONGODB_ERROR_CODES.MaxTimeMSExpired ||
-        (err.writeConcernError && err.writeConcernError.code === error_1.MONGODB_ERROR_CODES.MaxTimeMSExpired));
-}
-function attemptTransactionCommit(session, startTime, fn, result, options) {
-    return session.commitTransaction().then(() => result, (err) => {
-        if (err instanceof error_1.MongoError &&
-            hasNotTimedOut(startTime, MAX_WITH_TRANSACTION_TIMEOUT) &&
-            !isMaxTimeMSExpiredError(err)) {
-            if (err.hasErrorLabel(error_1.MongoErrorLabel.UnknownTransactionCommitResult)) {
-                return attemptTransactionCommit(session, startTime, fn, result, options);
-            }
-            if (err.hasErrorLabel(error_1.MongoErrorLabel.TransientTransactionError)) {
-                return attemptTransaction(session, startTime, fn, options);
-            }
-        }
-        throw err;
-    });
-}
-const USER_EXPLICIT_TXN_END_STATES = new Set([
-    transactions_1.TxnState.NO_TRANSACTION,
-    transactions_1.TxnState.TRANSACTION_COMMITTED,
-    transactions_1.TxnState.TRANSACTION_ABORTED
-]);
-function userExplicitlyEndedTransaction(session) {
-    return USER_EXPLICIT_TXN_END_STATES.has(session.transaction.state);
-}
-function attemptTransaction(session, startTime, fn, options = {}) {
-    session.startTransaction(options);
-    let promise;
-    try {
-        promise = fn(session);
-    }
-    catch (err) {
-        promise = Promise.reject(err);
-    }
-    if (!(0, utils_1.isPromiseLike)(promise)) {
-        session.abortTransaction().catch(() => null);
-        return Promise.reject(new error_1.MongoInvalidArgumentError('Function provided to `withTransaction` must return a Promise'));
-    }
-    return promise.then(result => {
-        if (userExplicitlyEndedTransaction(session)) {
-            return result;
-        }
-        return attemptTransactionCommit(session, startTime, fn, result, options);
-    }, err => {
-        function maybeRetryOrThrow(err) {
-            if (err instanceof error_1.MongoError &&
-                err.hasErrorLabel(error_1.MongoErrorLabel.TransientTransactionError) &&
-                hasNotTimedOut(startTime, MAX_WITH_TRANSACTION_TIMEOUT)) {
-                return attemptTransaction(session, startTime, fn, options);
-            }
-            if (isMaxTimeMSExpiredError(err)) {
-                err.addErrorLabel(error_1.MongoErrorLabel.UnknownTransactionCommitResult);
-            }
-            throw err;
-        }
-        if (session.inTransaction()) {
-            return session.abortTransaction().then(() => maybeRetryOrThrow(err));
-        }
-        return maybeRetryOrThrow(err);
-    });
-}
-const endTransactionAsync = (0, util_1.promisify)(endTransaction);
-function endTransaction(session, commandName, callback) {
-    // handle any initial problematic cases
-    const txnState = session.transaction.state;
-    if (txnState === transactions_1.TxnState.NO_TRANSACTION) {
-        callback(new error_1.MongoTransactionError('No transaction started'));
-        return;
-    }
-    if (commandName === 'commitTransaction') {
-        if (txnState === transactions_1.TxnState.STARTING_TRANSACTION ||
-            txnState === transactions_1.TxnState.TRANSACTION_COMMITTED_EMPTY) {
-            // the transaction was never started, we can safely exit here
-            session.transaction.transition(transactions_1.TxnState.TRANSACTION_COMMITTED_EMPTY);
-            callback();
-            return;
-        }
-        if (txnState === transactions_1.TxnState.TRANSACTION_ABORTED) {
-            callback(new error_1.MongoTransactionError('Cannot call commitTransaction after calling abortTransaction'));
-            return;
-        }
-    }
-    else {
-        if (txnState === transactions_1.TxnState.STARTING_TRANSACTION) {
-            // the transaction was never started, we can safely exit here
-            session.transaction.transition(transactions_1.TxnState.TRANSACTION_ABORTED);
-            callback();
-            return;
-        }
-        if (txnState === transactions_1.TxnState.TRANSACTION_ABORTED) {
-            callback(new error_1.MongoTransactionError('Cannot call abortTransaction twice'));
-            return;
-        }
-        if (txnState === transactions_1.TxnState.TRANSACTION_COMMITTED ||
-            txnState === transactions_1.TxnState.TRANSACTION_COMMITTED_EMPTY) {
-            callback(new error_1.MongoTransactionError('Cannot call abortTransaction after calling commitTransaction'));
-            return;
-        }
-    }
-    // construct and send the command
-    const command = { [commandName]: 1 };
-    // apply a writeConcern if specified
-    let writeConcern;
-    if (session.transaction.options.writeConcern) {
-        writeConcern = Object.assign({}, session.transaction.options.writeConcern);
-    }
-    else if (session.clientOptions && session.clientOptions.writeConcern) {
-        writeConcern = { w: session.clientOptions.writeConcern.w };
-    }
-    if (txnState === transactions_1.TxnState.TRANSACTION_COMMITTED) {
-        writeConcern = Object.assign({ wtimeoutMS: 10000 }, writeConcern, { w: 'majority' });
-    }
-    if (writeConcern) {
-        write_concern_1.WriteConcern.apply(command, writeConcern);
-    }
-    if (commandName === 'commitTransaction' && session.transaction.options.maxTimeMS) {
-        Object.assign(command, { maxTimeMS: session.transaction.options.maxTimeMS });
-    }
-    function commandHandler(error) {
-        if (commandName !== 'commitTransaction') {
-            session.transaction.transition(transactions_1.TxnState.TRANSACTION_ABORTED);
-            if (session.loadBalanced) {
-                maybeClearPinnedConnection(session, { force: false });
-            }
-            // The spec indicates that we should ignore all errors on `abortTransaction`
-            return callback();
-        }
-        session.transaction.transition(transactions_1.TxnState.TRANSACTION_COMMITTED);
-        if (error instanceof error_1.MongoError) {
-            if ((0, error_1.isRetryableWriteError)(error) ||
-                error instanceof error_1.MongoWriteConcernError ||
-                isMaxTimeMSExpiredError(error)) {
-                if (isUnknownTransactionCommitResult(error)) {
-                    error.addErrorLabel(error_1.MongoErrorLabel.UnknownTransactionCommitResult);
-                    // per txns spec, must unpin session in this case
-                    session.unpin({ error });
-                }
-            }
-            else if (error.hasErrorLabel(error_1.MongoErrorLabel.TransientTransactionError)) {
-                session.unpin({ error });
-            }
-        }
-        callback(error);
-    }
-    if (session.transaction.recoveryToken) {
-        command.recoveryToken = session.transaction.recoveryToken;
-    }
-    // send the command
-    (0, execute_operation_1.executeOperation)(session.client, new run_command_1.RunAdminCommandOperation(command, {
-        session,
-        readPreference: read_preference_1.ReadPreference.primary,
-        bypassPinningCheck: true
-    }), error => {
-        if (command.abortTransaction) {
-            // always unpin on abort regardless of command outcome
-            session.unpin();
-        }
-        if (error instanceof error_1.MongoError && (0, error_1.isRetryableWriteError)(error)) {
-            // SPEC-1185: apply majority write concern when retrying commitTransaction
-            if (command.commitTransaction) {
-                // per txns spec, must unpin session in this case
-                session.unpin({ force: true });
-                command.writeConcern = Object.assign({ wtimeout: 10000 }, command.writeConcern, {
-                    w: 'majority'
-                });
-            }
-            return (0, execute_operation_1.executeOperation)(session.client, new run_command_1.RunAdminCommandOperation(command, {
-                session,
-                readPreference: read_preference_1.ReadPreference.primary,
-                bypassPinningCheck: true
-            }), commandHandler);
-        }
-        commandHandler(error);
-    });
-}
-/**
- * Reflects the existence of a session on the server. Can be reused by the session pool.
- * WARNING: not meant to be instantiated directly. For internal use only.
- * @public
- */
-class ServerSession {
-    /** @internal */
-    constructor() {
-        this.id = { id: new bson_1.Binary((0, utils_1.uuidV4)(), bson_1.Binary.SUBTYPE_UUID) };
-        this.lastUse = (0, utils_1.now)();
-        this.txnNumber = 0;
-        this.isDirty = false;
-    }
-    /**
-     * Determines if the server session has timed out.
-     *
-     * @param sessionTimeoutMinutes - The server's "logicalSessionTimeoutMinutes"
-     */
-    hasTimedOut(sessionTimeoutMinutes) {
-        // Take the difference of the lastUse timestamp and now, which will result in a value in
-        // milliseconds, and then convert milliseconds to minutes to compare to `sessionTimeoutMinutes`
-        const idleTimeMinutes = Math.round((((0, utils_1.calculateDurationInMs)(this.lastUse) % 86400000) % 3600000) / 60000);
-        return idleTimeMinutes > sessionTimeoutMinutes - 1;
-    }
-    /**
-     * @internal
-     * Cloning meant to keep a readable reference to the server session data
-     * after ClientSession has ended
-     */
-    static clone(serverSession) {
-        const arrayBuffer = new ArrayBuffer(16);
-        const idBytes = Buffer.from(arrayBuffer);
-        idBytes.set(serverSession.id.id.buffer);
-        const id = new bson_1.Binary(idBytes, serverSession.id.id.sub_type);
-        // Manual prototype construction to avoid modifying the constructor of this class
-        return Object.setPrototypeOf({
-            id: { id },
-            lastUse: serverSession.lastUse,
-            txnNumber: serverSession.txnNumber,
-            isDirty: serverSession.isDirty
-        }, ServerSession.prototype);
-    }
-}
-exports.ServerSession = ServerSession;
-/**
- * Maintains a pool of Server Sessions.
- * For internal use only
- * @internal
- */
-class ServerSessionPool {
-    constructor(client) {
-        if (client == null) {
-            throw new error_1.MongoRuntimeError('ServerSessionPool requires a MongoClient');
-        }
-        this.client = client;
-        this.sessions = new utils_1.List();
-    }
-    /**
-     * Acquire a Server Session from the pool.
-     * Iterates through each session in the pool, removing any stale sessions
-     * along the way. The first non-stale session found is removed from the
-     * pool and returned. If no non-stale session is found, a new ServerSession is created.
-     */
-    acquire() {
-        const sessionTimeoutMinutes = this.client.topology?.logicalSessionTimeoutMinutes ?? 10;
-        let session = null;
-        // Try to obtain from session pool
-        while (this.sessions.length > 0) {
-            const potentialSession = this.sessions.shift();
-            if (potentialSession != null &&
-                (!!this.client.topology?.loadBalanced ||
-                    !potentialSession.hasTimedOut(sessionTimeoutMinutes))) {
-                session = potentialSession;
-                break;
-            }
-        }
-        // If nothing valid came from the pool make a new one
-        if (session == null) {
-            session = new ServerSession();
-        }
-        return session;
-    }
-    /**
-     * Release a session to the session pool
-     * Adds the session back to the session pool if the session has not timed out yet.
-     * This method also removes any stale sessions from the pool.
-     *
-     * @param session - The session to release to the pool
-     */
-    release(session) {
-        const sessionTimeoutMinutes = this.client.topology?.logicalSessionTimeoutMinutes ?? 10;
-        if (this.client.topology?.loadBalanced && !sessionTimeoutMinutes) {
-            this.sessions.unshift(session);
-        }
-        if (!sessionTimeoutMinutes) {
-            return;
-        }
-        this.sessions.prune(session => session.hasTimedOut(sessionTimeoutMinutes));
-        if (!session.hasTimedOut(sessionTimeoutMinutes)) {
-            if (session.isDirty) {
-                return;
-            }
-            // otherwise, readd this session to the session pool
-            this.sessions.unshift(session);
-        }
-    }
-}
-exports.ServerSessionPool = ServerSessionPool;
-/**
- * Optionally decorate a command with sessions specific keys
- *
- * @param session - the session tracking transaction state
- * @param command - the command to decorate
- * @param options - Optional settings passed to calling operation
- *
- * @internal
- */
-function applySession(session, command, options) {
-    if (session.hasEnded) {
-        return new error_1.MongoExpiredSessionError();
-    }
-    // May acquire serverSession here
-    const serverSession = session.serverSession;
-    if (serverSession == null) {
-        return new error_1.MongoRuntimeError('Unable to acquire server session');
-    }
-    if (options.writeConcern?.w === 0) {
-        if (session && session.explicit) {
-            // Error if user provided an explicit session to an unacknowledged write (SPEC-1019)
-            return new error_1.MongoAPIError('Cannot have explicit session with unacknowledged writes');
-        }
-        return;
-    }
-    // mark the last use of this session, and apply the `lsid`
-    serverSession.lastUse = (0, utils_1.now)();
-    command.lsid = serverSession.id;
-    const inTxnOrTxnCommand = session.inTransaction() || (0, transactions_1.isTransactionCommand)(command);
-    const isRetryableWrite = !!options.willRetryWrite;
-    if (isRetryableWrite || inTxnOrTxnCommand) {
-        serverSession.txnNumber += session[kTxnNumberIncrement];
-        session[kTxnNumberIncrement] = 0;
-        // TODO(NODE-2674): Preserve int64 sent from MongoDB
-        command.txnNumber = bson_1.Long.fromNumber(serverSession.txnNumber);
-    }
-    if (!inTxnOrTxnCommand) {
-        if (session.transaction.state !== transactions_1.TxnState.NO_TRANSACTION) {
-            session.transaction.transition(transactions_1.TxnState.NO_TRANSACTION);
-        }
-        if (session.supports.causalConsistency &&
-            session.operationTime &&
-            (0, utils_1.commandSupportsReadConcern)(command)) {
-            command.readConcern = command.readConcern || {};
-            Object.assign(command.readConcern, { afterClusterTime: session.operationTime });
-        }
-        else if (session[kSnapshotEnabled]) {
-            command.readConcern = command.readConcern || { level: read_concern_1.ReadConcernLevel.snapshot };
-            if (session[kSnapshotTime] != null) {
-                Object.assign(command.readConcern, { atClusterTime: session[kSnapshotTime] });
-            }
-        }
-        return;
-    }
-    // now attempt to apply transaction-specific sessions data
-    // `autocommit` must always be false to differentiate from retryable writes
-    command.autocommit = false;
-    if (session.transaction.state === transactions_1.TxnState.STARTING_TRANSACTION) {
-        session.transaction.transition(transactions_1.TxnState.TRANSACTION_IN_PROGRESS);
-        command.startTransaction = true;
-        const readConcern = session.transaction.options.readConcern || session?.clientOptions?.readConcern;
-        if (readConcern) {
-            command.readConcern = readConcern;
-        }
-        if (session.supports.causalConsistency && session.operationTime) {
-            command.readConcern = command.readConcern || {};
-            Object.assign(command.readConcern, { afterClusterTime: session.operationTime });
-        }
-    }
-    return;
-}
-exports.applySession = applySession;
-function updateSessionFromResponse(session, document) {
-    if (document.$clusterTime) {
-        (0, common_1._advanceClusterTime)(session, document.$clusterTime);
-    }
-    if (document.operationTime && session && session.supports.causalConsistency) {
-        session.advanceOperationTime(document.operationTime);
-    }
-    if (document.recoveryToken && session && session.inTransaction()) {
-        session.transaction._recoveryToken = document.recoveryToken;
-    }
-    if (session?.[kSnapshotEnabled] && session[kSnapshotTime] == null) {
-        // find and aggregate commands return atClusterTime on the cursor
-        // distinct includes it in the response body
-        const atClusterTime = document.cursor?.atClusterTime || document.atClusterTime;
-        if (atClusterTime) {
-            session[kSnapshotTime] = atClusterTime;
-        }
-    }
-}
-exports.updateSessionFromResponse = updateSessionFromResponse;
-//# sourceMappingURL=sessions.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sessions.js.map b/server/data-import/node_modules/mongodb/lib/sessions.js.map
deleted file mode 100644
index 69855744a79934f57eed520a48c23ade1b31935b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sessions.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sort.js b/server/data-import/node_modules/mongodb/lib/sort.js
deleted file mode 100644
index c04b6b54cc3b25196a18830a33e0ac58206c6851..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sort.js
+++ /dev/null
@@ -1,97 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.formatSort = void 0;
-const error_1 = require("./error");
-/** @internal */
-function prepareDirection(direction = 1) {
-    const value = `${direction}`.toLowerCase();
-    if (isMeta(direction))
-        return direction;
-    switch (value) {
-        case 'ascending':
-        case 'asc':
-        case '1':
-            return 1;
-        case 'descending':
-        case 'desc':
-        case '-1':
-            return -1;
-        default:
-            throw new error_1.MongoInvalidArgumentError(`Invalid sort direction: ${JSON.stringify(direction)}`);
-    }
-}
-/** @internal */
-function isMeta(t) {
-    return typeof t === 'object' && t != null && '$meta' in t && typeof t.$meta === 'string';
-}
-/** @internal */
-function isPair(t) {
-    if (Array.isArray(t) && t.length === 2) {
-        try {
-            prepareDirection(t[1]);
-            return true;
-        }
-        catch (e) {
-            return false;
-        }
-    }
-    return false;
-}
-function isDeep(t) {
-    return Array.isArray(t) && Array.isArray(t[0]);
-}
-function isMap(t) {
-    return t instanceof Map && t.size > 0;
-}
-/** @internal */
-function pairToMap(v) {
-    return new Map([[`${v[0]}`, prepareDirection([v[1]])]]);
-}
-/** @internal */
-function deepToMap(t) {
-    const sortEntries = t.map(([k, v]) => [`${k}`, prepareDirection(v)]);
-    return new Map(sortEntries);
-}
-/** @internal */
-function stringsToMap(t) {
-    const sortEntries = t.map(key => [`${key}`, 1]);
-    return new Map(sortEntries);
-}
-/** @internal */
-function objectToMap(t) {
-    const sortEntries = Object.entries(t).map(([k, v]) => [
-        `${k}`,
-        prepareDirection(v)
-    ]);
-    return new Map(sortEntries);
-}
-/** @internal */
-function mapToMap(t) {
-    const sortEntries = Array.from(t).map(([k, v]) => [
-        `${k}`,
-        prepareDirection(v)
-    ]);
-    return new Map(sortEntries);
-}
-/** converts a Sort type into a type that is valid for the server (SortForCmd) */
-function formatSort(sort, direction) {
-    if (sort == null)
-        return undefined;
-    if (typeof sort === 'string')
-        return new Map([[sort, prepareDirection(direction)]]);
-    if (typeof sort !== 'object') {
-        throw new error_1.MongoInvalidArgumentError(`Invalid sort format: ${JSON.stringify(sort)} Sort must be a valid object`);
-    }
-    if (!Array.isArray(sort)) {
-        return isMap(sort) ? mapToMap(sort) : Object.keys(sort).length ? objectToMap(sort) : undefined;
-    }
-    if (!sort.length)
-        return undefined;
-    if (isDeep(sort))
-        return deepToMap(sort);
-    if (isPair(sort))
-        return pairToMap(sort);
-    return stringsToMap(sort);
-}
-exports.formatSort = formatSort;
-//# sourceMappingURL=sort.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/sort.js.map b/server/data-import/node_modules/mongodb/lib/sort.js.map
deleted file mode 100644
index 4072af4c8a86941afbf205308b057d7f331eef4a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/sort.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"sort.js","sourceRoot":"","sources":["../src/sort.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/transactions.js b/server/data-import/node_modules/mongodb/lib/transactions.js
deleted file mode 100644
index a4235b07e629f2536b07e2c505b525cec139c7bc..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/transactions.js
+++ /dev/null
@@ -1,138 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.isTransactionCommand = exports.Transaction = exports.TxnState = void 0;
-const error_1 = require("./error");
-const read_concern_1 = require("./read_concern");
-const read_preference_1 = require("./read_preference");
-const write_concern_1 = require("./write_concern");
-/** @internal */
-exports.TxnState = Object.freeze({
-    NO_TRANSACTION: 'NO_TRANSACTION',
-    STARTING_TRANSACTION: 'STARTING_TRANSACTION',
-    TRANSACTION_IN_PROGRESS: 'TRANSACTION_IN_PROGRESS',
-    TRANSACTION_COMMITTED: 'TRANSACTION_COMMITTED',
-    TRANSACTION_COMMITTED_EMPTY: 'TRANSACTION_COMMITTED_EMPTY',
-    TRANSACTION_ABORTED: 'TRANSACTION_ABORTED'
-});
-const stateMachine = {
-    [exports.TxnState.NO_TRANSACTION]: [exports.TxnState.NO_TRANSACTION, exports.TxnState.STARTING_TRANSACTION],
-    [exports.TxnState.STARTING_TRANSACTION]: [
-        exports.TxnState.TRANSACTION_IN_PROGRESS,
-        exports.TxnState.TRANSACTION_COMMITTED,
-        exports.TxnState.TRANSACTION_COMMITTED_EMPTY,
-        exports.TxnState.TRANSACTION_ABORTED
-    ],
-    [exports.TxnState.TRANSACTION_IN_PROGRESS]: [
-        exports.TxnState.TRANSACTION_IN_PROGRESS,
-        exports.TxnState.TRANSACTION_COMMITTED,
-        exports.TxnState.TRANSACTION_ABORTED
-    ],
-    [exports.TxnState.TRANSACTION_COMMITTED]: [
-        exports.TxnState.TRANSACTION_COMMITTED,
-        exports.TxnState.TRANSACTION_COMMITTED_EMPTY,
-        exports.TxnState.STARTING_TRANSACTION,
-        exports.TxnState.NO_TRANSACTION
-    ],
-    [exports.TxnState.TRANSACTION_ABORTED]: [exports.TxnState.STARTING_TRANSACTION, exports.TxnState.NO_TRANSACTION],
-    [exports.TxnState.TRANSACTION_COMMITTED_EMPTY]: [
-        exports.TxnState.TRANSACTION_COMMITTED_EMPTY,
-        exports.TxnState.NO_TRANSACTION
-    ]
-};
-const ACTIVE_STATES = new Set([
-    exports.TxnState.STARTING_TRANSACTION,
-    exports.TxnState.TRANSACTION_IN_PROGRESS
-]);
-const COMMITTED_STATES = new Set([
-    exports.TxnState.TRANSACTION_COMMITTED,
-    exports.TxnState.TRANSACTION_COMMITTED_EMPTY,
-    exports.TxnState.TRANSACTION_ABORTED
-]);
-/**
- * @public
- * A class maintaining state related to a server transaction. Internal Only
- */
-class Transaction {
-    /** Create a transaction @internal */
-    constructor(options) {
-        options = options ?? {};
-        this.state = exports.TxnState.NO_TRANSACTION;
-        this.options = {};
-        const writeConcern = write_concern_1.WriteConcern.fromOptions(options);
-        if (writeConcern) {
-            if (writeConcern.w === 0) {
-                throw new error_1.MongoTransactionError('Transactions do not support unacknowledged write concern');
-            }
-            this.options.writeConcern = writeConcern;
-        }
-        if (options.readConcern) {
-            this.options.readConcern = read_concern_1.ReadConcern.fromOptions(options);
-        }
-        if (options.readPreference) {
-            this.options.readPreference = read_preference_1.ReadPreference.fromOptions(options);
-        }
-        if (options.maxCommitTimeMS) {
-            this.options.maxTimeMS = options.maxCommitTimeMS;
-        }
-        // TODO: This isn't technically necessary
-        this._pinnedServer = undefined;
-        this._recoveryToken = undefined;
-    }
-    /** @internal */
-    get server() {
-        return this._pinnedServer;
-    }
-    get recoveryToken() {
-        return this._recoveryToken;
-    }
-    get isPinned() {
-        return !!this.server;
-    }
-    /** @returns Whether the transaction has started */
-    get isStarting() {
-        return this.state === exports.TxnState.STARTING_TRANSACTION;
-    }
-    /**
-     * @returns Whether this session is presently in a transaction
-     */
-    get isActive() {
-        return ACTIVE_STATES.has(this.state);
-    }
-    get isCommitted() {
-        return COMMITTED_STATES.has(this.state);
-    }
-    /**
-     * Transition the transaction in the state machine
-     * @internal
-     * @param nextState - The new state to transition to
-     */
-    transition(nextState) {
-        const nextStates = stateMachine[this.state];
-        if (nextStates && nextStates.includes(nextState)) {
-            this.state = nextState;
-            if (this.state === exports.TxnState.NO_TRANSACTION ||
-                this.state === exports.TxnState.STARTING_TRANSACTION ||
-                this.state === exports.TxnState.TRANSACTION_ABORTED) {
-                this.unpinServer();
-            }
-            return;
-        }
-        throw new error_1.MongoRuntimeError(`Attempted illegal state transition from [${this.state}] to [${nextState}]`);
-    }
-    /** @internal */
-    pinServer(server) {
-        if (this.isActive) {
-            this._pinnedServer = server;
-        }
-    }
-    /** @internal */
-    unpinServer() {
-        this._pinnedServer = undefined;
-    }
-}
-exports.Transaction = Transaction;
-function isTransactionCommand(command) {
-    return !!(command.commitTransaction || command.abortTransaction);
-}
-exports.isTransactionCommand = isTransactionCommand;
-//# sourceMappingURL=transactions.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/transactions.js.map b/server/data-import/node_modules/mongodb/lib/transactions.js.map
deleted file mode 100644
index 021aa3b285bb4fa3c50725113dd04a63fcda808a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/transactions.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/utils.js b/server/data-import/node_modules/mongodb/lib/utils.js
deleted file mode 100644
index 8feae824d8e0f2ea9da8375f0fd17b0dc90e46e2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/utils.js
+++ /dev/null
@@ -1,1036 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.DOCUMENT_DB_CHECK = exports.TimeoutController = exports.request = exports.matchesParentDomain = exports.parseUnsignedInteger = exports.parseInteger = exports.compareObjectId = exports.commandSupportsReadConcern = exports.shuffle = exports.supportsRetryableWrites = exports.enumToString = exports.emitWarningOnce = exports.emitWarning = exports.MONGODB_WARNING_CODE = exports.DEFAULT_PK_FACTORY = exports.HostAddress = exports.BufferPool = exports.List = exports.deepCopy = exports.isRecord = exports.setDifference = exports.isHello = exports.isSuperset = exports.resolveOptions = exports.hasAtomicOperators = exports.calculateDurationInMs = exports.now = exports.makeStateMachine = exports.errorStrictEqual = exports.arrayStrictEqual = exports.eachAsync = exports.maxWireVersion = exports.uuidV4 = exports.maybeCallback = exports.makeCounter = exports.MongoDBCollectionNamespace = exports.MongoDBNamespace = exports.ns = exports.getTopology = exports.decorateWithExplain = exports.decorateWithReadConcern = exports.decorateWithCollation = exports.isPromiseLike = exports.applyRetryableWrites = exports.filterOptions = exports.mergeOptions = exports.isObject = exports.normalizeHintField = exports.hostMatchesWildcards = exports.ByteUtils = void 0;
-exports.isHostMatch = exports.COSMOS_DB_MSG = exports.DOCUMENT_DB_MSG = exports.COSMOS_DB_CHECK = void 0;
-const crypto = require("crypto");
-const http = require("http");
-const timers_1 = require("timers");
-const url = require("url");
-const url_1 = require("url");
-const bson_1 = require("./bson");
-const constants_1 = require("./cmap/wire_protocol/constants");
-const constants_2 = require("./constants");
-const error_1 = require("./error");
-const read_concern_1 = require("./read_concern");
-const read_preference_1 = require("./read_preference");
-const common_1 = require("./sdam/common");
-const write_concern_1 = require("./write_concern");
-exports.ByteUtils = {
-    toLocalBufferType(buffer) {
-        return Buffer.isBuffer(buffer)
-            ? buffer
-            : Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength);
-    },
-    equals(seqA, seqB) {
-        return exports.ByteUtils.toLocalBufferType(seqA).equals(seqB);
-    },
-    compare(seqA, seqB) {
-        return exports.ByteUtils.toLocalBufferType(seqA).compare(seqB);
-    },
-    toBase64(uint8array) {
-        return exports.ByteUtils.toLocalBufferType(uint8array).toString('base64');
-    }
-};
-/**
- * Determines if a connection's address matches a user provided list
- * of domain wildcards.
- */
-function hostMatchesWildcards(host, wildcards) {
-    for (const wildcard of wildcards) {
-        if (host === wildcard ||
-            (wildcard.startsWith('*.') && host?.endsWith(wildcard.substring(2, wildcard.length))) ||
-            (wildcard.startsWith('*/') && host?.endsWith(wildcard.substring(2, wildcard.length)))) {
-            return true;
-        }
-    }
-    return false;
-}
-exports.hostMatchesWildcards = hostMatchesWildcards;
-/**
- * Ensure Hint field is in a shape we expect:
- * - object of index names mapping to 1 or -1
- * - just an index name
- * @internal
- */
-function normalizeHintField(hint) {
-    let finalHint = undefined;
-    if (typeof hint === 'string') {
-        finalHint = hint;
-    }
-    else if (Array.isArray(hint)) {
-        finalHint = {};
-        hint.forEach(param => {
-            finalHint[param] = 1;
-        });
-    }
-    else if (hint != null && typeof hint === 'object') {
-        finalHint = {};
-        for (const name in hint) {
-            finalHint[name] = hint[name];
-        }
-    }
-    return finalHint;
-}
-exports.normalizeHintField = normalizeHintField;
-const TO_STRING = (object) => Object.prototype.toString.call(object);
-/**
- * Checks if arg is an Object:
- * - **NOTE**: the check is based on the `[Symbol.toStringTag]() === 'Object'`
- * @internal
- */
-function isObject(arg) {
-    return '[object Object]' === TO_STRING(arg);
-}
-exports.isObject = isObject;
-/** @internal */
-function mergeOptions(target, source) {
-    return { ...target, ...source };
-}
-exports.mergeOptions = mergeOptions;
-/** @internal */
-function filterOptions(options, names) {
-    const filterOptions = {};
-    for (const name in options) {
-        if (names.includes(name)) {
-            filterOptions[name] = options[name];
-        }
-    }
-    // Filtered options
-    return filterOptions;
-}
-exports.filterOptions = filterOptions;
-/**
- * Applies retryWrites: true to a command if retryWrites is set on the command's database.
- * @internal
- *
- * @param target - The target command to which we will apply retryWrites.
- * @param db - The database from which we can inherit a retryWrites value.
- */
-function applyRetryableWrites(target, db) {
-    if (db && db.s.options?.retryWrites) {
-        target.retryWrites = true;
-    }
-    return target;
-}
-exports.applyRetryableWrites = applyRetryableWrites;
-/**
- * Applies a write concern to a command based on well defined inheritance rules, optionally
- * detecting support for the write concern in the first place.
- * @internal
- *
- * @param target - the target command we will be applying the write concern to
- * @param sources - sources where we can inherit default write concerns from
- * @param options - optional settings passed into a command for write concern overrides
- */
-/**
- * Checks if a given value is a Promise
- *
- * @typeParam T - The resolution type of the possible promise
- * @param value - An object that could be a promise
- * @returns true if the provided value is a Promise
- */
-function isPromiseLike(value) {
-    return !!value && typeof value.then === 'function';
-}
-exports.isPromiseLike = isPromiseLike;
-/**
- * Applies collation to a given command.
- * @internal
- *
- * @param command - the command on which to apply collation
- * @param target - target of command
- * @param options - options containing collation settings
- */
-function decorateWithCollation(command, target, options) {
-    const capabilities = getTopology(target).capabilities;
-    if (options.collation && typeof options.collation === 'object') {
-        if (capabilities && capabilities.commandsTakeCollation) {
-            command.collation = options.collation;
-        }
-        else {
-            throw new error_1.MongoCompatibilityError(`Current topology does not support collation`);
-        }
-    }
-}
-exports.decorateWithCollation = decorateWithCollation;
-/**
- * Applies a read concern to a given command.
- * @internal
- *
- * @param command - the command on which to apply the read concern
- * @param coll - the parent collection of the operation calling this method
- */
-function decorateWithReadConcern(command, coll, options) {
-    if (options && options.session && options.session.inTransaction()) {
-        return;
-    }
-    const readConcern = Object.assign({}, command.readConcern || {});
-    if (coll.s.readConcern) {
-        Object.assign(readConcern, coll.s.readConcern);
-    }
-    if (Object.keys(readConcern).length > 0) {
-        Object.assign(command, { readConcern: readConcern });
-    }
-}
-exports.decorateWithReadConcern = decorateWithReadConcern;
-/**
- * Applies an explain to a given command.
- * @internal
- *
- * @param command - the command on which to apply the explain
- * @param options - the options containing the explain verbosity
- */
-function decorateWithExplain(command, explain) {
-    if (command.explain) {
-        return command;
-    }
-    return { explain: command, verbosity: explain.verbosity };
-}
-exports.decorateWithExplain = decorateWithExplain;
-/**
- * A helper function to get the topology from a given provider. Throws
- * if the topology cannot be found.
- * @throws MongoNotConnectedError
- * @internal
- */
-function getTopology(provider) {
-    // MongoClient or ClientSession or AbstractCursor
-    if ('topology' in provider && provider.topology) {
-        return provider.topology;
-    }
-    else if ('client' in provider && provider.client.topology) {
-        return provider.client.topology;
-    }
-    throw new error_1.MongoNotConnectedError('MongoClient must be connected to perform this operation');
-}
-exports.getTopology = getTopology;
-/** @internal */
-function ns(ns) {
-    return MongoDBNamespace.fromString(ns);
-}
-exports.ns = ns;
-/** @public */
-class MongoDBNamespace {
-    /**
-     * Create a namespace object
-     *
-     * @param db - database name
-     * @param collection - collection name
-     */
-    constructor(db, collection) {
-        this.db = db;
-        this.collection = collection;
-        this.collection = collection === '' ? undefined : collection;
-    }
-    toString() {
-        return this.collection ? `${this.db}.${this.collection}` : this.db;
-    }
-    withCollection(collection) {
-        return new MongoDBCollectionNamespace(this.db, collection);
-    }
-    static fromString(namespace) {
-        if (typeof namespace !== 'string' || namespace === '') {
-            // TODO(NODE-3483): Replace with MongoNamespaceError
-            throw new error_1.MongoRuntimeError(`Cannot parse namespace from "${namespace}"`);
-        }
-        const [db, ...collectionParts] = namespace.split('.');
-        const collection = collectionParts.join('.');
-        return new MongoDBNamespace(db, collection === '' ? undefined : collection);
-    }
-}
-exports.MongoDBNamespace = MongoDBNamespace;
-/**
- * @public
- *
- * A class representing a collection's namespace.  This class enforces (through Typescript) that
- * the `collection` portion of the namespace is defined and should only be
- * used in scenarios where this can be guaranteed.
- */
-class MongoDBCollectionNamespace extends MongoDBNamespace {
-    constructor(db, collection) {
-        super(db, collection);
-        this.collection = collection;
-    }
-    static fromString(namespace) {
-        return super.fromString(namespace);
-    }
-}
-exports.MongoDBCollectionNamespace = MongoDBCollectionNamespace;
-/** @internal */
-function* makeCounter(seed = 0) {
-    let count = seed;
-    while (true) {
-        const newCount = count;
-        count += 1;
-        yield newCount;
-    }
-}
-exports.makeCounter = makeCounter;
-function maybeCallback(promiseFn, callback) {
-    const promise = promiseFn();
-    if (callback == null) {
-        return promise;
-    }
-    promise.then(result => callback(undefined, result), error => callback(error));
-    return;
-}
-exports.maybeCallback = maybeCallback;
-/**
- * Synchronously Generate a UUIDv4
- * @internal
- */
-function uuidV4() {
-    const result = crypto.randomBytes(16);
-    result[6] = (result[6] & 0x0f) | 0x40;
-    result[8] = (result[8] & 0x3f) | 0x80;
-    return result;
-}
-exports.uuidV4 = uuidV4;
-/**
- * A helper function for determining `maxWireVersion` between legacy and new topology instances
- * @internal
- */
-function maxWireVersion(topologyOrServer) {
-    if (topologyOrServer) {
-        if (topologyOrServer.loadBalanced) {
-            // Since we do not have a monitor, we assume the load balanced server is always
-            // pointed at the latest mongodb version. There is a risk that for on-prem
-            // deployments that don't upgrade immediately that this could alert to the
-            // application that a feature is available that is actually not.
-            return constants_1.MAX_SUPPORTED_WIRE_VERSION;
-        }
-        if (topologyOrServer.hello) {
-            return topologyOrServer.hello.maxWireVersion;
-        }
-        if ('lastHello' in topologyOrServer && typeof topologyOrServer.lastHello === 'function') {
-            const lastHello = topologyOrServer.lastHello();
-            if (lastHello) {
-                return lastHello.maxWireVersion;
-            }
-        }
-        if (topologyOrServer.description &&
-            'maxWireVersion' in topologyOrServer.description &&
-            topologyOrServer.description.maxWireVersion != null) {
-            return topologyOrServer.description.maxWireVersion;
-        }
-    }
-    return 0;
-}
-exports.maxWireVersion = maxWireVersion;
-/**
- * Applies the function `eachFn` to each item in `arr`, in parallel.
- * @internal
- *
- * @param arr - An array of items to asynchronously iterate over
- * @param eachFn - A function to call on each item of the array. The callback signature is `(item, callback)`, where the callback indicates iteration is complete.
- * @param callback - The callback called after every item has been iterated
- */
-function eachAsync(arr, eachFn, callback) {
-    arr = arr || [];
-    let idx = 0;
-    let awaiting = 0;
-    for (idx = 0; idx < arr.length; ++idx) {
-        awaiting++;
-        eachFn(arr[idx], eachCallback);
-    }
-    if (awaiting === 0) {
-        callback();
-        return;
-    }
-    function eachCallback(err) {
-        awaiting--;
-        if (err) {
-            callback(err);
-            return;
-        }
-        if (idx === arr.length && awaiting <= 0) {
-            callback();
-        }
-    }
-}
-exports.eachAsync = eachAsync;
-/** @internal */
-function arrayStrictEqual(arr, arr2) {
-    if (!Array.isArray(arr) || !Array.isArray(arr2)) {
-        return false;
-    }
-    return arr.length === arr2.length && arr.every((elt, idx) => elt === arr2[idx]);
-}
-exports.arrayStrictEqual = arrayStrictEqual;
-/** @internal */
-function errorStrictEqual(lhs, rhs) {
-    if (lhs === rhs) {
-        return true;
-    }
-    if (!lhs || !rhs) {
-        return lhs === rhs;
-    }
-    if ((lhs == null && rhs != null) || (lhs != null && rhs == null)) {
-        return false;
-    }
-    if (lhs.constructor.name !== rhs.constructor.name) {
-        return false;
-    }
-    if (lhs.message !== rhs.message) {
-        return false;
-    }
-    return true;
-}
-exports.errorStrictEqual = errorStrictEqual;
-/** @internal */
-function makeStateMachine(stateTable) {
-    return function stateTransition(target, newState) {
-        const legalStates = stateTable[target.s.state];
-        if (legalStates && legalStates.indexOf(newState) < 0) {
-            throw new error_1.MongoRuntimeError(`illegal state transition from [${target.s.state}] => [${newState}], allowed: [${legalStates}]`);
-        }
-        target.emit('stateChanged', target.s.state, newState);
-        target.s.state = newState;
-    };
-}
-exports.makeStateMachine = makeStateMachine;
-/** @internal */
-function now() {
-    const hrtime = process.hrtime();
-    return Math.floor(hrtime[0] * 1000 + hrtime[1] / 1000000);
-}
-exports.now = now;
-/** @internal */
-function calculateDurationInMs(started) {
-    if (typeof started !== 'number') {
-        throw new error_1.MongoInvalidArgumentError('Numeric value required to calculate duration');
-    }
-    const elapsed = now() - started;
-    return elapsed < 0 ? 0 : elapsed;
-}
-exports.calculateDurationInMs = calculateDurationInMs;
-/** @internal */
-function hasAtomicOperators(doc) {
-    if (Array.isArray(doc)) {
-        for (const document of doc) {
-            if (hasAtomicOperators(document)) {
-                return true;
-            }
-        }
-        return false;
-    }
-    const keys = Object.keys(doc);
-    return keys.length > 0 && keys[0][0] === '$';
-}
-exports.hasAtomicOperators = hasAtomicOperators;
-/**
- * Merge inherited properties from parent into options, prioritizing values from options,
- * then values from parent.
- * @internal
- */
-function resolveOptions(parent, options) {
-    const result = Object.assign({}, options, (0, bson_1.resolveBSONOptions)(options, parent));
-    // Users cannot pass a readConcern/writeConcern to operations in a transaction
-    const session = options?.session;
-    if (!session?.inTransaction()) {
-        const readConcern = read_concern_1.ReadConcern.fromOptions(options) ?? parent?.readConcern;
-        if (readConcern) {
-            result.readConcern = readConcern;
-        }
-        const writeConcern = write_concern_1.WriteConcern.fromOptions(options) ?? parent?.writeConcern;
-        if (writeConcern) {
-            result.writeConcern = writeConcern;
-        }
-    }
-    const readPreference = read_preference_1.ReadPreference.fromOptions(options) ?? parent?.readPreference;
-    if (readPreference) {
-        result.readPreference = readPreference;
-    }
-    return result;
-}
-exports.resolveOptions = resolveOptions;
-function isSuperset(set, subset) {
-    set = Array.isArray(set) ? new Set(set) : set;
-    subset = Array.isArray(subset) ? new Set(subset) : subset;
-    for (const elem of subset) {
-        if (!set.has(elem)) {
-            return false;
-        }
-    }
-    return true;
-}
-exports.isSuperset = isSuperset;
-/**
- * Checks if the document is a Hello request
- * @internal
- */
-function isHello(doc) {
-    return doc[constants_2.LEGACY_HELLO_COMMAND] || doc.hello ? true : false;
-}
-exports.isHello = isHello;
-/** Returns the items that are uniquely in setA */
-function setDifference(setA, setB) {
-    const difference = new Set(setA);
-    for (const elem of setB) {
-        difference.delete(elem);
-    }
-    return difference;
-}
-exports.setDifference = setDifference;
-const HAS_OWN = (object, prop) => Object.prototype.hasOwnProperty.call(object, prop);
-function isRecord(value, requiredKeys = undefined) {
-    if (!isObject(value)) {
-        return false;
-    }
-    const ctor = value.constructor;
-    if (ctor && ctor.prototype) {
-        if (!isObject(ctor.prototype)) {
-            return false;
-        }
-        // Check to see if some method exists from the Object exists
-        if (!HAS_OWN(ctor.prototype, 'isPrototypeOf')) {
-            return false;
-        }
-    }
-    if (requiredKeys) {
-        const keys = Object.keys(value);
-        return isSuperset(keys, requiredKeys);
-    }
-    return true;
-}
-exports.isRecord = isRecord;
-/**
- * Make a deep copy of an object
- *
- * NOTE: This is not meant to be the perfect implementation of a deep copy,
- * but instead something that is good enough for the purposes of
- * command monitoring.
- */
-function deepCopy(value) {
-    if (value == null) {
-        return value;
-    }
-    else if (Array.isArray(value)) {
-        return value.map(item => deepCopy(item));
-    }
-    else if (isRecord(value)) {
-        const res = {};
-        for (const key in value) {
-            res[key] = deepCopy(value[key]);
-        }
-        return res;
-    }
-    const ctor = value.constructor;
-    if (ctor) {
-        switch (ctor.name.toLowerCase()) {
-            case 'date':
-                return new ctor(Number(value));
-            case 'map':
-                return new Map(value);
-            case 'set':
-                return new Set(value);
-            case 'buffer':
-                return Buffer.from(value);
-        }
-    }
-    return value;
-}
-exports.deepCopy = deepCopy;
-/**
- * A sequential list of items in a circularly linked list
- * @remarks
- * The head node is special, it is always defined and has a value of null.
- * It is never "included" in the list, in that, it is not returned by pop/shift or yielded by the iterator.
- * The circular linkage and always defined head node are to reduce checks for null next/prev references to zero.
- * New nodes are declared as object literals with keys always in the same order: next, prev, value.
- * @internal
- */
-class List {
-    get length() {
-        return this.count;
-    }
-    get [Symbol.toStringTag]() {
-        return 'List';
-    }
-    constructor() {
-        this.count = 0;
-        // this is carefully crafted:
-        // declaring a complete and consistently key ordered
-        // object is beneficial to the runtime optimizations
-        this.head = {
-            next: null,
-            prev: null,
-            value: null
-        };
-        this.head.next = this.head;
-        this.head.prev = this.head;
-    }
-    toArray() {
-        return Array.from(this);
-    }
-    toString() {
-        return `head <=> ${this.toArray().join(' <=> ')} <=> head`;
-    }
-    *[Symbol.iterator]() {
-        for (const node of this.nodes()) {
-            yield node.value;
-        }
-    }
-    *nodes() {
-        let ptr = this.head.next;
-        while (ptr !== this.head) {
-            // Save next before yielding so that we make removing within iteration safe
-            const { next } = ptr;
-            yield ptr;
-            ptr = next;
-        }
-    }
-    /** Insert at end of list */
-    push(value) {
-        this.count += 1;
-        const newNode = {
-            next: this.head,
-            prev: this.head.prev,
-            value
-        };
-        this.head.prev.next = newNode;
-        this.head.prev = newNode;
-    }
-    /** Inserts every item inside an iterable instead of the iterable itself */
-    pushMany(iterable) {
-        for (const value of iterable) {
-            this.push(value);
-        }
-    }
-    /** Insert at front of list */
-    unshift(value) {
-        this.count += 1;
-        const newNode = {
-            next: this.head.next,
-            prev: this.head,
-            value
-        };
-        this.head.next.prev = newNode;
-        this.head.next = newNode;
-    }
-    remove(node) {
-        if (node === this.head || this.length === 0) {
-            return null;
-        }
-        this.count -= 1;
-        const prevNode = node.prev;
-        const nextNode = node.next;
-        prevNode.next = nextNode;
-        nextNode.prev = prevNode;
-        return node.value;
-    }
-    /** Removes the first node at the front of the list */
-    shift() {
-        return this.remove(this.head.next);
-    }
-    /** Removes the last node at the end of the list */
-    pop() {
-        return this.remove(this.head.prev);
-    }
-    /** Iterates through the list and removes nodes where filter returns true */
-    prune(filter) {
-        for (const node of this.nodes()) {
-            if (filter(node.value)) {
-                this.remove(node);
-            }
-        }
-    }
-    clear() {
-        this.count = 0;
-        this.head.next = this.head;
-        this.head.prev = this.head;
-    }
-    /** Returns the first item in the list, does not remove */
-    first() {
-        // If the list is empty, value will be the head's null
-        return this.head.next.value;
-    }
-    /** Returns the last item in the list, does not remove */
-    last() {
-        // If the list is empty, value will be the head's null
-        return this.head.prev.value;
-    }
-}
-exports.List = List;
-/**
- * A pool of Buffers which allow you to read them as if they were one
- * @internal
- */
-class BufferPool {
-    constructor() {
-        this.buffers = new List();
-        this.totalByteLength = 0;
-    }
-    get length() {
-        return this.totalByteLength;
-    }
-    /** Adds a buffer to the internal buffer pool list */
-    append(buffer) {
-        this.buffers.push(buffer);
-        this.totalByteLength += buffer.length;
-    }
-    /**
-     * If BufferPool contains 4 bytes or more construct an int32 from the leading bytes,
-     * otherwise return null. Size can be negative, caller should error check.
-     */
-    getInt32() {
-        if (this.totalByteLength < 4) {
-            return null;
-        }
-        const firstBuffer = this.buffers.first();
-        if (firstBuffer != null && firstBuffer.byteLength >= 4) {
-            return firstBuffer.readInt32LE(0);
-        }
-        // Unlikely case: an int32 is split across buffers.
-        // Use read and put the returned buffer back on top
-        const top4Bytes = this.read(4);
-        const value = top4Bytes.readInt32LE(0);
-        // Put it back.
-        this.totalByteLength += 4;
-        this.buffers.unshift(top4Bytes);
-        return value;
-    }
-    /** Reads the requested number of bytes, optionally consuming them */
-    read(size) {
-        if (typeof size !== 'number' || size < 0) {
-            throw new error_1.MongoInvalidArgumentError('Argument "size" must be a non-negative number');
-        }
-        // oversized request returns empty buffer
-        if (size > this.totalByteLength) {
-            return Buffer.alloc(0);
-        }
-        // We know we have enough, we just don't know how it is spread across chunks
-        // TODO(NODE-4732): alloc API should change based on raw option
-        const result = Buffer.allocUnsafe(size);
-        for (let bytesRead = 0; bytesRead < size;) {
-            const buffer = this.buffers.shift();
-            if (buffer == null) {
-                break;
-            }
-            const bytesRemaining = size - bytesRead;
-            const bytesReadable = Math.min(bytesRemaining, buffer.byteLength);
-            const bytes = buffer.subarray(0, bytesReadable);
-            result.set(bytes, bytesRead);
-            bytesRead += bytesReadable;
-            this.totalByteLength -= bytesReadable;
-            if (bytesReadable < buffer.byteLength) {
-                this.buffers.unshift(buffer.subarray(bytesReadable));
-            }
-        }
-        return result;
-    }
-}
-exports.BufferPool = BufferPool;
-/** @public */
-class HostAddress {
-    constructor(hostString) {
-        this.host = undefined;
-        this.port = undefined;
-        this.socketPath = undefined;
-        this.isIPv6 = false;
-        const escapedHost = hostString.split(' ').join('%20'); // escape spaces, for socket path hosts
-        if (escapedHost.endsWith('.sock')) {
-            // heuristically determine if we're working with a domain socket
-            this.socketPath = decodeURIComponent(escapedHost);
-            return;
-        }
-        const urlString = `iLoveJS://${escapedHost}`;
-        let url;
-        try {
-            url = new url_1.URL(urlString);
-        }
-        catch (urlError) {
-            const runtimeError = new error_1.MongoRuntimeError(`Unable to parse ${escapedHost} with URL`);
-            runtimeError.cause = urlError;
-            throw runtimeError;
-        }
-        const hostname = url.hostname;
-        const port = url.port;
-        let normalized = decodeURIComponent(hostname).toLowerCase();
-        if (normalized.startsWith('[') && normalized.endsWith(']')) {
-            this.isIPv6 = true;
-            normalized = normalized.substring(1, hostname.length - 1);
-        }
-        this.host = normalized.toLowerCase();
-        if (typeof port === 'number') {
-            this.port = port;
-        }
-        else if (typeof port === 'string' && port !== '') {
-            this.port = Number.parseInt(port, 10);
-        }
-        else {
-            this.port = 27017;
-        }
-        if (this.port === 0) {
-            throw new error_1.MongoParseError('Invalid port (zero) with hostname');
-        }
-        Object.freeze(this);
-    }
-    [Symbol.for('nodejs.util.inspect.custom')]() {
-        return this.inspect();
-    }
-    inspect() {
-        return `new HostAddress('${this.toString()}')`;
-    }
-    toString() {
-        if (typeof this.host === 'string') {
-            if (this.isIPv6) {
-                return `[${this.host}]:${this.port}`;
-            }
-            return `${this.host}:${this.port}`;
-        }
-        return `${this.socketPath}`;
-    }
-    static fromString(s) {
-        return new HostAddress(s);
-    }
-    static fromHostPort(host, port) {
-        if (host.includes(':')) {
-            host = `[${host}]`; // IPv6 address
-        }
-        return HostAddress.fromString(`${host}:${port}`);
-    }
-    static fromSrvRecord({ name, port }) {
-        return HostAddress.fromHostPort(name, port);
-    }
-    toHostPort() {
-        if (this.socketPath) {
-            return { host: this.socketPath, port: 0 };
-        }
-        const host = this.host ?? '';
-        const port = this.port ?? 0;
-        return { host, port };
-    }
-}
-exports.HostAddress = HostAddress;
-exports.DEFAULT_PK_FACTORY = {
-    // We prefer not to rely on ObjectId having a createPk method
-    createPk() {
-        return new bson_1.ObjectId();
-    }
-};
-/**
- * When the driver used emitWarning the code will be equal to this.
- * @public
- *
- * @example
- * ```ts
- * process.on('warning', (warning) => {
- *  if (warning.code === MONGODB_WARNING_CODE) console.error('Ah an important warning! :)')
- * })
- * ```
- */
-exports.MONGODB_WARNING_CODE = 'MONGODB DRIVER';
-/** @internal */
-function emitWarning(message) {
-    return process.emitWarning(message, { code: exports.MONGODB_WARNING_CODE });
-}
-exports.emitWarning = emitWarning;
-const emittedWarnings = new Set();
-/**
- * Will emit a warning once for the duration of the application.
- * Uses the message to identify if it has already been emitted
- * so using string interpolation can cause multiple emits
- * @internal
- */
-function emitWarningOnce(message) {
-    if (!emittedWarnings.has(message)) {
-        emittedWarnings.add(message);
-        return emitWarning(message);
-    }
-}
-exports.emitWarningOnce = emitWarningOnce;
-/**
- * Takes a JS object and joins the values into a string separated by ', '
- */
-function enumToString(en) {
-    return Object.values(en).join(', ');
-}
-exports.enumToString = enumToString;
-/**
- * Determine if a server supports retryable writes.
- *
- * @internal
- */
-function supportsRetryableWrites(server) {
-    if (!server) {
-        return false;
-    }
-    if (server.loadBalanced) {
-        // Loadbalanced topologies will always support retry writes
-        return true;
-    }
-    if (server.description.logicalSessionTimeoutMinutes != null) {
-        // that supports sessions
-        if (server.description.type !== common_1.ServerType.Standalone) {
-            // and that is not a standalone
-            return true;
-        }
-    }
-    return false;
-}
-exports.supportsRetryableWrites = supportsRetryableWrites;
-/**
- * Fisher–Yates Shuffle
- *
- * Reference: https://bost.ocks.org/mike/shuffle/
- * @param sequence - items to be shuffled
- * @param limit - Defaults to `0`. If nonzero shuffle will slice the randomized array e.g, `.slice(0, limit)` otherwise will return the entire randomized array.
- */
-function shuffle(sequence, limit = 0) {
-    const items = Array.from(sequence); // shallow copy in order to never shuffle the input
-    if (limit > items.length) {
-        throw new error_1.MongoRuntimeError('Limit must be less than the number of items');
-    }
-    let remainingItemsToShuffle = items.length;
-    const lowerBound = limit % items.length === 0 ? 1 : items.length - limit;
-    while (remainingItemsToShuffle > lowerBound) {
-        // Pick a remaining element
-        const randomIndex = Math.floor(Math.random() * remainingItemsToShuffle);
-        remainingItemsToShuffle -= 1;
-        // And swap it with the current element
-        const swapHold = items[remainingItemsToShuffle];
-        items[remainingItemsToShuffle] = items[randomIndex];
-        items[randomIndex] = swapHold;
-    }
-    return limit % items.length === 0 ? items : items.slice(lowerBound);
-}
-exports.shuffle = shuffle;
-// TODO(NODE-4936): read concern eligibility for commands should be codified in command construction
-// @see https://github.com/mongodb/specifications/blob/master/source/read-write-concern/read-write-concern.rst#read-concern
-function commandSupportsReadConcern(command) {
-    if (command.aggregate || command.count || command.distinct || command.find || command.geoNear) {
-        return true;
-    }
-    return false;
-}
-exports.commandSupportsReadConcern = commandSupportsReadConcern;
-/**
- * Compare objectIds. `null` is always less
- * - `+1 = oid1 is greater than oid2`
- * - `-1 = oid1 is less than oid2`
- * - `+0 = oid1 is equal oid2`
- */
-function compareObjectId(oid1, oid2) {
-    if (oid1 == null && oid2 == null) {
-        return 0;
-    }
-    if (oid1 == null) {
-        return -1;
-    }
-    if (oid2 == null) {
-        return 1;
-    }
-    return exports.ByteUtils.compare(oid1.id, oid2.id);
-}
-exports.compareObjectId = compareObjectId;
-function parseInteger(value) {
-    if (typeof value === 'number')
-        return Math.trunc(value);
-    const parsedValue = Number.parseInt(String(value), 10);
-    return Number.isNaN(parsedValue) ? null : parsedValue;
-}
-exports.parseInteger = parseInteger;
-function parseUnsignedInteger(value) {
-    const parsedInt = parseInteger(value);
-    return parsedInt != null && parsedInt >= 0 ? parsedInt : null;
-}
-exports.parseUnsignedInteger = parseUnsignedInteger;
-/**
- * Determines whether a provided address matches the provided parent domain.
- *
- * If a DNS server were to become compromised SRV records would still need to
- * advertise addresses that are under the same domain as the srvHost.
- *
- * @param address - The address to check against a domain
- * @param srvHost - The domain to check the provided address against
- * @returns Whether the provided address matches the parent domain
- */
-function matchesParentDomain(address, srvHost) {
-    // Remove trailing dot if exists on either the resolved address or the srv hostname
-    const normalizedAddress = address.endsWith('.') ? address.slice(0, address.length - 1) : address;
-    const normalizedSrvHost = srvHost.endsWith('.') ? srvHost.slice(0, srvHost.length - 1) : srvHost;
-    const allCharacterBeforeFirstDot = /^.*?\./;
-    // Remove all characters before first dot
-    // Add leading dot back to string so
-    //   an srvHostDomain = '.trusted.site'
-    //   will not satisfy an addressDomain that endsWith '.fake-trusted.site'
-    const addressDomain = `.${normalizedAddress.replace(allCharacterBeforeFirstDot, '')}`;
-    const srvHostDomain = `.${normalizedSrvHost.replace(allCharacterBeforeFirstDot, '')}`;
-    return addressDomain.endsWith(srvHostDomain);
-}
-exports.matchesParentDomain = matchesParentDomain;
-async function request(uri, options = {}) {
-    return new Promise((resolve, reject) => {
-        const requestOptions = {
-            method: 'GET',
-            timeout: 10000,
-            json: true,
-            ...url.parse(uri),
-            ...options
-        };
-        const req = http.request(requestOptions, res => {
-            res.setEncoding('utf8');
-            let data = '';
-            res.on('data', d => {
-                data += d;
-            });
-            res.once('end', () => {
-                if (options.json === false) {
-                    resolve(data);
-                    return;
-                }
-                try {
-                    const parsed = JSON.parse(data);
-                    resolve(parsed);
-                }
-                catch {
-                    // TODO(NODE-3483)
-                    reject(new error_1.MongoRuntimeError(`Invalid JSON response: "${data}"`));
-                }
-            });
-        });
-        req.once('timeout', () => req.destroy(new error_1.MongoNetworkTimeoutError(`Network request to ${uri} timed out after ${options.timeout} ms`)));
-        req.once('error', error => reject(error));
-        req.end();
-    });
-}
-exports.request = request;
-/**
- * A custom AbortController that aborts after a specified timeout.
- *
- * If `timeout` is undefined or \<=0, the abort controller never aborts.
- *
- * This class provides two benefits over the built-in AbortSignal.timeout() method.
- * - This class provides a mechanism for cancelling the timeout
- * - This class supports infinite timeouts by interpreting a timeout of 0 as infinite.  This is
- *    consistent with existing timeout options in the Node driver (serverSelectionTimeoutMS, for example).
- * @internal
- */
-class TimeoutController extends AbortController {
-    constructor(timeout = 0, timeoutId = timeout > 0 ? (0, timers_1.setTimeout)(() => this.abort(), timeout) : null) {
-        super();
-        this.timeoutId = timeoutId;
-    }
-    clear() {
-        if (this.timeoutId != null) {
-            (0, timers_1.clearTimeout)(this.timeoutId);
-        }
-        this.timeoutId = null;
-    }
-}
-exports.TimeoutController = TimeoutController;
-/** @internal */
-exports.DOCUMENT_DB_CHECK = /(\.docdb\.amazonaws\.com$)|(\.docdb-elastic\.amazonaws\.com$)/;
-/** @internal */
-exports.COSMOS_DB_CHECK = /\.cosmos\.azure\.com$/;
-/** @internal */
-exports.DOCUMENT_DB_MSG = 'You appear to be connected to a DocumentDB cluster. For more information regarding feature compatibility and support please visit https://www.mongodb.com/supportability/documentdb';
-/** @internal */
-exports.COSMOS_DB_MSG = 'You appear to be connected to a CosmosDB cluster. For more information regarding feature compatibility and support please visit https://www.mongodb.com/supportability/cosmosdb';
-/** @internal */
-function isHostMatch(match, host) {
-    return host && match.test(host.toLowerCase()) ? true : false;
-}
-exports.isHostMatch = isHostMatch;
-//# sourceMappingURL=utils.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/utils.js.map b/server/data-import/node_modules/mongodb/lib/utils.js.map
deleted file mode 100644
index 9950006a5a6a36503f9bacb4d0791321189f212f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/utils.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/write_concern.js b/server/data-import/node_modules/mongodb/lib/write_concern.js
deleted file mode 100644
index a3df0b0fd3ff6069775f52ea6b2bef5ad1372ebf..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/write_concern.js
+++ /dev/null
@@ -1,86 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.WriteConcern = exports.WRITE_CONCERN_KEYS = void 0;
-exports.WRITE_CONCERN_KEYS = ['w', 'wtimeout', 'j', 'journal', 'fsync'];
-/**
- * A MongoDB WriteConcern, which describes the level of acknowledgement
- * requested from MongoDB for write operations.
- * @public
- *
- * @see https://www.mongodb.com/docs/manual/reference/write-concern/
- */
-class WriteConcern {
-    /**
-     * Constructs a WriteConcern from the write concern properties.
-     * @param w - request acknowledgment that the write operation has propagated to a specified number of mongod instances or to mongod instances with specified tags.
-     * @param wtimeoutMS - specify a time limit to prevent write operations from blocking indefinitely
-     * @param journal - request acknowledgment that the write operation has been written to the on-disk journal
-     * @param fsync - equivalent to the j option. Is deprecated and will be removed in the next major version.
-     */
-    constructor(w, wtimeoutMS, journal, fsync) {
-        if (w != null) {
-            if (!Number.isNaN(Number(w))) {
-                this.w = Number(w);
-            }
-            else {
-                this.w = w;
-            }
-        }
-        if (wtimeoutMS != null) {
-            this.wtimeoutMS = this.wtimeout = wtimeoutMS;
-        }
-        if (journal != null) {
-            this.journal = this.j = journal;
-        }
-        if (fsync != null) {
-            this.journal = this.j = fsync ? true : false;
-        }
-    }
-    /**
-     * Apply a write concern to a command document. Will modify and return the command.
-     */
-    static apply(command, writeConcern) {
-        const wc = {};
-        // The write concern document sent to the server has w/wtimeout/j fields.
-        if (writeConcern.w != null)
-            wc.w = writeConcern.w;
-        if (writeConcern.wtimeoutMS != null)
-            wc.wtimeout = writeConcern.wtimeoutMS;
-        if (writeConcern.journal != null)
-            wc.j = writeConcern.j;
-        command.writeConcern = wc;
-        return command;
-    }
-    /** Construct a WriteConcern given an options object. */
-    static fromOptions(options, inherit) {
-        if (options == null)
-            return undefined;
-        inherit = inherit ?? {};
-        let opts;
-        if (typeof options === 'string' || typeof options === 'number') {
-            opts = { w: options };
-        }
-        else if (options instanceof WriteConcern) {
-            opts = options;
-        }
-        else {
-            opts = options.writeConcern;
-        }
-        const parentOpts = inherit instanceof WriteConcern ? inherit : inherit.writeConcern;
-        const { w = undefined, wtimeout = undefined, j = undefined, fsync = undefined, journal = undefined, wtimeoutMS = undefined } = {
-            ...parentOpts,
-            ...opts
-        };
-        if (w != null ||
-            wtimeout != null ||
-            wtimeoutMS != null ||
-            j != null ||
-            journal != null ||
-            fsync != null) {
-            return new WriteConcern(w, wtimeout ?? wtimeoutMS, j ?? journal, fsync);
-        }
-        return undefined;
-    }
-}
-exports.WriteConcern = WriteConcern;
-//# sourceMappingURL=write_concern.js.map
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/lib/write_concern.js.map b/server/data-import/node_modules/mongodb/lib/write_concern.js.map
deleted file mode 100644
index 9f2f54732922644ef6c3eefca4261dbbc1115324..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/lib/write_concern.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"write_concern.js","sourceRoot":"","sources":["../src/write_concern.ts"],"names":[],"mappings":";;;AAsCa,QAAA,kBAAkB,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAY7E;;;;;;GAMG;AACH,MAAa,YAAY;IAuBvB;;;;;;OAMG;IACH,YAAY,CAAK,EAAE,UAAmB,EAAE,OAAiB,EAAE,KAAmB;QAC5E,IAAI,CAAC,IAAI,IAAI,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5B,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;aACpB;iBAAM;gBACL,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;aACZ;SACF;QACD,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;SAC9C;QACD,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;SACjC;QACD,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;SAC9C;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,OAAiB,EAAE,YAA0B;QACxD,MAAM,EAAE,GAA+B,EAAE,CAAC;QAC1C,yEAAyE;QACzE,IAAI,YAAY,CAAC,CAAC,IAAI,IAAI;YAAE,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;QAClD,IAAI,YAAY,CAAC,UAAU,IAAI,IAAI;YAAE,EAAE,CAAC,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC;QAC3E,IAAI,YAAY,CAAC,OAAO,IAAI,IAAI;YAAE,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,wDAAwD;IACxD,MAAM,CAAC,WAAW,CAChB,OAAgD,EAChD,OAA4C;QAE5C,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO,SAAS,CAAC;QACtC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QACxB,IAAI,IAAqD,CAAC;QAC1D,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC9D,IAAI,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;SACvB;aAAM,IAAI,OAAO,YAAY,YAAY,EAAE;YAC1C,IAAI,GAAG,OAAO,CAAC;SAChB;aAAM;YACL,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;SAC7B;QACD,MAAM,UAAU,GACd,OAAO,YAAY,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;QAEnE,MAAM,EACJ,CAAC,GAAG,SAAS,EACb,QAAQ,GAAG,SAAS,EACpB,CAAC,GAAG,SAAS,EACb,KAAK,GAAG,SAAS,EACjB,OAAO,GAAG,SAAS,EACnB,UAAU,GAAG,SAAS,EACvB,GAAG;YACF,GAAG,UAAU;YACb,GAAG,IAAI;SACR,CAAC;QACF,IACE,CAAC,IAAI,IAAI;YACT,QAAQ,IAAI,IAAI;YAChB,UAAU,IAAI,IAAI;YAClB,CAAC,IAAI,IAAI;YACT,OAAO,IAAI,IAAI;YACf,KAAK,IAAI,IAAI,EACb;YACA,OAAO,IAAI,YAAY,CAAC,CAAC,EAAE,QAAQ,IAAI,UAAU,EAAE,CAAC,IAAI,OAAO,EAAE,KAAK,CAAC,CAAC;SACzE;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAvGD,oCAuGC"}
\ No newline at end of file
diff --git a/server/data-import/node_modules/mongodb/mongodb.d.ts b/server/data-import/node_modules/mongodb/mongodb.d.ts
deleted file mode 100644
index 06095aca610acdd04d6f2fa317f4484c92699cc3..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/mongodb.d.ts
+++ /dev/null
@@ -1,7525 +0,0 @@
-/// <reference types="node" />
-
-import type { DeserializeOptions , ObjectIdLike , SerializeOptions } from 'bson';
-import { Binary , BSON , BSONRegExp , BSONSymbol , BSONType , Code , DBRef , Decimal128 , deserialize , Document , Double , Int32 , Long , MaxKey , MinKey , ObjectId , serialize , Timestamp , UUID } from 'bson';
-import type { SrvRecord } from 'dns';
-import { EventEmitter } from 'events';
-import type { Socket , TcpNetConnectOpts } from 'net';
-import {  Readable , Writable } from 'stream';
-import type { ConnectionOptions as ConnectionOptions_2 , TLSSocket , TLSSocketOptions } from 'tls';
-
-/** @public */
-export declare abstract class AbstractCursor<TSchema = any, CursorEvents extends AbstractCursorEvents = AbstractCursorEvents> extends TypedEventEmitter<CursorEvents> {
-    /* Excluded from this release type: [kId] */
-    /* Excluded from this release type: [kSession] */
-    /* Excluded from this release type: [kServer] */
-    /* Excluded from this release type: [kNamespace] */
-    /* Excluded from this release type: [kDocuments] */
-    /* Excluded from this release type: [kClient] */
-    /* Excluded from this release type: [kTransform] */
-    /* Excluded from this release type: [kInitialized] */
-    /* Excluded from this release type: [kClosed] */
-    /* Excluded from this release type: [kKilled] */
-    /* Excluded from this release type: [kOptions] */
-    /** @event */
-    static readonly CLOSE: "close";
-    /* Excluded from this release type: __constructor */
-    get id(): Long | undefined;
-    /* Excluded from this release type: isDead */
-    /* Excluded from this release type: client */
-    /* Excluded from this release type: server */
-    get namespace(): MongoDBNamespace;
-    get readPreference(): ReadPreference;
-    get readConcern(): ReadConcern | undefined;
-    /* Excluded from this release type: session */
-    /* Excluded from this release type: session */
-    /* Excluded from this release type: cursorOptions */
-    get closed(): boolean;
-    get killed(): boolean;
-    get loadBalanced(): boolean;
-    /** Returns current buffered documents length */
-    bufferedCount(): number;
-    /** Returns current buffered documents */
-    readBufferedDocuments(number?: number): TSchema[];
-    [Symbol.asyncIterator](): AsyncGenerator<TSchema, void, void>;
-    stream(options?: CursorStreamOptions): Readable & AsyncIterable<TSchema>;
-    hasNext(): Promise<boolean>;
-    /** Get the next available document from the cursor, returns null if no more documents are available. */
-    next(): Promise<TSchema | null>;
-    /**
-     * Try to get the next available document from the cursor or `null` if an empty batch is returned
-     */
-    tryNext(): Promise<TSchema | null>;
-    /**
-     * Iterates over all the documents for this cursor using the iterator, callback pattern.
-     *
-     * If the iterator returns `false`, iteration will stop.
-     *
-     * @param iterator - The iteration callback.
-     * @deprecated - Will be removed in a future release. Use for await...of instead.
-     */
-    forEach(iterator: (doc: TSchema) => boolean | void): Promise<void>;
-    close(): Promise<void>;
-    /**
-     * Returns an array of documents. The caller is responsible for making sure that there
-     * is enough memory to store the results. Note that the array only contains partial
-     * results when this cursor had been previously accessed. In that case,
-     * cursor.rewind() can be used to reset the cursor.
-     */
-    toArray(): Promise<TSchema[]>;
-    /**
-     * Add a cursor flag to the cursor
-     *
-     * @param flag - The flag to set, must be one of following ['tailable', 'oplogReplay', 'noCursorTimeout', 'awaitData', 'partial' -.
-     * @param value - The flag boolean value.
-     */
-    addCursorFlag(flag: CursorFlag, value: boolean): this;
-    /**
-     * Map all documents using the provided function
-     * If there is a transform set on the cursor, that will be called first and the result passed to
-     * this function's transform.
-     *
-     * @remarks
-     *
-     * **Note** Cursors use `null` internally to indicate that there are no more documents in the cursor. Providing a mapping
-     * function that maps values to `null` will result in the cursor closing itself before it has finished iterating
-     * all documents.  This will **not** result in a memory leak, just surprising behavior.  For example:
-     *
-     * ```typescript
-     * const cursor = collection.find({});
-     * cursor.map(() => null);
-     *
-     * const documents = await cursor.toArray();
-     * // documents is always [], regardless of how many documents are in the collection.
-     * ```
-     *
-     * Other falsey values are allowed:
-     *
-     * ```typescript
-     * const cursor = collection.find({});
-     * cursor.map(() => '');
-     *
-     * const documents = await cursor.toArray();
-     * // documents is now an array of empty strings
-     * ```
-     *
-     * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
-     * it **does not** return a new instance of a cursor. This means when calling map,
-     * you should always assign the result to a new variable in order to get a correctly typed cursor variable.
-     * Take note of the following example:
-     *
-     * @example
-     * ```typescript
-     * const cursor: FindCursor<Document> = coll.find();
-     * const mappedCursor: FindCursor<number> = cursor.map(doc => Object.keys(doc).length);
-     * const keyCounts: number[] = await mappedCursor.toArray(); // cursor.toArray() still returns Document[]
-     * ```
-     * @param transform - The mapping transformation method.
-     */
-    map<T = any>(transform: (doc: TSchema) => T): AbstractCursor<T>;
-    /**
-     * Set the ReadPreference for the cursor.
-     *
-     * @param readPreference - The new read preference for the cursor.
-     */
-    withReadPreference(readPreference: ReadPreferenceLike): this;
-    /**
-     * Set the ReadPreference for the cursor.
-     *
-     * @param readPreference - The new read preference for the cursor.
-     */
-    withReadConcern(readConcern: ReadConcernLike): this;
-    /**
-     * Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)
-     *
-     * @param value - Number of milliseconds to wait before aborting the query.
-     */
-    maxTimeMS(value: number): this;
-    /**
-     * Set the batch size for the cursor.
-     *
-     * @param value - The number of documents to return per batch. See {@link https://www.mongodb.com/docs/manual/reference/command/find/|find command documentation}.
-     */
-    batchSize(value: number): this;
-    /**
-     * Rewind this cursor to its uninitialized state. Any options that are present on the cursor will
-     * remain in effect. Iterating this cursor will cause new queries to be sent to the server, even
-     * if the resultant data has already been retrieved by this cursor.
-     */
-    rewind(): void;
-    /**
-     * Returns a new uninitialized copy of this cursor, with options matching those that have been set on the current instance
-     */
-    abstract clone(): AbstractCursor<TSchema>;
-    /* Excluded from this release type: _initialize */
-    /* Excluded from this release type: getMore */
-    /* Excluded from this release type: [kInit] */
-}
-
-/** @public */
-export declare type AbstractCursorEvents = {
-    [AbstractCursor.CLOSE](): void;
-};
-
-/** @public */
-export declare interface AbstractCursorOptions extends BSONSerializeOptions {
-    session?: ClientSession;
-    readPreference?: ReadPreferenceLike;
-    readConcern?: ReadConcernLike;
-    /**
-     * Specifies the number of documents to return in each response from MongoDB
-     */
-    batchSize?: number;
-    /**
-     * When applicable `maxTimeMS` controls the amount of time the initial command
-     * that constructs a cursor should take. (ex. find, aggregate, listCollections)
-     */
-    maxTimeMS?: number;
-    /**
-     * When applicable `maxAwaitTimeMS` controls the amount of time subsequent getMores
-     * that a cursor uses to fetch more data should take. (ex. cursor.next())
-     */
-    maxAwaitTimeMS?: number;
-    /**
-     * Comment to apply to the operation.
-     *
-     * In server versions pre-4.4, 'comment' must be string.  A server
-     * error will be thrown if any other type is provided.
-     *
-     * In server versions 4.4 and above, 'comment' can be any valid BSON type.
-     */
-    comment?: unknown;
-    /**
-     * By default, MongoDB will automatically close a cursor when the
-     * client has exhausted all results in the cursor. However, for [capped collections](https://www.mongodb.com/docs/manual/core/capped-collections)
-     * you may use a Tailable Cursor that remains open after the client exhausts
-     * the results in the initial cursor.
-     */
-    tailable?: boolean;
-    /**
-     * If awaitData is set to true, when the cursor reaches the end of the capped collection,
-     * MongoDB blocks the query thread for a period of time waiting for new data to arrive.
-     * When new data is inserted into the capped collection, the blocked thread is signaled
-     * to wake up and return the next batch to the client.
-     */
-    awaitData?: boolean;
-    noCursorTimeout?: boolean;
-}
-
-/* Excluded from this release type: AbstractOperation */
-
-/** @public */
-export declare type AcceptedFields<TSchema, FieldType, AssignableType> = {
-    readonly [key in KeysOfAType<TSchema, FieldType>]?: AssignableType;
-};
-
-/** @public */
-export declare type AddToSetOperators<Type> = {
-    $each?: Array<Flatten<Type>>;
-};
-
-/**
- * The **Admin** class is an internal class that allows convenient access to
- * the admin functionality and commands for MongoDB.
- *
- * **ADMIN Cannot directly be instantiated**
- * @public
- *
- * @example
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * const client = new MongoClient('mongodb://localhost:27017');
- * const admin = client.db().admin();
- * const dbInfo = await admin.listDatabases();
- * for (const db of dbInfo.databases) {
- *   console.log(db.name);
- * }
- * ```
- */
-export declare class Admin {
-    /* Excluded from this release type: s */
-    /* Excluded from this release type: __constructor */
-    /**
-     * Execute a command
-     *
-     * The driver will ensure the following fields are attached to the command sent to the server:
-     * - `lsid` - sourced from an implicit session or options.session
-     * - `$readPreference` - defaults to primary or can be configured by options.readPreference
-     * - `$db` - sourced from the name of this database
-     *
-     * If the client has a serverApi setting:
-     * - `apiVersion`
-     * - `apiStrict`
-     * - `apiDeprecationErrors`
-     *
-     * When in a transaction:
-     * - `readConcern` - sourced from readConcern set on the TransactionOptions
-     * - `writeConcern` - sourced from writeConcern set on the TransactionOptions
-     *
-     * Attaching any of the above fields to the command will have no effect as the driver will overwrite the value.
-     *
-     * @param command - The command to execute
-     * @param options - Optional settings for the command
-     */
-    command(command: Document, options?: RunCommandOptions): Promise<Document>;
-    /**
-     * Retrieve the server build information
-     *
-     * @param options - Optional settings for the command
-     */
-    buildInfo(options?: CommandOperationOptions): Promise<Document>;
-    /**
-     * Retrieve the server build information
-     *
-     * @param options - Optional settings for the command
-     */
-    serverInfo(options?: CommandOperationOptions): Promise<Document>;
-    /**
-     * Retrieve this db's server status.
-     *
-     * @param options - Optional settings for the command
-     */
-    serverStatus(options?: CommandOperationOptions): Promise<Document>;
-    /**
-     * Ping the MongoDB server and retrieve results
-     *
-     * @param options - Optional settings for the command
-     */
-    ping(options?: CommandOperationOptions): Promise<Document>;
-    /**
-     * Remove a user from a database
-     *
-     * @param username - The username to remove
-     * @param options - Optional settings for the command
-     */
-    removeUser(username: string, options?: RemoveUserOptions): Promise<boolean>;
-    /**
-     * Validate an existing collection
-     *
-     * @param collectionName - The name of the collection to validate.
-     * @param options - Optional settings for the command
-     */
-    validateCollection(collectionName: string, options?: ValidateCollectionOptions): Promise<Document>;
-    /**
-     * List the available databases
-     *
-     * @param options - Optional settings for the command
-     */
-    listDatabases(options?: ListDatabasesOptions): Promise<ListDatabasesResult>;
-    /**
-     * Get ReplicaSet status
-     *
-     * @param options - Optional settings for the command
-     */
-    replSetGetStatus(options?: CommandOperationOptions): Promise<Document>;
-}
-
-/* Excluded from this release type: AdminPrivate */
-
-/* Excluded from this release type: AggregateOperation */
-
-/** @public */
-export declare interface AggregateOptions extends CommandOperationOptions {
-    /** allowDiskUse lets the server know if it can use disk to store temporary results for the aggregation (requires mongodb 2.6 \>). */
-    allowDiskUse?: boolean;
-    /** The number of documents to return per batch. See [aggregation documentation](https://www.mongodb.com/docs/manual/reference/command/aggregate). */
-    batchSize?: number;
-    /** Allow driver to bypass schema validation. */
-    bypassDocumentValidation?: boolean;
-    /** Return the query as cursor, on 2.6 \> it returns as a real cursor on pre 2.6 it returns as an emulated cursor. */
-    cursor?: Document;
-    /** specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point. */
-    maxTimeMS?: number;
-    /** The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query. */
-    maxAwaitTimeMS?: number;
-    /** Specify collation. */
-    collation?: CollationOptions;
-    /** Add an index selection hint to an aggregation command */
-    hint?: Hint;
-    /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-    let?: Document;
-    out?: string;
-}
-
-/**
- * The **AggregationCursor** class is an internal class that embodies an aggregation cursor on MongoDB
- * allowing for iteration over the results returned from the underlying query. It supports
- * one by one document iteration, conversion to an array or can be iterated as a Node 4.X
- * or higher stream
- * @public
- */
-export declare class AggregationCursor<TSchema = any> extends AbstractCursor<TSchema> {
-    /* Excluded from this release type: [kPipeline] */
-    /* Excluded from this release type: [kOptions] */
-    /* Excluded from this release type: __constructor */
-    get pipeline(): Document[];
-    clone(): AggregationCursor<TSchema>;
-    map<T>(transform: (doc: TSchema) => T): AggregationCursor<T>;
-    /* Excluded from this release type: _initialize */
-    /** Execute the explain for the cursor */
-    explain(verbosity?: ExplainVerbosityLike): Promise<Document>;
-    /** Add a group stage to the aggregation pipeline */
-    group<T = TSchema>($group: Document): AggregationCursor<T>;
-    /** Add a limit stage to the aggregation pipeline */
-    limit($limit: number): this;
-    /** Add a match stage to the aggregation pipeline */
-    match($match: Document): this;
-    /** Add an out stage to the aggregation pipeline */
-    out($out: {
-        db: string;
-        coll: string;
-    } | string): this;
-    /**
-     * Add a project stage to the aggregation pipeline
-     *
-     * @remarks
-     * In order to strictly type this function you must provide an interface
-     * that represents the effect of your projection on the result documents.
-     *
-     * By default chaining a projection to your cursor changes the returned type to the generic {@link Document} type.
-     * You should specify a parameterized type to have assertions on your final results.
-     *
-     * @example
-     * ```typescript
-     * // Best way
-     * const docs: AggregationCursor<{ a: number }> = cursor.project<{ a: number }>({ _id: 0, a: true });
-     * // Flexible way
-     * const docs: AggregationCursor<Document> = cursor.project({ _id: 0, a: true });
-     * ```
-     *
-     * @remarks
-     * In order to strictly type this function you must provide an interface
-     * that represents the effect of your projection on the result documents.
-     *
-     * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
-     * it **does not** return a new instance of a cursor. This means when calling project,
-     * you should always assign the result to a new variable in order to get a correctly typed cursor variable.
-     * Take note of the following example:
-     *
-     * @example
-     * ```typescript
-     * const cursor: AggregationCursor<{ a: number; b: string }> = coll.aggregate([]);
-     * const projectCursor = cursor.project<{ a: number }>({ _id: 0, a: true });
-     * const aPropOnlyArray: {a: number}[] = await projectCursor.toArray();
-     *
-     * // or always use chaining and save the final cursor
-     *
-     * const cursor = coll.aggregate().project<{ a: string }>({
-     *   _id: 0,
-     *   a: { $convert: { input: '$a', to: 'string' }
-     * }});
-     * ```
-     */
-    project<T extends Document = Document>($project: Document): AggregationCursor<T>;
-    /** Add a lookup stage to the aggregation pipeline */
-    lookup($lookup: Document): this;
-    /** Add a redact stage to the aggregation pipeline */
-    redact($redact: Document): this;
-    /** Add a skip stage to the aggregation pipeline */
-    skip($skip: number): this;
-    /** Add a sort stage to the aggregation pipeline */
-    sort($sort: Sort): this;
-    /** Add a unwind stage to the aggregation pipeline */
-    unwind($unwind: Document | string): this;
-    /** Add a geoNear stage to the aggregation pipeline */
-    geoNear($geoNear: Document): this;
-}
-
-/** @public */
-export declare interface AggregationCursorOptions extends AbstractCursorOptions, AggregateOptions {
-}
-
-/**
- * It is possible to search using alternative types in mongodb e.g.
- * string types can be searched using a regex in mongo
- * array types can be searched using their element type
- * @public
- */
-export declare type AlternativeType<T> = T extends ReadonlyArray<infer U> ? T | RegExpOrString<U> : RegExpOrString<T>;
-
-/** @public */
-export declare type AnyBulkWriteOperation<TSchema extends Document = Document> = {
-    insertOne: InsertOneModel<TSchema>;
-} | {
-    replaceOne: ReplaceOneModel<TSchema>;
-} | {
-    updateOne: UpdateOneModel<TSchema>;
-} | {
-    updateMany: UpdateManyModel<TSchema>;
-} | {
-    deleteOne: DeleteOneModel<TSchema>;
-} | {
-    deleteMany: DeleteManyModel<TSchema>;
-};
-
-/** @public */
-export declare type AnyError = MongoError | Error;
-
-/** @public */
-export declare type ArrayElement<Type> = Type extends ReadonlyArray<infer Item> ? Item : never;
-
-/** @public */
-export declare type ArrayOperator<Type> = {
-    $each?: Array<Flatten<Type>>;
-    $slice?: number;
-    $position?: number;
-    $sort?: Sort;
-};
-
-/** @public */
-export declare interface Auth {
-    /** The username for auth */
-    username?: string;
-    /** The password for auth */
-    password?: string;
-}
-
-/* Excluded from this release type: AuthContext */
-
-/** @public */
-export declare const AuthMechanism: Readonly<{
-    readonly MONGODB_AWS: "MONGODB-AWS";
-    readonly MONGODB_CR: "MONGODB-CR";
-    readonly MONGODB_DEFAULT: "DEFAULT";
-    readonly MONGODB_GSSAPI: "GSSAPI";
-    readonly MONGODB_PLAIN: "PLAIN";
-    readonly MONGODB_SCRAM_SHA1: "SCRAM-SHA-1";
-    readonly MONGODB_SCRAM_SHA256: "SCRAM-SHA-256";
-    readonly MONGODB_X509: "MONGODB-X509";
-    /** @experimental */
-    readonly MONGODB_OIDC: "MONGODB-OIDC";
-}>;
-
-/** @public */
-export declare type AuthMechanism = (typeof AuthMechanism)[keyof typeof AuthMechanism];
-
-/** @public */
-export declare interface AuthMechanismProperties extends Document {
-    SERVICE_HOST?: string;
-    SERVICE_NAME?: string;
-    SERVICE_REALM?: string;
-    CANONICALIZE_HOST_NAME?: GSSAPICanonicalizationValue;
-    AWS_SESSION_TOKEN?: string;
-    /** @experimental */
-    REQUEST_TOKEN_CALLBACK?: OIDCRequestFunction;
-    /** @experimental */
-    REFRESH_TOKEN_CALLBACK?: OIDCRefreshFunction;
-    /** @experimental */
-    PROVIDER_NAME?: 'aws' | 'azure';
-    /** @experimental */
-    ALLOWED_HOSTS?: string[];
-    /** @experimental */
-    TOKEN_AUDIENCE?: string;
-}
-
-/* Excluded from this release type: AutoEncrypter */
-
-/**
- * @public
- *
- * Extra options related to the mongocryptd process
- * \* _Available in MongoDB 6.0 or higher._
- */
-export declare type AutoEncryptionExtraOptions = NonNullable<AutoEncryptionOptions['extraOptions']>;
-
-/** @public */
-export declare const AutoEncryptionLoggerLevel: Readonly<{
-    readonly FatalError: 0;
-    readonly Error: 1;
-    readonly Warning: 2;
-    readonly Info: 3;
-    readonly Trace: 4;
-}>;
-
-/**
- * @public
- * The level of severity of the log message
- *
- * | Value | Level |
- * |-------|-------|
- * | 0 | Fatal Error |
- * | 1 | Error |
- * | 2 | Warning |
- * | 3 | Info |
- * | 4 | Trace |
- */
-export declare type AutoEncryptionLoggerLevel = (typeof AutoEncryptionLoggerLevel)[keyof typeof AutoEncryptionLoggerLevel];
-
-/** @public */
-export declare interface AutoEncryptionOptions {
-    /* Excluded from this release type: metadataClient */
-    /** A `MongoClient` used to fetch keys from a key vault */
-    keyVaultClient?: MongoClient;
-    /** The namespace where keys are stored in the key vault */
-    keyVaultNamespace?: string;
-    /** Configuration options that are used by specific KMS providers during key generation, encryption, and decryption. */
-    kmsProviders?: {
-        /** Configuration options for using 'aws' as your KMS provider */
-        aws?: {
-            /** The access key used for the AWS KMS provider */
-            accessKeyId: string;
-            /** The secret access key used for the AWS KMS provider */
-            secretAccessKey: string;
-            /**
-             * An optional AWS session token that will be used as the
-             * X-Amz-Security-Token header for AWS requests.
-             */
-            sessionToken?: string;
-        } | Record<string, never>;
-        /** Configuration options for using 'local' as your KMS provider */
-        local?: {
-            /**
-             * The master key used to encrypt/decrypt data keys.
-             * A 96-byte long Buffer or base64 encoded string.
-             */
-            key: Buffer | string;
-        };
-        /** Configuration options for using 'azure' as your KMS provider */
-        azure?: {
-            /** The tenant ID identifies the organization for the account */
-            tenantId: string;
-            /** The client ID to authenticate a registered application */
-            clientId: string;
-            /** The client secret to authenticate a registered application */
-            clientSecret: string;
-            /**
-             * If present, a host with optional port. E.g. "example.com" or "example.com:443".
-             * This is optional, and only needed if customer is using a non-commercial Azure instance
-             * (e.g. a government or China account, which use different URLs).
-             * Defaults to "login.microsoftonline.com"
-             */
-            identityPlatformEndpoint?: string | undefined;
-        } | {
-            /**
-             * If present, an access token to authenticate with Azure.
-             */
-            accessToken: string;
-        } | Record<string, never>;
-        /** Configuration options for using 'gcp' as your KMS provider */
-        gcp?: {
-            /** The service account email to authenticate */
-            email: string;
-            /** A PKCS#8 encrypted key. This can either be a base64 string or a binary representation */
-            privateKey: string | Buffer;
-            /**
-             * If present, a host with optional port. E.g. "example.com" or "example.com:443".
-             * Defaults to "oauth2.googleapis.com"
-             */
-            endpoint?: string | undefined;
-        } | {
-            /**
-             * If present, an access token to authenticate with GCP.
-             */
-            accessToken: string;
-        } | Record<string, never>;
-        /**
-         * Configuration options for using 'kmip' as your KMS provider
-         */
-        kmip?: {
-            /**
-             * The output endpoint string.
-             * The endpoint consists of a hostname and port separated by a colon.
-             * E.g. "example.com:123". A port is always present.
-             */
-            endpoint?: string;
-        };
-    };
-    /**
-     * A map of namespaces to a local JSON schema for encryption
-     *
-     * **NOTE**: Supplying options.schemaMap provides more security than relying on JSON Schemas obtained from the server.
-     * It protects against a malicious server advertising a false JSON Schema, which could trick the client into sending decrypted data that should be encrypted.
-     * Schemas supplied in the schemaMap only apply to configuring automatic encryption for Client-Side Field Level Encryption.
-     * Other validation rules in the JSON schema will not be enforced by the driver and will result in an error.
-     */
-    schemaMap?: Document;
-    /** Supply a schema for the encrypted fields in the document  */
-    encryptedFieldsMap?: Document;
-    /** Allows the user to bypass auto encryption, maintaining implicit decryption */
-    bypassAutoEncryption?: boolean;
-    /** Allows users to bypass query analysis */
-    bypassQueryAnalysis?: boolean;
-    options?: {
-        /** An optional hook to catch logging messages from the underlying encryption engine */
-        logger?: (level: AutoEncryptionLoggerLevel, message: string) => void;
-    };
-    extraOptions?: {
-        /**
-         * A local process the driver communicates with to determine how to encrypt values in a command.
-         * Defaults to "mongodb://%2Fvar%2Fmongocryptd.sock" if domain sockets are available or "mongodb://localhost:27020" otherwise
-         */
-        mongocryptdURI?: string;
-        /** If true, autoEncryption will not attempt to spawn a mongocryptd before connecting  */
-        mongocryptdBypassSpawn?: boolean;
-        /** The path to the mongocryptd executable on the system */
-        mongocryptdSpawnPath?: string;
-        /** Command line arguments to use when auto-spawning a mongocryptd */
-        mongocryptdSpawnArgs?: string[];
-        /**
-         * Full path to a MongoDB Crypt shared library to be used (instead of mongocryptd).
-         *
-         * This needs to be the path to the file itself, not a directory.
-         * It can be an absolute or relative path. If the path is relative and
-         * its first component is `$ORIGIN`, it will be replaced by the directory
-         * containing the mongodb-client-encryption native addon file. Otherwise,
-         * the path will be interpreted relative to the current working directory.
-         *
-         * Currently, loading different MongoDB Crypt shared library files from different
-         * MongoClients in the same process is not supported.
-         *
-         * If this option is provided and no MongoDB Crypt shared library could be loaded
-         * from the specified location, creating the MongoClient will fail.
-         *
-         * If this option is not provided and `cryptSharedLibRequired` is not specified,
-         * the AutoEncrypter will attempt to spawn and/or use mongocryptd according
-         * to the mongocryptd-specific `extraOptions` options.
-         *
-         * Specifying a path prevents mongocryptd from being used as a fallback.
-         *
-         * Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher.
-         */
-        cryptSharedLibPath?: string;
-        /**
-         * If specified, never use mongocryptd and instead fail when the MongoDB Crypt
-         * shared library could not be loaded.
-         *
-         * This is always true when `cryptSharedLibPath` is specified.
-         *
-         * Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher.
-         */
-        cryptSharedLibRequired?: boolean;
-        /* Excluded from this release type: cryptSharedLibSearchPaths */
-    };
-    proxyOptions?: ProxyOptions;
-    /** The TLS options to use connecting to the KMS provider */
-    tlsOptions?: CSFLEKMSTlsOptions;
-}
-
-/**
- * @public
- * Configuration options for making an AWS encryption key
- */
-export declare interface AWSEncryptionKeyOptions {
-    /**
-     * The AWS region of the KMS
-     */
-    region: string;
-    /**
-     * The Amazon Resource Name (ARN) to the AWS customer master key (CMK)
-     */
-    key: string;
-    /**
-     * An alternate host to send KMS requests to. May include port number.
-     */
-    endpoint?: string | undefined;
-}
-
-/**
- * @public
- * Configuration options for making an Azure encryption key
- */
-export declare interface AzureEncryptionKeyOptions {
-    /**
-     * Key name
-     */
-    keyName: string;
-    /**
-     * Key vault URL, typically `<name>.vault.azure.net`
-     */
-    keyVaultEndpoint: string;
-    /**
-     * Key version
-     */
-    keyVersion?: string | undefined;
-}
-
-/**
- * Keeps the state of a unordered batch so we can rewrite the results
- * correctly after command execution
- *
- * @public
- */
-export declare class Batch<T = Document> {
-    originalZeroIndex: number;
-    currentIndex: number;
-    originalIndexes: number[];
-    batchType: BatchType;
-    operations: T[];
-    size: number;
-    sizeBytes: number;
-    constructor(batchType: BatchType, originalZeroIndex: number);
-}
-
-/** @public */
-export declare const BatchType: Readonly<{
-    readonly INSERT: 1;
-    readonly UPDATE: 2;
-    readonly DELETE: 3;
-}>;
-
-/** @public */
-export declare type BatchType = (typeof BatchType)[keyof typeof BatchType];
-
-export { Binary }
-
-/** @public */
-export declare type BitwiseFilter = number /** numeric bit mask */ | Binary /** BinData bit mask */ | ReadonlyArray<number>;
-
-export { BSON }
-
-export { BSONRegExp }
-
-/**
- * BSON Serialization options.
- * @public
- */
-export declare interface BSONSerializeOptions extends Omit<SerializeOptions, 'index'>, Omit<DeserializeOptions, 'evalFunctions' | 'cacheFunctions' | 'cacheFunctionsCrc32' | 'allowObjectSmallerThanBufferSize' | 'index' | 'validation'> {
-    /**
-     * Enabling the raw option will return a [Node.js Buffer](https://nodejs.org/api/buffer.html)
-     * which is allocated using [allocUnsafe API](https://nodejs.org/api/buffer.html#static-method-bufferallocunsafesize).
-     * See this section from the [Node.js Docs here](https://nodejs.org/api/buffer.html#what-makes-bufferallocunsafe-and-bufferallocunsafeslow-unsafe)
-     * for more detail about what "unsafe" refers to in this context.
-     * If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate
-     * your own buffer and clone the contents:
-     *
-     * @example
-     * ```ts
-     * const raw = await collection.findOne({}, { raw: true });
-     * const myBuffer = Buffer.alloc(raw.byteLength);
-     * myBuffer.set(raw, 0);
-     * // Only save and use `myBuffer` beyond this point
-     * ```
-     *
-     * @remarks
-     * Please note there is a known limitation where this option cannot be used at the MongoClient level (see [NODE-3946](https://jira.mongodb.org/browse/NODE-3946)).
-     * It does correctly work at `Db`, `Collection`, and per operation the same as other BSON options work.
-     */
-    raw?: boolean;
-    /** Enable utf8 validation when deserializing BSON documents.  Defaults to true. */
-    enableUtf8Validation?: boolean;
-}
-
-export { BSONSymbol }
-
-export { BSONType }
-
-/** @public */
-export declare type BSONTypeAlias = keyof typeof BSONType;
-
-/* Excluded from this release type: BufferPool */
-
-/** @public */
-export declare abstract class BulkOperationBase {
-    isOrdered: boolean;
-    /* Excluded from this release type: s */
-    operationId?: number;
-    /* Excluded from this release type: __constructor */
-    /**
-     * Add a single insert document to the bulk operation
-     *
-     * @example
-     * ```ts
-     * const bulkOp = collection.initializeOrderedBulkOp();
-     *
-     * // Adds three inserts to the bulkOp.
-     * bulkOp
-     *   .insert({ a: 1 })
-     *   .insert({ b: 2 })
-     *   .insert({ c: 3 });
-     * await bulkOp.execute();
-     * ```
-     */
-    insert(document: Document): BulkOperationBase;
-    /**
-     * Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne.
-     * Returns a builder object used to complete the definition of the operation.
-     *
-     * @example
-     * ```ts
-     * const bulkOp = collection.initializeOrderedBulkOp();
-     *
-     * // Add an updateOne to the bulkOp
-     * bulkOp.find({ a: 1 }).updateOne({ $set: { b: 2 } });
-     *
-     * // Add an updateMany to the bulkOp
-     * bulkOp.find({ c: 3 }).update({ $set: { d: 4 } });
-     *
-     * // Add an upsert
-     * bulkOp.find({ e: 5 }).upsert().updateOne({ $set: { f: 6 } });
-     *
-     * // Add a deletion
-     * bulkOp.find({ g: 7 }).deleteOne();
-     *
-     * // Add a multi deletion
-     * bulkOp.find({ h: 8 }).delete();
-     *
-     * // Add a replaceOne
-     * bulkOp.find({ i: 9 }).replaceOne({writeConcern: { j: 10 }});
-     *
-     * // Update using a pipeline (requires Mongodb 4.2 or higher)
-     * bulk.find({ k: 11, y: { $exists: true }, z: { $exists: true } }).updateOne([
-     *   { $set: { total: { $sum: [ '$y', '$z' ] } } }
-     * ]);
-     *
-     * // All of the ops will now be executed
-     * await bulkOp.execute();
-     * ```
-     */
-    find(selector: Document): FindOperators;
-    /** Specifies a raw operation to perform in the bulk write. */
-    raw(op: AnyBulkWriteOperation): this;
-    get bsonOptions(): BSONSerializeOptions;
-    get writeConcern(): WriteConcern | undefined;
-    get batches(): Batch[];
-    execute(options?: BulkWriteOptions): Promise<BulkWriteResult>;
-    /* Excluded from this release type: handleWriteError */
-    abstract addToOperationsList(batchType: BatchType, document: Document | UpdateStatement | DeleteStatement): this;
-}
-
-/* Excluded from this release type: BulkOperationPrivate */
-
-/* Excluded from this release type: BulkResult */
-
-/** @public */
-export declare interface BulkWriteOperationError {
-    index: number;
-    code: number;
-    errmsg: string;
-    errInfo: Document;
-    op: Document | UpdateStatement | DeleteStatement;
-}
-
-/** @public */
-export declare interface BulkWriteOptions extends CommandOperationOptions {
-    /**
-     * Allow driver to bypass schema validation.
-     * @defaultValue `false` - documents will be validated by default
-     **/
-    bypassDocumentValidation?: boolean;
-    /**
-     * If true, when an insert fails, don't execute the remaining writes.
-     * If false, continue with remaining inserts when one fails.
-     * @defaultValue `true` - inserts are ordered by default
-     */
-    ordered?: boolean;
-    /**
-     * Force server to assign _id values instead of driver.
-     * @defaultValue `false` - the driver generates `_id` fields by default
-     **/
-    forceServerObjectId?: boolean;
-    /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-    let?: Document;
-}
-
-/**
- * @public
- * The result of a bulk write.
- */
-export declare class BulkWriteResult {
-    private readonly result;
-    /** Number of documents inserted. */
-    readonly insertedCount: number;
-    /** Number of documents matched for update. */
-    readonly matchedCount: number;
-    /** Number of documents modified. */
-    readonly modifiedCount: number;
-    /** Number of documents deleted. */
-    readonly deletedCount: number;
-    /** Number of documents upserted. */
-    readonly upsertedCount: number;
-    /** Upserted document generated Id's, hash key is the index of the originating operation */
-    readonly upsertedIds: {
-        [key: number]: any;
-    };
-    /** Inserted document generated Id's, hash key is the index of the originating operation */
-    readonly insertedIds: {
-        [key: number]: any;
-    };
-    private static generateIdMap;
-    /* Excluded from this release type: __constructor */
-    /** Evaluates to true if the bulk operation correctly executes */
-    get ok(): number;
-    /* Excluded from this release type: getSuccessfullyInsertedIds */
-    /** Returns the upserted id at the given index */
-    getUpsertedIdAt(index: number): Document | undefined;
-    /** Returns raw internal result */
-    getRawResponse(): Document;
-    /** Returns true if the bulk operation contains a write error */
-    hasWriteErrors(): boolean;
-    /** Returns the number of write errors off the bulk operation */
-    getWriteErrorCount(): number;
-    /** Returns a specific write error object */
-    getWriteErrorAt(index: number): WriteError | undefined;
-    /** Retrieve all write errors */
-    getWriteErrors(): WriteError[];
-    /** Retrieve the write concern error if one exists */
-    getWriteConcernError(): WriteConcernError | undefined;
-    toString(): string;
-    isOk(): boolean;
-}
-
-/**
- * MongoDB Driver style callback
- * @public
- */
-export declare type Callback<T = any> = (error?: AnyError, result?: T) => void;
-
-/** @public */
-export declare class CancellationToken extends TypedEventEmitter<{
-    cancel(): void;
-}> {
-}
-
-/**
- * Creates a new Change Stream instance. Normally created using {@link Collection#watch|Collection.watch()}.
- * @public
- */
-export declare class ChangeStream<TSchema extends Document = Document, TChange extends Document = ChangeStreamDocument<TSchema>> extends TypedEventEmitter<ChangeStreamEvents<TSchema, TChange>> {
-    pipeline: Document[];
-    /**
-     * @remarks WriteConcern can still be present on the options because
-     * we inherit options from the client/db/collection.  The
-     * key must be present on the options in order to delete it.
-     * This allows typescript to delete the key but will
-     * not allow a writeConcern to be assigned as a property on options.
-     */
-    options: ChangeStreamOptions & {
-        writeConcern?: never;
-    };
-    parent: MongoClient | Db | Collection;
-    namespace: MongoDBNamespace;
-    type: symbol;
-    /* Excluded from this release type: cursor */
-    streamOptions?: CursorStreamOptions;
-    /* Excluded from this release type: [kCursorStream] */
-    /* Excluded from this release type: [kClosed] */
-    /* Excluded from this release type: [kMode] */
-    /** @event */
-    static readonly RESPONSE: "response";
-    /** @event */
-    static readonly MORE: "more";
-    /** @event */
-    static readonly INIT: "init";
-    /** @event */
-    static readonly CLOSE: "close";
-    /**
-     * Fired for each new matching change in the specified namespace. Attaching a `change`
-     * event listener to a Change Stream will switch the stream into flowing mode. Data will
-     * then be passed as soon as it is available.
-     * @event
-     */
-    static readonly CHANGE: "change";
-    /** @event */
-    static readonly END: "end";
-    /** @event */
-    static readonly ERROR: "error";
-    /**
-     * Emitted each time the change stream stores a new resume token.
-     * @event
-     */
-    static readonly RESUME_TOKEN_CHANGED: "resumeTokenChanged";
-    /* Excluded from this release type: __constructor */
-    /* Excluded from this release type: cursorStream */
-    /** The cached resume token that is used to resume after the most recently returned change. */
-    get resumeToken(): ResumeToken;
-    /** Check if there is any document still available in the Change Stream */
-    hasNext(): Promise<boolean>;
-    /** Get the next available document from the Change Stream. */
-    next(): Promise<TChange>;
-    /**
-     * Try to get the next available document from the Change Stream's cursor or `null` if an empty batch is returned
-     */
-    tryNext(): Promise<TChange | null>;
-    [Symbol.asyncIterator](): AsyncGenerator<TChange, void, void>;
-    /** Is the cursor closed */
-    get closed(): boolean;
-    /** Close the Change Stream */
-    close(): Promise<void>;
-    /**
-     * Return a modified Readable stream including a possible transform method.
-     *
-     * NOTE: When using a Stream to process change stream events, the stream will
-     * NOT automatically resume in the case a resumable error is encountered.
-     *
-     * @throws MongoChangeStreamError if the underlying cursor or the change stream is closed
-     */
-    stream(options?: CursorStreamOptions): Readable & AsyncIterable<TChange>;
-    /* Excluded from this release type: _setIsEmitter */
-    /* Excluded from this release type: _setIsIterator */
-    /* Excluded from this release type: _createChangeStreamCursor */
-    /* Excluded from this release type: _closeEmitterModeWithError */
-    /* Excluded from this release type: _streamEvents */
-    /* Excluded from this release type: _endStream */
-    /* Excluded from this release type: _processChange */
-    /* Excluded from this release type: _processErrorStreamMode */
-    /* Excluded from this release type: _processErrorIteratorMode */
-}
-
-/* Excluded from this release type: ChangeStreamAggregateRawResult */
-
-/**
- * Only present when the `showExpandedEvents` flag is enabled.
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export declare interface ChangeStreamCollModDocument extends ChangeStreamDocumentCommon, ChangeStreamDocumentCollectionUUID {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'modify';
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export declare interface ChangeStreamCreateDocument extends ChangeStreamDocumentCommon, ChangeStreamDocumentCollectionUUID {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'create';
-}
-
-/**
- * Only present when the `showExpandedEvents` flag is enabled.
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export declare interface ChangeStreamCreateIndexDocument extends ChangeStreamDocumentCommon, ChangeStreamDocumentCollectionUUID, ChangeStreamDocumentOperationDescription {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'createIndexes';
-}
-
-/* Excluded from this release type: ChangeStreamCursor */
-
-/* Excluded from this release type: ChangeStreamCursorOptions */
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#delete-event
- */
-export declare interface ChangeStreamDeleteDocument<TSchema extends Document = Document> extends ChangeStreamDocumentCommon, ChangeStreamDocumentKey<TSchema>, ChangeStreamDocumentCollectionUUID {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'delete';
-    /** Namespace the delete event occurred on */
-    ns: ChangeStreamNameSpace;
-    /**
-     * Contains the pre-image of the modified or deleted document if the
-     * pre-image is available for the change event and either 'required' or
-     * 'whenAvailable' was specified for the 'fullDocumentBeforeChange' option
-     * when creating the change stream. If 'whenAvailable' was specified but the
-     * pre-image is unavailable, this will be explicitly set to null.
-     */
-    fullDocumentBeforeChange?: TSchema;
-}
-
-/** @public */
-export declare type ChangeStreamDocument<TSchema extends Document = Document> = ChangeStreamInsertDocument<TSchema> | ChangeStreamUpdateDocument<TSchema> | ChangeStreamReplaceDocument<TSchema> | ChangeStreamDeleteDocument<TSchema> | ChangeStreamDropDocument | ChangeStreamRenameDocument | ChangeStreamDropDatabaseDocument | ChangeStreamInvalidateDocument | ChangeStreamCreateIndexDocument | ChangeStreamCreateDocument | ChangeStreamCollModDocument | ChangeStreamDropIndexDocument | ChangeStreamShardCollectionDocument | ChangeStreamReshardCollectionDocument | ChangeStreamRefineCollectionShardKeyDocument;
-
-/** @public */
-export declare interface ChangeStreamDocumentCollectionUUID {
-    /**
-     * The UUID (Binary subtype 4) of the collection that the operation was performed on.
-     *
-     * Only present when the `showExpandedEvents` flag is enabled.
-     *
-     * **NOTE:** collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers
-     *    flag is enabled.
-     *
-     * @sinceServerVersion 6.1.0
-     */
-    collectionUUID: Binary;
-}
-
-/** @public */
-export declare interface ChangeStreamDocumentCommon {
-    /**
-     * The id functions as an opaque token for use when resuming an interrupted
-     * change stream.
-     */
-    _id: ResumeToken;
-    /**
-     * The timestamp from the oplog entry associated with the event.
-     * For events that happened as part of a multi-document transaction, the associated change stream
-     * notifications will have the same clusterTime value, namely the time when the transaction was committed.
-     * On a sharded cluster, events that occur on different shards can have the same clusterTime but be
-     * associated with different transactions or even not be associated with any transaction.
-     * To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.
-     */
-    clusterTime?: Timestamp;
-    /**
-     * The transaction number.
-     * Only present if the operation is part of a multi-document transaction.
-     *
-     * **NOTE:** txnNumber can be a Long if promoteLongs is set to false
-     */
-    txnNumber?: number;
-    /**
-     * The identifier for the session associated with the transaction.
-     * Only present if the operation is part of a multi-document transaction.
-     */
-    lsid?: ServerSessionId;
-    /**
-     * When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent
-     * stage, events larger than 16MB will be split into multiple events and contain the
-     * following information about which fragment the current event is.
-     */
-    splitEvent?: ChangeStreamSplitEvent;
-}
-
-/** @public */
-export declare interface ChangeStreamDocumentKey<TSchema extends Document = Document> {
-    /**
-     * For unsharded collections this contains a single field `_id`.
-     * For sharded collections, this will contain all the components of the shard key
-     */
-    documentKey: {
-        _id: InferIdType<TSchema>;
-        [shardKey: string]: any;
-    };
-}
-
-/** @public */
-export declare interface ChangeStreamDocumentOperationDescription {
-    /**
-     * An description of the operation.
-     *
-     * Only present when the `showExpandedEvents` flag is enabled.
-     *
-     * @sinceServerVersion 6.1.0
-     */
-    operationDescription?: Document;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#dropdatabase-event
- */
-export declare interface ChangeStreamDropDatabaseDocument extends ChangeStreamDocumentCommon {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'dropDatabase';
-    /** The database dropped */
-    ns: {
-        db: string;
-    };
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#drop-event
- */
-export declare interface ChangeStreamDropDocument extends ChangeStreamDocumentCommon, ChangeStreamDocumentCollectionUUID {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'drop';
-    /** Namespace the drop event occurred on */
-    ns: ChangeStreamNameSpace;
-}
-
-/**
- * Only present when the `showExpandedEvents` flag is enabled.
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export declare interface ChangeStreamDropIndexDocument extends ChangeStreamDocumentCommon, ChangeStreamDocumentCollectionUUID, ChangeStreamDocumentOperationDescription {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'dropIndexes';
-}
-
-/** @public */
-export declare type ChangeStreamEvents<TSchema extends Document = Document, TChange extends Document = ChangeStreamDocument<TSchema>> = {
-    resumeTokenChanged(token: ResumeToken): void;
-    init(response: any): void;
-    more(response?: any): void;
-    response(): void;
-    end(): void;
-    error(error: Error): void;
-    change(change: TChange): void;
-} & AbstractCursorEvents;
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#insert-event
- */
-export declare interface ChangeStreamInsertDocument<TSchema extends Document = Document> extends ChangeStreamDocumentCommon, ChangeStreamDocumentKey<TSchema>, ChangeStreamDocumentCollectionUUID {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'insert';
-    /** This key will contain the document being inserted */
-    fullDocument: TSchema;
-    /** Namespace the insert event occurred on */
-    ns: ChangeStreamNameSpace;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#invalidate-event
- */
-export declare interface ChangeStreamInvalidateDocument extends ChangeStreamDocumentCommon {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'invalidate';
-}
-
-/** @public */
-export declare interface ChangeStreamNameSpace {
-    db: string;
-    coll: string;
-}
-
-/**
- * Options that can be passed to a ChangeStream. Note that startAfter, resumeAfter, and startAtOperationTime are all mutually exclusive, and the server will error if more than one is specified.
- * @public
- */
-export declare interface ChangeStreamOptions extends Omit<AggregateOptions, 'writeConcern'> {
-    /**
-     * Allowed values: 'updateLookup', 'whenAvailable', 'required'.
-     *
-     * When set to 'updateLookup', the change notification for partial updates
-     * will include both a delta describing the changes to the document as well
-     * as a copy of the entire document that was changed from some time after
-     * the change occurred.
-     *
-     * When set to 'whenAvailable', configures the change stream to return the
-     * post-image of the modified document for replace and update change events
-     * if the post-image for this event is available.
-     *
-     * When set to 'required', the same behavior as 'whenAvailable' except that
-     * an error is raised if the post-image is not available.
-     */
-    fullDocument?: string;
-    /**
-     * Allowed values: 'whenAvailable', 'required', 'off'.
-     *
-     * The default is to not send a value, which is equivalent to 'off'.
-     *
-     * When set to 'whenAvailable', configures the change stream to return the
-     * pre-image of the modified document for replace, update, and delete change
-     * events if it is available.
-     *
-     * When set to 'required', the same behavior as 'whenAvailable' except that
-     * an error is raised if the pre-image is not available.
-     */
-    fullDocumentBeforeChange?: string;
-    /** The maximum amount of time for the server to wait on new documents to satisfy a change stream query. */
-    maxAwaitTimeMS?: number;
-    /**
-     * Allows you to start a changeStream after a specified event.
-     * @see https://www.mongodb.com/docs/manual/changeStreams/#resumeafter-for-change-streams
-     */
-    resumeAfter?: ResumeToken;
-    /**
-     * Similar to resumeAfter, but will allow you to start after an invalidated event.
-     * @see https://www.mongodb.com/docs/manual/changeStreams/#startafter-for-change-streams
-     */
-    startAfter?: ResumeToken;
-    /** Will start the changeStream after the specified operationTime. */
-    startAtOperationTime?: OperationTime;
-    /**
-     * The number of documents to return per batch.
-     * @see https://www.mongodb.com/docs/manual/reference/command/aggregate
-     */
-    batchSize?: number;
-    /**
-     * When enabled, configures the change stream to include extra change events.
-     *
-     * - createIndexes
-     * - dropIndexes
-     * - modify
-     * - create
-     * - shardCollection
-     * - reshardCollection
-     * - refineCollectionShardKey
-     */
-    showExpandedEvents?: boolean;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export declare interface ChangeStreamRefineCollectionShardKeyDocument extends ChangeStreamDocumentCommon, ChangeStreamDocumentCollectionUUID, ChangeStreamDocumentOperationDescription {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'refineCollectionShardKey';
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#rename-event
- */
-export declare interface ChangeStreamRenameDocument extends ChangeStreamDocumentCommon, ChangeStreamDocumentCollectionUUID {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'rename';
-    /** The new name for the `ns.coll` collection */
-    to: {
-        db: string;
-        coll: string;
-    };
-    /** The "from" namespace that the rename occurred on */
-    ns: ChangeStreamNameSpace;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#replace-event
- */
-export declare interface ChangeStreamReplaceDocument<TSchema extends Document = Document> extends ChangeStreamDocumentCommon, ChangeStreamDocumentKey<TSchema> {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'replace';
-    /** The fullDocument of a replace event represents the document after the insert of the replacement document */
-    fullDocument: TSchema;
-    /** Namespace the replace event occurred on */
-    ns: ChangeStreamNameSpace;
-    /**
-     * Contains the pre-image of the modified or deleted document if the
-     * pre-image is available for the change event and either 'required' or
-     * 'whenAvailable' was specified for the 'fullDocumentBeforeChange' option
-     * when creating the change stream. If 'whenAvailable' was specified but the
-     * pre-image is unavailable, this will be explicitly set to null.
-     */
-    fullDocumentBeforeChange?: TSchema;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export declare interface ChangeStreamReshardCollectionDocument extends ChangeStreamDocumentCommon, ChangeStreamDocumentCollectionUUID, ChangeStreamDocumentOperationDescription {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'reshardCollection';
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export declare interface ChangeStreamShardCollectionDocument extends ChangeStreamDocumentCommon, ChangeStreamDocumentCollectionUUID, ChangeStreamDocumentOperationDescription {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'shardCollection';
-}
-
-/** @public */
-export declare interface ChangeStreamSplitEvent {
-    /** Which fragment of the change this is. */
-    fragment: number;
-    /** The total number of fragments. */
-    of: number;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#update-event
- */
-export declare interface ChangeStreamUpdateDocument<TSchema extends Document = Document> extends ChangeStreamDocumentCommon, ChangeStreamDocumentKey<TSchema>, ChangeStreamDocumentCollectionUUID {
-    /** Describes the type of operation represented in this change notification */
-    operationType: 'update';
-    /**
-     * This is only set if `fullDocument` is set to `'updateLookup'`
-     * Contains the point-in-time post-image of the modified document if the
-     * post-image is available and either 'required' or 'whenAvailable' was
-     * specified for the 'fullDocument' option when creating the change stream.
-     */
-    fullDocument?: TSchema;
-    /** Contains a description of updated and removed fields in this operation */
-    updateDescription: UpdateDescription<TSchema>;
-    /** Namespace the update event occurred on */
-    ns: ChangeStreamNameSpace;
-    /**
-     * Contains the pre-image of the modified or deleted document if the
-     * pre-image is available for the change event and either 'required' or
-     * 'whenAvailable' was specified for the 'fullDocumentBeforeChange' option
-     * when creating the change stream. If 'whenAvailable' was specified but the
-     * pre-image is unavailable, this will be explicitly set to null.
-     */
-    fullDocumentBeforeChange?: TSchema;
-}
-
-/**
- * @public
- * The public interface for explicit in-use encryption
- */
-export declare class ClientEncryption {
-    /* Excluded from this release type: _client */
-    /* Excluded from this release type: _keyVaultNamespace */
-    /* Excluded from this release type: _keyVaultClient */
-    /* Excluded from this release type: _proxyOptions */
-    /* Excluded from this release type: _tlsOptions */
-    /* Excluded from this release type: _kmsProviders */
-    /* Excluded from this release type: _mongoCrypt */
-    /* Excluded from this release type: getMongoCrypt */
-    /**
-     * Create a new encryption instance
-     *
-     * @example
-     * ```ts
-     * new ClientEncryption(mongoClient, {
-     *   keyVaultNamespace: 'client.encryption',
-     *   kmsProviders: {
-     *     local: {
-     *       key: masterKey // The master key used for encryption/decryption. A 96-byte long Buffer
-     *     }
-     *   }
-     * });
-     * ```
-     *
-     * @example
-     * ```ts
-     * new ClientEncryption(mongoClient, {
-     *   keyVaultNamespace: 'client.encryption',
-     *   kmsProviders: {
-     *     aws: {
-     *       accessKeyId: AWS_ACCESS_KEY,
-     *       secretAccessKey: AWS_SECRET_KEY
-     *     }
-     *   }
-     * });
-     * ```
-     */
-    constructor(client: MongoClient, options: ClientEncryptionOptions);
-    /**
-     * Creates a data key used for explicit encryption and inserts it into the key vault namespace
-     *
-     * @example
-     * ```ts
-     * // Using async/await to create a local key
-     * const dataKeyId = await clientEncryption.createDataKey('local');
-     * ```
-     *
-     * @example
-     * ```ts
-     * // Using async/await to create an aws key
-     * const dataKeyId = await clientEncryption.createDataKey('aws', {
-     *   masterKey: {
-     *     region: 'us-east-1',
-     *     key: 'xxxxxxxxxxxxxx' // CMK ARN here
-     *   }
-     * });
-     * ```
-     *
-     * @example
-     * ```ts
-     * // Using async/await to create an aws key with a keyAltName
-     * const dataKeyId = await clientEncryption.createDataKey('aws', {
-     *   masterKey: {
-     *     region: 'us-east-1',
-     *     key: 'xxxxxxxxxxxxxx' // CMK ARN here
-     *   },
-     *   keyAltNames: [ 'mySpecialKey' ]
-     * });
-     * ```
-     */
-    createDataKey(provider: ClientEncryptionDataKeyProvider, options?: ClientEncryptionCreateDataKeyProviderOptions): Promise<UUID>;
-    /**
-     * Searches the keyvault for any data keys matching the provided filter.  If there are matches, rewrapManyDataKey then attempts to re-wrap the data keys using the provided options.
-     *
-     * If no matches are found, then no bulk write is performed.
-     *
-     * @example
-     * ```ts
-     * // rewrapping all data data keys (using a filter that matches all documents)
-     * const filter = {};
-     *
-     * const result = await clientEncryption.rewrapManyDataKey(filter);
-     * if (result.bulkWriteResult != null) {
-     *  // keys were re-wrapped, results will be available in the bulkWrite object.
-     * }
-     * ```
-     *
-     * @example
-     * ```ts
-     * // attempting to rewrap all data keys with no matches
-     * const filter = { _id: new Binary() } // assume _id matches no documents in the database
-     * const result = await clientEncryption.rewrapManyDataKey(filter);
-     *
-     * if (result.bulkWriteResult == null) {
-     *  // no keys matched, `bulkWriteResult` does not exist on the result object
-     * }
-     * ```
-     */
-    rewrapManyDataKey(filter: Filter<DataKey>, options: ClientEncryptionRewrapManyDataKeyProviderOptions): Promise<{
-        bulkWriteResult?: BulkWriteResult;
-    }>;
-    /**
-     * Deletes the key with the provided id from the keyvault, if it exists.
-     *
-     * @example
-     * ```ts
-     * // delete a key by _id
-     * const id = new Binary(); // id is a bson binary subtype 4 object
-     * const { deletedCount } = await clientEncryption.deleteKey(id);
-     *
-     * if (deletedCount != null && deletedCount > 0) {
-     *   // successful deletion
-     * }
-     * ```
-     *
-     */
-    deleteKey(_id: Binary): Promise<DeleteResult>;
-    /**
-     * Finds all the keys currently stored in the keyvault.
-     *
-     * This method will not throw.
-     *
-     * @returns a FindCursor over all keys in the keyvault.
-     * @example
-     * ```ts
-     * // fetching all keys
-     * const keys = await clientEncryption.getKeys().toArray();
-     * ```
-     */
-    getKeys(): FindCursor<DataKey>;
-    /**
-     * Finds a key in the keyvault with the specified _id.
-     *
-     * Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
-     * match the id.  The promise rejects with an error if an error is thrown.
-     * @example
-     * ```ts
-     * // getting a key by id
-     * const id = new Binary(); // id is a bson binary subtype 4 object
-     * const key = await clientEncryption.getKey(id);
-     * if (!key) {
-     *  // key is null if there was no matching key
-     * }
-     * ```
-     */
-    getKey(_id: Binary): Promise<DataKey | null>;
-    /**
-     * Finds a key in the keyvault which has the specified keyAltName.
-     *
-     * @param keyAltName - a keyAltName to search for a key
-     * @returns Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
-     * match the keyAltName.  The promise rejects with an error if an error is thrown.
-     * @example
-     * ```ts
-     * // get a key by alt name
-     * const keyAltName = 'keyAltName';
-     * const key = await clientEncryption.getKeyByAltName(keyAltName);
-     * if (!key) {
-     *  // key is null if there is no matching key
-     * }
-     * ```
-     */
-    getKeyByAltName(keyAltName: string): Promise<WithId<DataKey> | null>;
-    /**
-     * Adds a keyAltName to a key identified by the provided _id.
-     *
-     * This method resolves to/returns the *old* key value (prior to adding the new altKeyName).
-     *
-     * @param _id - The id of the document to update.
-     * @param keyAltName - a keyAltName to search for a key
-     * @returns Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
-     * match the id.  The promise rejects with an error if an error is thrown.
-     * @example
-     * ```ts
-     * // adding an keyAltName to a data key
-     * const id = new Binary();  // id is a bson binary subtype 4 object
-     * const keyAltName = 'keyAltName';
-     * const oldKey = await clientEncryption.addKeyAltName(id, keyAltName);
-     * if (!oldKey) {
-     *  // null is returned if there is no matching document with an id matching the supplied id
-     * }
-     * ```
-     */
-    addKeyAltName(_id: Binary, keyAltName: string): Promise<WithId<DataKey> | null>;
-    /**
-     * Adds a keyAltName to a key identified by the provided _id.
-     *
-     * This method resolves to/returns the *old* key value (prior to removing the new altKeyName).
-     *
-     * If the removed keyAltName is the last keyAltName for that key, the `altKeyNames` property is unset from the document.
-     *
-     * @param _id - The id of the document to update.
-     * @param keyAltName - a keyAltName to search for a key
-     * @returns Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
-     * match the id.  The promise rejects with an error if an error is thrown.
-     * @example
-     * ```ts
-     * // removing a key alt name from a data key
-     * const id = new Binary();  // id is a bson binary subtype 4 object
-     * const keyAltName = 'keyAltName';
-     * const oldKey = await clientEncryption.removeKeyAltName(id, keyAltName);
-     *
-     * if (!oldKey) {
-     *  // null is returned if there is no matching document with an id matching the supplied id
-     * }
-     * ```
-     */
-    removeKeyAltName(_id: Binary, keyAltName: string): Promise<WithId<DataKey> | null>;
-    /**
-     * A convenience method for creating an encrypted collection.
-     * This method will create data keys for any encryptedFields that do not have a `keyId` defined
-     * and then create a new collection with the full set of encryptedFields.
-     *
-     * @param db - A Node.js driver Db object with which to create the collection
-     * @param name - The name of the collection to be created
-     * @param options - Options for createDataKey and for createCollection
-     * @returns created collection and generated encryptedFields
-     * @throws MongoCryptCreateDataKeyError - If part way through the process a createDataKey invocation fails, an error will be rejected that has the partial `encryptedFields` that were created.
-     * @throws MongoCryptCreateEncryptedCollectionError - If creating the collection fails, an error will be rejected that has the entire `encryptedFields` that were created.
-     */
-    createEncryptedCollection<TSchema extends Document = Document>(db: Db, name: string, options: {
-        provider: ClientEncryptionDataKeyProvider;
-        createCollectionOptions: Omit<CreateCollectionOptions, 'encryptedFields'> & {
-            encryptedFields: Document;
-        };
-        masterKey?: AWSEncryptionKeyOptions | AzureEncryptionKeyOptions | GCPEncryptionKeyOptions;
-    }): Promise<{
-        collection: Collection<TSchema>;
-        encryptedFields: Document;
-    }>;
-    /**
-     * Explicitly encrypt a provided value. Note that either `options.keyId` or `options.keyAltName` must
-     * be specified. Specifying both `options.keyId` and `options.keyAltName` is considered an error.
-     *
-     * @param value - The value that you wish to serialize. Must be of a type that can be serialized into BSON
-     * @param options -
-     * @returns a Promise that either resolves with the encrypted value, or rejects with an error.
-     *
-     * @example
-     * ```ts
-     * // Encryption with async/await api
-     * async function encryptMyData(value) {
-     *   const keyId = await clientEncryption.createDataKey('local');
-     *   return clientEncryption.encrypt(value, { keyId, algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' });
-     * }
-     * ```
-     *
-     * @example
-     * ```ts
-     * // Encryption using a keyAltName
-     * async function encryptMyData(value) {
-     *   await clientEncryption.createDataKey('local', { keyAltNames: 'mySpecialKey' });
-     *   return clientEncryption.encrypt(value, { keyAltName: 'mySpecialKey', algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' });
-     * }
-     * ```
-     */
-    encrypt(value: unknown, options: ClientEncryptionEncryptOptions): Promise<Binary>;
-    /**
-     * Encrypts a Match Expression or Aggregate Expression to query a range index.
-     *
-     * Only supported when queryType is "rangePreview" and algorithm is "RangePreview".
-     *
-     * @experimental The Range algorithm is experimental only. It is not intended for production use. It is subject to breaking changes.
-     *
-     * @param expression - a BSON document of one of the following forms:
-     *  1. A Match Expression of this form:
-     *      `{$and: [{<field>: {$gt: <value1>}}, {<field>: {$lt: <value2> }}]}`
-     *  2. An Aggregate Expression of this form:
-     *      `{$and: [{$gt: [<fieldpath>, <value1>]}, {$lt: [<fieldpath>, <value2>]}]}`
-     *
-     *    `$gt` may also be `$gte`. `$lt` may also be `$lte`.
-     *
-     * @param options -
-     * @returns Returns a Promise that either resolves with the encrypted value or rejects with an error.
-     */
-    encryptExpression(expression: Document, options: ClientEncryptionEncryptOptions): Promise<Binary>;
-    /**
-     * Explicitly decrypt a provided encrypted value
-     *
-     * @param value - An encrypted value
-     * @returns a Promise that either resolves with the decrypted value, or rejects with an error
-     *
-     * @example
-     * ```ts
-     * // Decrypting value with async/await API
-     * async function decryptMyValue(value) {
-     *   return clientEncryption.decrypt(value);
-     * }
-     * ```
-     */
-    decrypt<T = any>(value: Binary): Promise<T>;
-    /* Excluded from this release type: askForKMSCredentials */
-    static get libmongocryptVersion(): string;
-    /* Excluded from this release type: _encrypt */
-}
-
-/**
- * @public
- * Options to provide when creating a new data key.
- */
-export declare interface ClientEncryptionCreateDataKeyProviderOptions {
-    /**
-     * Identifies a new KMS-specific key used to encrypt the new data key
-     */
-    masterKey?: AWSEncryptionKeyOptions | AzureEncryptionKeyOptions | GCPEncryptionKeyOptions | undefined;
-    /**
-     * An optional list of string alternate names used to reference a key.
-     * If a key is created with alternate names, then encryption may refer to the key by the unique alternate name instead of by _id.
-     */
-    keyAltNames?: string[] | undefined;
-    /** @experimental */
-    keyMaterial?: Buffer | Binary;
-}
-
-/**
- * @public
- */
-export declare type ClientEncryptionDataKeyProvider = 'aws' | 'azure' | 'gcp' | 'local' | 'kmip';
-
-/**
- * @public
- * Options to provide when encrypting data.
- */
-export declare interface ClientEncryptionEncryptOptions {
-    /**
-     * The algorithm to use for encryption.
-     */
-    algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' | 'AEAD_AES_256_CBC_HMAC_SHA_512-Random' | 'Indexed' | 'Unindexed' | 'RangePreview';
-    /**
-     * The id of the Binary dataKey to use for encryption
-     */
-    keyId?: Binary;
-    /**
-     * A unique string name corresponding to an already existing dataKey.
-     */
-    keyAltName?: string;
-    /** The contention factor. */
-    contentionFactor?: bigint | number;
-    /**
-     * The query type supported.  Only the queryType `equality` is stable.
-     *
-     * @experimental Public Technical Preview: The queryType `rangePreview` is experimental.
-     */
-    queryType?: 'equality' | 'rangePreview';
-    /** @experimental Public Technical Preview: The index options for a Queryable Encryption field supporting "rangePreview" queries.*/
-    rangeOptions?: RangeOptions;
-}
-
-/**
- * @public
- * Options to provide when encrypting data.
- */
-export declare interface ClientEncryptionEncryptOptions {
-    /**
-     * The algorithm to use for encryption.
-     */
-    algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' | 'AEAD_AES_256_CBC_HMAC_SHA_512-Random' | 'Indexed' | 'Unindexed' | 'RangePreview';
-    /**
-     * The id of the Binary dataKey to use for encryption
-     */
-    keyId?: Binary;
-    /**
-     * A unique string name corresponding to an already existing dataKey.
-     */
-    keyAltName?: string;
-    /** The contention factor. */
-    contentionFactor?: bigint | number;
-    /**
-     * The query type supported.  Only the queryType `equality` is stable.
-     *
-     * @experimental Public Technical Preview: The queryType `rangePreview` is experimental.
-     */
-    queryType?: 'equality' | 'rangePreview';
-    /** @experimental Public Technical Preview: The index options for a Queryable Encryption field supporting "rangePreview" queries.*/
-    rangeOptions?: RangeOptions;
-}
-
-/**
- * @public
- * Additional settings to provide when creating a new `ClientEncryption` instance.
- */
-export declare interface ClientEncryptionOptions {
-    /**
-     * The namespace of the key vault, used to store encryption keys
-     */
-    keyVaultNamespace: string;
-    /**
-     * A MongoClient used to fetch keys from a key vault. Defaults to client.
-     */
-    keyVaultClient?: MongoClient | undefined;
-    /**
-     * Options for specific KMS providers to use
-     */
-    kmsProviders?: KMSProviders;
-    /**
-     * Options for specifying a Socks5 proxy to use for connecting to the KMS.
-     */
-    proxyOptions?: ProxyOptions;
-    /**
-     * TLS options for kms providers to use.
-     */
-    tlsOptions?: CSFLEKMSTlsOptions;
-}
-
-/**
- * @public
- * @experimental
- */
-export declare interface ClientEncryptionRewrapManyDataKeyProviderOptions {
-    provider: ClientEncryptionDataKeyProvider;
-    masterKey?: AWSEncryptionKeyOptions | AzureEncryptionKeyOptions | GCPEncryptionKeyOptions | undefined;
-}
-
-/**
- * @public
- * @experimental
- */
-export declare interface ClientEncryptionRewrapManyDataKeyProviderOptions {
-    provider: ClientEncryptionDataKeyProvider;
-    masterKey?: AWSEncryptionKeyOptions | AzureEncryptionKeyOptions | GCPEncryptionKeyOptions | undefined;
-}
-
-/**
- * @public
- * @experimental
- */
-export declare interface ClientEncryptionRewrapManyDataKeyResult {
-    /** The result of rewrapping data keys. If unset, no keys matched the filter. */
-    bulkWriteResult?: BulkWriteResult;
-}
-
-/**
- * @public
- *
- * TLS options to use when connecting. The spec specifically calls out which insecure
- * tls options are not allowed:
- *
- *  - tlsAllowInvalidCertificates
- *  - tlsAllowInvalidHostnames
- *  - tlsInsecure
- *
- * These options are not included in the type, and are ignored if provided.
- */
-export declare type ClientEncryptionTlsOptions = Pick<MongoClientOptions, 'tlsCAFile' | 'tlsCertificateKeyFile' | 'tlsCertificateKeyFilePassword'>;
-
-/**
- * @public
- * @see https://github.com/mongodb/specifications/blob/master/source/mongodb-handshake/handshake.rst#hello-command
- */
-export declare interface ClientMetadata {
-    driver: {
-        name: string;
-        version: string;
-    };
-    os: {
-        type: string;
-        name?: NodeJS.Platform;
-        architecture?: string;
-        version?: string;
-    };
-    platform: string;
-    application?: {
-        name: string;
-    };
-    /** FaaS environment information */
-    env?: {
-        name: 'aws.lambda' | 'gcp.func' | 'azure.func' | 'vercel';
-        timeout_sec?: Int32;
-        memory_mb?: Int32;
-        region?: string;
-        url?: string;
-    };
-}
-
-/** @public */
-export declare interface ClientMetadataOptions {
-    driverInfo?: {
-        name?: string;
-        version?: string;
-        platform?: string;
-    };
-    appName?: string;
-}
-
-/**
- * A class representing a client session on the server
- *
- * NOTE: not meant to be instantiated directly.
- * @public
- */
-export declare class ClientSession extends TypedEventEmitter<ClientSessionEvents> {
-    /* Excluded from this release type: client */
-    /* Excluded from this release type: sessionPool */
-    hasEnded: boolean;
-    clientOptions?: MongoOptions;
-    supports: {
-        causalConsistency: boolean;
-    };
-    clusterTime?: ClusterTime;
-    operationTime?: Timestamp;
-    explicit: boolean;
-    /* Excluded from this release type: owner */
-    defaultTransactionOptions: TransactionOptions;
-    transaction: Transaction;
-    /* Excluded from this release type: [kServerSession] */
-    /* Excluded from this release type: [kSnapshotTime] */
-    /* Excluded from this release type: [kSnapshotEnabled] */
-    /* Excluded from this release type: [kPinnedConnection] */
-    /* Excluded from this release type: [kTxnNumberIncrement] */
-    /* Excluded from this release type: __constructor */
-    /** The server id associated with this session */
-    get id(): ServerSessionId | undefined;
-    get serverSession(): ServerSession;
-    /** Whether or not this session is configured for snapshot reads */
-    get snapshotEnabled(): boolean;
-    get loadBalanced(): boolean;
-    /* Excluded from this release type: pinnedConnection */
-    /* Excluded from this release type: pin */
-    /* Excluded from this release type: unpin */
-    get isPinned(): boolean;
-    /**
-     * Ends this session on the server
-     *
-     * @param options - Optional settings. Currently reserved for future use
-     */
-    endSession(options?: EndSessionOptions): Promise<void>;
-    /**
-     * Advances the operationTime for a ClientSession.
-     *
-     * @param operationTime - the `BSON.Timestamp` of the operation type it is desired to advance to
-     */
-    advanceOperationTime(operationTime: Timestamp): void;
-    /**
-     * Advances the clusterTime for a ClientSession to the provided clusterTime of another ClientSession
-     *
-     * @param clusterTime - the $clusterTime returned by the server from another session in the form of a document containing the `BSON.Timestamp` clusterTime and signature
-     */
-    advanceClusterTime(clusterTime: ClusterTime): void;
-    /**
-     * Used to determine if this session equals another
-     *
-     * @param session - The session to compare to
-     */
-    equals(session: ClientSession): boolean;
-    /**
-     * Increment the transaction number on the internal ServerSession
-     *
-     * @privateRemarks
-     * This helper increments a value stored on the client session that will be
-     * added to the serverSession's txnNumber upon applying it to a command.
-     * This is because the serverSession is lazily acquired after a connection is obtained
-     */
-    incrementTransactionNumber(): void;
-    /** @returns whether this session is currently in a transaction or not */
-    inTransaction(): boolean;
-    /**
-     * Starts a new transaction with the given options.
-     *
-     * @param options - Options for the transaction
-     */
-    startTransaction(options?: TransactionOptions): void;
-    /**
-     * Commits the currently active transaction in this session.
-     */
-    commitTransaction(): Promise<void>;
-    /**
-     * Aborts the currently active transaction in this session.
-     */
-    abortTransaction(): Promise<void>;
-    /**
-     * This is here to ensure that ClientSession is never serialized to BSON.
-     */
-    toBSON(): never;
-    /**
-     * Starts a transaction and runs a provided function, ensuring the commitTransaction is always attempted when all operations run in the function have completed.
-     *
-     * **IMPORTANT:** This method requires the user to return a Promise, and `await` all operations.
-     *
-     * @remarks
-     * This function:
-     * - If all operations successfully complete and the `commitTransaction` operation is successful, then this function will return the result of the provided function.
-     * - If the transaction is unable to complete or an error is thrown from within the provided function, then this function will throw an error.
-     *   - If the transaction is manually aborted within the provided function it will not throw.
-     * - May be called multiple times if the driver needs to attempt to retry the operations.
-     *
-     * Checkout a descriptive example here:
-     * @see https://www.mongodb.com/blog/post/quick-start-nodejs--mongodb--how-to-implement-transactions
-     *
-     * @param fn - callback to run within a transaction
-     * @param options - optional settings for the transaction
-     * @returns A raw command response or undefined
-     */
-    withTransaction<T = any>(fn: WithTransactionCallback<T>, options?: TransactionOptions): Promise<T>;
-}
-
-/** @public */
-export declare type ClientSessionEvents = {
-    ended(session: ClientSession): void;
-};
-
-/** @public */
-export declare interface ClientSessionOptions {
-    /** Whether causal consistency should be enabled on this session */
-    causalConsistency?: boolean;
-    /** Whether all read operations should be read from the same snapshot for this session (NOTE: not compatible with `causalConsistency=true`) */
-    snapshot?: boolean;
-    /** The default TransactionOptions to use for transactions started on this session. */
-    defaultTransactionOptions?: TransactionOptions;
-    /* Excluded from this release type: owner */
-    /* Excluded from this release type: explicit */
-    /* Excluded from this release type: initialClusterTime */
-}
-
-/** @public */
-export declare interface CloseOptions {
-    force?: boolean;
-}
-
-/** @public
- * Configuration options for clustered collections
- * @see https://www.mongodb.com/docs/manual/core/clustered-collections/
- */
-export declare interface ClusteredCollectionOptions extends Document {
-    name?: string;
-    key: Document;
-    unique: boolean;
-}
-
-/** @public */
-export declare interface ClusterTime {
-    clusterTime: Timestamp;
-    signature: {
-        hash: Binary;
-        keyId: Long;
-    };
-}
-
-export { Code }
-
-/** @public */
-export declare interface CollationOptions {
-    locale: string;
-    caseLevel?: boolean;
-    caseFirst?: string;
-    strength?: number;
-    numericOrdering?: boolean;
-    alternate?: string;
-    maxVariable?: string;
-    backwards?: boolean;
-    normalization?: boolean;
-}
-
-/**
- * The **Collection** class is an internal class that embodies a MongoDB collection
- * allowing for insert/find/update/delete and other command operation on that MongoDB collection.
- *
- * **COLLECTION Cannot directly be instantiated**
- * @public
- *
- * @example
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * interface Pet {
- *   name: string;
- *   kind: 'dog' | 'cat' | 'fish';
- * }
- *
- * const client = new MongoClient('mongodb://localhost:27017');
- * const pets = client.db().collection<Pet>('pets');
- *
- * const petCursor = pets.find();
- *
- * for await (const pet of petCursor) {
- *   console.log(`${pet.name} is a ${pet.kind}!`);
- * }
- * ```
- */
-export declare class Collection<TSchema extends Document = Document> {
-    /* Excluded from this release type: s */
-    /* Excluded from this release type: client */
-    /* Excluded from this release type: __constructor */
-    /**
-     * The name of the database this collection belongs to
-     */
-    get dbName(): string;
-    /**
-     * The name of this collection
-     */
-    get collectionName(): string;
-    /**
-     * The namespace of this collection, in the format `${this.dbName}.${this.collectionName}`
-     */
-    get namespace(): string;
-    /* Excluded from this release type: fullNamespace */
-    /**
-     * The current readConcern of the collection. If not explicitly defined for
-     * this collection, will be inherited from the parent DB
-     */
-    get readConcern(): ReadConcern | undefined;
-    /**
-     * The current readPreference of the collection. If not explicitly defined for
-     * this collection, will be inherited from the parent DB
-     */
-    get readPreference(): ReadPreference | undefined;
-    get bsonOptions(): BSONSerializeOptions;
-    /**
-     * The current writeConcern of the collection. If not explicitly defined for
-     * this collection, will be inherited from the parent DB
-     */
-    get writeConcern(): WriteConcern | undefined;
-    /** The current index hint for the collection */
-    get hint(): Hint | undefined;
-    set hint(v: Hint | undefined);
-    /**
-     * Inserts a single document into MongoDB. If documents passed in do not contain the **_id** field,
-     * one will be added to each of the documents missing it by the driver, mutating the document. This behavior
-     * can be overridden by setting the **forceServerObjectId** flag.
-     *
-     * @param doc - The document to insert
-     * @param options - Optional settings for the command
-     */
-    insertOne(doc: OptionalUnlessRequiredId<TSchema>, options?: InsertOneOptions): Promise<InsertOneResult<TSchema>>;
-    /**
-     * Inserts an array of documents into MongoDB. If documents passed in do not contain the **_id** field,
-     * one will be added to each of the documents missing it by the driver, mutating the document. This behavior
-     * can be overridden by setting the **forceServerObjectId** flag.
-     *
-     * @param docs - The documents to insert
-     * @param options - Optional settings for the command
-     */
-    insertMany(docs: OptionalUnlessRequiredId<TSchema>[], options?: BulkWriteOptions): Promise<InsertManyResult<TSchema>>;
-    /**
-     * Perform a bulkWrite operation without a fluent API
-     *
-     * Legal operation types are
-     * - `insertOne`
-     * - `replaceOne`
-     * - `updateOne`
-     * - `updateMany`
-     * - `deleteOne`
-     * - `deleteMany`
-     *
-     * If documents passed in do not contain the **_id** field,
-     * one will be added to each of the documents missing it by the driver, mutating the document. This behavior
-     * can be overridden by setting the **forceServerObjectId** flag.
-     *
-     * @param operations - Bulk operations to perform
-     * @param options - Optional settings for the command
-     * @throws MongoDriverError if operations is not an array
-     */
-    bulkWrite(operations: AnyBulkWriteOperation<TSchema>[], options?: BulkWriteOptions): Promise<BulkWriteResult>;
-    /**
-     * Update a single document in a collection
-     *
-     * @param filter - The filter used to select the document to update
-     * @param update - The update operations to be applied to the document
-     * @param options - Optional settings for the command
-     */
-    updateOne(filter: Filter<TSchema>, update: UpdateFilter<TSchema> | Partial<TSchema>, options?: UpdateOptions): Promise<UpdateResult<TSchema>>;
-    /**
-     * Replace a document in a collection with another document
-     *
-     * @param filter - The filter used to select the document to replace
-     * @param replacement - The Document that replaces the matching document
-     * @param options - Optional settings for the command
-     */
-    replaceOne(filter: Filter<TSchema>, replacement: WithoutId<TSchema>, options?: ReplaceOptions): Promise<UpdateResult<TSchema> | Document>;
-    /**
-     * Update multiple documents in a collection
-     *
-     * @param filter - The filter used to select the documents to update
-     * @param update - The update operations to be applied to the documents
-     * @param options - Optional settings for the command
-     */
-    updateMany(filter: Filter<TSchema>, update: UpdateFilter<TSchema>, options?: UpdateOptions): Promise<UpdateResult<TSchema>>;
-    /**
-     * Delete a document from a collection
-     *
-     * @param filter - The filter used to select the document to remove
-     * @param options - Optional settings for the command
-     */
-    deleteOne(filter?: Filter<TSchema>, options?: DeleteOptions): Promise<DeleteResult>;
-    /**
-     * Delete multiple documents from a collection
-     *
-     * @param filter - The filter used to select the documents to remove
-     * @param options - Optional settings for the command
-     */
-    deleteMany(filter?: Filter<TSchema>, options?: DeleteOptions): Promise<DeleteResult>;
-    /**
-     * Rename the collection.
-     *
-     * @remarks
-     * This operation does not inherit options from the Db or MongoClient.
-     *
-     * @param newName - New name of of the collection.
-     * @param options - Optional settings for the command
-     */
-    rename(newName: string, options?: RenameOptions): Promise<Collection>;
-    /**
-     * Drop the collection from the database, removing it permanently. New accesses will create a new collection.
-     *
-     * @param options - Optional settings for the command
-     */
-    drop(options?: DropCollectionOptions): Promise<boolean>;
-    /**
-     * Fetches the first document that matches the filter
-     *
-     * @param filter - Query for find Operation
-     * @param options - Optional settings for the command
-     */
-    findOne(): Promise<WithId<TSchema> | null>;
-    findOne(filter: Filter<TSchema>): Promise<WithId<TSchema> | null>;
-    findOne(filter: Filter<TSchema>, options: FindOptions): Promise<WithId<TSchema> | null>;
-    findOne<T = TSchema>(): Promise<T | null>;
-    findOne<T = TSchema>(filter: Filter<TSchema>): Promise<T | null>;
-    findOne<T = TSchema>(filter: Filter<TSchema>, options?: FindOptions): Promise<T | null>;
-    /**
-     * Creates a cursor for a filter that can be used to iterate over results from MongoDB
-     *
-     * @param filter - The filter predicate. If unspecified, then all documents in the collection will match the predicate
-     */
-    find(): FindCursor<WithId<TSchema>>;
-    find(filter: Filter<TSchema>, options?: FindOptions): FindCursor<WithId<TSchema>>;
-    find<T extends Document>(filter: Filter<TSchema>, options?: FindOptions): FindCursor<T>;
-    /**
-     * Returns the options of the collection.
-     *
-     * @param options - Optional settings for the command
-     */
-    options(options?: OperationOptions): Promise<Document>;
-    /**
-     * Returns if the collection is a capped collection
-     *
-     * @param options - Optional settings for the command
-     */
-    isCapped(options?: OperationOptions): Promise<boolean>;
-    /**
-     * Creates an index on the db and collection collection.
-     *
-     * @param indexSpec - The field name or index specification to create an index for
-     * @param options - Optional settings for the command
-     *
-     * @example
-     * ```ts
-     * const collection = client.db('foo').collection('bar');
-     *
-     * await collection.createIndex({ a: 1, b: -1 });
-     *
-     * // Alternate syntax for { c: 1, d: -1 } that ensures order of indexes
-     * await collection.createIndex([ [c, 1], [d, -1] ]);
-     *
-     * // Equivalent to { e: 1 }
-     * await collection.createIndex('e');
-     *
-     * // Equivalent to { f: 1, g: 1 }
-     * await collection.createIndex(['f', 'g'])
-     *
-     * // Equivalent to { h: 1, i: -1 }
-     * await collection.createIndex([ { h: 1 }, { i: -1 } ]);
-     *
-     * // Equivalent to { j: 1, k: -1, l: 2d }
-     * await collection.createIndex(['j', ['k', -1], { l: '2d' }])
-     * ```
-     */
-    createIndex(indexSpec: IndexSpecification, options?: CreateIndexesOptions): Promise<string>;
-    /**
-     * Creates multiple indexes in the collection, this method is only supported for
-     * MongoDB 2.6 or higher. Earlier version of MongoDB will throw a command not supported
-     * error.
-     *
-     * **Note**: Unlike {@link Collection#createIndex| createIndex}, this function takes in raw index specifications.
-     * Index specifications are defined {@link https://www.mongodb.com/docs/manual/reference/command/createIndexes/| here}.
-     *
-     * @param indexSpecs - An array of index specifications to be created
-     * @param options - Optional settings for the command
-     *
-     * @example
-     * ```ts
-     * const collection = client.db('foo').collection('bar');
-     * await collection.createIndexes([
-     *   // Simple index on field fizz
-     *   {
-     *     key: { fizz: 1 },
-     *   }
-     *   // wildcard index
-     *   {
-     *     key: { '$**': 1 }
-     *   },
-     *   // named index on darmok and jalad
-     *   {
-     *     key: { darmok: 1, jalad: -1 }
-     *     name: 'tanagra'
-     *   }
-     * ]);
-     * ```
-     */
-    createIndexes(indexSpecs: IndexDescription[], options?: CreateIndexesOptions): Promise<string[]>;
-    /**
-     * Drops an index from this collection.
-     *
-     * @param indexName - Name of the index to drop.
-     * @param options - Optional settings for the command
-     */
-    dropIndex(indexName: string, options?: DropIndexesOptions): Promise<Document>;
-    /**
-     * Drops all indexes from this collection.
-     *
-     * @param options - Optional settings for the command
-     */
-    dropIndexes(options?: DropIndexesOptions): Promise<boolean>;
-    /**
-     * Get the list of all indexes information for the collection.
-     *
-     * @param options - Optional settings for the command
-     */
-    listIndexes(options?: ListIndexesOptions): ListIndexesCursor;
-    /**
-     * Checks if one or more indexes exist on the collection, fails on first non-existing index
-     *
-     * @param indexes - One or more index names to check.
-     * @param options - Optional settings for the command
-     */
-    indexExists(indexes: string | string[], options?: IndexInformationOptions): Promise<boolean>;
-    /**
-     * Retrieves this collections index info.
-     *
-     * @param options - Optional settings for the command
-     */
-    indexInformation(options?: IndexInformationOptions): Promise<Document>;
-    /**
-     * Gets an estimate of the count of documents in a collection using collection metadata.
-     * This will always run a count command on all server versions.
-     *
-     * due to an oversight in versions 5.0.0-5.0.8 of MongoDB, the count command,
-     * which estimatedDocumentCount uses in its implementation, was not included in v1 of
-     * the Stable API, and so users of the Stable API with estimatedDocumentCount are
-     * recommended to upgrade their server version to 5.0.9+ or set apiStrict: false to avoid
-     * encountering errors.
-     *
-     * @see {@link https://www.mongodb.com/docs/manual/reference/command/count/#behavior|Count: Behavior}
-     * @param options - Optional settings for the command
-     */
-    estimatedDocumentCount(options?: EstimatedDocumentCountOptions): Promise<number>;
-    /**
-     * Gets the number of documents matching the filter.
-     * For a fast count of the total documents in a collection see {@link Collection#estimatedDocumentCount| estimatedDocumentCount}.
-     * **Note**: When migrating from {@link Collection#count| count} to {@link Collection#countDocuments| countDocuments}
-     * the following query operators must be replaced:
-     *
-     * | Operator | Replacement |
-     * | -------- | ----------- |
-     * | `$where`   | [`$expr`][1] |
-     * | `$near`    | [`$geoWithin`][2] with [`$center`][3] |
-     * | `$nearSphere` | [`$geoWithin`][2] with [`$centerSphere`][4] |
-     *
-     * [1]: https://www.mongodb.com/docs/manual/reference/operator/query/expr/
-     * [2]: https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/
-     * [3]: https://www.mongodb.com/docs/manual/reference/operator/query/center/#op._S_center
-     * [4]: https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/#op._S_centerSphere
-     *
-     * @param filter - The filter for the count
-     * @param options - Optional settings for the command
-     *
-     * @see https://www.mongodb.com/docs/manual/reference/operator/query/expr/
-     * @see https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/
-     * @see https://www.mongodb.com/docs/manual/reference/operator/query/center/#op._S_center
-     * @see https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/#op._S_centerSphere
-     */
-    countDocuments(filter?: Document, options?: CountDocumentsOptions): Promise<number>;
-    /**
-     * The distinct command returns a list of distinct values for the given key across a collection.
-     *
-     * @param key - Field of the document to find distinct values for
-     * @param filter - The filter for filtering the set of documents to which we apply the distinct filter.
-     * @param options - Optional settings for the command
-     */
-    distinct<Key extends keyof WithId<TSchema>>(key: Key): Promise<Array<Flatten<WithId<TSchema>[Key]>>>;
-    distinct<Key extends keyof WithId<TSchema>>(key: Key, filter: Filter<TSchema>): Promise<Array<Flatten<WithId<TSchema>[Key]>>>;
-    distinct<Key extends keyof WithId<TSchema>>(key: Key, filter: Filter<TSchema>, options: DistinctOptions): Promise<Array<Flatten<WithId<TSchema>[Key]>>>;
-    distinct(key: string): Promise<any[]>;
-    distinct(key: string, filter: Filter<TSchema>): Promise<any[]>;
-    distinct(key: string, filter: Filter<TSchema>, options: DistinctOptions): Promise<any[]>;
-    /**
-     * Retrieve all the indexes on the collection.
-     *
-     * @param options - Optional settings for the command
-     */
-    indexes(options?: IndexInformationOptions): Promise<Document[]>;
-    /**
-     * Find a document and delete it in one atomic operation. Requires a write lock for the duration of the operation.
-     *
-     * @param filter - The filter used to select the document to remove
-     * @param options - Optional settings for the command
-     */
-    findOneAndDelete(filter: Filter<TSchema>, options: FindOneAndDeleteOptions & {
-        includeResultMetadata: true;
-    }): Promise<ModifyResult<TSchema>>;
-    findOneAndDelete(filter: Filter<TSchema>, options: FindOneAndDeleteOptions & {
-        includeResultMetadata: false;
-    }): Promise<WithId<TSchema> | null>;
-    findOneAndDelete(filter: Filter<TSchema>, options: FindOneAndDeleteOptions): Promise<WithId<TSchema> | null>;
-    findOneAndDelete(filter: Filter<TSchema>): Promise<WithId<TSchema> | null>;
-    /**
-     * Find a document and replace it in one atomic operation. Requires a write lock for the duration of the operation.
-     *
-     * @param filter - The filter used to select the document to replace
-     * @param replacement - The Document that replaces the matching document
-     * @param options - Optional settings for the command
-     */
-    findOneAndReplace(filter: Filter<TSchema>, replacement: WithoutId<TSchema>, options: FindOneAndReplaceOptions & {
-        includeResultMetadata: true;
-    }): Promise<ModifyResult<TSchema>>;
-    findOneAndReplace(filter: Filter<TSchema>, replacement: WithoutId<TSchema>, options: FindOneAndReplaceOptions & {
-        includeResultMetadata: false;
-    }): Promise<WithId<TSchema> | null>;
-    findOneAndReplace(filter: Filter<TSchema>, replacement: WithoutId<TSchema>, options: FindOneAndReplaceOptions): Promise<WithId<TSchema> | null>;
-    findOneAndReplace(filter: Filter<TSchema>, replacement: WithoutId<TSchema>): Promise<WithId<TSchema> | null>;
-    /**
-     * Find a document and update it in one atomic operation. Requires a write lock for the duration of the operation.
-     *
-     * @param filter - The filter used to select the document to update
-     * @param update - Update operations to be performed on the document
-     * @param options - Optional settings for the command
-     */
-    findOneAndUpdate(filter: Filter<TSchema>, update: UpdateFilter<TSchema>, options: FindOneAndUpdateOptions & {
-        includeResultMetadata: true;
-    }): Promise<ModifyResult<TSchema>>;
-    findOneAndUpdate(filter: Filter<TSchema>, update: UpdateFilter<TSchema>, options: FindOneAndUpdateOptions & {
-        includeResultMetadata: false;
-    }): Promise<WithId<TSchema> | null>;
-    findOneAndUpdate(filter: Filter<TSchema>, update: UpdateFilter<TSchema>, options: FindOneAndUpdateOptions): Promise<WithId<TSchema> | null>;
-    findOneAndUpdate(filter: Filter<TSchema>, update: UpdateFilter<TSchema>): Promise<WithId<TSchema> | null>;
-    /**
-     * Execute an aggregation framework pipeline against the collection, needs MongoDB \>= 2.2
-     *
-     * @param pipeline - An array of aggregation pipelines to execute
-     * @param options - Optional settings for the command
-     */
-    aggregate<T extends Document = Document>(pipeline?: Document[], options?: AggregateOptions): AggregationCursor<T>;
-    /**
-     * Create a new Change Stream, watching for new changes (insertions, updates, replacements, deletions, and invalidations) in this collection.
-     *
-     * @remarks
-     * watch() accepts two generic arguments for distinct use cases:
-     * - The first is to override the schema that may be defined for this specific collection
-     * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument
-     * @example
-     * By just providing the first argument I can type the change to be `ChangeStreamDocument<{ _id: number }>`
-     * ```ts
-     * collection.watch<{ _id: number }>()
-     *   .on('change', change => console.log(change._id.toFixed(4)));
-     * ```
-     *
-     * @example
-     * Passing a second argument provides a way to reflect the type changes caused by an advanced pipeline.
-     * Here, we are using a pipeline to have MongoDB filter for insert changes only and add a comment.
-     * No need start from scratch on the ChangeStreamInsertDocument type!
-     * By using an intersection we can save time and ensure defaults remain the same type!
-     * ```ts
-     * collection
-     *   .watch<Schema, ChangeStreamInsertDocument<Schema> & { comment: string }>([
-     *     { $addFields: { comment: 'big changes' } },
-     *     { $match: { operationType: 'insert' } }
-     *   ])
-     *   .on('change', change => {
-     *     change.comment.startsWith('big');
-     *     change.operationType === 'insert';
-     *     // No need to narrow in code because the generics did that for us!
-     *     expectType<Schema>(change.fullDocument);
-     *   });
-     * ```
-     *
-     * @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.
-     * @param options - Optional settings for the command
-     * @typeParam TLocal - Type of the data being detected by the change stream
-     * @typeParam TChange - Type of the whole change stream document emitted
-     */
-    watch<TLocal extends Document = TSchema, TChange extends Document = ChangeStreamDocument<TLocal>>(pipeline?: Document[], options?: ChangeStreamOptions): ChangeStream<TLocal, TChange>;
-    /**
-     * Initiate an Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order.
-     *
-     * @throws MongoNotConnectedError
-     * @remarks
-     * **NOTE:** MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation.
-     * However, `collection.bulkWrite()` provides an equivalent API that does not require prior connecting.
-     */
-    initializeUnorderedBulkOp(options?: BulkWriteOptions): UnorderedBulkOperation;
-    /**
-     * Initiate an In order bulk write operation. Operations will be serially executed in the order they are added, creating a new operation for each switch in types.
-     *
-     * @throws MongoNotConnectedError
-     * @remarks
-     * **NOTE:** MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation.
-     * However, `collection.bulkWrite()` provides an equivalent API that does not require prior connecting.
-     */
-    initializeOrderedBulkOp(options?: BulkWriteOptions): OrderedBulkOperation;
-    /**
-     * An estimated count of matching documents in the db to a filter.
-     *
-     * **NOTE:** This method has been deprecated, since it does not provide an accurate count of the documents
-     * in a collection. To obtain an accurate count of documents in the collection, use {@link Collection#countDocuments| countDocuments}.
-     * To obtain an estimated count of all documents in the collection, use {@link Collection#estimatedDocumentCount| estimatedDocumentCount}.
-     *
-     * @deprecated use {@link Collection#countDocuments| countDocuments} or {@link Collection#estimatedDocumentCount| estimatedDocumentCount} instead
-     *
-     * @param filter - The filter for the count.
-     * @param options - Optional settings for the command
-     */
-    count(filter?: Filter<TSchema>, options?: CountOptions): Promise<number>;
-    /**
-     * Returns all search indexes for the current collection.
-     *
-     * @param options - The options for the list indexes operation.
-     *
-     * @remarks Only available when used against a 7.0+ Atlas cluster.
-     */
-    listSearchIndexes(options?: ListSearchIndexesOptions): ListSearchIndexesCursor;
-    /**
-     * Returns all search indexes for the current collection.
-     *
-     * @param name - The name of the index to search for.  Only indexes with matching index names will be returned.
-     * @param options - The options for the list indexes operation.
-     *
-     * @remarks Only available when used against a 7.0+ Atlas cluster.
-     */
-    listSearchIndexes(name: string, options?: ListSearchIndexesOptions): ListSearchIndexesCursor;
-    /**
-     * Creates a single search index for the collection.
-     *
-     * @param description - The index description for the new search index.
-     * @returns A promise that resolves to the name of the new search index.
-     *
-     * @remarks Only available when used against a 7.0+ Atlas cluster.
-     */
-    createSearchIndex(description: SearchIndexDescription): Promise<string>;
-    /**
-     * Creates multiple search indexes for the current collection.
-     *
-     * @param descriptions - An array of `SearchIndexDescription`s for the new search indexes.
-     * @returns A promise that resolves to an array of the newly created search index names.
-     *
-     * @remarks Only available when used against a 7.0+ Atlas cluster.
-     * @returns
-     */
-    createSearchIndexes(descriptions: SearchIndexDescription[]): Promise<string[]>;
-    /**
-     * Deletes a search index by index name.
-     *
-     * @param name - The name of the search index to be deleted.
-     *
-     * @remarks Only available when used against a 7.0+ Atlas cluster.
-     */
-    dropSearchIndex(name: string): Promise<void>;
-    /**
-     * Updates a search index by replacing the existing index definition with the provided definition.
-     *
-     * @param name - The name of the search index to update.
-     * @param definition - The new search index definition.
-     *
-     * @remarks Only available when used against a 7.0+ Atlas cluster.
-     */
-    updateSearchIndex(name: string, definition: Document): Promise<void>;
-}
-
-/** @public */
-export declare interface CollectionInfo extends Document {
-    name: string;
-    type?: string;
-    options?: Document;
-    info?: {
-        readOnly?: false;
-        uuid?: Binary;
-    };
-    idIndex?: Document;
-}
-
-/** @public */
-export declare interface CollectionOptions extends BSONSerializeOptions, WriteConcernOptions {
-    /** Specify a read concern for the collection. (only MongoDB 3.2 or higher supported) */
-    readConcern?: ReadConcernLike;
-    /** The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). */
-    readPreference?: ReadPreferenceLike;
-}
-
-/* Excluded from this release type: CollectionPrivate */
-
-/**
- * An event indicating the failure of a given command
- * @public
- * @category Event
- */
-export declare class CommandFailedEvent {
-    address: string;
-    connectionId?: string | number;
-    requestId: number;
-    duration: number;
-    commandName: string;
-    failure: Error;
-    serviceId?: ObjectId;
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-    get hasServiceId(): boolean;
-}
-
-/* Excluded from this release type: CommandOperation */
-
-/** @public */
-export declare interface CommandOperationOptions extends OperationOptions, WriteConcernOptions, ExplainOptions {
-    /** Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported) */
-    readConcern?: ReadConcernLike;
-    /** Collation */
-    collation?: CollationOptions;
-    maxTimeMS?: number;
-    /**
-     * Comment to apply to the operation.
-     *
-     * In server versions pre-4.4, 'comment' must be string.  A server
-     * error will be thrown if any other type is provided.
-     *
-     * In server versions 4.4 and above, 'comment' can be any valid BSON type.
-     */
-    comment?: unknown;
-    /** Should retry failed writes */
-    retryWrites?: boolean;
-    dbName?: string;
-    authdb?: string;
-    noResponse?: boolean;
-}
-
-/* Excluded from this release type: CommandOptions */
-
-/**
- * An event indicating the start of a given command
- * @public
- * @category Event
- */
-export declare class CommandStartedEvent {
-    commandObj?: Document;
-    requestId: number;
-    databaseName: string;
-    commandName: string;
-    command: Document;
-    address: string;
-    connectionId?: string | number;
-    serviceId?: ObjectId;
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-    get hasServiceId(): boolean;
-}
-
-/**
- * An event indicating the success of a given command
- * @public
- * @category Event
- */
-export declare class CommandSucceededEvent {
-    address: string;
-    connectionId?: string | number;
-    requestId: number;
-    duration: number;
-    commandName: string;
-    reply: unknown;
-    serviceId?: ObjectId;
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-    get hasServiceId(): boolean;
-}
-
-/** @public */
-export declare type CommonEvents = 'newListener' | 'removeListener';
-
-/** @public */
-export declare const Compressor: Readonly<{
-    readonly none: 0;
-    readonly snappy: 1;
-    readonly zlib: 2;
-    readonly zstd: 3;
-}>;
-
-/** @public */
-export declare type Compressor = (typeof Compressor)[CompressorName];
-
-/** @public */
-export declare type CompressorName = keyof typeof Compressor;
-
-/** @public */
-export declare type Condition<T> = AlternativeType<T> | FilterOperators<AlternativeType<T>>;
-
-/* Excluded from this release type: Connection */
-
-/* Excluded from this release type: CONNECTION_CHECK_OUT_FAILED */
-
-/* Excluded from this release type: CONNECTION_CHECK_OUT_STARTED */
-
-/* Excluded from this release type: CONNECTION_CHECKED_IN */
-
-/* Excluded from this release type: CONNECTION_CHECKED_OUT */
-
-/* Excluded from this release type: CONNECTION_CLOSED */
-
-/* Excluded from this release type: CONNECTION_CREATED */
-
-/* Excluded from this release type: CONNECTION_POOL_CLEARED */
-
-/* Excluded from this release type: CONNECTION_POOL_CLOSED */
-
-/* Excluded from this release type: CONNECTION_POOL_CREATED */
-
-/* Excluded from this release type: CONNECTION_POOL_READY */
-
-/* Excluded from this release type: CONNECTION_READY */
-
-/**
- * An event published when a connection is checked into the connection pool
- * @public
- * @category Event
- */
-export declare class ConnectionCheckedInEvent extends ConnectionPoolMonitoringEvent {
-    /** The id of the connection */
-    connectionId: number | '<monitor>';
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-}
-
-/**
- * An event published when a connection is checked out of the connection pool
- * @public
- * @category Event
- */
-export declare class ConnectionCheckedOutEvent extends ConnectionPoolMonitoringEvent {
-    /** The id of the connection */
-    connectionId: number | '<monitor>';
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-}
-
-/**
- * An event published when a request to check a connection out fails
- * @public
- * @category Event
- */
-export declare class ConnectionCheckOutFailedEvent extends ConnectionPoolMonitoringEvent {
-    /** The reason the attempt to check out failed */
-    reason: string;
-    /* Excluded from this release type: error */
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-}
-
-/**
- * An event published when a request to check a connection out begins
- * @public
- * @category Event
- */
-export declare class ConnectionCheckOutStartedEvent extends ConnectionPoolMonitoringEvent {
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-}
-
-/**
- * An event published when a connection is closed
- * @public
- * @category Event
- */
-export declare class ConnectionClosedEvent extends ConnectionPoolMonitoringEvent {
-    /** The id of the connection */
-    connectionId: number | '<monitor>';
-    /** The reason the connection was closed */
-    reason: string;
-    serviceId?: ObjectId;
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: error */
-    /* Excluded from this release type: __constructor */
-}
-
-/**
- * An event published when a connection pool creates a new connection
- * @public
- * @category Event
- */
-export declare class ConnectionCreatedEvent extends ConnectionPoolMonitoringEvent {
-    /** A monotonically increasing, per-pool id for the newly created connection */
-    connectionId: number | '<monitor>';
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-}
-
-/** @public */
-export declare type ConnectionEvents = {
-    commandStarted(event: CommandStartedEvent): void;
-    commandSucceeded(event: CommandSucceededEvent): void;
-    commandFailed(event: CommandFailedEvent): void;
-    clusterTimeReceived(clusterTime: Document): void;
-    close(): void;
-    message(message: any): void;
-    pinned(pinType: string): void;
-    unpinned(pinType: string): void;
-};
-
-/** @public */
-export declare interface ConnectionOptions extends SupportedNodeConnectionOptions, StreamDescriptionOptions, ProxyOptions {
-    id: number | '<monitor>';
-    generation: number;
-    hostAddress: HostAddress;
-    /* Excluded from this release type: autoEncrypter */
-    serverApi?: ServerApi;
-    monitorCommands: boolean;
-    /* Excluded from this release type: connectionType */
-    credentials?: MongoCredentials;
-    connectTimeoutMS?: number;
-    tls: boolean;
-    noDelay?: boolean;
-    socketTimeoutMS?: number;
-    cancellationToken?: CancellationToken;
-    metadata: ClientMetadata;
-}
-
-/* Excluded from this release type: ConnectionPool */
-
-/**
- * An event published when a connection pool is cleared
- * @public
- * @category Event
- */
-export declare class ConnectionPoolClearedEvent extends ConnectionPoolMonitoringEvent {
-    /* Excluded from this release type: serviceId */
-    interruptInUseConnections?: boolean;
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-}
-
-/**
- * An event published when a connection pool is closed
- * @public
- * @category Event
- */
-export declare class ConnectionPoolClosedEvent extends ConnectionPoolMonitoringEvent {
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-}
-
-/**
- * An event published when a connection pool is created
- * @public
- * @category Event
- */
-export declare class ConnectionPoolCreatedEvent extends ConnectionPoolMonitoringEvent {
-    /** The options used to create this connection pool */
-    options: Pick<ConnectionPoolOptions, 'maxPoolSize' | 'minPoolSize' | 'maxConnecting' | 'maxIdleTimeMS' | 'waitQueueTimeoutMS'>;
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-}
-
-/** @public */
-export declare type ConnectionPoolEvents = {
-    connectionPoolCreated(event: ConnectionPoolCreatedEvent): void;
-    connectionPoolReady(event: ConnectionPoolReadyEvent): void;
-    connectionPoolClosed(event: ConnectionPoolClosedEvent): void;
-    connectionPoolCleared(event: ConnectionPoolClearedEvent): void;
-    connectionCreated(event: ConnectionCreatedEvent): void;
-    connectionReady(event: ConnectionReadyEvent): void;
-    connectionClosed(event: ConnectionClosedEvent): void;
-    connectionCheckOutStarted(event: ConnectionCheckOutStartedEvent): void;
-    connectionCheckOutFailed(event: ConnectionCheckOutFailedEvent): void;
-    connectionCheckedOut(event: ConnectionCheckedOutEvent): void;
-    connectionCheckedIn(event: ConnectionCheckedInEvent): void;
-} & Omit<ConnectionEvents, 'close' | 'message'>;
-
-/* Excluded from this release type: ConnectionPoolMetrics */
-
-/**
- * The base export class for all monitoring events published from the connection pool
- * @public
- * @category Event
- */
-export declare abstract class ConnectionPoolMonitoringEvent {
-    /** A timestamp when the event was created  */
-    time: Date;
-    /** The address (host/port pair) of the pool */
-    address: string;
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-}
-
-/** @public */
-export declare interface ConnectionPoolOptions extends Omit<ConnectionOptions, 'id' | 'generation'> {
-    /** The maximum number of connections that may be associated with a pool at a given time. This includes in use and available connections. */
-    maxPoolSize: number;
-    /** The minimum number of connections that MUST exist at any moment in a single connection pool. */
-    minPoolSize: number;
-    /** The maximum number of connections that may be in the process of being established concurrently by the connection pool. */
-    maxConnecting: number;
-    /** The maximum amount of time a connection should remain idle in the connection pool before being marked idle. */
-    maxIdleTimeMS: number;
-    /** The maximum amount of time operation execution should wait for a connection to become available. The default is 0 which means there is no limit. */
-    waitQueueTimeoutMS: number;
-    /** If we are in load balancer mode. */
-    loadBalanced: boolean;
-    /* Excluded from this release type: minPoolSizeCheckFrequencyMS */
-}
-
-/**
- * An event published when a connection pool is ready
- * @public
- * @category Event
- */
-export declare class ConnectionPoolReadyEvent extends ConnectionPoolMonitoringEvent {
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-}
-
-/**
- * An event published when a connection is ready for use
- * @public
- * @category Event
- */
-export declare class ConnectionReadyEvent extends ConnectionPoolMonitoringEvent {
-    /** The id of the connection */
-    connectionId: number | '<monitor>';
-    /* Excluded from this release type: name */
-    /* Excluded from this release type: __constructor */
-}
-
-/** @public */
-export declare interface ConnectOptions {
-    readPreference?: ReadPreference;
-}
-
-/** @public */
-export declare interface CountDocumentsOptions extends AggregateOptions {
-    /** The number of documents to skip. */
-    skip?: number;
-    /** The maximum amounts to count before aborting. */
-    limit?: number;
-}
-
-/** @public */
-export declare interface CountOptions extends CommandOperationOptions {
-    /** The number of documents to skip. */
-    skip?: number;
-    /** The maximum amounts to count before aborting. */
-    limit?: number;
-    /** Number of milliseconds to wait before aborting the query. */
-    maxTimeMS?: number;
-    /** An index name hint for the query. */
-    hint?: string | Document;
-}
-
-/** @public */
-export declare interface CreateCollectionOptions extends CommandOperationOptions {
-    /** Create a capped collection */
-    capped?: boolean;
-    /** @deprecated Create an index on the _id field of the document. This option is deprecated in MongoDB 3.2+ and will be removed once no longer supported by the server. */
-    autoIndexId?: boolean;
-    /** The size of the capped collection in bytes */
-    size?: number;
-    /** The maximum number of documents in the capped collection */
-    max?: number;
-    /** Available for the MMAPv1 storage engine only to set the usePowerOf2Sizes and the noPadding flag */
-    flags?: number;
-    /** Allows users to specify configuration to the storage engine on a per-collection basis when creating a collection */
-    storageEngine?: Document;
-    /** Allows users to specify validation rules or expressions for the collection. For more information, see Document Validation */
-    validator?: Document;
-    /** Determines how strictly MongoDB applies the validation rules to existing documents during an update */
-    validationLevel?: string;
-    /** Determines whether to error on invalid documents or just warn about the violations but allow invalid documents to be inserted */
-    validationAction?: string;
-    /** Allows users to specify a default configuration for indexes when creating a collection */
-    indexOptionDefaults?: Document;
-    /** The name of the source collection or view from which to create the view. The name is not the full namespace of the collection or view (i.e., does not include the database name and implies the same database as the view to create) */
-    viewOn?: string;
-    /** An array that consists of the aggregation pipeline stage. Creates the view by applying the specified pipeline to the viewOn collection or view */
-    pipeline?: Document[];
-    /** A primary key factory function for generation of custom _id keys. */
-    pkFactory?: PkFactory;
-    /** A document specifying configuration options for timeseries collections. */
-    timeseries?: TimeSeriesCollectionOptions;
-    /** A document specifying configuration options for clustered collections. For MongoDB 5.3 and above. */
-    clusteredIndex?: ClusteredCollectionOptions;
-    /** The number of seconds after which a document in a timeseries or clustered collection expires. */
-    expireAfterSeconds?: number;
-    /** @experimental */
-    encryptedFields?: Document;
-    /**
-     * If set, enables pre-update and post-update document events to be included for any
-     * change streams that listen on this collection.
-     */
-    changeStreamPreAndPostImages?: {
-        enabled: boolean;
-    };
-}
-
-/** @public */
-export declare interface CreateIndexesOptions extends Omit<CommandOperationOptions, 'writeConcern'> {
-    /** Creates the index in the background, yielding whenever possible. */
-    background?: boolean;
-    /** Creates an unique index. */
-    unique?: boolean;
-    /** Override the autogenerated index name (useful if the resulting name is larger than 128 bytes) */
-    name?: string;
-    /** Creates a partial index based on the given filter object (MongoDB 3.2 or higher) */
-    partialFilterExpression?: Document;
-    /** Creates a sparse index. */
-    sparse?: boolean;
-    /** Allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher) */
-    expireAfterSeconds?: number;
-    /** Allows users to configure the storage engine on a per-index basis when creating an index. (MongoDB 3.0 or higher) */
-    storageEngine?: Document;
-    /** (MongoDB 4.4. or higher) Specifies how many data-bearing members of a replica set, including the primary, must complete the index builds successfully before the primary marks the indexes as ready. This option accepts the same values for the "w" field in a write concern plus "votingMembers", which indicates all voting data-bearing nodes. */
-    commitQuorum?: number | string;
-    /** Specifies the index version number, either 0 or 1. */
-    version?: number;
-    weights?: Document;
-    default_language?: string;
-    language_override?: string;
-    textIndexVersion?: number;
-    '2dsphereIndexVersion'?: number;
-    bits?: number;
-    /** For geospatial indexes set the lower bound for the co-ordinates. */
-    min?: number;
-    /** For geospatial indexes set the high bound for the co-ordinates. */
-    max?: number;
-    bucketSize?: number;
-    wildcardProjection?: Document;
-    /** Specifies that the index should exist on the target collection but should not be used by the query planner when executing operations. (MongoDB 4.4 or higher) */
-    hidden?: boolean;
-}
-
-/** @public */
-export declare type CSFLEKMSTlsOptions = {
-    aws?: ClientEncryptionTlsOptions;
-    gcp?: ClientEncryptionTlsOptions;
-    kmip?: ClientEncryptionTlsOptions;
-    local?: ClientEncryptionTlsOptions;
-    azure?: ClientEncryptionTlsOptions;
-};
-
-/** @public */
-export declare const CURSOR_FLAGS: readonly ["tailable", "oplogReplay", "noCursorTimeout", "awaitData", "exhaust", "partial"];
-
-/** @public */
-export declare type CursorFlag = (typeof CURSOR_FLAGS)[number];
-
-/** @public */
-export declare interface CursorStreamOptions {
-    /** A transformation method applied to each document emitted by the stream */
-    transform?(this: void, doc: Document): Document;
-}
-
-/**
- * @public
- * The schema for a DataKey in the key vault collection.
- */
-export declare interface DataKey {
-    _id: UUID;
-    version?: number;
-    keyAltNames?: string[];
-    keyMaterial: Binary;
-    creationDate: Date;
-    updateDate: Date;
-    status: number;
-    masterKey: Document;
-}
-
-/**
- * The **Db** class is a class that represents a MongoDB Database.
- * @public
- *
- * @example
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * interface Pet {
- *   name: string;
- *   kind: 'dog' | 'cat' | 'fish';
- * }
- *
- * const client = new MongoClient('mongodb://localhost:27017');
- * const db = client.db();
- *
- * // Create a collection that validates our union
- * await db.createCollection<Pet>('pets', {
- *   validator: { $expr: { $in: ['$kind', ['dog', 'cat', 'fish']] } }
- * })
- * ```
- */
-export declare class Db {
-    /* Excluded from this release type: s */
-    /* Excluded from this release type: client */
-    static SYSTEM_NAMESPACE_COLLECTION: string;
-    static SYSTEM_INDEX_COLLECTION: string;
-    static SYSTEM_PROFILE_COLLECTION: string;
-    static SYSTEM_USER_COLLECTION: string;
-    static SYSTEM_COMMAND_COLLECTION: string;
-    static SYSTEM_JS_COLLECTION: string;
-    /**
-     * Creates a new Db instance.
-     *
-     * Db name cannot contain a dot, the server may apply more restrictions when an operation is run.
-     *
-     * @param client - The MongoClient for the database.
-     * @param databaseName - The name of the database this instance represents.
-     * @param options - Optional settings for Db construction.
-     */
-    constructor(client: MongoClient, databaseName: string, options?: DbOptions);
-    get databaseName(): string;
-    get options(): DbOptions | undefined;
-    /**
-     * Check if a secondary can be used (because the read preference is *not* set to primary)
-     */
-    get secondaryOk(): boolean;
-    get readConcern(): ReadConcern | undefined;
-    /**
-     * The current readPreference of the Db. If not explicitly defined for
-     * this Db, will be inherited from the parent MongoClient
-     */
-    get readPreference(): ReadPreference;
-    get bsonOptions(): BSONSerializeOptions;
-    get writeConcern(): WriteConcern | undefined;
-    get namespace(): string;
-    /**
-     * Create a new collection on a server with the specified options. Use this to create capped collections.
-     * More information about command options available at https://www.mongodb.com/docs/manual/reference/command/create/
-     *
-     * Collection namespace validation is performed server-side.
-     *
-     * @param name - The name of the collection to create
-     * @param options - Optional settings for the command
-     */
-    createCollection<TSchema extends Document = Document>(name: string, options?: CreateCollectionOptions): Promise<Collection<TSchema>>;
-    /**
-     * Execute a command
-     *
-     * @remarks
-     * This command does not inherit options from the MongoClient.
-     *
-     * The driver will ensure the following fields are attached to the command sent to the server:
-     * - `lsid` - sourced from an implicit session or options.session
-     * - `$readPreference` - defaults to primary or can be configured by options.readPreference
-     * - `$db` - sourced from the name of this database
-     *
-     * If the client has a serverApi setting:
-     * - `apiVersion`
-     * - `apiStrict`
-     * - `apiDeprecationErrors`
-     *
-     * When in a transaction:
-     * - `readConcern` - sourced from readConcern set on the TransactionOptions
-     * - `writeConcern` - sourced from writeConcern set on the TransactionOptions
-     *
-     * Attaching any of the above fields to the command will have no effect as the driver will overwrite the value.
-     *
-     * @param command - The command to run
-     * @param options - Optional settings for the command
-     */
-    command(command: Document, options?: RunCommandOptions): Promise<Document>;
-    /**
-     * Execute an aggregation framework pipeline against the database, needs MongoDB \>= 3.6
-     *
-     * @param pipeline - An array of aggregation stages to be executed
-     * @param options - Optional settings for the command
-     */
-    aggregate<T extends Document = Document>(pipeline?: Document[], options?: AggregateOptions): AggregationCursor<T>;
-    /** Return the Admin db instance */
-    admin(): Admin;
-    /**
-     * Returns a reference to a MongoDB Collection. If it does not exist it will be created implicitly.
-     *
-     * Collection namespace validation is performed server-side.
-     *
-     * @param name - the collection name we wish to access.
-     * @returns return the new Collection instance
-     */
-    collection<TSchema extends Document = Document>(name: string, options?: CollectionOptions): Collection<TSchema>;
-    /**
-     * Get all the db statistics.
-     *
-     * @param options - Optional settings for the command
-     */
-    stats(options?: DbStatsOptions): Promise<Document>;
-    /**
-     * List all collections of this database with optional filter
-     *
-     * @param filter - Query to filter collections by
-     * @param options - Optional settings for the command
-     */
-    listCollections(filter: Document, options: Exclude<ListCollectionsOptions, 'nameOnly'> & {
-        nameOnly: true;
-    }): ListCollectionsCursor<Pick<CollectionInfo, 'name' | 'type'>>;
-    listCollections(filter: Document, options: Exclude<ListCollectionsOptions, 'nameOnly'> & {
-        nameOnly: false;
-    }): ListCollectionsCursor<CollectionInfo>;
-    listCollections<T extends Pick<CollectionInfo, 'name' | 'type'> | CollectionInfo = Pick<CollectionInfo, 'name' | 'type'> | CollectionInfo>(filter?: Document, options?: ListCollectionsOptions): ListCollectionsCursor<T>;
-    /**
-     * Rename a collection.
-     *
-     * @remarks
-     * This operation does not inherit options from the MongoClient.
-     *
-     * @param fromCollection - Name of current collection to rename
-     * @param toCollection - New name of of the collection
-     * @param options - Optional settings for the command
-     */
-    renameCollection<TSchema extends Document = Document>(fromCollection: string, toCollection: string, options?: RenameOptions): Promise<Collection<TSchema>>;
-    /**
-     * Drop a collection from the database, removing it permanently. New accesses will create a new collection.
-     *
-     * @param name - Name of collection to drop
-     * @param options - Optional settings for the command
-     */
-    dropCollection(name: string, options?: DropCollectionOptions): Promise<boolean>;
-    /**
-     * Drop a database, removing it permanently from the server.
-     *
-     * @param options - Optional settings for the command
-     */
-    dropDatabase(options?: DropDatabaseOptions): Promise<boolean>;
-    /**
-     * Fetch all collections for the current db.
-     *
-     * @param options - Optional settings for the command
-     */
-    collections(options?: ListCollectionsOptions): Promise<Collection[]>;
-    /**
-     * Creates an index on the db and collection.
-     *
-     * @param name - Name of the collection to create the index on.
-     * @param indexSpec - Specify the field to index, or an index specification
-     * @param options - Optional settings for the command
-     */
-    createIndex(name: string, indexSpec: IndexSpecification, options?: CreateIndexesOptions): Promise<string>;
-    /**
-     * Remove a user from a database
-     *
-     * @param username - The username to remove
-     * @param options - Optional settings for the command
-     */
-    removeUser(username: string, options?: RemoveUserOptions): Promise<boolean>;
-    /**
-     * Set the current profiling level of MongoDB
-     *
-     * @param level - The new profiling level (off, slow_only, all).
-     * @param options - Optional settings for the command
-     */
-    setProfilingLevel(level: ProfilingLevel, options?: SetProfilingLevelOptions): Promise<ProfilingLevel>;
-    /**
-     * Retrieve the current profiling Level for MongoDB
-     *
-     * @param options - Optional settings for the command
-     */
-    profilingLevel(options?: ProfilingLevelOptions): Promise<string>;
-    /**
-     * Retrieves this collections index info.
-     *
-     * @param name - The name of the collection.
-     * @param options - Optional settings for the command
-     */
-    indexInformation(name: string, options?: IndexInformationOptions): Promise<Document>;
-    /**
-     * Create a new Change Stream, watching for new changes (insertions, updates,
-     * replacements, deletions, and invalidations) in this database. Will ignore all
-     * changes to system collections.
-     *
-     * @remarks
-     * watch() accepts two generic arguments for distinct use cases:
-     * - The first is to provide the schema that may be defined for all the collections within this database
-     * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument
-     *
-     * @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.
-     * @param options - Optional settings for the command
-     * @typeParam TSchema - Type of the data being detected by the change stream
-     * @typeParam TChange - Type of the whole change stream document emitted
-     */
-    watch<TSchema extends Document = Document, TChange extends Document = ChangeStreamDocument<TSchema>>(pipeline?: Document[], options?: ChangeStreamOptions): ChangeStream<TSchema, TChange>;
-    /**
-     * A low level cursor API providing basic driver functionality:
-     * - ClientSession management
-     * - ReadPreference for server selection
-     * - Running getMores automatically when a local batch is exhausted
-     *
-     * @param command - The command that will start a cursor on the server.
-     * @param options - Configurations for running the command, bson options will apply to getMores
-     */
-    runCursorCommand(command: Document, options?: RunCursorCommandOptions): RunCommandCursor;
-}
-
-/* Excluded from this release type: DB_AGGREGATE_COLLECTION */
-
-/** @public */
-export declare interface DbOptions extends BSONSerializeOptions, WriteConcernOptions {
-    /** If the database authentication is dependent on another databaseName. */
-    authSource?: string;
-    /** Force server to assign _id values instead of driver. */
-    forceServerObjectId?: boolean;
-    /** The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). */
-    readPreference?: ReadPreferenceLike;
-    /** A primary key factory object for generation of custom _id keys. */
-    pkFactory?: PkFactory;
-    /** Specify a read concern for the collection. (only MongoDB 3.2 or higher supported) */
-    readConcern?: ReadConcern;
-    /** Should retry failed writes */
-    retryWrites?: boolean;
-}
-
-/* Excluded from this release type: DbPrivate */
-export { DBRef }
-
-/** @public */
-export declare interface DbStatsOptions extends CommandOperationOptions {
-    /** Divide the returned sizes by scale value. */
-    scale?: number;
-}
-
-export { Decimal128 }
-
-/** @public */
-export declare interface DeleteManyModel<TSchema extends Document = Document> {
-    /** The filter to limit the deleted documents. */
-    filter: Filter<TSchema>;
-    /** Specifies a collation. */
-    collation?: CollationOptions;
-    /** The index to use. If specified, then the query system will only consider plans using the hinted index. */
-    hint?: Hint;
-}
-
-/** @public */
-export declare interface DeleteOneModel<TSchema extends Document = Document> {
-    /** The filter to limit the deleted documents. */
-    filter: Filter<TSchema>;
-    /** Specifies a collation. */
-    collation?: CollationOptions;
-    /** The index to use. If specified, then the query system will only consider plans using the hinted index. */
-    hint?: Hint;
-}
-
-/** @public */
-export declare interface DeleteOptions extends CommandOperationOptions, WriteConcernOptions {
-    /** If true, when an insert fails, don't execute the remaining writes. If false, continue with remaining inserts when one fails. */
-    ordered?: boolean;
-    /** Specifies the collation to use for the operation */
-    collation?: CollationOptions;
-    /** Specify that the update query should only consider plans using the hinted index */
-    hint?: string | Document;
-    /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-    let?: Document;
-}
-
-/** @public */
-export declare interface DeleteResult {
-    /** Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined. */
-    acknowledged: boolean;
-    /** The number of documents that were deleted */
-    deletedCount: number;
-}
-
-/** @public */
-export declare interface DeleteStatement {
-    /** The query that matches documents to delete. */
-    q: Document;
-    /** The number of matching documents to delete. */
-    limit: number;
-    /** Specifies the collation to use for the operation. */
-    collation?: CollationOptions;
-    /** A document or string that specifies the index to use to support the query predicate. */
-    hint?: Hint;
-}
-
-export { deserialize }
-
-/* Excluded from this release type: DestroyOptions */
-
-/** @public */
-export declare type DistinctOptions = CommandOperationOptions;
-
-export { Document }
-
-export { Double }
-
-/** @public */
-export declare interface DriverInfo {
-    name?: string;
-    version?: string;
-    platform?: string;
-}
-
-/** @public */
-export declare interface DropCollectionOptions extends CommandOperationOptions {
-    /** @experimental */
-    encryptedFields?: Document;
-}
-
-/** @public */
-export declare type DropDatabaseOptions = CommandOperationOptions;
-
-/** @public */
-export declare type DropIndexesOptions = CommandOperationOptions;
-
-/* Excluded from this release type: Encrypter */
-
-/* Excluded from this release type: EncrypterOptions */
-
-/** @public */
-export declare interface EndSessionOptions {
-    /* Excluded from this release type: error */
-    force?: boolean;
-    forceClear?: boolean;
-}
-
-/** TypeScript Omit (Exclude to be specific) does not work for objects with an "any" indexed type, and breaks discriminated unions @public */
-export declare type EnhancedOmit<TRecordOrUnion, KeyUnion> = string extends keyof TRecordOrUnion ? TRecordOrUnion : TRecordOrUnion extends any ? Pick<TRecordOrUnion, Exclude<keyof TRecordOrUnion, KeyUnion>> : never;
-
-/** @public */
-export declare interface ErrorDescription extends Document {
-    message?: string;
-    errmsg?: string;
-    $err?: string;
-    errorLabels?: string[];
-    errInfo?: Document;
-}
-
-/** @public */
-export declare interface EstimatedDocumentCountOptions extends CommandOperationOptions {
-    /**
-     * The maximum amount of time to allow the operation to run.
-     *
-     * This option is sent only if the caller explicitly provides a value. The default is to not send a value.
-     */
-    maxTimeMS?: number;
-}
-
-/** @public */
-export declare type EventEmitterWithState = {
-    /* Excluded from this release type: stateChanged */
-};
-
-/**
- * Event description type
- * @public
- */
-export declare type EventsDescription = Record<string, GenericListener>;
-
-/* Excluded from this release type: ExecutionResult */
-
-/* Excluded from this release type: Explain */
-
-/** @public */
-export declare interface ExplainOptions {
-    /** Specifies the verbosity mode for the explain output. */
-    explain?: ExplainVerbosityLike;
-}
-
-/** @public */
-export declare const ExplainVerbosity: Readonly<{
-    readonly queryPlanner: "queryPlanner";
-    readonly queryPlannerExtended: "queryPlannerExtended";
-    readonly executionStats: "executionStats";
-    readonly allPlansExecution: "allPlansExecution";
-}>;
-
-/** @public */
-export declare type ExplainVerbosity = string;
-
-/**
- * For backwards compatibility, true is interpreted as "allPlansExecution"
- * and false as "queryPlanner". Prior to server version 3.6, aggregate()
- * ignores the verbosity parameter and executes in "queryPlanner".
- * @public
- */
-export declare type ExplainVerbosityLike = ExplainVerbosity | boolean;
-
-/** A MongoDB filter can be some portion of the schema or a set of operators @public */
-export declare type Filter<TSchema> = {
-    [P in keyof WithId<TSchema>]?: Condition<WithId<TSchema>[P]>;
-} & RootFilterOperators<WithId<TSchema>>;
-
-/** @public */
-export declare type FilterOperations<T> = T extends Record<string, any> ? {
-    [key in keyof T]?: FilterOperators<T[key]>;
-} : FilterOperators<T>;
-
-/** @public */
-export declare interface FilterOperators<TValue> extends NonObjectIdLikeDocument {
-    $eq?: TValue;
-    $gt?: TValue;
-    $gte?: TValue;
-    $in?: ReadonlyArray<TValue>;
-    $lt?: TValue;
-    $lte?: TValue;
-    $ne?: TValue;
-    $nin?: ReadonlyArray<TValue>;
-    $not?: TValue extends string ? FilterOperators<TValue> | RegExp : FilterOperators<TValue>;
-    /**
-     * When `true`, `$exists` matches the documents that contain the field,
-     * including documents where the field value is null.
-     */
-    $exists?: boolean;
-    $type?: BSONType | BSONTypeAlias;
-    $expr?: Record<string, any>;
-    $jsonSchema?: Record<string, any>;
-    $mod?: TValue extends number ? [number, number] : never;
-    $regex?: TValue extends string ? RegExp | BSONRegExp | string : never;
-    $options?: TValue extends string ? string : never;
-    $geoIntersects?: {
-        $geometry: Document;
-    };
-    $geoWithin?: Document;
-    $near?: Document;
-    $nearSphere?: Document;
-    $maxDistance?: number;
-    $all?: ReadonlyArray<any>;
-    $elemMatch?: Document;
-    $size?: TValue extends ReadonlyArray<any> ? number : never;
-    $bitsAllClear?: BitwiseFilter;
-    $bitsAllSet?: BitwiseFilter;
-    $bitsAnyClear?: BitwiseFilter;
-    $bitsAnySet?: BitwiseFilter;
-    $rand?: Record<string, never>;
-}
-
-/** @public */
-export declare class FindCursor<TSchema = any> extends AbstractCursor<TSchema> {
-    /* Excluded from this release type: [kFilter] */
-    /* Excluded from this release type: [kNumReturned] */
-    /* Excluded from this release type: [kBuiltOptions] */
-    /* Excluded from this release type: __constructor */
-    clone(): FindCursor<TSchema>;
-    map<T>(transform: (doc: TSchema) => T): FindCursor<T>;
-    /* Excluded from this release type: _initialize */
-    /* Excluded from this release type: getMore */
-    /**
-     * Get the count of documents for this cursor
-     * @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead
-     */
-    count(options?: CountOptions): Promise<number>;
-    /** Execute the explain for the cursor */
-    explain(verbosity?: ExplainVerbosityLike): Promise<Document>;
-    /** Set the cursor query */
-    filter(filter: Document): this;
-    /**
-     * Set the cursor hint
-     *
-     * @param hint - If specified, then the query system will only consider plans using the hinted index.
-     */
-    hint(hint: Hint): this;
-    /**
-     * Set the cursor min
-     *
-     * @param min - Specify a $min value to specify the inclusive lower bound for a specific index in order to constrain the results of find(). The $min specifies the lower bound for all keys of a specific index in order.
-     */
-    min(min: Document): this;
-    /**
-     * Set the cursor max
-     *
-     * @param max - Specify a $max value to specify the exclusive upper bound for a specific index in order to constrain the results of find(). The $max specifies the upper bound for all keys of a specific index in order.
-     */
-    max(max: Document): this;
-    /**
-     * Set the cursor returnKey.
-     * If set to true, modifies the cursor to only return the index field or fields for the results of the query, rather than documents.
-     * If set to true and the query does not use an index to perform the read operation, the returned documents will not contain any fields.
-     *
-     * @param value - the returnKey value.
-     */
-    returnKey(value: boolean): this;
-    /**
-     * Modifies the output of a query by adding a field $recordId to matching documents. $recordId is the internal key which uniquely identifies a document in a collection.
-     *
-     * @param value - The $showDiskLoc option has now been deprecated and replaced with the showRecordId field. $showDiskLoc will still be accepted for OP_QUERY stye find.
-     */
-    showRecordId(value: boolean): this;
-    /**
-     * Add a query modifier to the cursor query
-     *
-     * @param name - The query modifier (must start with $, such as $orderby etc)
-     * @param value - The modifier value.
-     */
-    addQueryModifier(name: string, value: string | boolean | number | Document): this;
-    /**
-     * Add a comment to the cursor query allowing for tracking the comment in the log.
-     *
-     * @param value - The comment attached to this query.
-     */
-    comment(value: string): this;
-    /**
-     * Set a maxAwaitTimeMS on a tailing cursor query to allow to customize the timeout value for the option awaitData (Only supported on MongoDB 3.2 or higher, ignored otherwise)
-     *
-     * @param value - Number of milliseconds to wait before aborting the tailed query.
-     */
-    maxAwaitTimeMS(value: number): this;
-    /**
-     * Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)
-     *
-     * @param value - Number of milliseconds to wait before aborting the query.
-     */
-    maxTimeMS(value: number): this;
-    /**
-     * Add a project stage to the aggregation pipeline
-     *
-     * @remarks
-     * In order to strictly type this function you must provide an interface
-     * that represents the effect of your projection on the result documents.
-     *
-     * By default chaining a projection to your cursor changes the returned type to the generic
-     * {@link Document} type.
-     * You should specify a parameterized type to have assertions on your final results.
-     *
-     * @example
-     * ```typescript
-     * // Best way
-     * const docs: FindCursor<{ a: number }> = cursor.project<{ a: number }>({ _id: 0, a: true });
-     * // Flexible way
-     * const docs: FindCursor<Document> = cursor.project({ _id: 0, a: true });
-     * ```
-     *
-     * @remarks
-     *
-     * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
-     * it **does not** return a new instance of a cursor. This means when calling project,
-     * you should always assign the result to a new variable in order to get a correctly typed cursor variable.
-     * Take note of the following example:
-     *
-     * @example
-     * ```typescript
-     * const cursor: FindCursor<{ a: number; b: string }> = coll.find();
-     * const projectCursor = cursor.project<{ a: number }>({ _id: 0, a: true });
-     * const aPropOnlyArray: {a: number}[] = await projectCursor.toArray();
-     *
-     * // or always use chaining and save the final cursor
-     *
-     * const cursor = coll.find().project<{ a: string }>({
-     *   _id: 0,
-     *   a: { $convert: { input: '$a', to: 'string' }
-     * }});
-     * ```
-     */
-    project<T extends Document = Document>(value: Document): FindCursor<T>;
-    /**
-     * Sets the sort order of the cursor query.
-     *
-     * @param sort - The key or keys set for the sort.
-     * @param direction - The direction of the sorting (1 or -1).
-     */
-    sort(sort: Sort | string, direction?: SortDirection): this;
-    /**
-     * Allows disk use for blocking sort operations exceeding 100MB memory. (MongoDB 3.2 or higher)
-     *
-     * @remarks
-     * {@link https://www.mongodb.com/docs/manual/reference/command/find/#find-cmd-allowdiskuse | find command allowDiskUse documentation}
-     */
-    allowDiskUse(allow?: boolean): this;
-    /**
-     * Set the collation options for the cursor.
-     *
-     * @param value - The cursor collation options (MongoDB 3.4 or higher) settings for update operation (see 3.4 documentation for available fields).
-     */
-    collation(value: CollationOptions): this;
-    /**
-     * Set the limit for the cursor.
-     *
-     * @param value - The limit for the cursor query.
-     */
-    limit(value: number): this;
-    /**
-     * Set the skip for the cursor.
-     *
-     * @param value - The skip for the cursor query.
-     */
-    skip(value: number): this;
-}
-
-/** @public */
-export declare interface FindOneAndDeleteOptions extends CommandOperationOptions {
-    /** An optional hint for query optimization. See the {@link https://www.mongodb.com/docs/manual/reference/command/update/#update-command-hint|update command} reference for more information.*/
-    hint?: Document;
-    /** Limits the fields to return for all matching documents. */
-    projection?: Document;
-    /** Determines which document the operation modifies if the query selects multiple documents. */
-    sort?: Sort;
-    /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-    let?: Document;
-    /**
-     * Return the ModifyResult instead of the modified document. Defaults to false
-     */
-    includeResultMetadata?: boolean;
-}
-
-/** @public */
-export declare interface FindOneAndReplaceOptions extends CommandOperationOptions {
-    /** Allow driver to bypass schema validation. */
-    bypassDocumentValidation?: boolean;
-    /** An optional hint for query optimization. See the {@link https://www.mongodb.com/docs/manual/reference/command/update/#update-command-hint|update command} reference for more information.*/
-    hint?: Document;
-    /** Limits the fields to return for all matching documents. */
-    projection?: Document;
-    /** When set to 'after', returns the updated document rather than the original. The default is 'before'.  */
-    returnDocument?: ReturnDocument;
-    /** Determines which document the operation modifies if the query selects multiple documents. */
-    sort?: Sort;
-    /** Upsert the document if it does not exist. */
-    upsert?: boolean;
-    /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-    let?: Document;
-    /**
-     * Return the ModifyResult instead of the modified document. Defaults to true
-     * but will default to false in the next major version.
-     */
-    includeResultMetadata?: boolean;
-}
-
-/** @public */
-export declare interface FindOneAndUpdateOptions extends CommandOperationOptions {
-    /** Optional list of array filters referenced in filtered positional operators */
-    arrayFilters?: Document[];
-    /** Allow driver to bypass schema validation. */
-    bypassDocumentValidation?: boolean;
-    /** An optional hint for query optimization. See the {@link https://www.mongodb.com/docs/manual/reference/command/update/#update-command-hint|update command} reference for more information.*/
-    hint?: Document;
-    /** Limits the fields to return for all matching documents. */
-    projection?: Document;
-    /** When set to 'after', returns the updated document rather than the original. The default is 'before'.  */
-    returnDocument?: ReturnDocument;
-    /** Determines which document the operation modifies if the query selects multiple documents. */
-    sort?: Sort;
-    /** Upsert the document if it does not exist. */
-    upsert?: boolean;
-    /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-    let?: Document;
-    /**
-     * Return the ModifyResult instead of the modified document. Defaults to true
-     * but will default to false in the next major version.
-     */
-    includeResultMetadata?: boolean;
-}
-
-/**
- * A builder object that is returned from {@link BulkOperationBase#find}.
- * Is used to build a write operation that involves a query filter.
- *
- * @public
- */
-export declare class FindOperators {
-    bulkOperation: BulkOperationBase;
-    /* Excluded from this release type: __constructor */
-    /** Add a multiple update operation to the bulk operation */
-    update(updateDocument: Document | Document[]): BulkOperationBase;
-    /** Add a single update operation to the bulk operation */
-    updateOne(updateDocument: Document | Document[]): BulkOperationBase;
-    /** Add a replace one operation to the bulk operation */
-    replaceOne(replacement: Document): BulkOperationBase;
-    /** Add a delete one operation to the bulk operation */
-    deleteOne(): BulkOperationBase;
-    /** Add a delete many operation to the bulk operation */
-    delete(): BulkOperationBase;
-    /** Upsert modifier for update bulk operation, noting that this operation is an upsert. */
-    upsert(): this;
-    /** Specifies the collation for the query condition. */
-    collation(collation: CollationOptions): this;
-    /** Specifies arrayFilters for UpdateOne or UpdateMany bulk operations. */
-    arrayFilters(arrayFilters: Document[]): this;
-    /** Specifies hint for the bulk operation. */
-    hint(hint: Hint): this;
-}
-
-/**
- * @public
- * @typeParam TSchema - Unused schema definition, deprecated usage, only specify `FindOptions` with no generic
- */
-export declare interface FindOptions<TSchema extends Document = Document> extends Omit<CommandOperationOptions, 'writeConcern'> {
-    /** Sets the limit of documents returned in the query. */
-    limit?: number;
-    /** Set to sort the documents coming back from the query. Array of indexes, `[['a', 1]]` etc. */
-    sort?: Sort;
-    /** The fields to return in the query. Object of fields to either include or exclude (one of, not both), `{'a':1, 'b': 1}` **or** `{'a': 0, 'b': 0}` */
-    projection?: Document;
-    /** Set to skip N documents ahead in your query (useful for pagination). */
-    skip?: number;
-    /** Tell the query to use specific indexes in the query. Object of indexes to use, `{'_id':1}` */
-    hint?: Hint;
-    /** Specify if the cursor can timeout. */
-    timeout?: boolean;
-    /** Specify if the cursor is tailable. */
-    tailable?: boolean;
-    /** Specify if the cursor is a tailable-await cursor. Requires `tailable` to be true */
-    awaitData?: boolean;
-    /** Set the batchSize for the getMoreCommand when iterating over the query results. */
-    batchSize?: number;
-    /** If true, returns only the index keys in the resulting documents. */
-    returnKey?: boolean;
-    /** The inclusive lower bound for a specific index */
-    min?: Document;
-    /** The exclusive upper bound for a specific index */
-    max?: Document;
-    /** Number of milliseconds to wait before aborting the query. */
-    maxTimeMS?: number;
-    /** The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query. Requires `tailable` and `awaitData` to be true */
-    maxAwaitTimeMS?: number;
-    /** The server normally times out idle cursors after an inactivity period (10 minutes) to prevent excess memory use. Set this option to prevent that. */
-    noCursorTimeout?: boolean;
-    /** Specify collation (MongoDB 3.4 or higher) settings for update operation (see 3.4 documentation for available fields). */
-    collation?: CollationOptions;
-    /** Allows disk use for blocking sort operations exceeding 100MB memory. (MongoDB 3.2 or higher) */
-    allowDiskUse?: boolean;
-    /** Determines whether to close the cursor after the first batch. Defaults to false. */
-    singleBatch?: boolean;
-    /** For queries against a sharded collection, allows the command (or subsequent getMore commands) to return partial results, rather than an error, if one or more queried shards are unavailable. */
-    allowPartialResults?: boolean;
-    /** Determines whether to return the record identifier for each document. If true, adds a field $recordId to the returned documents. */
-    showRecordId?: boolean;
-    /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-    let?: Document;
-    /**
-     * Option to enable an optimized code path for queries looking for a particular range of `ts` values in the oplog. Requires `tailable` to be true.
-     * @deprecated Starting from MongoDB 4.4 this flag is not needed and will be ignored.
-     */
-    oplogReplay?: boolean;
-}
-
-/** @public */
-export declare type Flatten<Type> = Type extends ReadonlyArray<infer Item> ? Item : Type;
-
-/**
- * @public
- * Configuration options for making an AWS encryption key
- */
-export declare interface GCPEncryptionKeyOptions {
-    /**
-     * GCP project ID
-     */
-    projectId: string;
-    /**
-     * Location name (e.g. "global")
-     */
-    location: string;
-    /**
-     * Key ring name
-     */
-    keyRing: string;
-    /**
-     * Key name
-     */
-    keyName: string;
-    /**
-     * Key version
-     */
-    keyVersion?: string | undefined;
-    /**
-     * KMS URL, defaults to `https://www.googleapis.com/auth/cloudkms`
-     */
-    endpoint?: string | undefined;
-}
-
-/** @public */
-export declare type GenericListener = (...args: any[]) => void;
-
-/**
- * Constructor for a streaming GridFS interface
- * @public
- */
-export declare class GridFSBucket extends TypedEventEmitter<GridFSBucketEvents> {
-    /* Excluded from this release type: s */
-    /**
-     * When the first call to openUploadStream is made, the upload stream will
-     * check to see if it needs to create the proper indexes on the chunks and
-     * files collections. This event is fired either when 1) it determines that
-     * no index creation is necessary, 2) when it successfully creates the
-     * necessary indexes.
-     * @event
-     */
-    static readonly INDEX: "index";
-    constructor(db: Db, options?: GridFSBucketOptions);
-    /**
-     * Returns a writable stream (GridFSBucketWriteStream) for writing
-     * buffers to GridFS. The stream's 'id' property contains the resulting
-     * file's id.
-     *
-     * @param filename - The value of the 'filename' key in the files doc
-     * @param options - Optional settings.
-     */
-    openUploadStream(filename: string, options?: GridFSBucketWriteStreamOptions): GridFSBucketWriteStream;
-    /**
-     * Returns a writable stream (GridFSBucketWriteStream) for writing
-     * buffers to GridFS for a custom file id. The stream's 'id' property contains the resulting
-     * file's id.
-     */
-    openUploadStreamWithId(id: ObjectId, filename: string, options?: GridFSBucketWriteStreamOptions): GridFSBucketWriteStream;
-    /** Returns a readable stream (GridFSBucketReadStream) for streaming file data from GridFS. */
-    openDownloadStream(id: ObjectId, options?: GridFSBucketReadStreamOptions): GridFSBucketReadStream;
-    /**
-     * Deletes a file with the given id
-     *
-     * @param id - The id of the file doc
-     */
-    delete(id: ObjectId): Promise<void>;
-    /** Convenience wrapper around find on the files collection */
-    find(filter?: Filter<GridFSFile>, options?: FindOptions): FindCursor<GridFSFile>;
-    /**
-     * Returns a readable stream (GridFSBucketReadStream) for streaming the
-     * file with the given name from GridFS. If there are multiple files with
-     * the same name, this will stream the most recent file with the given name
-     * (as determined by the `uploadDate` field). You can set the `revision`
-     * option to change this behavior.
-     */
-    openDownloadStreamByName(filename: string, options?: GridFSBucketReadStreamOptionsWithRevision): GridFSBucketReadStream;
-    /**
-     * Renames the file with the given _id to the given string
-     *
-     * @param id - the id of the file to rename
-     * @param filename - new name for the file
-     */
-    rename(id: ObjectId, filename: string): Promise<void>;
-    /** Removes this bucket's files collection, followed by its chunks collection. */
-    drop(): Promise<void>;
-}
-
-/** @public */
-export declare type GridFSBucketEvents = {
-    index(): void;
-};
-
-/** @public */
-export declare interface GridFSBucketOptions extends WriteConcernOptions {
-    /** The 'files' and 'chunks' collections will be prefixed with the bucket name followed by a dot. */
-    bucketName?: string;
-    /** Number of bytes stored in each chunk. Defaults to 255KB */
-    chunkSizeBytes?: number;
-    /** Read preference to be passed to read operations */
-    readPreference?: ReadPreference;
-}
-
-/* Excluded from this release type: GridFSBucketPrivate */
-
-/**
- * A readable stream that enables you to read buffers from GridFS.
- *
- * Do not instantiate this class directly. Use `openDownloadStream()` instead.
- * @public
- */
-export declare class GridFSBucketReadStream extends Readable {
-    /* Excluded from this release type: s */
-    /**
-     * Fires when the stream loaded the file document corresponding to the provided id.
-     * @event
-     */
-    static readonly FILE: "file";
-    /* Excluded from this release type: __constructor */
-    /* Excluded from this release type: _read */
-    /**
-     * Sets the 0-based offset in bytes to start streaming from. Throws
-     * an error if this stream has entered flowing mode
-     * (e.g. if you've already called `on('data')`)
-     *
-     * @param start - 0-based offset in bytes to start streaming from
-     */
-    start(start?: number): this;
-    /**
-     * Sets the 0-based offset in bytes to start streaming from. Throws
-     * an error if this stream has entered flowing mode
-     * (e.g. if you've already called `on('data')`)
-     *
-     * @param end - Offset in bytes to stop reading at
-     */
-    end(end?: number): this;
-    /**
-     * Marks this stream as aborted (will never push another `data` event)
-     * and kills the underlying cursor. Will emit the 'end' event, and then
-     * the 'close' event once the cursor is successfully killed.
-     */
-    abort(): Promise<void>;
-}
-
-/** @public */
-export declare interface GridFSBucketReadStreamOptions {
-    sort?: Sort;
-    skip?: number;
-    /**
-     * 0-indexed non-negative byte offset from the beginning of the file
-     */
-    start?: number;
-    /**
-     * 0-indexed non-negative byte offset to the end of the file contents
-     * to be returned by the stream. `end` is non-inclusive
-     */
-    end?: number;
-}
-
-/** @public */
-export declare interface GridFSBucketReadStreamOptionsWithRevision extends GridFSBucketReadStreamOptions {
-    /** The revision number relative to the oldest file with the given filename. 0
-     * gets you the oldest file, 1 gets you the 2nd oldest, -1 gets you the
-     * newest. */
-    revision?: number;
-}
-
-/* Excluded from this release type: GridFSBucketReadStreamPrivate */
-
-/**
- * A writable stream that enables you to write buffers to GridFS.
- *
- * Do not instantiate this class directly. Use `openUploadStream()` instead.
- * @public
- */
-export declare class GridFSBucketWriteStream extends Writable {
-    bucket: GridFSBucket;
-    /** A Collection instance where the file's chunks are stored */
-    chunks: Collection<GridFSChunk>;
-    /** A Collection instance where the file's GridFSFile document is stored */
-    files: Collection<GridFSFile>;
-    /** The name of the file */
-    filename: string;
-    /** Options controlling the metadata inserted along with the file */
-    options: GridFSBucketWriteStreamOptions;
-    /** Indicates the stream is finished uploading */
-    done: boolean;
-    /** The ObjectId used for the `_id` field on the GridFSFile document */
-    id: ObjectId;
-    /** The number of bytes that each chunk will be limited to */
-    chunkSizeBytes: number;
-    /** Space used to store a chunk currently being inserted */
-    bufToStore: Buffer;
-    /** Accumulates the number of bytes inserted as the stream uploads chunks */
-    length: number;
-    /** Accumulates the number of chunks inserted as the stream uploads file contents */
-    n: number;
-    /** Tracks the current offset into the buffered bytes being uploaded */
-    pos: number;
-    /** Contains a number of properties indicating the current state of the stream */
-    state: {
-        /** If set the stream has ended */
-        streamEnd: boolean;
-        /** Indicates the number of chunks that still need to be inserted to exhaust the current buffered data */
-        outstandingRequests: number;
-        /** If set an error occurred during insertion */
-        errored: boolean;
-        /** If set the stream was intentionally aborted */
-        aborted: boolean;
-    };
-    /** The write concern setting to be used with every insert operation */
-    writeConcern?: WriteConcern;
-    /**
-     * The document containing information about the inserted file.
-     * This property is defined _after_ the finish event has been emitted.
-     * It will remain `null` if an error occurs.
-     *
-     * @example
-     * ```ts
-     * fs.createReadStream('file.txt')
-     *   .pipe(bucket.openUploadStream('file.txt'))
-     *   .on('finish', function () {
-     *     console.log(this.gridFSFile)
-     *   })
-     * ```
-     */
-    gridFSFile: GridFSFile | null;
-    /* Excluded from this release type: __constructor */
-    /* Excluded from this release type: _construct */
-    /* Excluded from this release type: _write */
-    /* Excluded from this release type: _final */
-    /**
-     * Places this write stream into an aborted state (all future writes fail)
-     * and deletes all chunks that have already been written.
-     */
-    abort(): Promise<void>;
-}
-
-/** @public */
-export declare interface GridFSBucketWriteStreamOptions extends WriteConcernOptions {
-    /** Overwrite this bucket's chunkSizeBytes for this file */
-    chunkSizeBytes?: number;
-    /** Custom file id for the GridFS file. */
-    id?: ObjectId;
-    /** Object to store in the file document's `metadata` field */
-    metadata?: Document;
-    /**
-     * String to store in the file document's `contentType` field.
-     * @deprecated Will be removed in the next major version. Add a contentType field to the metadata document instead.
-     */
-    contentType?: string;
-    /**
-     * Array of strings to store in the file document's `aliases` field.
-     * @deprecated Will be removed in the next major version. Add an aliases field to the metadata document instead.
-     */
-    aliases?: string[];
-}
-
-/** @public */
-export declare interface GridFSChunk {
-    _id: ObjectId;
-    files_id: ObjectId;
-    n: number;
-    data: Buffer | Uint8Array;
-}
-
-/** @public */
-export declare interface GridFSFile {
-    _id: ObjectId;
-    length: number;
-    chunkSize: number;
-    filename: string;
-    metadata?: Document;
-    uploadDate: Date;
-    /** @deprecated Will be removed in the next major version. */
-    contentType?: string;
-    /** @deprecated Will be removed in the next major version. */
-    aliases?: string[];
-}
-
-/** @public */
-export declare const GSSAPICanonicalizationValue: Readonly<{
-    readonly on: true;
-    readonly off: false;
-    readonly none: "none";
-    readonly forward: "forward";
-    readonly forwardAndReverse: "forwardAndReverse";
-}>;
-
-/** @public */
-export declare type GSSAPICanonicalizationValue = (typeof GSSAPICanonicalizationValue)[keyof typeof GSSAPICanonicalizationValue];
-
-/** @public */
-export declare interface HedgeOptions {
-    /** Explicitly enable or disable hedged reads. */
-    enabled?: boolean;
-}
-
-/** @public */
-export declare type Hint = string | Document;
-
-/** @public */
-export declare class HostAddress {
-    host: string | undefined;
-    port: number | undefined;
-    socketPath: string | undefined;
-    isIPv6: boolean;
-    constructor(hostString: string);
-    inspect(): string;
-    toString(): string;
-    static fromString(this: void, s: string): HostAddress;
-    static fromHostPort(host: string, port: number): HostAddress;
-    static fromSrvRecord({ name, port }: SrvRecord): HostAddress;
-    toHostPort(): {
-        host: string;
-        port: number;
-    };
-}
-
-/**
- * @public
- * @experimental
- */
-export declare interface IdPServerInfo {
-    issuer: string;
-    clientId: string;
-    requestScopes?: string[];
-}
-
-/**
- * @public
- * @experimental
- */
-export declare interface IdPServerResponse {
-    accessToken: string;
-    expiresInSeconds?: number;
-    refreshToken?: string;
-}
-
-/** @public */
-export declare interface IndexDescription extends Pick<CreateIndexesOptions, 'background' | 'unique' | 'partialFilterExpression' | 'sparse' | 'hidden' | 'expireAfterSeconds' | 'storageEngine' | 'version' | 'weights' | 'default_language' | 'language_override' | 'textIndexVersion' | '2dsphereIndexVersion' | 'bits' | 'min' | 'max' | 'bucketSize' | 'wildcardProjection'> {
-    collation?: CollationOptions;
-    name?: string;
-    key: {
-        [key: string]: IndexDirection;
-    } | Map<string, IndexDirection>;
-}
-
-/** @public */
-export declare type IndexDirection = -1 | 1 | '2d' | '2dsphere' | 'text' | 'geoHaystack' | 'hashed' | number;
-
-/** @public */
-export declare interface IndexInformationOptions {
-    full?: boolean;
-    readPreference?: ReadPreference;
-    session?: ClientSession;
-}
-
-/** @public */
-export declare type IndexSpecification = OneOrMore<string | [string, IndexDirection] | {
-    [key: string]: IndexDirection;
-} | Map<string, IndexDirection>>;
-
-/** Given an object shaped type, return the type of the _id field or default to ObjectId @public */
-export declare type InferIdType<TSchema> = TSchema extends {
-    _id: infer IdType;
-} ? Record<any, never> extends IdType ? never : IdType : TSchema extends {
-    _id?: infer IdType;
-} ? unknown extends IdType ? ObjectId : IdType : ObjectId;
-
-/** @public */
-export declare interface InsertManyResult<TSchema = Document> {
-    /** Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined */
-    acknowledged: boolean;
-    /** The number of inserted documents for this operations */
-    insertedCount: number;
-    /** Map of the index of the inserted document to the id of the inserted document */
-    insertedIds: {
-        [key: number]: InferIdType<TSchema>;
-    };
-}
-
-/** @public */
-export declare interface InsertOneModel<TSchema extends Document = Document> {
-    /** The document to insert. */
-    document: OptionalId<TSchema>;
-}
-
-/** @public */
-export declare interface InsertOneOptions extends CommandOperationOptions {
-    /** Allow driver to bypass schema validation. */
-    bypassDocumentValidation?: boolean;
-    /** Force server to assign _id values instead of driver. */
-    forceServerObjectId?: boolean;
-}
-
-/** @public */
-export declare interface InsertOneResult<TSchema = Document> {
-    /** Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined */
-    acknowledged: boolean;
-    /** The identifier that was inserted. If the server generated the identifier, this value will be null as the driver does not have access to that data */
-    insertedId: InferIdType<TSchema>;
-}
-
-export { Int32 }
-
-/** @public */
-export declare type IntegerType = number | Int32 | Long | bigint;
-
-/* Excluded from this release type: InternalAbstractCursorOptions */
-
-/** @public */
-export declare type IsAny<Type, ResultIfAny, ResultIfNotAny> = true extends false & Type ? ResultIfAny : ResultIfNotAny;
-
-/**
- * Helper types for dot-notation filter attributes
- */
-/** @public */
-export declare type Join<T extends unknown[], D extends string> = T extends [] ? '' : T extends [string | number] ? `${T[0]}` : T extends [string | number, ...infer R] ? `${T[0]}${D}${Join<R, D>}` : string;
-
-/* Excluded from this release type: kBeforeHandshake */
-
-/* Excluded from this release type: kBuffer */
-
-/* Excluded from this release type: kBuiltOptions */
-
-/* Excluded from this release type: kCancellationToken */
-
-/* Excluded from this release type: kCancellationToken_2 */
-
-/* Excluded from this release type: kCancelled */
-
-/* Excluded from this release type: kCancelled_2 */
-
-/* Excluded from this release type: kCheckedOut */
-
-/* Excluded from this release type: kClient */
-
-/* Excluded from this release type: kClosed */
-
-/* Excluded from this release type: kClosed_2 */
-
-/* Excluded from this release type: kClusterTime */
-
-/* Excluded from this release type: kConnection */
-
-/* Excluded from this release type: kConnectionCounter */
-
-/* Excluded from this release type: kConnections */
-
-/* Excluded from this release type: kCursorStream */
-
-/* Excluded from this release type: kDecorateResult */
-
-/* Excluded from this release type: kDelayedTimeoutId */
-
-/* Excluded from this release type: kDescription */
-
-/* Excluded from this release type: kDocuments */
-
-/* Excluded from this release type: kErrorLabels */
-
-/** @public */
-export declare type KeysOfAType<TSchema, Type> = {
-    [key in keyof TSchema]: NonNullable<TSchema[key]> extends Type ? key : never;
-}[keyof TSchema];
-
-/** @public */
-export declare type KeysOfOtherType<TSchema, Type> = {
-    [key in keyof TSchema]: NonNullable<TSchema[key]> extends Type ? never : key;
-}[keyof TSchema];
-
-/* Excluded from this release type: kFilter */
-
-/* Excluded from this release type: kGeneration */
-
-/* Excluded from this release type: kGeneration_2 */
-
-/* Excluded from this release type: kHello */
-
-/* Excluded from this release type: kId */
-
-/* Excluded from this release type: kInit */
-
-/* Excluded from this release type: kInitialized */
-
-/* Excluded from this release type: kInternalClient */
-
-/* Excluded from this release type: kKilled */
-
-/* Excluded from this release type: kLastUseTime */
-
-/* Excluded from this release type: kMessageStream */
-
-/* Excluded from this release type: kMetrics */
-
-/* Excluded from this release type: kMinPoolSizeTimer */
-
-/* Excluded from this release type: kMode */
-
-/* Excluded from this release type: kMonitorId */
-
-/**
- * @public
- * Configuration options that are used by specific KMS providers during key generation, encryption, and decryption.
- */
-export declare interface KMSProviders {
-    /**
-     * Configuration options for using 'aws' as your KMS provider
-     */
-    aws?: {
-        /**
-         * The access key used for the AWS KMS provider
-         */
-        accessKeyId: string;
-        /**
-         * The secret access key used for the AWS KMS provider
-         */
-        secretAccessKey: string;
-        /**
-         * An optional AWS session token that will be used as the
-         * X-Amz-Security-Token header for AWS requests.
-         */
-        sessionToken?: string;
-    } | Record<string, never>;
-    /**
-     * Configuration options for using 'local' as your KMS provider
-     */
-    local?: {
-        /**
-         * The master key used to encrypt/decrypt data keys.
-         * A 96-byte long Buffer or base64 encoded string.
-         */
-        key: Buffer | string;
-    };
-    /**
-     * Configuration options for using 'kmip' as your KMS provider
-     */
-    kmip?: {
-        /**
-         * The output endpoint string.
-         * The endpoint consists of a hostname and port separated by a colon.
-         * E.g. "example.com:123". A port is always present.
-         */
-        endpoint?: string;
-    };
-    /**
-     * Configuration options for using 'azure' as your KMS provider
-     */
-    azure?: {
-        /**
-         * The tenant ID identifies the organization for the account
-         */
-        tenantId: string;
-        /**
-         * The client ID to authenticate a registered application
-         */
-        clientId: string;
-        /**
-         * The client secret to authenticate a registered application
-         */
-        clientSecret: string;
-        /**
-         * If present, a host with optional port. E.g. "example.com" or "example.com:443".
-         * This is optional, and only needed if customer is using a non-commercial Azure instance
-         * (e.g. a government or China account, which use different URLs).
-         * Defaults to "login.microsoftonline.com"
-         */
-        identityPlatformEndpoint?: string | undefined;
-    } | {
-        /**
-         * If present, an access token to authenticate with Azure.
-         */
-        accessToken: string;
-    } | Record<string, never>;
-    /**
-     * Configuration options for using 'gcp' as your KMS provider
-     */
-    gcp?: {
-        /**
-         * The service account email to authenticate
-         */
-        email: string;
-        /**
-         * A PKCS#8 encrypted key. This can either be a base64 string or a binary representation
-         */
-        privateKey: string | Buffer;
-        /**
-         * If present, a host with optional port. E.g. "example.com" or "example.com:443".
-         * Defaults to "oauth2.googleapis.com"
-         */
-        endpoint?: string | undefined;
-    } | {
-        /**
-         * If present, an access token to authenticate with GCP.
-         */
-        accessToken: string;
-    } | Record<string, never>;
-}
-
-/* Excluded from this release type: kNamespace */
-
-/* Excluded from this release type: kNumReturned */
-
-/* Excluded from this release type: kOptions */
-
-/* Excluded from this release type: kOptions_2 */
-
-/* Excluded from this release type: kOptions_3 */
-
-/* Excluded from this release type: kPending */
-
-/* Excluded from this release type: kPinnedConnection */
-
-/* Excluded from this release type: kPipeline */
-
-/* Excluded from this release type: kPoolState */
-
-/* Excluded from this release type: kProcessingWaitQueue */
-
-/* Excluded from this release type: kQueue */
-
-/* Excluded from this release type: kRoundTripTime */
-
-/* Excluded from this release type: kServer */
-
-/* Excluded from this release type: kServer_2 */
-
-/* Excluded from this release type: kServer_3 */
-
-/* Excluded from this release type: kServerError */
-
-/* Excluded from this release type: kServerSession */
-
-/* Excluded from this release type: kServiceGenerations */
-
-/* Excluded from this release type: kSession */
-
-/* Excluded from this release type: kSession_2 */
-
-/* Excluded from this release type: kSnapshotEnabled */
-
-/* Excluded from this release type: kSnapshotTime */
-
-/* Excluded from this release type: kStream */
-
-/* Excluded from this release type: kTransform */
-
-/* Excluded from this release type: kTxnNumberIncrement */
-
-/* Excluded from this release type: kWaitQueue */
-
-/* Excluded from this release type: kWaitQueue_2 */
-
-/** @public */
-export declare const LEGAL_TCP_SOCKET_OPTIONS: readonly ["family", "hints", "localAddress", "localPort", "lookup"];
-
-/** @public */
-export declare const LEGAL_TLS_SOCKET_OPTIONS: readonly ["ALPNProtocols", "ca", "cert", "checkServerIdentity", "ciphers", "crl", "ecdhCurve", "key", "minDHSize", "passphrase", "pfx", "rejectUnauthorized", "secureContext", "secureProtocol", "servername", "session"];
-
-/* Excluded from this release type: List */
-
-/** @public */
-export declare class ListCollectionsCursor<T extends Pick<CollectionInfo, 'name' | 'type'> | CollectionInfo = Pick<CollectionInfo, 'name' | 'type'> | CollectionInfo> extends AbstractCursor<T> {
-    parent: Db;
-    filter: Document;
-    options?: ListCollectionsOptions;
-    constructor(db: Db, filter: Document, options?: ListCollectionsOptions);
-    clone(): ListCollectionsCursor<T>;
-    /* Excluded from this release type: _initialize */
-}
-
-/** @public */
-export declare interface ListCollectionsOptions extends Omit<CommandOperationOptions, 'writeConcern'> {
-    /** Since 4.0: If true, will only return the collection name in the response, and will omit additional info */
-    nameOnly?: boolean;
-    /** Since 4.0: If true and nameOnly is true, allows a user without the required privilege (i.e. listCollections action on the database) to run the command when access control is enforced. */
-    authorizedCollections?: boolean;
-    /** The batchSize for the returned command cursor or if pre 2.8 the systems batch collection */
-    batchSize?: number;
-}
-
-/** @public */
-export declare interface ListDatabasesOptions extends CommandOperationOptions {
-    /** A query predicate that determines which databases are listed */
-    filter?: Document;
-    /** A flag to indicate whether the command should return just the database names, or return both database names and size information */
-    nameOnly?: boolean;
-    /** A flag that determines which databases are returned based on the user privileges when access control is enabled */
-    authorizedDatabases?: boolean;
-}
-
-/** @public */
-export declare interface ListDatabasesResult {
-    databases: ({
-        name: string;
-        sizeOnDisk?: number;
-        empty?: boolean;
-    } & Document)[];
-    totalSize?: number;
-    totalSizeMb?: number;
-    ok: 1 | 0;
-}
-
-/** @public */
-export declare class ListIndexesCursor extends AbstractCursor {
-    parent: Collection;
-    options?: ListIndexesOptions;
-    constructor(collection: Collection, options?: ListIndexesOptions);
-    clone(): ListIndexesCursor;
-    /* Excluded from this release type: _initialize */
-}
-
-/** @public */
-export declare interface ListIndexesOptions extends Omit<CommandOperationOptions, 'writeConcern'> {
-    /** The batchSize for the returned command cursor or if pre 2.8 the systems batch collection */
-    batchSize?: number;
-}
-
-/** @public */
-export declare class ListSearchIndexesCursor extends AggregationCursor<{
-    name: string;
-}> {
-    /* Excluded from this release type: __constructor */
-}
-
-/** @public */
-export declare type ListSearchIndexesOptions = AggregateOptions;
-
-/* Excluded from this release type: Log */
-
-/* Excluded from this release type: LogComponentSeveritiesClientOptions */
-
-/* Excluded from this release type: LogConvertible */
-
-/* Excluded from this release type: Loggable */
-
-/* Excluded from this release type: LoggableEvent */
-export { Long }
-
-/** @public */
-export declare type MatchKeysAndValues<TSchema> = Readonly<Partial<TSchema>> & Record<string, any>;
-
-export { MaxKey }
-
-/* Excluded from this release type: MessageHeader */
-
-/* Excluded from this release type: MessageStream */
-
-/* Excluded from this release type: MessageStreamOptions */
-export { MinKey }
-
-/* Excluded from this release type: ModernConnection */
-
-/** @public */
-export declare interface ModifyResult<TSchema = Document> {
-    value: WithId<TSchema> | null;
-    lastErrorObject?: Document;
-    ok: 0 | 1;
-}
-
-/** @public */
-export declare const MONGO_CLIENT_EVENTS: readonly ["connectionPoolCreated", "connectionPoolReady", "connectionPoolCleared", "connectionPoolClosed", "connectionCreated", "connectionReady", "connectionClosed", "connectionCheckOutStarted", "connectionCheckOutFailed", "connectionCheckedOut", "connectionCheckedIn", "commandStarted", "commandSucceeded", "commandFailed", "serverOpening", "serverClosed", "serverDescriptionChanged", "topologyOpening", "topologyClosed", "topologyDescriptionChanged", "error", "timeout", "close", "serverHeartbeatStarted", "serverHeartbeatSucceeded", "serverHeartbeatFailed"];
-
-/**
- * An error generated when the driver API is used incorrectly
- *
- * @privateRemarks
- * Should **never** be directly instantiated
- *
- * @public
- * @category Error
- */
-export declare class MongoAPIError extends MongoDriverError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string, options?: {
-        cause?: Error;
-    });
-    get name(): string;
-}
-
-/**
- * A error generated when the user attempts to authenticate
- * via AWS, but fails
- *
- * @public
- * @category Error
- */
-export declare class MongoAWSError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/**
- * A error generated when the user attempts to authenticate
- * via Azure, but fails.
- *
- * @public
- * @category Error
- */
-export declare class MongoAzureError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/**
- * An error generated when a batch command is re-executed after one of the commands in the batch
- * has failed
- *
- * @public
- * @category Error
- */
-export declare class MongoBatchReExecutionError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message?: string);
-    get name(): string;
-}
-
-/**
- * An error indicating an unsuccessful Bulk Write
- * @public
- * @category Error
- */
-export declare class MongoBulkWriteError extends MongoServerError {
-    result: BulkWriteResult;
-    writeErrors: OneOrMore<WriteError>;
-    err?: WriteConcernError;
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(error: {
-        message: string;
-        code: number;
-        writeErrors?: WriteError[];
-    } | WriteConcernError | AnyError, result: BulkWriteResult);
-    get name(): string;
-    /** Number of documents inserted. */
-    get insertedCount(): number;
-    /** Number of documents matched for update. */
-    get matchedCount(): number;
-    /** Number of documents modified. */
-    get modifiedCount(): number;
-    /** Number of documents deleted. */
-    get deletedCount(): number;
-    /** Number of documents upserted. */
-    get upsertedCount(): number;
-    /** Inserted document generated Id's, hash key is the index of the originating operation */
-    get insertedIds(): {
-        [key: number]: any;
-    };
-    /** Upserted document generated Id's, hash key is the index of the originating operation */
-    get upsertedIds(): {
-        [key: number]: any;
-    };
-}
-
-/**
- * An error generated when a ChangeStream operation fails to execute.
- *
- * @public
- * @category Error
- */
-export declare class MongoChangeStreamError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/**
- * The **MongoClient** class is a class that allows for making Connections to MongoDB.
- * @public
- *
- * @remarks
- * The programmatically provided options take precedence over the URI options.
- *
- * @example
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * // Enable command monitoring for debugging
- * const client = new MongoClient('mongodb://localhost:27017', { monitorCommands: true });
- *
- * client.on('commandStarted', started => console.log(started));
- * client.db().collection('pets');
- * await client.insertOne({ name: 'spot', kind: 'dog' });
- * ```
- */
-export declare class MongoClient extends TypedEventEmitter<MongoClientEvents> {
-    /* Excluded from this release type: s */
-    /* Excluded from this release type: topology */
-    /* Excluded from this release type: mongoLogger */
-    /* Excluded from this release type: connectionLock */
-    /* Excluded from this release type: [kOptions] */
-    constructor(url: string, options?: MongoClientOptions);
-    /* Excluded from this release type: checkForNonGenuineHosts */
-    /** @see MongoOptions */
-    get options(): Readonly<MongoOptions>;
-    get serverApi(): Readonly<ServerApi | undefined>;
-    /* Excluded from this release type: monitorCommands */
-    /* Excluded from this release type: monitorCommands */
-    /* Excluded from this release type: autoEncrypter */
-    get readConcern(): ReadConcern | undefined;
-    get writeConcern(): WriteConcern | undefined;
-    get readPreference(): ReadPreference;
-    get bsonOptions(): BSONSerializeOptions;
-    /**
-     * Connect to MongoDB using a url
-     *
-     * @see docs.mongodb.org/manual/reference/connection-string/
-     */
-    connect(): Promise<this>;
-    /* Excluded from this release type: _connect */
-    /**
-     * Close the client and its underlying connections
-     *
-     * @param force - Force close, emitting no events
-     */
-    close(force?: boolean): Promise<void>;
-    /**
-     * Create a new Db instance sharing the current socket connections.
-     *
-     * @param dbName - The name of the database we want to use. If not provided, use database name from connection string.
-     * @param options - Optional settings for Db construction
-     */
-    db(dbName?: string, options?: DbOptions): Db;
-    /**
-     * Connect to MongoDB using a url
-     *
-     * @remarks
-     * The programmatically provided options take precedence over the URI options.
-     *
-     * @see https://www.mongodb.com/docs/manual/reference/connection-string/
-     */
-    static connect(url: string, options?: MongoClientOptions): Promise<MongoClient>;
-    /**
-     * Creates a new ClientSession. When using the returned session in an operation
-     * a corresponding ServerSession will be created.
-     *
-     * @remarks
-     * A ClientSession instance may only be passed to operations being performed on the same
-     * MongoClient it was started from.
-     */
-    startSession(options?: ClientSessionOptions): ClientSession;
-    /**
-     * A convenience method for creating and handling the clean up of a ClientSession.
-     * The session will always be ended when the executor finishes.
-     *
-     * @param executor - An executor function that all operations using the provided session must be invoked in
-     * @param options - optional settings for the session
-     */
-    withSession<T = any>(executor: WithSessionCallback<T>): Promise<T>;
-    withSession<T = any>(options: ClientSessionOptions, executor: WithSessionCallback<T>): Promise<T>;
-    /**
-     * Create a new Change Stream, watching for new changes (insertions, updates,
-     * replacements, deletions, and invalidations) in this cluster. Will ignore all
-     * changes to system collections, as well as the local, admin, and config databases.
-     *
-     * @remarks
-     * watch() accepts two generic arguments for distinct use cases:
-     * - The first is to provide the schema that may be defined for all the data within the current cluster
-     * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument
-     *
-     * @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.
-     * @param options - Optional settings for the command
-     * @typeParam TSchema - Type of the data being detected by the change stream
-     * @typeParam TChange - Type of the whole change stream document emitted
-     */
-    watch<TSchema extends Document = Document, TChange extends Document = ChangeStreamDocument<TSchema>>(pipeline?: Document[], options?: ChangeStreamOptions): ChangeStream<TSchema, TChange>;
-}
-
-/** @public */
-export declare type MongoClientEvents = Pick<TopologyEvents, (typeof MONGO_CLIENT_EVENTS)[number]> & {
-    open(mongoClient: MongoClient): void;
-};
-
-/**
- * Describes all possible URI query options for the mongo client
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/connection-string
- */
-export declare interface MongoClientOptions extends BSONSerializeOptions, SupportedNodeConnectionOptions {
-    /** Specifies the name of the replica set, if the mongod is a member of a replica set. */
-    replicaSet?: string;
-    /** Enables or disables TLS/SSL for the connection. */
-    tls?: boolean;
-    /** A boolean to enable or disables TLS/SSL for the connection. (The ssl option is equivalent to the tls option.) */
-    ssl?: boolean;
-    /** Specifies the location of a local .pem file that contains either the client's TLS/SSL certificate and key. */
-    tlsCertificateKeyFile?: string;
-    /** Specifies the password to de-crypt the tlsCertificateKeyFile. */
-    tlsCertificateKeyFilePassword?: string;
-    /** Specifies the location of a local .pem file that contains the root certificate chain from the Certificate Authority. This file is used to validate the certificate presented by the mongod/mongos instance. */
-    tlsCAFile?: string;
-    /** Specifies the location of a local CRL .pem file that contains the client revokation list. */
-    tlsCRLFile?: string;
-    /** Bypasses validation of the certificates presented by the mongod/mongos instance */
-    tlsAllowInvalidCertificates?: boolean;
-    /** Disables hostname validation of the certificate presented by the mongod/mongos instance. */
-    tlsAllowInvalidHostnames?: boolean;
-    /** Disables various certificate validations. */
-    tlsInsecure?: boolean;
-    /** The time in milliseconds to attempt a connection before timing out. */
-    connectTimeoutMS?: number;
-    /** The time in milliseconds to attempt a send or receive on a socket before the attempt times out. */
-    socketTimeoutMS?: number;
-    /** An array or comma-delimited string of compressors to enable network compression for communication between this client and a mongod/mongos instance. */
-    compressors?: CompressorName[] | string;
-    /** An integer that specifies the compression level if using zlib for network compression. */
-    zlibCompressionLevel?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | undefined;
-    /** The maximum number of hosts to connect to when using an srv connection string, a setting of `0` means unlimited hosts */
-    srvMaxHosts?: number;
-    /**
-     * Modifies the srv URI to look like:
-     *
-     * `_{srvServiceName}._tcp.{hostname}.{domainname}`
-     *
-     * Querying this DNS URI is expected to respond with SRV records
-     */
-    srvServiceName?: string;
-    /** The maximum number of connections in the connection pool. */
-    maxPoolSize?: number;
-    /** The minimum number of connections in the connection pool. */
-    minPoolSize?: number;
-    /** The maximum number of connections that may be in the process of being established concurrently by the connection pool. */
-    maxConnecting?: number;
-    /** The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed. */
-    maxIdleTimeMS?: number;
-    /** The maximum time in milliseconds that a thread can wait for a connection to become available. */
-    waitQueueTimeoutMS?: number;
-    /** Specify a read concern for the collection (only MongoDB 3.2 or higher supported) */
-    readConcern?: ReadConcernLike;
-    /** The level of isolation */
-    readConcernLevel?: ReadConcernLevel;
-    /** Specifies the read preferences for this connection */
-    readPreference?: ReadPreferenceMode | ReadPreference;
-    /** Specifies, in seconds, how stale a secondary can be before the client stops using it for read operations. */
-    maxStalenessSeconds?: number;
-    /** Specifies the tags document as a comma-separated list of colon-separated key-value pairs.  */
-    readPreferenceTags?: TagSet[];
-    /** The auth settings for when connection to server. */
-    auth?: Auth;
-    /** Specify the database name associated with the user’s credentials. */
-    authSource?: string;
-    /** Specify the authentication mechanism that MongoDB will use to authenticate the connection. */
-    authMechanism?: AuthMechanism;
-    /** Specify properties for the specified authMechanism as a comma-separated list of colon-separated key-value pairs. */
-    authMechanismProperties?: AuthMechanismProperties;
-    /** The size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances. */
-    localThresholdMS?: number;
-    /** Specifies how long (in milliseconds) to block for server selection before throwing an exception.  */
-    serverSelectionTimeoutMS?: number;
-    /** heartbeatFrequencyMS controls when the driver checks the state of the MongoDB deployment. Specify the interval (in milliseconds) between checks, counted from the end of the previous check until the beginning of the next one. */
-    heartbeatFrequencyMS?: number;
-    /** Sets the minimum heartbeat frequency. In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort. */
-    minHeartbeatFrequencyMS?: number;
-    /** The name of the application that created this MongoClient instance. MongoDB 3.4 and newer will print this value in the server log upon establishing each connection. It is also recorded in the slow query log and profile collections */
-    appName?: string;
-    /** Enables retryable reads. */
-    retryReads?: boolean;
-    /** Enable retryable writes. */
-    retryWrites?: boolean;
-    /** Allow a driver to force a Single topology type with a connection string containing one host */
-    directConnection?: boolean;
-    /** Instruct the driver it is connecting to a load balancer fronting a mongos like service */
-    loadBalanced?: boolean;
-    /**
-     * The write concern w value
-     * @deprecated Please use the `writeConcern` option instead
-     */
-    w?: W;
-    /**
-     * The write concern timeout
-     * @deprecated Please use the `writeConcern` option instead
-     */
-    wtimeoutMS?: number;
-    /**
-     * The journal write concern
-     * @deprecated Please use the `writeConcern` option instead
-     */
-    journal?: boolean;
-    /**
-     * A MongoDB WriteConcern, which describes the level of acknowledgement
-     * requested from MongoDB for write operations.
-     *
-     * @see https://www.mongodb.com/docs/manual/reference/write-concern/
-     */
-    writeConcern?: WriteConcern | WriteConcernSettings;
-    /** TCP Connection no delay */
-    noDelay?: boolean;
-    /** Force server to assign `_id` values instead of driver */
-    forceServerObjectId?: boolean;
-    /** A primary key factory function for generation of custom `_id` keys */
-    pkFactory?: PkFactory;
-    /** Enable command monitoring for this client */
-    monitorCommands?: boolean;
-    /** Server API version */
-    serverApi?: ServerApi | ServerApiVersion;
-    /**
-     * Optionally enable in-use auto encryption
-     *
-     * @remarks
-     *  Automatic encryption is an enterprise only feature that only applies to operations on a collection. Automatic encryption is not supported for operations on a database or view, and operations that are not bypassed will result in error
-     *  (see [libmongocrypt: Auto Encryption Allow-List](https://github.com/mongodb/specifications/blob/master/source/client-side-encryption/client-side-encryption.rst#libmongocrypt-auto-encryption-allow-list)). To bypass automatic encryption for all operations, set bypassAutoEncryption=true in AutoEncryptionOpts.
-     *
-     *  Automatic encryption requires the authenticated user to have the [listCollections privilege action](https://www.mongodb.com/docs/manual/reference/command/listCollections/#dbcmd.listCollections).
-     *
-     *  If a MongoClient with a limited connection pool size (i.e a non-zero maxPoolSize) is configured with AutoEncryptionOptions, a separate internal MongoClient is created if any of the following are true:
-     *  - AutoEncryptionOptions.keyVaultClient is not passed.
-     *  - AutoEncryptionOptions.bypassAutomaticEncryption is false.
-     *
-     * If an internal MongoClient is created, it is configured with the same options as the parent MongoClient except minPoolSize is set to 0 and AutoEncryptionOptions is omitted.
-     */
-    autoEncryption?: AutoEncryptionOptions;
-    /** Allows a wrapping driver to amend the client metadata generated by the driver to include information about the wrapping driver */
-    driverInfo?: DriverInfo;
-    /** Configures a Socks5 proxy host used for creating TCP connections. */
-    proxyHost?: string;
-    /** Configures a Socks5 proxy port used for creating TCP connections. */
-    proxyPort?: number;
-    /** Configures a Socks5 proxy username when the proxy in proxyHost requires username/password authentication. */
-    proxyUsername?: string;
-    /** Configures a Socks5 proxy password when the proxy in proxyHost requires username/password authentication. */
-    proxyPassword?: string;
-    /** Instructs the driver monitors to use a specific monitoring mode */
-    serverMonitoringMode?: ServerMonitoringMode;
-    /* Excluded from this release type: srvPoller */
-    /* Excluded from this release type: connectionType */
-    /* Excluded from this release type: mongodbLogPath */
-    /* Excluded from this release type: mongodbLogComponentSeverities */
-    /* Excluded from this release type: mongodbLogMaxDocumentLength */
-    /* Excluded from this release type: __index */
-}
-
-/* Excluded from this release type: MongoClientPrivate */
-
-/**
- * An error generated when a feature that is not enabled or allowed for the current server
- * configuration is used
- *
- *
- * @public
- * @category Error
- */
-export declare class MongoCompatibilityError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/**
- * A representation of the credentials used by MongoDB
- * @public
- */
-export declare class MongoCredentials {
-    /** The username used for authentication */
-    readonly username: string;
-    /** The password used for authentication */
-    readonly password: string;
-    /** The database that the user should authenticate against */
-    readonly source: string;
-    /** The method used to authenticate */
-    readonly mechanism: AuthMechanism;
-    /** Special properties used by some types of auth mechanisms */
-    readonly mechanismProperties: AuthMechanismProperties;
-    constructor(options: MongoCredentialsOptions);
-    /** Determines if two MongoCredentials objects are equivalent */
-    equals(other: MongoCredentials): boolean;
-    /**
-     * If the authentication mechanism is set to "default", resolves the authMechanism
-     * based on the server version and server supported sasl mechanisms.
-     *
-     * @param hello - A hello response from the server
-     */
-    resolveAuthMechanism(hello?: Document): MongoCredentials;
-    validate(): void;
-    static merge(creds: MongoCredentials | undefined, options: Partial<MongoCredentialsOptions>): MongoCredentials;
-}
-
-/** @public */
-export declare interface MongoCredentialsOptions {
-    username?: string;
-    password: string;
-    source: string;
-    db?: string;
-    mechanism?: AuthMechanism;
-    mechanismProperties: AuthMechanismProperties;
-}
-
-/**
- * @public
- * An error indicating that mongodb-client-encryption failed to auto-refresh Azure KMS credentials.
- */
-export declare class MongoCryptAzureKMSRequestError extends MongoCryptError {
-    /** The body of the http response that failed, if present. */
-    body?: Document;
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string, body?: Document);
-    get name(): string;
-}
-
-/**
- * @public
- * An error indicating that `ClientEncryption.createEncryptedCollection()` failed to create data keys
- */
-export declare class MongoCryptCreateDataKeyError extends MongoCryptError {
-    encryptedFields: Document;
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(encryptedFields: Document, { cause }: {
-        cause: Error;
-    });
-    get name(): string;
-}
-
-/**
- * @public
- * An error indicating that `ClientEncryption.createEncryptedCollection()` failed to create a collection
- */
-export declare class MongoCryptCreateEncryptedCollectionError extends MongoCryptError {
-    encryptedFields: Document;
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(encryptedFields: Document, { cause }: {
-        cause: Error;
-    });
-    get name(): string;
-}
-
-/* Excluded from this release type: MongocryptdManager */
-
-/**
- * @public
- * An error indicating that something went wrong specifically with MongoDB Client Encryption
- */
-export declare class MongoCryptError extends MongoError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string, options?: {
-        cause?: Error;
-    });
-    get name(): string;
-}
-
-/**
- * @public
- *
- * An error indicating an invalid argument was provided to an encryption API.
- */
-export declare class MongoCryptInvalidArgumentError extends MongoCryptError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/** @public */
-export declare class MongoCryptKMSRequestNetworkTimeoutError extends MongoCryptError {
-    get name(): string;
-}
-
-/**
- * An error thrown when an attempt is made to read from a cursor that has been exhausted
- *
- * @public
- * @category Error
- */
-export declare class MongoCursorExhaustedError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message?: string);
-    get name(): string;
-}
-
-/**
- * An error thrown when the user attempts to add options to a cursor that has already been
- * initialized
- *
- * @public
- * @category Error
- */
-export declare class MongoCursorInUseError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message?: string);
-    get name(): string;
-}
-
-/**
- * @public
- *
- * A class representing a collection's namespace.  This class enforces (through Typescript) that
- * the `collection` portion of the namespace is defined and should only be
- * used in scenarios where this can be guaranteed.
- */
-export declare class MongoDBCollectionNamespace extends MongoDBNamespace {
-    collection: string;
-    constructor(db: string, collection: string);
-    static fromString(namespace?: string): MongoDBCollectionNamespace;
-}
-
-/* Excluded from this release type: MongoDBLogWritable */
-
-/** @public */
-export declare class MongoDBNamespace {
-    db: string;
-    collection?: string | undefined;
-    /**
-     * Create a namespace object
-     *
-     * @param db - database name
-     * @param collection - collection name
-     */
-    constructor(db: string, collection?: string | undefined);
-    toString(): string;
-    withCollection(collection: string): MongoDBCollectionNamespace;
-    static fromString(namespace?: string): MongoDBNamespace;
-}
-
-/**
- * An error generated when the driver fails to decompress
- * data received from the server.
- *
- * @public
- * @category Error
- */
-export declare class MongoDecompressionError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/**
- * An error generated by the driver
- *
- * @public
- * @category Error
- */
-export declare class MongoDriverError extends MongoError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string, options?: {
-        cause?: Error;
-    });
-    get name(): string;
-}
-
-/**
- * @public
- * @category Error
- *
- * @privateRemarks
- * mongodb-client-encryption has a dependency on this error, it uses the constructor with a string argument
- */
-export declare class MongoError extends Error {
-    /* Excluded from this release type: [kErrorLabels] */
-    /**
-     * This is a number in MongoServerError and a string in MongoDriverError
-     * @privateRemarks
-     * Define the type override on the subclasses when we can use the override keyword
-     */
-    code?: number | string;
-    topologyVersion?: TopologyVersion;
-    connectionGeneration?: number;
-    cause?: Error;
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string, options?: {
-        cause?: Error;
-    });
-    /* Excluded from this release type: buildErrorMessage */
-    get name(): string;
-    /** Legacy name for server error responses */
-    get errmsg(): string;
-    /**
-     * Checks the error to see if it has an error label
-     *
-     * @param label - The error label to check for
-     * @returns returns true if the error has the provided error label
-     */
-    hasErrorLabel(label: string): boolean;
-    addErrorLabel(label: string): void;
-    get errorLabels(): string[];
-}
-
-/** @public */
-export declare const MongoErrorLabel: Readonly<{
-    readonly RetryableWriteError: "RetryableWriteError";
-    readonly TransientTransactionError: "TransientTransactionError";
-    readonly UnknownTransactionCommitResult: "UnknownTransactionCommitResult";
-    readonly ResumableChangeStreamError: "ResumableChangeStreamError";
-    readonly HandshakeError: "HandshakeError";
-    readonly ResetPool: "ResetPool";
-    readonly PoolRequstedRetry: "PoolRequstedRetry";
-    readonly InterruptInUseConnections: "InterruptInUseConnections";
-    readonly NoWritesPerformed: "NoWritesPerformed";
-}>;
-
-/** @public */
-export declare type MongoErrorLabel = (typeof MongoErrorLabel)[keyof typeof MongoErrorLabel];
-
-/**
- * An error generated when the user attempts to operate
- * on a session that has expired or has been closed.
- *
- * @public
- * @category Error
- */
-export declare class MongoExpiredSessionError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message?: string);
-    get name(): string;
-}
-
-/**
- * An error generated when a malformed or invalid chunk is
- * encountered when reading from a GridFSStream.
- *
- * @public
- * @category Error
- */
-export declare class MongoGridFSChunkError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/** An error generated when a GridFSStream operation fails to execute.
- *
- * @public
- * @category Error
- */
-export declare class MongoGridFSStreamError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/**
- * An error generated when the user supplies malformed or unexpected arguments
- * or when a required argument or field is not provided.
- *
- *
- * @public
- * @category Error
- */
-export declare class MongoInvalidArgumentError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/**
- * A error generated when the user attempts to authenticate
- * via Kerberos, but fails to connect to the Kerberos client.
- *
- * @public
- * @category Error
- */
-export declare class MongoKerberosError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/* Excluded from this release type: MongoLoggableComponent */
-
-/* Excluded from this release type: MongoLogger */
-
-/* Excluded from this release type: MongoLoggerEnvOptions */
-
-/* Excluded from this release type: MongoLoggerMongoClientOptions */
-
-/* Excluded from this release type: MongoLoggerOptions */
-
-/**
- * An error generated when the user fails to provide authentication credentials before attempting
- * to connect to a mongo server instance.
- *
- *
- * @public
- * @category Error
- */
-export declare class MongoMissingCredentialsError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/**
- * An error generated when a required module or dependency is not present in the local environment
- *
- * @public
- * @category Error
- */
-export declare class MongoMissingDependencyError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string, options?: {
-        cause?: Error;
-    });
-    get name(): string;
-}
-
-/**
- * An error indicating an issue with the network, including TCP errors and timeouts.
- * @public
- * @category Error
- */
-export declare class MongoNetworkError extends MongoError {
-    /* Excluded from this release type: [kBeforeHandshake] */
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string, options?: MongoNetworkErrorOptions);
-    get name(): string;
-}
-
-/** @public */
-export declare interface MongoNetworkErrorOptions {
-    /** Indicates the timeout happened before a connection handshake completed */
-    beforeHandshake?: boolean;
-    cause?: Error;
-}
-
-/**
- * An error indicating a network timeout occurred
- * @public
- * @category Error
- *
- * @privateRemarks
- * mongodb-client-encryption has a dependency on this error with an instanceof check
- */
-export declare class MongoNetworkTimeoutError extends MongoNetworkError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string, options?: MongoNetworkErrorOptions);
-    get name(): string;
-}
-
-/**
- * An error thrown when the user attempts to operate on a database or collection through a MongoClient
- * that has not yet successfully called the "connect" method
- *
- * @public
- * @category Error
- */
-export declare class MongoNotConnectedError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/**
- * Parsed Mongo Client Options.
- *
- * User supplied options are documented by `MongoClientOptions`.
- *
- * **NOTE:** The client's options parsing is subject to change to support new features.
- * This type is provided to aid with inspection of options after parsing, it should not be relied upon programmatically.
- *
- * Options are sourced from:
- * - connection string
- * - options object passed to the MongoClient constructor
- * - file system (ex. tls settings)
- * - environment variables
- * - DNS SRV records and TXT records
- *
- * Not all options may be present after client construction as some are obtained from asynchronous operations.
- *
- * @public
- */
-export declare interface MongoOptions extends Required<Pick<MongoClientOptions, 'autoEncryption' | 'connectTimeoutMS' | 'directConnection' | 'driverInfo' | 'forceServerObjectId' | 'minHeartbeatFrequencyMS' | 'heartbeatFrequencyMS' | 'localThresholdMS' | 'maxConnecting' | 'maxIdleTimeMS' | 'maxPoolSize' | 'minPoolSize' | 'monitorCommands' | 'noDelay' | 'pkFactory' | 'raw' | 'replicaSet' | 'retryReads' | 'retryWrites' | 'serverSelectionTimeoutMS' | 'socketTimeoutMS' | 'srvMaxHosts' | 'srvServiceName' | 'tlsAllowInvalidCertificates' | 'tlsAllowInvalidHostnames' | 'tlsInsecure' | 'waitQueueTimeoutMS' | 'zlibCompressionLevel'>>, SupportedNodeConnectionOptions {
-    appName?: string;
-    hosts: HostAddress[];
-    srvHost?: string;
-    credentials?: MongoCredentials;
-    readPreference: ReadPreference;
-    readConcern: ReadConcern;
-    loadBalanced: boolean;
-    serverApi: ServerApi;
-    compressors: CompressorName[];
-    writeConcern: WriteConcern;
-    dbName: string;
-    metadata: ClientMetadata;
-    /* Excluded from this release type: autoEncrypter */
-    proxyHost?: string;
-    proxyPort?: number;
-    proxyUsername?: string;
-    proxyPassword?: string;
-    serverMonitoringMode: ServerMonitoringMode;
-    /* Excluded from this release type: connectionType */
-    /* Excluded from this release type: encrypter */
-    /* Excluded from this release type: userSpecifiedAuthSource */
-    /* Excluded from this release type: userSpecifiedReplicaSet */
-    /**
-     * # NOTE ABOUT TLS Options
-     *
-     * If `tls` is provided as an option, it is equivalent to setting the `ssl` option.
-     *
-     * NodeJS native TLS options are passed through to the socket and retain their original types.
-     *
-     * ### Additional options:
-     *
-     * | nodejs native option  | driver spec equivalent option name            | driver option type |
-     * |:----------------------|:----------------------------------------------|:-------------------|
-     * | `ca`                  | `tlsCAFile`                                   | `string`           |
-     * | `crl`                 | `tlsCRLFile`                                  | `string`           |
-     * | `cert`                | `tlsCertificateKeyFile`                       | `string`           |
-     * | `key`                 | `tlsCertificateKeyFile`                       | `string`           |
-     * | `passphrase`          | `tlsCertificateKeyFilePassword`               | `string`           |
-     * | `rejectUnauthorized`  | `tlsAllowInvalidCertificates`                 | `boolean`          |
-     * | `checkServerIdentity` | `tlsAllowInvalidHostnames`                    | `boolean`          |
-     * | see note below        | `tlsInsecure`                                 | `boolean`          |
-     *
-     * If `tlsInsecure` is set to `true`, then it will set the node native options `checkServerIdentity`
-     * to a no-op and `rejectUnauthorized` to `false`.
-     *
-     * If `tlsInsecure` is set to `false`, then it will set the node native options `checkServerIdentity`
-     * to a no-op and `rejectUnauthorized` to the inverse value of `tlsAllowInvalidCertificates`. If
-     * `tlsAllowInvalidCertificates` is not set, then `rejectUnauthorized` will be set to `true`.
-     *
-     * ### Note on `tlsCAFile`, `tlsCertificateKeyFile` and `tlsCRLFile`
-     *
-     * The files specified by the paths passed in to the `tlsCAFile`, `tlsCertificateKeyFile` and `tlsCRLFile`
-     * fields are read lazily on the first call to `MongoClient.connect`. Once these files have been read and
-     * the `ca`, `cert`, `crl` and `key` fields are populated, they will not be read again on subsequent calls to
-     * `MongoClient.connect`. As a result, until the first call to `MongoClient.connect`, the `ca`,
-     * `cert`, `crl` and `key` fields will be undefined.
-     */
-    tls: boolean;
-    tlsCAFile?: string;
-    tlsCRLFile?: string;
-    tlsCertificateKeyFile?: string;
-    /* Excluded from this release type: __index */
-    /* Excluded from this release type: mongoLoggerOptions */
-    /* Excluded from this release type: mongodbLogPath */
-}
-
-/**
- * An error used when attempting to parse a value (like a connection string)
- * @public
- * @category Error
- */
-export declare class MongoParseError extends MongoDriverError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/**
- * An error generated when the driver encounters unexpected input
- * or reaches an unexpected/invalid internal state
- *
- * @privateRemarks
- * Should **never** be directly instantiated.
- *
- * @public
- * @category Error
- */
-export declare class MongoRuntimeError extends MongoDriverError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string, options?: {
-        cause?: Error;
-    });
-    get name(): string;
-}
-
-/**
- * An error generated when an attempt is made to operate
- * on a closed/closing server.
- *
- * @public
- * @category Error
- */
-export declare class MongoServerClosedError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message?: string);
-    get name(): string;
-}
-
-/**
- * An error coming from the mongo server
- *
- * @public
- * @category Error
- */
-export declare class MongoServerError extends MongoError {
-    codeName?: string;
-    writeConcernError?: Document;
-    errInfo?: Document;
-    ok?: number;
-    [key: string]: any;
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: ErrorDescription);
-    get name(): string;
-}
-
-/**
- * An error signifying a client-side server selection error
- * @public
- * @category Error
- */
-export declare class MongoServerSelectionError extends MongoSystemError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string, reason: TopologyDescription);
-    get name(): string;
-}
-
-/**
- * An error signifying a general system issue
- * @public
- * @category Error
- */
-export declare class MongoSystemError extends MongoError {
-    /** An optional reason context, such as an error saved during flow of monitoring and selecting servers */
-    reason?: TopologyDescription;
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string, reason: TopologyDescription);
-    get name(): string;
-}
-
-/**
- * An error thrown when the user calls a function or method not supported on a tailable cursor
- *
- * @public
- * @category Error
- */
-export declare class MongoTailableCursorError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message?: string);
-    get name(): string;
-}
-
-/**
- * An error generated when an attempt is made to operate on a
- * dropped, or otherwise unavailable, database.
- *
- * @public
- * @category Error
- */
-export declare class MongoTopologyClosedError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message?: string);
-    get name(): string;
-}
-
-/**
- * An error generated when the user makes a mistake in the usage of transactions.
- * (e.g. attempting to commit a transaction with a readPreference other than primary)
- *
- * @public
- * @category Error
- */
-export declare class MongoTransactionError extends MongoAPIError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/**
- * An error generated when a **parsable** unexpected response comes from the server.
- * This is generally an error where the driver in a state expecting a certain behavior to occur in
- * the next message from MongoDB but it receives something else.
- * This error **does not** represent an issue with wire message formatting.
- *
- * #### Example
- * When an operation fails, it is the driver's job to retry it. It must perform serverSelection
- * again to make sure that it attempts the operation against a server in a good state. If server
- * selection returns a server that does not support retryable operations, this error is used.
- * This scenario is unlikely as retryable support would also have been determined on the first attempt
- * but it is possible the state change could report a selectable server that does not support retries.
- *
- * @public
- * @category Error
- */
-export declare class MongoUnexpectedServerResponseError extends MongoRuntimeError {
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: string);
-    get name(): string;
-}
-
-/**
- * An error thrown when the server reports a writeConcernError
- * @public
- * @category Error
- */
-export declare class MongoWriteConcernError extends MongoServerError {
-    /** The result document (provided if ok: 1) */
-    result?: Document;
-    /**
-     * **Do not use this constructor!**
-     *
-     * Meant for internal use only.
-     *
-     * @remarks
-     * This class is only meant to be constructed within the driver. This constructor is
-     * not subject to semantic versioning compatibility guarantees and may change at any time.
-     *
-     * @public
-     **/
-    constructor(message: ErrorDescription, result?: Document);
-    get name(): string;
-}
-
-/* Excluded from this release type: Monitor */
-
-/** @public */
-export declare type MonitorEvents = {
-    serverHeartbeatStarted(event: ServerHeartbeatStartedEvent): void;
-    serverHeartbeatSucceeded(event: ServerHeartbeatSucceededEvent): void;
-    serverHeartbeatFailed(event: ServerHeartbeatFailedEvent): void;
-    resetServer(error?: MongoError): void;
-    resetConnectionPool(): void;
-    close(): void;
-} & EventEmitterWithState;
-
-/* Excluded from this release type: MonitorInterval */
-
-/* Excluded from this release type: MonitorIntervalOptions */
-
-/** @public */
-export declare interface MonitorOptions extends Omit<ConnectionOptions, 'id' | 'generation' | 'hostAddress'> {
-    connectTimeoutMS: number;
-    heartbeatFrequencyMS: number;
-    minHeartbeatFrequencyMS: number;
-    serverMonitoringMode: ServerMonitoringMode;
-}
-
-/* Excluded from this release type: MonitorPrivate */
-
-/**
- * @public
- * returns tuple of strings (keys to be joined on '.') that represent every path into a schema
- * https://www.mongodb.com/docs/manual/tutorial/query-embedded-documents/
- *
- * @remarks
- * Through testing we determined that a depth of 8 is safe for the typescript compiler
- * and provides reasonable compilation times. This number is otherwise not special and
- * should be changed if issues are found with this level of checking. Beyond this
- * depth any helpers that make use of NestedPaths should devolve to not asserting any
- * type safety on the input.
- */
-export declare type NestedPaths<Type, Depth extends number[]> = Depth['length'] extends 8 ? [] : Type extends string | number | bigint | boolean | Date | RegExp | Buffer | Uint8Array | ((...args: any[]) => any) | {
-    _bsontype: string;
-} ? [] : Type extends ReadonlyArray<infer ArrayType> ? [] | [number, ...NestedPaths<ArrayType, [...Depth, 1]>] : Type extends Map<string, any> ? [string] : Type extends object ? {
-    [Key in Extract<keyof Type, string>]: Type[Key] extends Type ? [Key] : Type extends Type[Key] ? [Key] : Type[Key] extends ReadonlyArray<infer ArrayType> ? Type extends ArrayType ? [Key] : ArrayType extends Type ? [Key] : [
-    Key,
-    ...NestedPaths<Type[Key], [...Depth, 1]>
-    ] : // child is not structured the same as the parent
-    [
-    Key,
-    ...NestedPaths<Type[Key], [...Depth, 1]>
-    ] | [Key];
-}[Extract<keyof Type, string>] : [];
-
-/**
- * @public
- * returns keys (strings) for every path into a schema with a value of type
- * https://www.mongodb.com/docs/manual/tutorial/query-embedded-documents/
- */
-export declare type NestedPathsOfType<TSchema, Type> = KeysOfAType<{
-    [Property in Join<NestedPaths<TSchema, []>, '.'>]: PropertyType<TSchema, Property>;
-}, Type>;
-
-/**
- * @public
- * A type that extends Document but forbids anything that "looks like" an object id.
- */
-export declare type NonObjectIdLikeDocument = {
-    [key in keyof ObjectIdLike]?: never;
-} & Document;
-
-/** It avoids using fields with not acceptable types @public */
-export declare type NotAcceptedFields<TSchema, FieldType> = {
-    readonly [key in KeysOfOtherType<TSchema, FieldType>]?: never;
-};
-
-/** @public */
-export declare type NumericType = IntegerType | Decimal128 | Double;
-
-export { ObjectId }
-
-/**
- * @public
- * @experimental
- */
-export declare interface OIDCCallbackContext {
-    refreshToken?: string;
-    timeoutSeconds?: number;
-    timeoutContext?: AbortSignal;
-    version: number;
-}
-
-/**
- * @public
- * @experimental
- */
-export declare type OIDCRefreshFunction = (info: IdPServerInfo, context: OIDCCallbackContext) => Promise<IdPServerResponse>;
-
-/**
- * @public
- * @experimental
- */
-export declare type OIDCRequestFunction = (info: IdPServerInfo, context: OIDCCallbackContext) => Promise<IdPServerResponse>;
-
-/** @public */
-export declare type OneOrMore<T> = T | ReadonlyArray<T>;
-
-/** @public */
-export declare type OnlyFieldsOfType<TSchema, FieldType = any, AssignableType = FieldType> = IsAny<TSchema[keyof TSchema], Record<string, FieldType>, AcceptedFields<TSchema, FieldType, AssignableType> & NotAcceptedFields<TSchema, FieldType> & Record<string, AssignableType>>;
-
-/* Excluded from this release type: OpCompressedRequest */
-
-/* Excluded from this release type: OperationDescription */
-
-/** @public */
-export declare interface OperationOptions extends BSONSerializeOptions {
-    /** Specify ClientSession for this command */
-    session?: ClientSession;
-    willRetryWrite?: boolean;
-    /** The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest). */
-    readPreference?: ReadPreferenceLike;
-    /* Excluded from this release type: bypassPinningCheck */
-    omitReadPreference?: boolean;
-}
-
-/* Excluded from this release type: OperationParent */
-
-/**
- * Represents a specific point in time on a server. Can be retrieved by using `db.command()`
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/method/db.runCommand/#response
- */
-export declare type OperationTime = Timestamp;
-
-/* Excluded from this release type: OpMsgOptions */
-
-/* Excluded from this release type: OpMsgRequest */
-
-/* Excluded from this release type: OpMsgResponse */
-
-/* Excluded from this release type: OpQueryOptions */
-
-/* Excluded from this release type: OpQueryRequest */
-
-/* Excluded from this release type: OpQueryResponse */
-
-/* Excluded from this release type: OpResponseOptions */
-
-/**
- * Add an optional _id field to an object shaped type
- * @public
- */
-export declare type OptionalId<TSchema> = EnhancedOmit<TSchema, '_id'> & {
-    _id?: InferIdType<TSchema>;
-};
-
-/**
- * Adds an optional _id field to an object shaped type, unless the _id field is required on that type.
- * In the case _id is required, this method continues to require_id.
- *
- * @public
- *
- * @privateRemarks
- * `ObjectId extends TSchema['_id']` is a confusing ordering at first glance. Rather than ask
- * `TSchema['_id'] extends ObjectId` which translated to "Is the _id property ObjectId?"
- * we instead ask "Does ObjectId look like (have the same shape) as the _id?"
- */
-export declare type OptionalUnlessRequiredId<TSchema> = TSchema extends {
-    _id: any;
-} ? TSchema : OptionalId<TSchema>;
-
-/** @public */
-export declare class OrderedBulkOperation extends BulkOperationBase {
-    /* Excluded from this release type: __constructor */
-    addToOperationsList(batchType: BatchType, document: Document | UpdateStatement | DeleteStatement): this;
-}
-
-/** @public */
-export declare interface PkFactory {
-    createPk(): any;
-}
-
-/* Excluded from this release type: PoolState */
-
-/** @public */
-export declare const ProfilingLevel: Readonly<{
-    readonly off: "off";
-    readonly slowOnly: "slow_only";
-    readonly all: "all";
-}>;
-
-/** @public */
-export declare type ProfilingLevel = (typeof ProfilingLevel)[keyof typeof ProfilingLevel];
-
-/** @public */
-export declare type ProfilingLevelOptions = CommandOperationOptions;
-
-/** @public */
-export declare type PropertyType<Type, Property extends string> = string extends Property ? unknown : Property extends keyof Type ? Type[Property] : Property extends `${number}` ? Type extends ReadonlyArray<infer ArrayType> ? ArrayType : unknown : Property extends `${infer Key}.${infer Rest}` ? Key extends `${number}` ? Type extends ReadonlyArray<infer ArrayType> ? PropertyType<ArrayType, Rest> : unknown : Key extends keyof Type ? Type[Key] extends Map<string, infer MapType> ? MapType : PropertyType<Type[Key], Rest> : unknown : unknown;
-
-/** @public */
-export declare interface ProxyOptions {
-    proxyHost?: string;
-    proxyPort?: number;
-    proxyUsername?: string;
-    proxyPassword?: string;
-}
-
-/** @public */
-export declare type PullAllOperator<TSchema> = ({
-    readonly [key in KeysOfAType<TSchema, ReadonlyArray<any>>]?: TSchema[key];
-} & NotAcceptedFields<TSchema, ReadonlyArray<any>>) & {
-    readonly [key: string]: ReadonlyArray<any>;
-};
-
-/** @public */
-export declare type PullOperator<TSchema> = ({
-    readonly [key in KeysOfAType<TSchema, ReadonlyArray<any>>]?: Partial<Flatten<TSchema[key]>> | FilterOperations<Flatten<TSchema[key]>>;
-} & NotAcceptedFields<TSchema, ReadonlyArray<any>>) & {
-    readonly [key: string]: FilterOperators<any> | any;
-};
-
-/** @public */
-export declare type PushOperator<TSchema> = ({
-    readonly [key in KeysOfAType<TSchema, ReadonlyArray<any>>]?: Flatten<TSchema[key]> | ArrayOperator<Array<Flatten<TSchema[key]>>>;
-} & NotAcceptedFields<TSchema, ReadonlyArray<any>>) & {
-    readonly [key: string]: ArrayOperator<any> | any;
-};
-
-/**
- * @public
- * RangeOptions specifies index options for a Queryable Encryption field supporting "rangePreview" queries.
- * min, max, sparsity, and range must match the values set in the encryptedFields of the destination collection.
- * For double and decimal128, min/max/precision must all be set, or all be unset.
- */
-export declare interface RangeOptions {
-    min?: any;
-    max?: any;
-    sparsity: Long;
-    precision?: number;
-}
-
-/* Excluded from this release type: read */
-
-/**
- * The MongoDB ReadConcern, which allows for control of the consistency and isolation properties
- * of the data read from replica sets and replica set shards.
- * @public
- *
- * @see https://www.mongodb.com/docs/manual/reference/read-concern/index.html
- */
-export declare class ReadConcern {
-    level: ReadConcernLevel | string;
-    /** Constructs a ReadConcern from the read concern level.*/
-    constructor(level: ReadConcernLevel);
-    /**
-     * Construct a ReadConcern given an options object.
-     *
-     * @param options - The options object from which to extract the write concern.
-     */
-    static fromOptions(options?: {
-        readConcern?: ReadConcernLike;
-        level?: ReadConcernLevel;
-    }): ReadConcern | undefined;
-    static get MAJORITY(): 'majority';
-    static get AVAILABLE(): 'available';
-    static get LINEARIZABLE(): 'linearizable';
-    static get SNAPSHOT(): 'snapshot';
-    toJSON(): Document;
-}
-
-/** @public */
-export declare const ReadConcernLevel: Readonly<{
-    readonly local: "local";
-    readonly majority: "majority";
-    readonly linearizable: "linearizable";
-    readonly available: "available";
-    readonly snapshot: "snapshot";
-}>;
-
-/** @public */
-export declare type ReadConcernLevel = (typeof ReadConcernLevel)[keyof typeof ReadConcernLevel];
-
-/** @public */
-export declare type ReadConcernLike = ReadConcern | {
-    level: ReadConcernLevel;
-} | ReadConcernLevel;
-
-/* Excluded from this release type: readMany */
-
-/**
- * The **ReadPreference** class is a class that represents a MongoDB ReadPreference and is
- * used to construct connections.
- * @public
- *
- * @see https://www.mongodb.com/docs/manual/core/read-preference/
- */
-export declare class ReadPreference {
-    mode: ReadPreferenceMode;
-    tags?: TagSet[];
-    hedge?: HedgeOptions;
-    maxStalenessSeconds?: number;
-    minWireVersion?: number;
-    static PRIMARY: "primary";
-    static PRIMARY_PREFERRED: "primaryPreferred";
-    static SECONDARY: "secondary";
-    static SECONDARY_PREFERRED: "secondaryPreferred";
-    static NEAREST: "nearest";
-    static primary: ReadPreference;
-    static primaryPreferred: ReadPreference;
-    static secondary: ReadPreference;
-    static secondaryPreferred: ReadPreference;
-    static nearest: ReadPreference;
-    /**
-     * @param mode - A string describing the read preference mode (primary|primaryPreferred|secondary|secondaryPreferred|nearest)
-     * @param tags - A tag set used to target reads to members with the specified tag(s). tagSet is not available if using read preference mode primary.
-     * @param options - Additional read preference options
-     */
-    constructor(mode: ReadPreferenceMode, tags?: TagSet[], options?: ReadPreferenceOptions);
-    get preference(): ReadPreferenceMode;
-    static fromString(mode: string): ReadPreference;
-    /**
-     * Construct a ReadPreference given an options object.
-     *
-     * @param options - The options object from which to extract the read preference.
-     */
-    static fromOptions(options?: ReadPreferenceFromOptions): ReadPreference | undefined;
-    /**
-     * Replaces options.readPreference with a ReadPreference instance
-     */
-    static translate(options: ReadPreferenceLikeOptions): ReadPreferenceLikeOptions;
-    /**
-     * Validate if a mode is legal
-     *
-     * @param mode - The string representing the read preference mode.
-     */
-    static isValid(mode: string): boolean;
-    /**
-     * Validate if a mode is legal
-     *
-     * @param mode - The string representing the read preference mode.
-     */
-    isValid(mode?: string): boolean;
-    /**
-     * Indicates that this readPreference needs the "SecondaryOk" bit when sent over the wire
-     * @see https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/#op-query
-     */
-    secondaryOk(): boolean;
-    /**
-     * Check if the two ReadPreferences are equivalent
-     *
-     * @param readPreference - The read preference with which to check equality
-     */
-    equals(readPreference: ReadPreference): boolean;
-    /** Return JSON representation */
-    toJSON(): Document;
-}
-
-/** @public */
-export declare interface ReadPreferenceFromOptions extends ReadPreferenceLikeOptions {
-    session?: ClientSession;
-    readPreferenceTags?: TagSet[];
-    hedge?: HedgeOptions;
-}
-
-/** @public */
-export declare type ReadPreferenceLike = ReadPreference | ReadPreferenceMode;
-
-/** @public */
-export declare interface ReadPreferenceLikeOptions extends ReadPreferenceOptions {
-    readPreference?: ReadPreferenceLike | {
-        mode?: ReadPreferenceMode;
-        preference?: ReadPreferenceMode;
-        tags?: TagSet[];
-        maxStalenessSeconds?: number;
-    };
-}
-
-/** @public */
-export declare const ReadPreferenceMode: Readonly<{
-    readonly primary: "primary";
-    readonly primaryPreferred: "primaryPreferred";
-    readonly secondary: "secondary";
-    readonly secondaryPreferred: "secondaryPreferred";
-    readonly nearest: "nearest";
-}>;
-
-/** @public */
-export declare type ReadPreferenceMode = (typeof ReadPreferenceMode)[keyof typeof ReadPreferenceMode];
-
-/** @public */
-export declare interface ReadPreferenceOptions {
-    /** Max secondary read staleness in seconds, Minimum value is 90 seconds.*/
-    maxStalenessSeconds?: number;
-    /** Server mode in which the same query is dispatched in parallel to multiple replica set members. */
-    hedge?: HedgeOptions;
-}
-
-/** @public */
-export declare type RegExpOrString<T> = T extends string ? BSONRegExp | RegExp | T : T;
-
-/** @public */
-export declare type RemoveUserOptions = CommandOperationOptions;
-
-/** @public */
-export declare interface RenameOptions extends CommandOperationOptions {
-    /** Drop the target name collection if it previously exists. */
-    dropTarget?: boolean;
-    /** Unclear */
-    new_collection?: boolean;
-}
-
-/** @public */
-export declare interface ReplaceOneModel<TSchema extends Document = Document> {
-    /** The filter to limit the replaced document. */
-    filter: Filter<TSchema>;
-    /** The document with which to replace the matched document. */
-    replacement: WithoutId<TSchema>;
-    /** Specifies a collation. */
-    collation?: CollationOptions;
-    /** The index to use. If specified, then the query system will only consider plans using the hinted index. */
-    hint?: Hint;
-    /** When true, creates a new document if no document matches the query. */
-    upsert?: boolean;
-}
-
-/** @public */
-export declare interface ReplaceOptions extends CommandOperationOptions {
-    /** If true, allows the write to opt-out of document level validation */
-    bypassDocumentValidation?: boolean;
-    /** Specifies a collation */
-    collation?: CollationOptions;
-    /** Specify that the update query should only consider plans using the hinted index */
-    hint?: string | Document;
-    /** When true, creates a new document if no document matches the query */
-    upsert?: boolean;
-    /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-    let?: Document;
-}
-
-/**
- * @public
- * @deprecated Please use the ChangeStreamCursorOptions type instead.
- */
-export declare interface ResumeOptions {
-    startAtOperationTime?: Timestamp;
-    batchSize?: number;
-    maxAwaitTimeMS?: number;
-    collation?: CollationOptions;
-    readPreference?: ReadPreference;
-    resumeAfter?: ResumeToken;
-    startAfter?: ResumeToken;
-    fullDocument?: string;
-}
-
-/**
- * Represents the logical starting point for a new ChangeStream or resuming a ChangeStream on the server.
- * @see https://www.mongodb.com/docs/manual/changeStreams/#std-label-change-stream-resume
- * @public
- */
-export declare type ResumeToken = unknown;
-
-/** @public */
-export declare const ReturnDocument: Readonly<{
-    readonly BEFORE: "before";
-    readonly AFTER: "after";
-}>;
-
-/** @public */
-export declare type ReturnDocument = (typeof ReturnDocument)[keyof typeof ReturnDocument];
-
-/** @public */
-export declare interface RootFilterOperators<TSchema> extends Document {
-    $and?: Filter<TSchema>[];
-    $nor?: Filter<TSchema>[];
-    $or?: Filter<TSchema>[];
-    $text?: {
-        $search: string;
-        $language?: string;
-        $caseSensitive?: boolean;
-        $diacriticSensitive?: boolean;
-    };
-    $where?: string | ((this: TSchema) => boolean);
-    $comment?: string | Document;
-}
-
-/* Excluded from this release type: RTTPinger */
-
-/* Excluded from this release type: RTTPingerOptions */
-
-/** @public */
-export declare class RunCommandCursor extends AbstractCursor {
-    readonly command: Readonly<Record<string, any>>;
-    readonly getMoreOptions: {
-        comment?: any;
-        maxAwaitTimeMS?: number;
-        batchSize?: number;
-    };
-    /**
-     * Controls the `getMore.comment` field
-     * @param comment - any BSON value
-     */
-    setComment(comment: any): this;
-    /**
-     * Controls the `getMore.maxTimeMS` field. Only valid when cursor is tailable await
-     * @param maxTimeMS - the number of milliseconds to wait for new data
-     */
-    setMaxTimeMS(maxTimeMS: number): this;
-    /**
-     * Controls the `getMore.batchSize` field
-     * @param maxTimeMS - the number documents to return in the `nextBatch`
-     */
-    setBatchSize(batchSize: number): this;
-    /** Unsupported for RunCommandCursor */
-    clone(): never;
-    /** Unsupported for RunCommandCursor: readConcern must be configured directly on command document */
-    withReadConcern(_: ReadConcernLike): never;
-    /** Unsupported for RunCommandCursor: various cursor flags must be configured directly on command document */
-    addCursorFlag(_: string, __: boolean): never;
-    /** Unsupported for RunCommandCursor: maxTimeMS must be configured directly on command document */
-    maxTimeMS(_: number): never;
-    /** Unsupported for RunCommandCursor: batchSize must be configured directly on command document */
-    batchSize(_: number): never;
-    /* Excluded from this release type: db */
-    /* Excluded from this release type: __constructor */
-    /* Excluded from this release type: _initialize */
-    /* Excluded from this release type: getMore */
-}
-
-/** @public */
-export declare type RunCommandOptions = {
-    /** Specify ClientSession for this command */
-    session?: ClientSession;
-    /** The read preference */
-    readPreference?: ReadPreferenceLike;
-} & BSONSerializeOptions;
-
-/** @public */
-export declare type RunCursorCommandOptions = {
-    readPreference?: ReadPreferenceLike;
-    session?: ClientSession;
-} & BSONSerializeOptions;
-
-/** @public */
-export declare type SchemaMember<T, V> = {
-    [P in keyof T]?: V;
-} | {
-    [key: string]: V;
-};
-
-/**
- * @public
- */
-export declare interface SearchIndexDescription {
-    /** The name of the index. */
-    name?: string;
-    /** The index definition. */
-    definition: Document;
-}
-
-/** @public */
-export declare interface SelectServerOptions {
-    readPreference?: ReadPreferenceLike;
-    /** How long to block for server selection before throwing an error */
-    serverSelectionTimeoutMS?: number;
-    session?: ClientSession;
-}
-
-export { serialize }
-
-/* Excluded from this release type: Server */
-
-/** @public */
-export declare interface ServerApi {
-    version: ServerApiVersion;
-    strict?: boolean;
-    deprecationErrors?: boolean;
-}
-
-/** @public */
-export declare const ServerApiVersion: Readonly<{
-    readonly v1: "1";
-}>;
-
-/** @public */
-export declare type ServerApiVersion = (typeof ServerApiVersion)[keyof typeof ServerApiVersion];
-
-/** @public */
-export declare class ServerCapabilities {
-    maxWireVersion: number;
-    minWireVersion: number;
-    constructor(hello: Document);
-    get hasAggregationCursor(): boolean;
-    get hasWriteCommands(): boolean;
-    get hasTextSearch(): boolean;
-    get hasAuthCommands(): boolean;
-    get hasListCollectionsCommand(): boolean;
-    get hasListIndexesCommand(): boolean;
-    get supportsSnapshotReads(): boolean;
-    get commandsTakeWriteConcern(): boolean;
-    get commandsTakeCollation(): boolean;
-}
-
-/**
- * Emitted when server is closed.
- * @public
- * @category Event
- */
-export declare class ServerClosedEvent {
-    /** A unique identifier for the topology */
-    topologyId: number;
-    /** The address (host/port pair) of the server */
-    address: string;
-    /* Excluded from this release type: __constructor */
-}
-
-/**
- * The client's view of a single server, based on the most recent hello outcome.
- *
- * Internal type, not meant to be directly instantiated
- * @public
- */
-export declare class ServerDescription {
-    address: string;
-    type: ServerType;
-    hosts: string[];
-    passives: string[];
-    arbiters: string[];
-    tags: TagSet;
-    error: MongoError | null;
-    topologyVersion: TopologyVersion | null;
-    minWireVersion: number;
-    maxWireVersion: number;
-    roundTripTime: number;
-    lastUpdateTime: number;
-    lastWriteDate: number;
-    me: string | null;
-    primary: string | null;
-    setName: string | null;
-    setVersion: number | null;
-    electionId: ObjectId | null;
-    logicalSessionTimeoutMinutes: number | null;
-    $clusterTime?: ClusterTime;
-    /* Excluded from this release type: __constructor */
-    get hostAddress(): HostAddress;
-    get allHosts(): string[];
-    /** Is this server available for reads*/
-    get isReadable(): boolean;
-    /** Is this server data bearing */
-    get isDataBearing(): boolean;
-    /** Is this server available for writes */
-    get isWritable(): boolean;
-    get host(): string;
-    get port(): number;
-    /**
-     * Determines if another `ServerDescription` is equal to this one per the rules defined
-     * in the {@link https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#serverdescription|SDAM spec}
-     */
-    equals(other?: ServerDescription | null): boolean;
-}
-
-/**
- * Emitted when server description changes, but does NOT include changes to the RTT.
- * @public
- * @category Event
- */
-export declare class ServerDescriptionChangedEvent {
-    /** A unique identifier for the topology */
-    topologyId: number;
-    /** The address (host/port pair) of the server */
-    address: string;
-    /** The previous server description */
-    previousDescription: ServerDescription;
-    /** The new server description */
-    newDescription: ServerDescription;
-    /* Excluded from this release type: __constructor */
-}
-
-/* Excluded from this release type: ServerDescriptionOptions */
-
-/** @public */
-export declare type ServerEvents = {
-    serverHeartbeatStarted(event: ServerHeartbeatStartedEvent): void;
-    serverHeartbeatSucceeded(event: ServerHeartbeatSucceededEvent): void;
-    serverHeartbeatFailed(event: ServerHeartbeatFailedEvent): void;
-    /* Excluded from this release type: connect */
-    descriptionReceived(description: ServerDescription): void;
-    closed(): void;
-    ended(): void;
-} & ConnectionPoolEvents & EventEmitterWithState;
-
-/**
- * Emitted when the server monitor’s hello fails, either with an “ok: 0” or a socket exception.
- * @public
- * @category Event
- */
-export declare class ServerHeartbeatFailedEvent {
-    /** The connection id for the command */
-    connectionId: string;
-    /** The execution time of the event in ms */
-    duration: number;
-    /** The command failure */
-    failure: Error;
-    /** Is true when using the streaming protocol. */
-    awaited: boolean;
-    /* Excluded from this release type: __constructor */
-}
-
-/**
- * Emitted when the server monitor’s hello command is started - immediately before
- * the hello command is serialized into raw BSON and written to the socket.
- *
- * @public
- * @category Event
- */
-export declare class ServerHeartbeatStartedEvent {
-    /** The connection id for the command */
-    connectionId: string;
-    /** Is true when using the streaming protocol. */
-    awaited: boolean;
-    /* Excluded from this release type: __constructor */
-}
-
-/**
- * Emitted when the server monitor’s hello succeeds.
- * @public
- * @category Event
- */
-export declare class ServerHeartbeatSucceededEvent {
-    /** The connection id for the command */
-    connectionId: string;
-    /** The execution time of the event in ms */
-    duration: number;
-    /** The command reply */
-    reply: Document;
-    /** Is true when using the streaming protocol. */
-    awaited: boolean;
-    /* Excluded from this release type: __constructor */
-}
-
-/** @public */
-export declare const ServerMonitoringMode: Readonly<{
-    readonly auto: "auto";
-    readonly poll: "poll";
-    readonly stream: "stream";
-}>;
-
-/** @public */
-export declare type ServerMonitoringMode = (typeof ServerMonitoringMode)[keyof typeof ServerMonitoringMode];
-
-/**
- * Emitted when server is initialized.
- * @public
- * @category Event
- */
-export declare class ServerOpeningEvent {
-    /** A unique identifier for the topology */
-    topologyId: number;
-    /** The address (host/port pair) of the server */
-    address: string;
-    /* Excluded from this release type: __constructor */
-}
-
-/* Excluded from this release type: ServerOptions */
-
-/* Excluded from this release type: ServerPrivate */
-
-/* Excluded from this release type: ServerSelectionCallback */
-
-/* Excluded from this release type: ServerSelectionRequest */
-
-/* Excluded from this release type: ServerSelector */
-
-/**
- * Reflects the existence of a session on the server. Can be reused by the session pool.
- * WARNING: not meant to be instantiated directly. For internal use only.
- * @public
- */
-export declare class ServerSession {
-    id: ServerSessionId;
-    lastUse: number;
-    txnNumber: number;
-    isDirty: boolean;
-    /* Excluded from this release type: __constructor */
-    /**
-     * Determines if the server session has timed out.
-     *
-     * @param sessionTimeoutMinutes - The server's "logicalSessionTimeoutMinutes"
-     */
-    hasTimedOut(sessionTimeoutMinutes: number): boolean;
-    /* Excluded from this release type: clone */
-}
-
-/** @public */
-export declare type ServerSessionId = {
-    id: Binary;
-};
-
-/* Excluded from this release type: ServerSessionPool */
-
-/**
- * An enumeration of server types we know about
- * @public
- */
-export declare const ServerType: Readonly<{
-    readonly Standalone: "Standalone";
-    readonly Mongos: "Mongos";
-    readonly PossiblePrimary: "PossiblePrimary";
-    readonly RSPrimary: "RSPrimary";
-    readonly RSSecondary: "RSSecondary";
-    readonly RSArbiter: "RSArbiter";
-    readonly RSOther: "RSOther";
-    readonly RSGhost: "RSGhost";
-    readonly Unknown: "Unknown";
-    readonly LoadBalancer: "LoadBalancer";
-}>;
-
-/** @public */
-export declare type ServerType = (typeof ServerType)[keyof typeof ServerType];
-
-/** @public */
-export declare type SetFields<TSchema> = ({
-    readonly [key in KeysOfAType<TSchema, ReadonlyArray<any> | undefined>]?: OptionalId<Flatten<TSchema[key]>> | AddToSetOperators<Array<OptionalId<Flatten<TSchema[key]>>>>;
-} & NotAcceptedFields<TSchema, ReadonlyArray<any> | undefined>) & {
-    readonly [key: string]: AddToSetOperators<any> | any;
-};
-
-/** @public */
-export declare type SetProfilingLevelOptions = CommandOperationOptions;
-
-/* Excluded from this release type: SeverityLevel */
-
-/** @public */
-export declare type Sort = string | Exclude<SortDirection, {
-    $meta: string;
-}> | string[] | {
-    [key: string]: SortDirection;
-} | Map<string, SortDirection> | [string, SortDirection][] | [string, SortDirection];
-
-/** @public */
-export declare type SortDirection = 1 | -1 | 'asc' | 'desc' | 'ascending' | 'descending' | {
-    $meta: string;
-};
-
-/* Excluded from this release type: SortDirectionForCmd */
-
-/* Excluded from this release type: SortForCmd */
-
-/* Excluded from this release type: SrvPoller */
-
-/* Excluded from this release type: SrvPollerEvents */
-
-/* Excluded from this release type: SrvPollerOptions */
-
-/* Excluded from this release type: SrvPollingEvent */
-
-/* Excluded from this release type: StateMachineExecutable */
-
-/** @public */
-export declare type Stream = Socket | TLSSocket;
-
-/** @public */
-export declare class StreamDescription {
-    address: string;
-    type: string;
-    minWireVersion?: number;
-    maxWireVersion?: number;
-    maxBsonObjectSize: number;
-    maxMessageSizeBytes: number;
-    maxWriteBatchSize: number;
-    compressors: CompressorName[];
-    compressor?: CompressorName;
-    logicalSessionTimeoutMinutes?: number;
-    loadBalanced: boolean;
-    __nodejs_mock_server__?: boolean;
-    zlibCompressionLevel?: number;
-    constructor(address: string, options?: StreamDescriptionOptions);
-    receiveResponse(response: Document | null): void;
-}
-
-/** @public */
-export declare interface StreamDescriptionOptions {
-    compressors?: CompressorName[];
-    logicalSessionTimeoutMinutes?: number;
-    loadBalanced: boolean;
-}
-
-/**
- * @public
- * @experimental
- */
-export declare type StrictFilter<TSchema> = Partial<TSchema> | ({
-    [Property in Join<NestedPaths<WithId<TSchema>, []>, '.'>]?: Condition<PropertyType<WithId<TSchema>, Property>>;
-} & RootFilterOperators<WithId<TSchema>>);
-
-/**
- * @public
- * @experimental
- */
-export declare type StrictMatchKeysAndValues<TSchema> = Readonly<{
-    [Property in Join<NestedPaths<TSchema, []>, '.'>]?: PropertyType<TSchema, Property>;
-} & {
-    [Property in `${NestedPathsOfType<TSchema, any[]>}.$${`[${string}]` | ''}`]?: ArrayElement<PropertyType<TSchema, Property extends `${infer Key}.$${string}` ? Key : never>>;
-} & {
-    [Property in `${NestedPathsOfType<TSchema, Record<string, any>[]>}.$${`[${string}]` | ''}.${string}`]?: any;
-} & Document>;
-
-/**
- * @public
- * @experimental
- */
-export declare type StrictUpdateFilter<TSchema> = {
-    $currentDate?: OnlyFieldsOfType<TSchema, Date | Timestamp, true | {
-        $type: 'date' | 'timestamp';
-    }>;
-    $inc?: OnlyFieldsOfType<TSchema, NumericType | undefined>;
-    $min?: StrictMatchKeysAndValues<TSchema>;
-    $max?: StrictMatchKeysAndValues<TSchema>;
-    $mul?: OnlyFieldsOfType<TSchema, NumericType | undefined>;
-    $rename?: Record<string, string>;
-    $set?: StrictMatchKeysAndValues<TSchema>;
-    $setOnInsert?: StrictMatchKeysAndValues<TSchema>;
-    $unset?: OnlyFieldsOfType<TSchema, any, '' | true | 1>;
-    $addToSet?: SetFields<TSchema>;
-    $pop?: OnlyFieldsOfType<TSchema, ReadonlyArray<any>, 1 | -1>;
-    $pull?: PullOperator<TSchema>;
-    $push?: PushOperator<TSchema>;
-    $pullAll?: PullAllOperator<TSchema>;
-    $bit?: OnlyFieldsOfType<TSchema, NumericType | undefined, {
-        and: IntegerType;
-    } | {
-        or: IntegerType;
-    } | {
-        xor: IntegerType;
-    }>;
-} & Document;
-
-/** @public */
-export declare type SupportedNodeConnectionOptions = SupportedTLSConnectionOptions & SupportedTLSSocketOptions & SupportedSocketOptions;
-
-/** @public */
-export declare type SupportedSocketOptions = Pick<TcpNetConnectOpts, (typeof LEGAL_TCP_SOCKET_OPTIONS)[number]>;
-
-/** @public */
-export declare type SupportedTLSConnectionOptions = Pick<ConnectionOptions_2, Extract<keyof ConnectionOptions_2, (typeof LEGAL_TLS_SOCKET_OPTIONS)[number]>>;
-
-/** @public */
-export declare type SupportedTLSSocketOptions = Pick<TLSSocketOptions, Extract<keyof TLSSocketOptions, (typeof LEGAL_TLS_SOCKET_OPTIONS)[number]>>;
-
-/** @public */
-export declare type TagSet = {
-    [key: string]: string;
-};
-
-/* Excluded from this release type: TimeoutController */
-
-/* Excluded from this release type: TimerQueue */
-
-/** @public
- * Configuration options for timeseries collections
- * @see https://www.mongodb.com/docs/manual/core/timeseries-collections/
- */
-export declare interface TimeSeriesCollectionOptions extends Document {
-    timeField: string;
-    metaField?: string;
-    granularity?: 'seconds' | 'minutes' | 'hours' | string;
-    bucketMaxSpanSeconds?: number;
-    bucketRoundingSeconds?: number;
-}
-
-export { Timestamp }
-
-/* Excluded from this release type: Topology */
-
-/**
- * Emitted when topology is closed.
- * @public
- * @category Event
- */
-export declare class TopologyClosedEvent {
-    /** A unique identifier for the topology */
-    topologyId: number;
-    /* Excluded from this release type: __constructor */
-}
-
-/**
- * Representation of a deployment of servers
- * @public
- */
-export declare class TopologyDescription {
-    type: TopologyType;
-    setName: string | null;
-    maxSetVersion: number | null;
-    maxElectionId: ObjectId | null;
-    servers: Map<string, ServerDescription>;
-    stale: boolean;
-    compatible: boolean;
-    compatibilityError?: string;
-    logicalSessionTimeoutMinutes: number | null;
-    heartbeatFrequencyMS: number;
-    localThresholdMS: number;
-    commonWireVersion: number;
-    /**
-     * Create a TopologyDescription
-     */
-    constructor(topologyType: TopologyType, serverDescriptions?: Map<string, ServerDescription> | null, setName?: string | null, maxSetVersion?: number | null, maxElectionId?: ObjectId | null, commonWireVersion?: number | null, options?: TopologyDescriptionOptions | null);
-    /* Excluded from this release type: updateFromSrvPollingEvent */
-    /* Excluded from this release type: update */
-    get error(): MongoServerError | null;
-    /**
-     * Determines if the topology description has any known servers
-     */
-    get hasKnownServers(): boolean;
-    /**
-     * Determines if this topology description has a data-bearing server available.
-     */
-    get hasDataBearingServers(): boolean;
-    /* Excluded from this release type: hasServer */
-}
-
-/**
- * Emitted when topology description changes.
- * @public
- * @category Event
- */
-export declare class TopologyDescriptionChangedEvent {
-    /** A unique identifier for the topology */
-    topologyId: number;
-    /** The old topology description */
-    previousDescription: TopologyDescription;
-    /** The new topology description */
-    newDescription: TopologyDescription;
-    /* Excluded from this release type: __constructor */
-}
-
-/** @public */
-export declare interface TopologyDescriptionOptions {
-    heartbeatFrequencyMS?: number;
-    localThresholdMS?: number;
-}
-
-/** @public */
-export declare type TopologyEvents = {
-    /* Excluded from this release type: connect */
-    serverOpening(event: ServerOpeningEvent): void;
-    serverClosed(event: ServerClosedEvent): void;
-    serverDescriptionChanged(event: ServerDescriptionChangedEvent): void;
-    topologyClosed(event: TopologyClosedEvent): void;
-    topologyOpening(event: TopologyOpeningEvent): void;
-    topologyDescriptionChanged(event: TopologyDescriptionChangedEvent): void;
-    error(error: Error): void;
-    /* Excluded from this release type: open */
-    close(): void;
-    timeout(): void;
-} & Omit<ServerEvents, 'connect'> & ConnectionPoolEvents & ConnectionEvents & EventEmitterWithState;
-
-/**
- * Emitted when topology is initialized.
- * @public
- * @category Event
- */
-export declare class TopologyOpeningEvent {
-    /** A unique identifier for the topology */
-    topologyId: number;
-    /* Excluded from this release type: __constructor */
-}
-
-/* Excluded from this release type: TopologyOptions */
-
-/* Excluded from this release type: TopologyPrivate */
-
-/**
- * An enumeration of topology types we know about
- * @public
- */
-export declare const TopologyType: Readonly<{
-    readonly Single: "Single";
-    readonly ReplicaSetNoPrimary: "ReplicaSetNoPrimary";
-    readonly ReplicaSetWithPrimary: "ReplicaSetWithPrimary";
-    readonly Sharded: "Sharded";
-    readonly Unknown: "Unknown";
-    readonly LoadBalanced: "LoadBalanced";
-}>;
-
-/** @public */
-export declare type TopologyType = (typeof TopologyType)[keyof typeof TopologyType];
-
-/** @public */
-export declare interface TopologyVersion {
-    processId: ObjectId;
-    counter: Long;
-}
-
-/**
- * @public
- * A class maintaining state related to a server transaction. Internal Only
- */
-export declare class Transaction {
-    /* Excluded from this release type: state */
-    options: TransactionOptions;
-    /* Excluded from this release type: _pinnedServer */
-    /* Excluded from this release type: _recoveryToken */
-    /* Excluded from this release type: __constructor */
-    /* Excluded from this release type: server */
-    get recoveryToken(): Document | undefined;
-    get isPinned(): boolean;
-    /** @returns Whether the transaction has started */
-    get isStarting(): boolean;
-    /**
-     * @returns Whether this session is presently in a transaction
-     */
-    get isActive(): boolean;
-    get isCommitted(): boolean;
-    /* Excluded from this release type: transition */
-    /* Excluded from this release type: pinServer */
-    /* Excluded from this release type: unpinServer */
-}
-
-/**
- * Configuration options for a transaction.
- * @public
- */
-export declare interface TransactionOptions extends CommandOperationOptions {
-    /** A default read concern for commands in this transaction */
-    readConcern?: ReadConcernLike;
-    /** A default writeConcern for commands in this transaction */
-    writeConcern?: WriteConcern;
-    /** A default read preference for commands in this transaction */
-    readPreference?: ReadPreferenceLike;
-    /** Specifies the maximum amount of time to allow a commit action on a transaction to run in milliseconds */
-    maxCommitTimeMS?: number;
-}
-
-/* Excluded from this release type: TxnState */
-
-/**
- * Typescript type safe event emitter
- * @public
- */
-export declare interface TypedEventEmitter<Events extends EventsDescription> extends EventEmitter {
-    addListener<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-    addListener(event: CommonEvents, listener: (eventName: string | symbol, listener: GenericListener) => void): this;
-    addListener(event: string | symbol, listener: GenericListener): this;
-    on<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-    on(event: CommonEvents, listener: (eventName: string | symbol, listener: GenericListener) => void): this;
-    on(event: string | symbol, listener: GenericListener): this;
-    once<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-    once(event: CommonEvents, listener: (eventName: string | symbol, listener: GenericListener) => void): this;
-    once(event: string | symbol, listener: GenericListener): this;
-    removeListener<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-    removeListener(event: CommonEvents, listener: (eventName: string | symbol, listener: GenericListener) => void): this;
-    removeListener(event: string | symbol, listener: GenericListener): this;
-    off<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-    off(event: CommonEvents, listener: (eventName: string | symbol, listener: GenericListener) => void): this;
-    off(event: string | symbol, listener: GenericListener): this;
-    removeAllListeners<EventKey extends keyof Events>(event?: EventKey | CommonEvents | symbol | string): this;
-    listeners<EventKey extends keyof Events>(event: EventKey | CommonEvents | symbol | string): Events[EventKey][];
-    rawListeners<EventKey extends keyof Events>(event: EventKey | CommonEvents | symbol | string): Events[EventKey][];
-    emit<EventKey extends keyof Events>(event: EventKey | symbol, ...args: Parameters<Events[EventKey]>): boolean;
-    listenerCount<EventKey extends keyof Events>(type: EventKey | CommonEvents | symbol | string): number;
-    prependListener<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-    prependListener(event: CommonEvents, listener: (eventName: string | symbol, listener: GenericListener) => void): this;
-    prependListener(event: string | symbol, listener: GenericListener): this;
-    prependOnceListener<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-    prependOnceListener(event: CommonEvents, listener: (eventName: string | symbol, listener: GenericListener) => void): this;
-    prependOnceListener(event: string | symbol, listener: GenericListener): this;
-    eventNames(): string[];
-    getMaxListeners(): number;
-    setMaxListeners(n: number): this;
-}
-
-/**
- * Typescript type safe event emitter
- * @public
- */
-export declare class TypedEventEmitter<Events extends EventsDescription> extends EventEmitter {
-    /* Excluded from this release type: mongoLogger */
-    /* Excluded from this release type: component */
-    /* Excluded from this release type: emitAndLog */
-}
-
-/** @public */
-export declare class UnorderedBulkOperation extends BulkOperationBase {
-    /* Excluded from this release type: __constructor */
-    handleWriteError(callback: Callback, writeResult: BulkWriteResult): boolean;
-    addToOperationsList(batchType: BatchType, document: Document | UpdateStatement | DeleteStatement): this;
-}
-
-/** @public */
-export declare interface UpdateDescription<TSchema extends Document = Document> {
-    /**
-     * A document containing key:value pairs of names of the fields that were
-     * changed, and the new value for those fields.
-     */
-    updatedFields?: Partial<TSchema>;
-    /**
-     * An array of field names that were removed from the document.
-     */
-    removedFields?: string[];
-    /**
-     * An array of documents which record array truncations performed with pipeline-based updates using one or more of the following stages:
-     * - $addFields
-     * - $set
-     * - $replaceRoot
-     * - $replaceWith
-     */
-    truncatedArrays?: Array<{
-        /** The name of the truncated field. */
-        field: string;
-        /** The number of elements in the truncated array. */
-        newSize: number;
-    }>;
-    /**
-     * A document containing additional information about any ambiguous update paths from the update event.  The document
-     * maps the full ambiguous update path to an array containing the actual resolved components of the path.  For example,
-     * given a document shaped like `{ a: { '0': 0 } }`, and an update of `{ $inc: 'a.0' }`, disambiguated paths would look like
-     * the following:
-     *
-     * ```
-     *   {
-     *     'a.0': ['a', '0']
-     *   }
-     * ```
-     *
-     * This field is only present when there are ambiguous paths that are updated as a part of the update event and `showExpandedEvents`
-     * is enabled for the change stream.
-     * @sinceServerVersion 6.1.0
-     */
-    disambiguatedPaths?: Document;
-}
-
-/** @public */
-export declare type UpdateFilter<TSchema> = {
-    $currentDate?: OnlyFieldsOfType<TSchema, Date | Timestamp, true | {
-        $type: 'date' | 'timestamp';
-    }>;
-    $inc?: OnlyFieldsOfType<TSchema, NumericType | undefined>;
-    $min?: MatchKeysAndValues<TSchema>;
-    $max?: MatchKeysAndValues<TSchema>;
-    $mul?: OnlyFieldsOfType<TSchema, NumericType | undefined>;
-    $rename?: Record<string, string>;
-    $set?: MatchKeysAndValues<TSchema>;
-    $setOnInsert?: MatchKeysAndValues<TSchema>;
-    $unset?: OnlyFieldsOfType<TSchema, any, '' | true | 1>;
-    $addToSet?: SetFields<TSchema>;
-    $pop?: OnlyFieldsOfType<TSchema, ReadonlyArray<any>, 1 | -1>;
-    $pull?: PullOperator<TSchema>;
-    $push?: PushOperator<TSchema>;
-    $pullAll?: PullAllOperator<TSchema>;
-    $bit?: OnlyFieldsOfType<TSchema, NumericType | undefined, {
-        and: IntegerType;
-    } | {
-        or: IntegerType;
-    } | {
-        xor: IntegerType;
-    }>;
-} & Document;
-
-/** @public */
-export declare interface UpdateManyModel<TSchema extends Document = Document> {
-    /** The filter to limit the updated documents. */
-    filter: Filter<TSchema>;
-    /** A document or pipeline containing update operators. */
-    update: UpdateFilter<TSchema> | UpdateFilter<TSchema>[];
-    /** A set of filters specifying to which array elements an update should apply. */
-    arrayFilters?: Document[];
-    /** Specifies a collation. */
-    collation?: CollationOptions;
-    /** The index to use. If specified, then the query system will only consider plans using the hinted index. */
-    hint?: Hint;
-    /** When true, creates a new document if no document matches the query. */
-    upsert?: boolean;
-}
-
-/** @public */
-export declare interface UpdateOneModel<TSchema extends Document = Document> {
-    /** The filter to limit the updated documents. */
-    filter: Filter<TSchema>;
-    /** A document or pipeline containing update operators. */
-    update: UpdateFilter<TSchema> | UpdateFilter<TSchema>[];
-    /** A set of filters specifying to which array elements an update should apply. */
-    arrayFilters?: Document[];
-    /** Specifies a collation. */
-    collation?: CollationOptions;
-    /** The index to use. If specified, then the query system will only consider plans using the hinted index. */
-    hint?: Hint;
-    /** When true, creates a new document if no document matches the query. */
-    upsert?: boolean;
-}
-
-/** @public */
-export declare interface UpdateOptions extends CommandOperationOptions {
-    /** A set of filters specifying to which array elements an update should apply */
-    arrayFilters?: Document[];
-    /** If true, allows the write to opt-out of document level validation */
-    bypassDocumentValidation?: boolean;
-    /** Specifies a collation */
-    collation?: CollationOptions;
-    /** Specify that the update query should only consider plans using the hinted index */
-    hint?: Hint;
-    /** When true, creates a new document if no document matches the query */
-    upsert?: boolean;
-    /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-    let?: Document;
-}
-
-/**
- * @public
- * `TSchema` is the schema of the collection
- */
-export declare interface UpdateResult<TSchema extends Document = Document> {
-    /** Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined */
-    acknowledged: boolean;
-    /** The number of documents that matched the filter */
-    matchedCount: number;
-    /** The number of documents that were modified */
-    modifiedCount: number;
-    /** The number of documents that were upserted */
-    upsertedCount: number;
-    /** The identifier of the inserted document if an upsert took place */
-    upsertedId: InferIdType<TSchema> | null;
-}
-
-/** @public */
-export declare interface UpdateStatement {
-    /** The query that matches documents to update. */
-    q: Document;
-    /** The modifications to apply. */
-    u: Document | Document[];
-    /**  If true, perform an insert if no documents match the query. */
-    upsert?: boolean;
-    /** If true, updates all documents that meet the query criteria. */
-    multi?: boolean;
-    /** Specifies the collation to use for the operation. */
-    collation?: CollationOptions;
-    /** An array of filter documents that determines which array elements to modify for an update operation on an array field. */
-    arrayFilters?: Document[];
-    /** A document or string that specifies the index to use to support the query predicate. */
-    hint?: Hint;
-}
-
-export { UUID }
-
-/** @public */
-export declare interface ValidateCollectionOptions extends CommandOperationOptions {
-    /** Validates a collection in the background, without interrupting read or write traffic (only in MongoDB 4.4+) */
-    background?: boolean;
-}
-
-/** @public */
-export declare type W = number | 'majority';
-
-/* Excluded from this release type: WaitQueueMember */
-
-/* Excluded from this release type: WithConnectionCallback */
-
-/** Add an _id field to an object shaped type @public */
-export declare type WithId<TSchema> = EnhancedOmit<TSchema, '_id'> & {
-    _id: InferIdType<TSchema>;
-};
-
-/** Remove the _id field from an object shaped type @public */
-export declare type WithoutId<TSchema> = Omit<TSchema, '_id'>;
-
-/** @public */
-export declare type WithSessionCallback<T = unknown> = (session: ClientSession) => Promise<T>;
-
-/** @public */
-export declare type WithTransactionCallback<T = any> = (session: ClientSession) => Promise<T>;
-
-/* Excluded from this release type: writeCommand */
-
-/**
- * A MongoDB WriteConcern, which describes the level of acknowledgement
- * requested from MongoDB for write operations.
- * @public
- *
- * @see https://www.mongodb.com/docs/manual/reference/write-concern/
- */
-export declare class WriteConcern {
-    /** Request acknowledgment that the write operation has propagated to a specified number of mongod instances or to mongod instances with specified tags. */
-    readonly w?: W;
-    /** Request acknowledgment that the write operation has been written to the on-disk journal */
-    readonly journal?: boolean;
-    /** Specify a time limit to prevent write operations from blocking indefinitely */
-    readonly wtimeoutMS?: number;
-    /**
-     * Specify a time limit to prevent write operations from blocking indefinitely.
-     * @deprecated Will be removed in the next major version. Please use wtimeoutMS.
-     */
-    wtimeout?: number;
-    /**
-     * Request acknowledgment that the write operation has been written to the on-disk journal.
-     * @deprecated Will be removed in the next major version. Please use journal.
-     */
-    j?: boolean;
-    /**
-     * Equivalent to the j option.
-     * @deprecated Will be removed in the next major version. Please use journal.
-     */
-    fsync?: boolean | 1;
-    /**
-     * Constructs a WriteConcern from the write concern properties.
-     * @param w - request acknowledgment that the write operation has propagated to a specified number of mongod instances or to mongod instances with specified tags.
-     * @param wtimeoutMS - specify a time limit to prevent write operations from blocking indefinitely
-     * @param journal - request acknowledgment that the write operation has been written to the on-disk journal
-     * @param fsync - equivalent to the j option. Is deprecated and will be removed in the next major version.
-     */
-    constructor(w?: W, wtimeoutMS?: number, journal?: boolean, fsync?: boolean | 1);
-    /**
-     * Apply a write concern to a command document. Will modify and return the command.
-     */
-    static apply(command: Document, writeConcern: WriteConcern): Document;
-    /** Construct a WriteConcern given an options object. */
-    static fromOptions(options?: WriteConcernOptions | WriteConcern | W, inherit?: WriteConcernOptions | WriteConcern): WriteConcern | undefined;
-}
-
-/**
- * An error representing a failure by the server to apply the requested write concern to the bulk operation.
- * @public
- * @category Error
- */
-export declare class WriteConcernError {
-    /* Excluded from this release type: [kServerError] */
-    constructor(error: WriteConcernErrorData);
-    /** Write concern error code. */
-    get code(): number | undefined;
-    /** Write concern error message. */
-    get errmsg(): string | undefined;
-    /** Write concern error info. */
-    get errInfo(): Document | undefined;
-    toJSON(): WriteConcernErrorData;
-    toString(): string;
-}
-
-/** @public */
-export declare interface WriteConcernErrorData {
-    code: number;
-    errmsg: string;
-    errInfo?: Document;
-}
-
-/** @public */
-export declare interface WriteConcernOptions {
-    /** Write Concern as an object */
-    writeConcern?: WriteConcern | WriteConcernSettings;
-}
-
-/** @public */
-export declare interface WriteConcernSettings {
-    /** The write concern */
-    w?: W;
-    /** The write concern timeout */
-    wtimeoutMS?: number;
-    /** The journal write concern */
-    journal?: boolean;
-    /**
-     * The journal write concern.
-     * @deprecated Will be removed in the next major version. Please use the journal option.
-     */
-    j?: boolean;
-    /**
-     * The write concern timeout.
-     * @deprecated Will be removed in the next major version. Please use the wtimeoutMS option.
-     */
-    wtimeout?: number;
-    /**
-     * The file sync write concern.
-     * @deprecated Will be removed in the next major version. Please use the journal option.
-     */
-    fsync?: boolean | 1;
-}
-
-/**
- * An error that occurred during a BulkWrite on the server.
- * @public
- * @category Error
- */
-export declare class WriteError {
-    err: BulkWriteOperationError;
-    constructor(err: BulkWriteOperationError);
-    /** WriteError code. */
-    get code(): number;
-    /** WriteError original bulk operation index. */
-    get index(): number;
-    /** WriteError message. */
-    get errmsg(): string | undefined;
-    /** WriteError details. */
-    get errInfo(): Document | undefined;
-    /** Returns the underlying operation that caused the error */
-    getOperation(): Document;
-    toJSON(): {
-        code: number;
-        index: number;
-        errmsg?: string;
-        op: Document;
-    };
-    toString(): string;
-}
-
-/* Excluded from this release type: WriteProtocolMessageType */
-
-export { }
diff --git a/server/data-import/node_modules/mongodb/package.json b/server/data-import/node_modules/mongodb/package.json
deleted file mode 100644
index c0ea6923d34f59be222163829e29938ec549b2e7..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/package.json
+++ /dev/null
@@ -1,174 +0,0 @@
-{
-  "name": "mongodb",
-  "version": "6.3.0",
-  "description": "The official MongoDB driver for Node.js",
-  "main": "lib/index.js",
-  "files": [
-    "lib",
-    "src",
-    "etc/prepare.js",
-    "mongodb.d.ts",
-    "tsconfig.json"
-  ],
-  "types": "mongodb.d.ts",
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:mongodb/node-mongodb-native.git"
-  },
-  "keywords": [
-    "mongodb",
-    "driver",
-    "official"
-  ],
-  "author": {
-    "name": "The MongoDB NodeJS Team",
-    "email": "dbx-node@mongodb.com"
-  },
-  "dependencies": {
-    "@mongodb-js/saslprep": "^1.1.0",
-    "bson": "^6.2.0",
-    "mongodb-connection-string-url": "^3.0.0"
-  },
-  "peerDependencies": {
-    "@aws-sdk/credential-providers": "^3.188.0",
-    "@mongodb-js/zstd": "^1.1.0",
-    "gcp-metadata": "^5.2.0",
-    "kerberos": "^2.0.1",
-    "mongodb-client-encryption": ">=6.0.0 <7",
-    "snappy": "^7.2.2",
-    "socks": "^2.7.1"
-  },
-  "peerDependenciesMeta": {
-    "@aws-sdk/credential-providers": {
-      "optional": true
-    },
-    "@mongodb-js/zstd": {
-      "optional": true
-    },
-    "kerberos": {
-      "optional": true
-    },
-    "snappy": {
-      "optional": true
-    },
-    "mongodb-client-encryption": {
-      "optional": true
-    },
-    "gcp-metadata": {
-      "optional": true
-    },
-    "socks": {
-      "optional": true
-    }
-  },
-  "devDependencies": {
-    "@iarna/toml": "^2.2.5",
-    "@istanbuljs/nyc-config-typescript": "^1.0.2",
-    "@microsoft/api-extractor": "^7.36.4",
-    "@microsoft/tsdoc-config": "^0.16.2",
-    "@mongodb-js/zstd": "^1.1.0",
-    "@octokit/core": "^4.2.4",
-    "@types/chai": "^4.3.5",
-    "@types/chai-subset": "^1.3.3",
-    "@types/express": "^4.17.17",
-    "@types/kerberos": "^1.1.2",
-    "@types/mocha": "^10.0.1",
-    "@types/node": "^20.5.9",
-    "@types/saslprep": "^1.0.1",
-    "@types/semver": "^7.5.0",
-    "@types/sinon": "^10.0.16",
-    "@types/sinon-chai": "^3.2.9",
-    "@types/whatwg-url": "^11.0.0",
-    "@typescript-eslint/eslint-plugin": "^5.62.0",
-    "@typescript-eslint/parser": "^5.62.0",
-    "chai": "^4.3.7",
-    "chai-subset": "^1.6.0",
-    "chalk": "^4.1.2",
-    "eslint": "^8.48.0",
-    "eslint-config-prettier": "^8.10.0",
-    "eslint-plugin-import": "^2.28.1",
-    "eslint-plugin-prettier": "^4.2.1",
-    "eslint-plugin-simple-import-sort": "^10.0.0",
-    "eslint-plugin-tsdoc": "^0.2.17",
-    "eslint-plugin-unused-imports": "^2.0.0",
-    "express": "^4.18.2",
-    "gcp-metadata": "^5.2.0",
-    "js-yaml": "^4.1.0",
-    "mocha": "^10.2.0",
-    "mocha-sinon": "^2.1.2",
-    "mongodb-client-encryption": "^6.0.0",
-    "mongodb-legacy": "^6.0.0",
-    "nyc": "^15.1.0",
-    "prettier": "^2.8.8",
-    "semver": "^7.5.4",
-    "sinon": "^15.2.0",
-    "sinon-chai": "^3.7.0",
-    "snappy": "^7.2.2",
-    "socks": "^2.7.1",
-    "source-map-support": "^0.5.21",
-    "ts-node": "^10.9.1",
-    "tsd": "^0.28.1",
-    "typescript": "^5.0.4",
-    "typescript-cached-transpile": "^0.0.6",
-    "v8-heapsnapshot": "^1.3.1",
-    "yargs": "^17.7.2"
-  },
-  "license": "Apache-2.0",
-  "engines": {
-    "node": ">=16.20.1"
-  },
-  "bugs": {
-    "url": "https://jira.mongodb.org/projects/NODE/issues/"
-  },
-  "homepage": "https://github.com/mongodb/node-mongodb-native",
-  "scripts": {
-    "build:evergreen": "node .evergreen/generate_evergreen_tasks.js",
-    "build:ts": "node ./node_modules/typescript/bin/tsc",
-    "build:dts": "npm run build:ts && api-extractor run && node etc/clean_definition_files.cjs && eslint mongodb.d.ts --fix",
-    "build:docs": "./etc/docs/build.ts",
-    "build:typedoc": "typedoc",
-    "build:nightly": "node ./.github/scripts/nightly.mjs",
-    "check:bench": "node test/benchmarks/driverBench",
-    "check:coverage": "nyc npm run test:all",
-    "check:integration-coverage": "nyc npm run check:test",
-    "check:lambda": "mocha --config test/mocha_lambda.json test/integration/node-specific/examples/handler.test.js",
-    "check:lambda:aws": "mocha --config test/mocha_lambda.json test/integration/node-specific/examples/aws_handler.test.js",
-    "check:lint": "npm run build:dts && npm run check:dts && npm run check:eslint && npm run check:tsd",
-    "check:eslint": "eslint -v && eslint --max-warnings=0 --ext '.js,.ts' src test",
-    "check:tsd": "tsd --version && tsd",
-    "check:dependencies": "mocha test/action/dependency.test.ts",
-    "check:dts": "node ./node_modules/typescript/bin/tsc --noEmit mongodb.d.ts && tsd",
-    "check:search-indexes": "nyc mocha --config test/mocha_mongodb.json test/manual/search-index-management.prose.test.ts",
-    "check:test": "mocha --config test/mocha_mongodb.json test/integration",
-    "check:unit": "mocha test/unit",
-    "check:ts": "node ./node_modules/typescript/bin/tsc -v && node ./node_modules/typescript/bin/tsc --noEmit",
-    "check:atlas": "mocha --config test/manual/mocharc.json test/manual/atlas_connectivity.test.js",
-    "check:drivers-atlas-testing": "mocha --config test/mocha_mongodb.json test/atlas/drivers_atlas_testing.test.ts",
-    "check:adl": "mocha --config test/mocha_mongodb.json test/manual/atlas-data-lake-testing",
-    "check:aws": "nyc mocha --config test/mocha_mongodb.json test/integration/auth/mongodb_aws.test.ts",
-    "check:oidc": "mocha --config test/mocha_mongodb.json test/manual/mongodb_oidc.prose.test.ts",
-    "check:oidc-azure": "mocha --config test/mocha_mongodb.json test/integration/auth/mongodb_oidc_azure.prose.test.ts",
-    "check:ocsp": "mocha --config test/manual/mocharc.json test/manual/ocsp_support.test.js",
-    "check:kerberos": "nyc mocha --config test/manual/mocharc.json test/manual/kerberos.test.ts",
-    "check:tls": "mocha --config test/manual/mocharc.json test/manual/tls_support.test.ts",
-    "check:ldap": "nyc mocha --config test/manual/mocharc.json test/manual/ldap.test.js",
-    "check:socks5": "mocha --config test/manual/mocharc.json test/manual/socks5.test.ts",
-    "check:csfle": "mocha --config test/mocha_mongodb.json test/integration/client-side-encryption",
-    "check:snappy": "mocha test/unit/assorted/snappy.test.js",
-    "fix:eslint": "npm run check:eslint -- --fix",
-    "prepare": "node etc/prepare.js",
-    "preview:docs": "ts-node etc/docs/preview.ts",
-    "test": "npm run check:lint && npm run test:all",
-    "test:all": "npm run check:unit && npm run check:test",
-    "update:docs": "npm run build:docs -- --yes"
-  },
-  "tsd": {
-    "directory": "test/types",
-    "compilerOptions": {
-      "strict": true,
-      "target": "esnext",
-      "module": "commonjs",
-      "moduleResolution": "node"
-    }
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/admin.ts b/server/data-import/node_modules/mongodb/src/admin.ts
deleted file mode 100644
index 28efb5cd43cdc9161b01e0e355d9dc03b30d346a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/admin.ts
+++ /dev/null
@@ -1,168 +0,0 @@
-import { type Document, resolveBSONOptions } from './bson';
-import type { Db } from './db';
-import type { CommandOperationOptions } from './operations/command';
-import { executeOperation } from './operations/execute_operation';
-import {
-  ListDatabasesOperation,
-  type ListDatabasesOptions,
-  type ListDatabasesResult
-} from './operations/list_databases';
-import { RemoveUserOperation, type RemoveUserOptions } from './operations/remove_user';
-import { RunAdminCommandOperation, type RunCommandOptions } from './operations/run_command';
-import {
-  ValidateCollectionOperation,
-  type ValidateCollectionOptions
-} from './operations/validate_collection';
-
-/** @internal */
-export interface AdminPrivate {
-  db: Db;
-}
-
-/**
- * The **Admin** class is an internal class that allows convenient access to
- * the admin functionality and commands for MongoDB.
- *
- * **ADMIN Cannot directly be instantiated**
- * @public
- *
- * @example
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * const client = new MongoClient('mongodb://localhost:27017');
- * const admin = client.db().admin();
- * const dbInfo = await admin.listDatabases();
- * for (const db of dbInfo.databases) {
- *   console.log(db.name);
- * }
- * ```
- */
-export class Admin {
-  /** @internal */
-  s: AdminPrivate;
-
-  /**
-   * Create a new Admin instance
-   * @internal
-   */
-  constructor(db: Db) {
-    this.s = { db };
-  }
-
-  /**
-   * Execute a command
-   *
-   * The driver will ensure the following fields are attached to the command sent to the server:
-   * - `lsid` - sourced from an implicit session or options.session
-   * - `$readPreference` - defaults to primary or can be configured by options.readPreference
-   * - `$db` - sourced from the name of this database
-   *
-   * If the client has a serverApi setting:
-   * - `apiVersion`
-   * - `apiStrict`
-   * - `apiDeprecationErrors`
-   *
-   * When in a transaction:
-   * - `readConcern` - sourced from readConcern set on the TransactionOptions
-   * - `writeConcern` - sourced from writeConcern set on the TransactionOptions
-   *
-   * Attaching any of the above fields to the command will have no effect as the driver will overwrite the value.
-   *
-   * @param command - The command to execute
-   * @param options - Optional settings for the command
-   */
-  async command(command: Document, options?: RunCommandOptions): Promise<Document> {
-    return executeOperation(
-      this.s.db.client,
-      new RunAdminCommandOperation(command, {
-        ...resolveBSONOptions(options),
-        session: options?.session,
-        readPreference: options?.readPreference
-      })
-    );
-  }
-
-  /**
-   * Retrieve the server build information
-   *
-   * @param options - Optional settings for the command
-   */
-  async buildInfo(options?: CommandOperationOptions): Promise<Document> {
-    return this.command({ buildinfo: 1 }, options);
-  }
-
-  /**
-   * Retrieve the server build information
-   *
-   * @param options - Optional settings for the command
-   */
-  async serverInfo(options?: CommandOperationOptions): Promise<Document> {
-    return this.command({ buildinfo: 1 }, options);
-  }
-
-  /**
-   * Retrieve this db's server status.
-   *
-   * @param options - Optional settings for the command
-   */
-  async serverStatus(options?: CommandOperationOptions): Promise<Document> {
-    return this.command({ serverStatus: 1 }, options);
-  }
-
-  /**
-   * Ping the MongoDB server and retrieve results
-   *
-   * @param options - Optional settings for the command
-   */
-  async ping(options?: CommandOperationOptions): Promise<Document> {
-    return this.command({ ping: 1 }, options);
-  }
-
-  /**
-   * Remove a user from a database
-   *
-   * @param username - The username to remove
-   * @param options - Optional settings for the command
-   */
-  async removeUser(username: string, options?: RemoveUserOptions): Promise<boolean> {
-    return executeOperation(
-      this.s.db.client,
-      new RemoveUserOperation(this.s.db, username, { dbName: 'admin', ...options })
-    );
-  }
-
-  /**
-   * Validate an existing collection
-   *
-   * @param collectionName - The name of the collection to validate.
-   * @param options - Optional settings for the command
-   */
-  async validateCollection(
-    collectionName: string,
-    options: ValidateCollectionOptions = {}
-  ): Promise<Document> {
-    return executeOperation(
-      this.s.db.client,
-      new ValidateCollectionOperation(this, collectionName, options)
-    );
-  }
-
-  /**
-   * List the available databases
-   *
-   * @param options - Optional settings for the command
-   */
-  async listDatabases(options?: ListDatabasesOptions): Promise<ListDatabasesResult> {
-    return executeOperation(this.s.db.client, new ListDatabasesOperation(this.s.db, options));
-  }
-
-  /**
-   * Get ReplicaSet status
-   *
-   * @param options - Optional settings for the command
-   */
-  async replSetGetStatus(options?: CommandOperationOptions): Promise<Document> {
-    return this.command({ replSetGetStatus: 1 }, options);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/bson.ts b/server/data-import/node_modules/mongodb/src/bson.ts
deleted file mode 100644
index 80c54360d7bf3bd0e3826509dd4e378041e0344a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/bson.ts
+++ /dev/null
@@ -1,118 +0,0 @@
-import type { DeserializeOptions, SerializeOptions } from 'bson';
-
-export {
-  Binary,
-  BSON,
-  BSONRegExp,
-  BSONSymbol,
-  BSONType,
-  calculateObjectSize,
-  Code,
-  DBRef,
-  Decimal128,
-  deserialize,
-  Document,
-  Double,
-  Int32,
-  Long,
-  MaxKey,
-  MinKey,
-  ObjectId,
-  serialize,
-  Timestamp,
-  UUID
-} from 'bson';
-
-/**
- * BSON Serialization options.
- * @public
- */
-export interface BSONSerializeOptions
-  extends Omit<SerializeOptions, 'index'>,
-    Omit<
-      DeserializeOptions,
-      | 'evalFunctions'
-      | 'cacheFunctions'
-      | 'cacheFunctionsCrc32'
-      | 'allowObjectSmallerThanBufferSize'
-      | 'index'
-      | 'validation'
-    > {
-  /**
-   * Enabling the raw option will return a [Node.js Buffer](https://nodejs.org/api/buffer.html)
-   * which is allocated using [allocUnsafe API](https://nodejs.org/api/buffer.html#static-method-bufferallocunsafesize).
-   * See this section from the [Node.js Docs here](https://nodejs.org/api/buffer.html#what-makes-bufferallocunsafe-and-bufferallocunsafeslow-unsafe)
-   * for more detail about what "unsafe" refers to in this context.
-   * If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate
-   * your own buffer and clone the contents:
-   *
-   * @example
-   * ```ts
-   * const raw = await collection.findOne({}, { raw: true });
-   * const myBuffer = Buffer.alloc(raw.byteLength);
-   * myBuffer.set(raw, 0);
-   * // Only save and use `myBuffer` beyond this point
-   * ```
-   *
-   * @remarks
-   * Please note there is a known limitation where this option cannot be used at the MongoClient level (see [NODE-3946](https://jira.mongodb.org/browse/NODE-3946)).
-   * It does correctly work at `Db`, `Collection`, and per operation the same as other BSON options work.
-   */
-  raw?: boolean;
-
-  /** Enable utf8 validation when deserializing BSON documents.  Defaults to true. */
-  enableUtf8Validation?: boolean;
-}
-
-export function pluckBSONSerializeOptions(options: BSONSerializeOptions): BSONSerializeOptions {
-  const {
-    fieldsAsRaw,
-    useBigInt64,
-    promoteValues,
-    promoteBuffers,
-    promoteLongs,
-    serializeFunctions,
-    ignoreUndefined,
-    bsonRegExp,
-    raw,
-    enableUtf8Validation
-  } = options;
-  return {
-    fieldsAsRaw,
-    useBigInt64,
-    promoteValues,
-    promoteBuffers,
-    promoteLongs,
-    serializeFunctions,
-    ignoreUndefined,
-    bsonRegExp,
-    raw,
-    enableUtf8Validation
-  };
-}
-
-/**
- * Merge the given BSONSerializeOptions, preferring options over the parent's options, and
- * substituting defaults for values not set.
- *
- * @internal
- */
-export function resolveBSONOptions(
-  options?: BSONSerializeOptions,
-  parent?: { bsonOptions?: BSONSerializeOptions }
-): BSONSerializeOptions {
-  const parentOptions = parent?.bsonOptions;
-  return {
-    raw: options?.raw ?? parentOptions?.raw ?? false,
-    useBigInt64: options?.useBigInt64 ?? parentOptions?.useBigInt64 ?? false,
-    promoteLongs: options?.promoteLongs ?? parentOptions?.promoteLongs ?? true,
-    promoteValues: options?.promoteValues ?? parentOptions?.promoteValues ?? true,
-    promoteBuffers: options?.promoteBuffers ?? parentOptions?.promoteBuffers ?? false,
-    ignoreUndefined: options?.ignoreUndefined ?? parentOptions?.ignoreUndefined ?? false,
-    bsonRegExp: options?.bsonRegExp ?? parentOptions?.bsonRegExp ?? false,
-    serializeFunctions: options?.serializeFunctions ?? parentOptions?.serializeFunctions ?? false,
-    fieldsAsRaw: options?.fieldsAsRaw ?? parentOptions?.fieldsAsRaw ?? {},
-    enableUtf8Validation:
-      options?.enableUtf8Validation ?? parentOptions?.enableUtf8Validation ?? true
-  };
-}
diff --git a/server/data-import/node_modules/mongodb/src/bulk/common.ts b/server/data-import/node_modules/mongodb/src/bulk/common.ts
deleted file mode 100644
index f7425c691bae82804854ad41641cc262e72811b7..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/bulk/common.ts
+++ /dev/null
@@ -1,1302 +0,0 @@
-import { promisify } from 'util';
-
-import { type BSONSerializeOptions, type Document, ObjectId, resolveBSONOptions } from '../bson';
-import type { Collection } from '../collection';
-import {
-  type AnyError,
-  MongoBatchReExecutionError,
-  MONGODB_ERROR_CODES,
-  MongoInvalidArgumentError,
-  MongoServerError,
-  MongoWriteConcernError
-} from '../error';
-import type { Filter, OneOrMore, OptionalId, UpdateFilter, WithoutId } from '../mongo_types';
-import type { CollationOptions, CommandOperationOptions } from '../operations/command';
-import { DeleteOperation, type DeleteStatement, makeDeleteStatement } from '../operations/delete';
-import { executeOperation } from '../operations/execute_operation';
-import { InsertOperation } from '../operations/insert';
-import { AbstractOperation, type Hint } from '../operations/operation';
-import { makeUpdateStatement, UpdateOperation, type UpdateStatement } from '../operations/update';
-import type { Server } from '../sdam/server';
-import type { Topology } from '../sdam/topology';
-import type { ClientSession } from '../sessions';
-import {
-  applyRetryableWrites,
-  type Callback,
-  getTopology,
-  hasAtomicOperators,
-  type MongoDBNamespace,
-  resolveOptions
-} from '../utils';
-import { WriteConcern } from '../write_concern';
-
-/** @internal */
-const kServerError = Symbol('serverError');
-
-/** @public */
-export const BatchType = Object.freeze({
-  INSERT: 1,
-  UPDATE: 2,
-  DELETE: 3
-} as const);
-
-/** @public */
-export type BatchType = (typeof BatchType)[keyof typeof BatchType];
-
-/** @public */
-export interface InsertOneModel<TSchema extends Document = Document> {
-  /** The document to insert. */
-  document: OptionalId<TSchema>;
-}
-
-/** @public */
-export interface DeleteOneModel<TSchema extends Document = Document> {
-  /** The filter to limit the deleted documents. */
-  filter: Filter<TSchema>;
-  /** Specifies a collation. */
-  collation?: CollationOptions;
-  /** The index to use. If specified, then the query system will only consider plans using the hinted index. */
-  hint?: Hint;
-}
-
-/** @public */
-export interface DeleteManyModel<TSchema extends Document = Document> {
-  /** The filter to limit the deleted documents. */
-  filter: Filter<TSchema>;
-  /** Specifies a collation. */
-  collation?: CollationOptions;
-  /** The index to use. If specified, then the query system will only consider plans using the hinted index. */
-  hint?: Hint;
-}
-
-/** @public */
-export interface ReplaceOneModel<TSchema extends Document = Document> {
-  /** The filter to limit the replaced document. */
-  filter: Filter<TSchema>;
-  /** The document with which to replace the matched document. */
-  replacement: WithoutId<TSchema>;
-  /** Specifies a collation. */
-  collation?: CollationOptions;
-  /** The index to use. If specified, then the query system will only consider plans using the hinted index. */
-  hint?: Hint;
-  /** When true, creates a new document if no document matches the query. */
-  upsert?: boolean;
-}
-
-/** @public */
-export interface UpdateOneModel<TSchema extends Document = Document> {
-  /** The filter to limit the updated documents. */
-  filter: Filter<TSchema>;
-  /** A document or pipeline containing update operators. */
-  update: UpdateFilter<TSchema> | UpdateFilter<TSchema>[];
-  /** A set of filters specifying to which array elements an update should apply. */
-  arrayFilters?: Document[];
-  /** Specifies a collation. */
-  collation?: CollationOptions;
-  /** The index to use. If specified, then the query system will only consider plans using the hinted index. */
-  hint?: Hint;
-  /** When true, creates a new document if no document matches the query. */
-  upsert?: boolean;
-}
-
-/** @public */
-export interface UpdateManyModel<TSchema extends Document = Document> {
-  /** The filter to limit the updated documents. */
-  filter: Filter<TSchema>;
-  /** A document or pipeline containing update operators. */
-  update: UpdateFilter<TSchema> | UpdateFilter<TSchema>[];
-  /** A set of filters specifying to which array elements an update should apply. */
-  arrayFilters?: Document[];
-  /** Specifies a collation. */
-  collation?: CollationOptions;
-  /** The index to use. If specified, then the query system will only consider plans using the hinted index. */
-  hint?: Hint;
-  /** When true, creates a new document if no document matches the query. */
-  upsert?: boolean;
-}
-
-/** @public */
-export type AnyBulkWriteOperation<TSchema extends Document = Document> =
-  | { insertOne: InsertOneModel<TSchema> }
-  | { replaceOne: ReplaceOneModel<TSchema> }
-  | { updateOne: UpdateOneModel<TSchema> }
-  | { updateMany: UpdateManyModel<TSchema> }
-  | { deleteOne: DeleteOneModel<TSchema> }
-  | { deleteMany: DeleteManyModel<TSchema> };
-
-/** @internal */
-export interface BulkResult {
-  ok: number;
-  writeErrors: WriteError[];
-  writeConcernErrors: WriteConcernError[];
-  insertedIds: Document[];
-  nInserted: number;
-  nUpserted: number;
-  nMatched: number;
-  nModified: number;
-  nRemoved: number;
-  upserted: Document[];
-}
-
-/**
- * Keeps the state of a unordered batch so we can rewrite the results
- * correctly after command execution
- *
- * @public
- */
-export class Batch<T = Document> {
-  originalZeroIndex: number;
-  currentIndex: number;
-  originalIndexes: number[];
-  batchType: BatchType;
-  operations: T[];
-  size: number;
-  sizeBytes: number;
-
-  constructor(batchType: BatchType, originalZeroIndex: number) {
-    this.originalZeroIndex = originalZeroIndex;
-    this.currentIndex = 0;
-    this.originalIndexes = [];
-    this.batchType = batchType;
-    this.operations = [];
-    this.size = 0;
-    this.sizeBytes = 0;
-  }
-}
-
-/**
- * @public
- * The result of a bulk write.
- */
-export class BulkWriteResult {
-  private readonly result: BulkResult;
-  /** Number of documents inserted. */
-  readonly insertedCount: number;
-  /** Number of documents matched for update. */
-  readonly matchedCount: number;
-  /** Number of documents modified. */
-  readonly modifiedCount: number;
-  /** Number of documents deleted. */
-  readonly deletedCount: number;
-  /** Number of documents upserted. */
-  readonly upsertedCount: number;
-  /** Upserted document generated Id's, hash key is the index of the originating operation */
-  readonly upsertedIds: { [key: number]: any };
-  /** Inserted document generated Id's, hash key is the index of the originating operation */
-  readonly insertedIds: { [key: number]: any };
-
-  private static generateIdMap(ids: Document[]): { [key: number]: any } {
-    const idMap: { [index: number]: any } = {};
-    for (const doc of ids) {
-      idMap[doc.index] = doc._id;
-    }
-    return idMap;
-  }
-
-  /**
-   * Create a new BulkWriteResult instance
-   * @internal
-   */
-  constructor(bulkResult: BulkResult, isOrdered: boolean) {
-    this.result = bulkResult;
-    this.insertedCount = this.result.nInserted ?? 0;
-    this.matchedCount = this.result.nMatched ?? 0;
-    this.modifiedCount = this.result.nModified ?? 0;
-    this.deletedCount = this.result.nRemoved ?? 0;
-    this.upsertedCount = this.result.upserted.length ?? 0;
-    this.upsertedIds = BulkWriteResult.generateIdMap(this.result.upserted);
-    this.insertedIds = BulkWriteResult.generateIdMap(
-      this.getSuccessfullyInsertedIds(bulkResult, isOrdered)
-    );
-    Object.defineProperty(this, 'result', { value: this.result, enumerable: false });
-  }
-
-  /** Evaluates to true if the bulk operation correctly executes */
-  get ok(): number {
-    return this.result.ok;
-  }
-
-  /**
-   * Returns document_ids that were actually inserted
-   * @internal
-   */
-  private getSuccessfullyInsertedIds(bulkResult: BulkResult, isOrdered: boolean): Document[] {
-    if (bulkResult.writeErrors.length === 0) return bulkResult.insertedIds;
-
-    if (isOrdered) {
-      return bulkResult.insertedIds.slice(0, bulkResult.writeErrors[0].index);
-    }
-
-    return bulkResult.insertedIds.filter(
-      ({ index }) => !bulkResult.writeErrors.some(writeError => index === writeError.index)
-    );
-  }
-
-  /** Returns the upserted id at the given index */
-  getUpsertedIdAt(index: number): Document | undefined {
-    return this.result.upserted[index];
-  }
-
-  /** Returns raw internal result */
-  getRawResponse(): Document {
-    return this.result;
-  }
-
-  /** Returns true if the bulk operation contains a write error */
-  hasWriteErrors(): boolean {
-    return this.result.writeErrors.length > 0;
-  }
-
-  /** Returns the number of write errors off the bulk operation */
-  getWriteErrorCount(): number {
-    return this.result.writeErrors.length;
-  }
-
-  /** Returns a specific write error object */
-  getWriteErrorAt(index: number): WriteError | undefined {
-    return index < this.result.writeErrors.length ? this.result.writeErrors[index] : undefined;
-  }
-
-  /** Retrieve all write errors */
-  getWriteErrors(): WriteError[] {
-    return this.result.writeErrors;
-  }
-
-  /** Retrieve the write concern error if one exists */
-  getWriteConcernError(): WriteConcernError | undefined {
-    if (this.result.writeConcernErrors.length === 0) {
-      return;
-    } else if (this.result.writeConcernErrors.length === 1) {
-      // Return the error
-      return this.result.writeConcernErrors[0];
-    } else {
-      // Combine the errors
-      let errmsg = '';
-      for (let i = 0; i < this.result.writeConcernErrors.length; i++) {
-        const err = this.result.writeConcernErrors[i];
-        errmsg = errmsg + err.errmsg;
-
-        // TODO: Something better
-        if (i === 0) errmsg = errmsg + ' and ';
-      }
-
-      return new WriteConcernError({ errmsg, code: MONGODB_ERROR_CODES.WriteConcernFailed });
-    }
-  }
-
-  toString(): string {
-    return `BulkWriteResult(${this.result})`;
-  }
-
-  isOk(): boolean {
-    return this.result.ok === 1;
-  }
-}
-
-/** @public */
-export interface WriteConcernErrorData {
-  code: number;
-  errmsg: string;
-  errInfo?: Document;
-}
-
-/**
- * An error representing a failure by the server to apply the requested write concern to the bulk operation.
- * @public
- * @category Error
- */
-export class WriteConcernError {
-  /** @internal */
-  [kServerError]: WriteConcernErrorData;
-
-  constructor(error: WriteConcernErrorData) {
-    this[kServerError] = error;
-  }
-
-  /** Write concern error code. */
-  get code(): number | undefined {
-    return this[kServerError].code;
-  }
-
-  /** Write concern error message. */
-  get errmsg(): string | undefined {
-    return this[kServerError].errmsg;
-  }
-
-  /** Write concern error info. */
-  get errInfo(): Document | undefined {
-    return this[kServerError].errInfo;
-  }
-
-  toJSON(): WriteConcernErrorData {
-    return this[kServerError];
-  }
-
-  toString(): string {
-    return `WriteConcernError(${this.errmsg})`;
-  }
-}
-
-/** @public */
-export interface BulkWriteOperationError {
-  index: number;
-  code: number;
-  errmsg: string;
-  errInfo: Document;
-  op: Document | UpdateStatement | DeleteStatement;
-}
-
-/**
- * An error that occurred during a BulkWrite on the server.
- * @public
- * @category Error
- */
-export class WriteError {
-  err: BulkWriteOperationError;
-
-  constructor(err: BulkWriteOperationError) {
-    this.err = err;
-  }
-
-  /** WriteError code. */
-  get code(): number {
-    return this.err.code;
-  }
-
-  /** WriteError original bulk operation index. */
-  get index(): number {
-    return this.err.index;
-  }
-
-  /** WriteError message. */
-  get errmsg(): string | undefined {
-    return this.err.errmsg;
-  }
-
-  /** WriteError details. */
-  get errInfo(): Document | undefined {
-    return this.err.errInfo;
-  }
-
-  /** Returns the underlying operation that caused the error */
-  getOperation(): Document {
-    return this.err.op;
-  }
-
-  toJSON(): { code: number; index: number; errmsg?: string; op: Document } {
-    return { code: this.err.code, index: this.err.index, errmsg: this.err.errmsg, op: this.err.op };
-  }
-
-  toString(): string {
-    return `WriteError(${JSON.stringify(this.toJSON())})`;
-  }
-}
-
-/** Merges results into shared data structure */
-export function mergeBatchResults(
-  batch: Batch,
-  bulkResult: BulkResult,
-  err?: AnyError,
-  result?: Document
-): void {
-  // If we have an error set the result to be the err object
-  if (err) {
-    result = err;
-  } else if (result && result.result) {
-    result = result.result;
-  }
-
-  if (result == null) {
-    return;
-  }
-
-  // Do we have a top level error stop processing and return
-  if (result.ok === 0 && bulkResult.ok === 1) {
-    bulkResult.ok = 0;
-
-    const writeError = {
-      index: 0,
-      code: result.code || 0,
-      errmsg: result.message,
-      errInfo: result.errInfo,
-      op: batch.operations[0]
-    };
-
-    bulkResult.writeErrors.push(new WriteError(writeError));
-    return;
-  } else if (result.ok === 0 && bulkResult.ok === 0) {
-    return;
-  }
-
-  // If we have an insert Batch type
-  if (isInsertBatch(batch) && result.n) {
-    bulkResult.nInserted = bulkResult.nInserted + result.n;
-  }
-
-  // If we have an insert Batch type
-  if (isDeleteBatch(batch) && result.n) {
-    bulkResult.nRemoved = bulkResult.nRemoved + result.n;
-  }
-
-  let nUpserted = 0;
-
-  // We have an array of upserted values, we need to rewrite the indexes
-  if (Array.isArray(result.upserted)) {
-    nUpserted = result.upserted.length;
-
-    for (let i = 0; i < result.upserted.length; i++) {
-      bulkResult.upserted.push({
-        index: result.upserted[i].index + batch.originalZeroIndex,
-        _id: result.upserted[i]._id
-      });
-    }
-  } else if (result.upserted) {
-    nUpserted = 1;
-
-    bulkResult.upserted.push({
-      index: batch.originalZeroIndex,
-      _id: result.upserted
-    });
-  }
-
-  // If we have an update Batch type
-  if (isUpdateBatch(batch) && result.n) {
-    const nModified = result.nModified;
-    bulkResult.nUpserted = bulkResult.nUpserted + nUpserted;
-    bulkResult.nMatched = bulkResult.nMatched + (result.n - nUpserted);
-
-    if (typeof nModified === 'number') {
-      bulkResult.nModified = bulkResult.nModified + nModified;
-    } else {
-      bulkResult.nModified = 0;
-    }
-  }
-
-  if (Array.isArray(result.writeErrors)) {
-    for (let i = 0; i < result.writeErrors.length; i++) {
-      const writeError = {
-        index: batch.originalIndexes[result.writeErrors[i].index],
-        code: result.writeErrors[i].code,
-        errmsg: result.writeErrors[i].errmsg,
-        errInfo: result.writeErrors[i].errInfo,
-        op: batch.operations[result.writeErrors[i].index]
-      };
-
-      bulkResult.writeErrors.push(new WriteError(writeError));
-    }
-  }
-
-  if (result.writeConcernError) {
-    bulkResult.writeConcernErrors.push(new WriteConcernError(result.writeConcernError));
-  }
-}
-
-function executeCommands(
-  bulkOperation: BulkOperationBase,
-  options: BulkWriteOptions,
-  callback: Callback<BulkWriteResult>
-) {
-  if (bulkOperation.s.batches.length === 0) {
-    return callback(
-      undefined,
-      new BulkWriteResult(bulkOperation.s.bulkResult, bulkOperation.isOrdered)
-    );
-  }
-
-  const batch = bulkOperation.s.batches.shift() as Batch;
-
-  function resultHandler(err?: AnyError, result?: Document) {
-    // Error is a driver related error not a bulk op error, return early
-    if (err && 'message' in err && !(err instanceof MongoWriteConcernError)) {
-      return callback(
-        new MongoBulkWriteError(
-          err,
-          new BulkWriteResult(bulkOperation.s.bulkResult, bulkOperation.isOrdered)
-        )
-      );
-    }
-
-    if (err instanceof MongoWriteConcernError) {
-      return handleMongoWriteConcernError(
-        batch,
-        bulkOperation.s.bulkResult,
-        bulkOperation.isOrdered,
-        err,
-        callback
-      );
-    }
-
-    // Merge the results together
-    mergeBatchResults(batch, bulkOperation.s.bulkResult, err, result);
-    const writeResult = new BulkWriteResult(bulkOperation.s.bulkResult, bulkOperation.isOrdered);
-    if (bulkOperation.handleWriteError(callback, writeResult)) return;
-
-    // Execute the next command in line
-    executeCommands(bulkOperation, options, callback);
-  }
-
-  const finalOptions = resolveOptions(bulkOperation, {
-    ...options,
-    ordered: bulkOperation.isOrdered
-  });
-
-  if (finalOptions.bypassDocumentValidation !== true) {
-    delete finalOptions.bypassDocumentValidation;
-  }
-
-  // Set an operationIf if provided
-  if (bulkOperation.operationId) {
-    resultHandler.operationId = bulkOperation.operationId;
-  }
-
-  // Is the bypassDocumentValidation options specific
-  if (bulkOperation.s.bypassDocumentValidation === true) {
-    finalOptions.bypassDocumentValidation = true;
-  }
-
-  // Is the checkKeys option disabled
-  if (bulkOperation.s.checkKeys === false) {
-    finalOptions.checkKeys = false;
-  }
-
-  if (finalOptions.retryWrites) {
-    if (isUpdateBatch(batch)) {
-      finalOptions.retryWrites = finalOptions.retryWrites && !batch.operations.some(op => op.multi);
-    }
-
-    if (isDeleteBatch(batch)) {
-      finalOptions.retryWrites =
-        finalOptions.retryWrites && !batch.operations.some(op => op.limit === 0);
-    }
-  }
-
-  try {
-    if (isInsertBatch(batch)) {
-      executeOperation(
-        bulkOperation.s.collection.client,
-        new InsertOperation(bulkOperation.s.namespace, batch.operations, finalOptions),
-        resultHandler
-      );
-    } else if (isUpdateBatch(batch)) {
-      executeOperation(
-        bulkOperation.s.collection.client,
-        new UpdateOperation(bulkOperation.s.namespace, batch.operations, finalOptions),
-        resultHandler
-      );
-    } else if (isDeleteBatch(batch)) {
-      executeOperation(
-        bulkOperation.s.collection.client,
-        new DeleteOperation(bulkOperation.s.namespace, batch.operations, finalOptions),
-        resultHandler
-      );
-    }
-  } catch (err) {
-    // Force top level error
-    err.ok = 0;
-    // Merge top level error and return
-    mergeBatchResults(batch, bulkOperation.s.bulkResult, err, undefined);
-    callback();
-  }
-}
-
-function handleMongoWriteConcernError(
-  batch: Batch,
-  bulkResult: BulkResult,
-  isOrdered: boolean,
-  err: MongoWriteConcernError,
-  callback: Callback<BulkWriteResult>
-) {
-  mergeBatchResults(batch, bulkResult, undefined, err.result);
-
-  callback(
-    new MongoBulkWriteError(
-      {
-        message: err.result?.writeConcernError.errmsg,
-        code: err.result?.writeConcernError.result
-      },
-      new BulkWriteResult(bulkResult, isOrdered)
-    )
-  );
-}
-
-/**
- * An error indicating an unsuccessful Bulk Write
- * @public
- * @category Error
- */
-export class MongoBulkWriteError extends MongoServerError {
-  result: BulkWriteResult;
-  writeErrors: OneOrMore<WriteError> = [];
-  err?: WriteConcernError;
-
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(
-    error:
-      | { message: string; code: number; writeErrors?: WriteError[] }
-      | WriteConcernError
-      | AnyError,
-    result: BulkWriteResult
-  ) {
-    super(error);
-
-    if (error instanceof WriteConcernError) this.err = error;
-    else if (!(error instanceof Error)) {
-      this.message = error.message;
-      this.code = error.code;
-      this.writeErrors = error.writeErrors ?? [];
-    }
-
-    this.result = result;
-    Object.assign(this, error);
-  }
-
-  override get name(): string {
-    return 'MongoBulkWriteError';
-  }
-
-  /** Number of documents inserted. */
-  get insertedCount(): number {
-    return this.result.insertedCount;
-  }
-  /** Number of documents matched for update. */
-  get matchedCount(): number {
-    return this.result.matchedCount;
-  }
-  /** Number of documents modified. */
-  get modifiedCount(): number {
-    return this.result.modifiedCount;
-  }
-  /** Number of documents deleted. */
-  get deletedCount(): number {
-    return this.result.deletedCount;
-  }
-  /** Number of documents upserted. */
-  get upsertedCount(): number {
-    return this.result.upsertedCount;
-  }
-  /** Inserted document generated Id's, hash key is the index of the originating operation */
-  get insertedIds(): { [key: number]: any } {
-    return this.result.insertedIds;
-  }
-  /** Upserted document generated Id's, hash key is the index of the originating operation */
-  get upsertedIds(): { [key: number]: any } {
-    return this.result.upsertedIds;
-  }
-}
-
-/**
- * A builder object that is returned from {@link BulkOperationBase#find}.
- * Is used to build a write operation that involves a query filter.
- *
- * @public
- */
-export class FindOperators {
-  bulkOperation: BulkOperationBase;
-
-  /**
-   * Creates a new FindOperators object.
-   * @internal
-   */
-  constructor(bulkOperation: BulkOperationBase) {
-    this.bulkOperation = bulkOperation;
-  }
-
-  /** Add a multiple update operation to the bulk operation */
-  update(updateDocument: Document | Document[]): BulkOperationBase {
-    const currentOp = buildCurrentOp(this.bulkOperation);
-    return this.bulkOperation.addToOperationsList(
-      BatchType.UPDATE,
-      makeUpdateStatement(currentOp.selector, updateDocument, {
-        ...currentOp,
-        multi: true
-      })
-    );
-  }
-
-  /** Add a single update operation to the bulk operation */
-  updateOne(updateDocument: Document | Document[]): BulkOperationBase {
-    if (!hasAtomicOperators(updateDocument)) {
-      throw new MongoInvalidArgumentError('Update document requires atomic operators');
-    }
-
-    const currentOp = buildCurrentOp(this.bulkOperation);
-    return this.bulkOperation.addToOperationsList(
-      BatchType.UPDATE,
-      makeUpdateStatement(currentOp.selector, updateDocument, { ...currentOp, multi: false })
-    );
-  }
-
-  /** Add a replace one operation to the bulk operation */
-  replaceOne(replacement: Document): BulkOperationBase {
-    if (hasAtomicOperators(replacement)) {
-      throw new MongoInvalidArgumentError('Replacement document must not use atomic operators');
-    }
-
-    const currentOp = buildCurrentOp(this.bulkOperation);
-    return this.bulkOperation.addToOperationsList(
-      BatchType.UPDATE,
-      makeUpdateStatement(currentOp.selector, replacement, { ...currentOp, multi: false })
-    );
-  }
-
-  /** Add a delete one operation to the bulk operation */
-  deleteOne(): BulkOperationBase {
-    const currentOp = buildCurrentOp(this.bulkOperation);
-    return this.bulkOperation.addToOperationsList(
-      BatchType.DELETE,
-      makeDeleteStatement(currentOp.selector, { ...currentOp, limit: 1 })
-    );
-  }
-
-  /** Add a delete many operation to the bulk operation */
-  delete(): BulkOperationBase {
-    const currentOp = buildCurrentOp(this.bulkOperation);
-    return this.bulkOperation.addToOperationsList(
-      BatchType.DELETE,
-      makeDeleteStatement(currentOp.selector, { ...currentOp, limit: 0 })
-    );
-  }
-
-  /** Upsert modifier for update bulk operation, noting that this operation is an upsert. */
-  upsert(): this {
-    if (!this.bulkOperation.s.currentOp) {
-      this.bulkOperation.s.currentOp = {};
-    }
-
-    this.bulkOperation.s.currentOp.upsert = true;
-    return this;
-  }
-
-  /** Specifies the collation for the query condition. */
-  collation(collation: CollationOptions): this {
-    if (!this.bulkOperation.s.currentOp) {
-      this.bulkOperation.s.currentOp = {};
-    }
-
-    this.bulkOperation.s.currentOp.collation = collation;
-    return this;
-  }
-
-  /** Specifies arrayFilters for UpdateOne or UpdateMany bulk operations. */
-  arrayFilters(arrayFilters: Document[]): this {
-    if (!this.bulkOperation.s.currentOp) {
-      this.bulkOperation.s.currentOp = {};
-    }
-
-    this.bulkOperation.s.currentOp.arrayFilters = arrayFilters;
-    return this;
-  }
-
-  /** Specifies hint for the bulk operation. */
-  hint(hint: Hint): this {
-    if (!this.bulkOperation.s.currentOp) {
-      this.bulkOperation.s.currentOp = {};
-    }
-
-    this.bulkOperation.s.currentOp.hint = hint;
-    return this;
-  }
-}
-
-/** @internal */
-export interface BulkOperationPrivate {
-  bulkResult: BulkResult;
-  currentBatch?: Batch;
-  currentIndex: number;
-  // ordered specific
-  currentBatchSize: number;
-  currentBatchSizeBytes: number;
-  // unordered specific
-  currentInsertBatch?: Batch;
-  currentUpdateBatch?: Batch;
-  currentRemoveBatch?: Batch;
-  batches: Batch[];
-  // Write concern
-  writeConcern?: WriteConcern;
-  // Max batch size options
-  maxBsonObjectSize: number;
-  maxBatchSizeBytes: number;
-  maxWriteBatchSize: number;
-  maxKeySize: number;
-  // Namespace
-  namespace: MongoDBNamespace;
-  // Topology
-  topology: Topology;
-  // Options
-  options: BulkWriteOptions;
-  // BSON options
-  bsonOptions: BSONSerializeOptions;
-  // Document used to build a bulk operation
-  currentOp?: Document;
-  // Executed
-  executed: boolean;
-  // Collection
-  collection: Collection;
-  // Fundamental error
-  err?: AnyError;
-  // check keys
-  checkKeys: boolean;
-  bypassDocumentValidation?: boolean;
-}
-
-/** @public */
-export interface BulkWriteOptions extends CommandOperationOptions {
-  /**
-   * Allow driver to bypass schema validation.
-   * @defaultValue `false` - documents will be validated by default
-   **/
-  bypassDocumentValidation?: boolean;
-  /**
-   * If true, when an insert fails, don't execute the remaining writes.
-   * If false, continue with remaining inserts when one fails.
-   * @defaultValue `true` - inserts are ordered by default
-   */
-  ordered?: boolean;
-  /**
-   * Force server to assign _id values instead of driver.
-   * @defaultValue `false` - the driver generates `_id` fields by default
-   **/
-  forceServerObjectId?: boolean;
-  /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-  let?: Document;
-}
-
-const executeCommandsAsync = promisify(executeCommands);
-
-/**
- * TODO(NODE-4063)
- * BulkWrites merge complexity is implemented in executeCommands
- * This provides a vehicle to treat bulkOperations like any other operation (hence "shim")
- * We would like this logic to simply live inside the BulkWriteOperation class
- * @internal
- */
-class BulkWriteShimOperation extends AbstractOperation {
-  bulkOperation: BulkOperationBase;
-  constructor(bulkOperation: BulkOperationBase, options: BulkWriteOptions) {
-    super(options);
-    this.bulkOperation = bulkOperation;
-  }
-
-  execute(_server: Server, session: ClientSession | undefined): Promise<any> {
-    if (this.options.session == null) {
-      // An implicit session could have been created by 'executeOperation'
-      // So if we stick it on finalOptions here, each bulk operation
-      // will use this same session, it'll be passed in the same way
-      // an explicit session would be
-      this.options.session = session;
-    }
-    return executeCommandsAsync(this.bulkOperation, this.options);
-  }
-}
-
-/** @public */
-export abstract class BulkOperationBase {
-  isOrdered: boolean;
-  /** @internal */
-  s: BulkOperationPrivate;
-  operationId?: number;
-
-  /**
-   * Create a new OrderedBulkOperation or UnorderedBulkOperation instance
-   * @internal
-   */
-  constructor(collection: Collection, options: BulkWriteOptions, isOrdered: boolean) {
-    // determine whether bulkOperation is ordered or unordered
-    this.isOrdered = isOrdered;
-
-    const topology = getTopology(collection);
-    options = options == null ? {} : options;
-    // TODO Bring from driver information in hello
-    // Get the namespace for the write operations
-    const namespace = collection.s.namespace;
-    // Used to mark operation as executed
-    const executed = false;
-
-    // Current item
-    const currentOp = undefined;
-
-    // Set max byte size
-    const hello = topology.lastHello();
-
-    // If we have autoEncryption on, batch-splitting must be done on 2mb chunks, but single documents
-    // over 2mb are still allowed
-    const usingAutoEncryption = !!(topology.s.options && topology.s.options.autoEncrypter);
-    const maxBsonObjectSize =
-      hello && hello.maxBsonObjectSize ? hello.maxBsonObjectSize : 1024 * 1024 * 16;
-    const maxBatchSizeBytes = usingAutoEncryption ? 1024 * 1024 * 2 : maxBsonObjectSize;
-    const maxWriteBatchSize = hello && hello.maxWriteBatchSize ? hello.maxWriteBatchSize : 1000;
-
-    // Calculates the largest possible size of an Array key, represented as a BSON string
-    // element. This calculation:
-    //     1 byte for BSON type
-    //     # of bytes = length of (string representation of (maxWriteBatchSize - 1))
-    //   + 1 bytes for null terminator
-    const maxKeySize = (maxWriteBatchSize - 1).toString(10).length + 2;
-
-    // Final options for retryable writes
-    let finalOptions = Object.assign({}, options);
-    finalOptions = applyRetryableWrites(finalOptions, collection.s.db);
-
-    // Final results
-    const bulkResult: BulkResult = {
-      ok: 1,
-      writeErrors: [],
-      writeConcernErrors: [],
-      insertedIds: [],
-      nInserted: 0,
-      nUpserted: 0,
-      nMatched: 0,
-      nModified: 0,
-      nRemoved: 0,
-      upserted: []
-    };
-
-    // Internal state
-    this.s = {
-      // Final result
-      bulkResult,
-      // Current batch state
-      currentBatch: undefined,
-      currentIndex: 0,
-      // ordered specific
-      currentBatchSize: 0,
-      currentBatchSizeBytes: 0,
-      // unordered specific
-      currentInsertBatch: undefined,
-      currentUpdateBatch: undefined,
-      currentRemoveBatch: undefined,
-      batches: [],
-      // Write concern
-      writeConcern: WriteConcern.fromOptions(options),
-      // Max batch size options
-      maxBsonObjectSize,
-      maxBatchSizeBytes,
-      maxWriteBatchSize,
-      maxKeySize,
-      // Namespace
-      namespace,
-      // Topology
-      topology,
-      // Options
-      options: finalOptions,
-      // BSON options
-      bsonOptions: resolveBSONOptions(options),
-      // Current operation
-      currentOp,
-      // Executed
-      executed,
-      // Collection
-      collection,
-      // Fundamental error
-      err: undefined,
-      // check keys
-      checkKeys: typeof options.checkKeys === 'boolean' ? options.checkKeys : false
-    };
-
-    // bypass Validation
-    if (options.bypassDocumentValidation === true) {
-      this.s.bypassDocumentValidation = true;
-    }
-  }
-
-  /**
-   * Add a single insert document to the bulk operation
-   *
-   * @example
-   * ```ts
-   * const bulkOp = collection.initializeOrderedBulkOp();
-   *
-   * // Adds three inserts to the bulkOp.
-   * bulkOp
-   *   .insert({ a: 1 })
-   *   .insert({ b: 2 })
-   *   .insert({ c: 3 });
-   * await bulkOp.execute();
-   * ```
-   */
-  insert(document: Document): BulkOperationBase {
-    if (document._id == null && !shouldForceServerObjectId(this)) {
-      document._id = new ObjectId();
-    }
-
-    return this.addToOperationsList(BatchType.INSERT, document);
-  }
-
-  /**
-   * Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne.
-   * Returns a builder object used to complete the definition of the operation.
-   *
-   * @example
-   * ```ts
-   * const bulkOp = collection.initializeOrderedBulkOp();
-   *
-   * // Add an updateOne to the bulkOp
-   * bulkOp.find({ a: 1 }).updateOne({ $set: { b: 2 } });
-   *
-   * // Add an updateMany to the bulkOp
-   * bulkOp.find({ c: 3 }).update({ $set: { d: 4 } });
-   *
-   * // Add an upsert
-   * bulkOp.find({ e: 5 }).upsert().updateOne({ $set: { f: 6 } });
-   *
-   * // Add a deletion
-   * bulkOp.find({ g: 7 }).deleteOne();
-   *
-   * // Add a multi deletion
-   * bulkOp.find({ h: 8 }).delete();
-   *
-   * // Add a replaceOne
-   * bulkOp.find({ i: 9 }).replaceOne({writeConcern: { j: 10 }});
-   *
-   * // Update using a pipeline (requires Mongodb 4.2 or higher)
-   * bulk.find({ k: 11, y: { $exists: true }, z: { $exists: true } }).updateOne([
-   *   { $set: { total: { $sum: [ '$y', '$z' ] } } }
-   * ]);
-   *
-   * // All of the ops will now be executed
-   * await bulkOp.execute();
-   * ```
-   */
-  find(selector: Document): FindOperators {
-    if (!selector) {
-      throw new MongoInvalidArgumentError('Bulk find operation must specify a selector');
-    }
-
-    // Save a current selector
-    this.s.currentOp = {
-      selector: selector
-    };
-
-    return new FindOperators(this);
-  }
-
-  /** Specifies a raw operation to perform in the bulk write. */
-  raw(op: AnyBulkWriteOperation): this {
-    if (op == null || typeof op !== 'object') {
-      throw new MongoInvalidArgumentError('Operation must be an object with an operation key');
-    }
-    if ('insertOne' in op) {
-      const forceServerObjectId = shouldForceServerObjectId(this);
-      if (op.insertOne && op.insertOne.document == null) {
-        // NOTE: provided for legacy support, but this is a malformed operation
-        if (forceServerObjectId !== true && (op.insertOne as Document)._id == null) {
-          (op.insertOne as Document)._id = new ObjectId();
-        }
-
-        return this.addToOperationsList(BatchType.INSERT, op.insertOne);
-      }
-
-      if (forceServerObjectId !== true && op.insertOne.document._id == null) {
-        op.insertOne.document._id = new ObjectId();
-      }
-
-      return this.addToOperationsList(BatchType.INSERT, op.insertOne.document);
-    }
-
-    if ('replaceOne' in op || 'updateOne' in op || 'updateMany' in op) {
-      if ('replaceOne' in op) {
-        if ('q' in op.replaceOne) {
-          throw new MongoInvalidArgumentError('Raw operations are not allowed');
-        }
-        const updateStatement = makeUpdateStatement(
-          op.replaceOne.filter,
-          op.replaceOne.replacement,
-          { ...op.replaceOne, multi: false }
-        );
-        if (hasAtomicOperators(updateStatement.u)) {
-          throw new MongoInvalidArgumentError('Replacement document must not use atomic operators');
-        }
-        return this.addToOperationsList(BatchType.UPDATE, updateStatement);
-      }
-
-      if ('updateOne' in op) {
-        if ('q' in op.updateOne) {
-          throw new MongoInvalidArgumentError('Raw operations are not allowed');
-        }
-        const updateStatement = makeUpdateStatement(op.updateOne.filter, op.updateOne.update, {
-          ...op.updateOne,
-          multi: false
-        });
-        if (!hasAtomicOperators(updateStatement.u)) {
-          throw new MongoInvalidArgumentError('Update document requires atomic operators');
-        }
-        return this.addToOperationsList(BatchType.UPDATE, updateStatement);
-      }
-
-      if ('updateMany' in op) {
-        if ('q' in op.updateMany) {
-          throw new MongoInvalidArgumentError('Raw operations are not allowed');
-        }
-        const updateStatement = makeUpdateStatement(op.updateMany.filter, op.updateMany.update, {
-          ...op.updateMany,
-          multi: true
-        });
-        if (!hasAtomicOperators(updateStatement.u)) {
-          throw new MongoInvalidArgumentError('Update document requires atomic operators');
-        }
-        return this.addToOperationsList(BatchType.UPDATE, updateStatement);
-      }
-    }
-
-    if ('deleteOne' in op) {
-      if ('q' in op.deleteOne) {
-        throw new MongoInvalidArgumentError('Raw operations are not allowed');
-      }
-      return this.addToOperationsList(
-        BatchType.DELETE,
-        makeDeleteStatement(op.deleteOne.filter, { ...op.deleteOne, limit: 1 })
-      );
-    }
-
-    if ('deleteMany' in op) {
-      if ('q' in op.deleteMany) {
-        throw new MongoInvalidArgumentError('Raw operations are not allowed');
-      }
-      return this.addToOperationsList(
-        BatchType.DELETE,
-        makeDeleteStatement(op.deleteMany.filter, { ...op.deleteMany, limit: 0 })
-      );
-    }
-
-    // otherwise an unknown operation was provided
-    throw new MongoInvalidArgumentError(
-      'bulkWrite only supports insertOne, updateOne, updateMany, deleteOne, deleteMany'
-    );
-  }
-
-  get bsonOptions(): BSONSerializeOptions {
-    return this.s.bsonOptions;
-  }
-
-  get writeConcern(): WriteConcern | undefined {
-    return this.s.writeConcern;
-  }
-
-  get batches(): Batch[] {
-    const batches = [...this.s.batches];
-    if (this.isOrdered) {
-      if (this.s.currentBatch) batches.push(this.s.currentBatch);
-    } else {
-      if (this.s.currentInsertBatch) batches.push(this.s.currentInsertBatch);
-      if (this.s.currentUpdateBatch) batches.push(this.s.currentUpdateBatch);
-      if (this.s.currentRemoveBatch) batches.push(this.s.currentRemoveBatch);
-    }
-    return batches;
-  }
-
-  async execute(options: BulkWriteOptions = {}): Promise<BulkWriteResult> {
-    if (this.s.executed) {
-      throw new MongoBatchReExecutionError();
-    }
-
-    const writeConcern = WriteConcern.fromOptions(options);
-    if (writeConcern) {
-      this.s.writeConcern = writeConcern;
-    }
-
-    // If we have current batch
-    if (this.isOrdered) {
-      if (this.s.currentBatch) this.s.batches.push(this.s.currentBatch);
-    } else {
-      if (this.s.currentInsertBatch) this.s.batches.push(this.s.currentInsertBatch);
-      if (this.s.currentUpdateBatch) this.s.batches.push(this.s.currentUpdateBatch);
-      if (this.s.currentRemoveBatch) this.s.batches.push(this.s.currentRemoveBatch);
-    }
-    // If we have no operations in the bulk raise an error
-    if (this.s.batches.length === 0) {
-      throw new MongoInvalidArgumentError('Invalid BulkOperation, Batch cannot be empty');
-    }
-
-    this.s.executed = true;
-    const finalOptions = { ...this.s.options, ...options };
-    const operation = new BulkWriteShimOperation(this, finalOptions);
-
-    return executeOperation(this.s.collection.client, operation);
-  }
-
-  /**
-   * Handles the write error before executing commands
-   * @internal
-   */
-  handleWriteError(callback: Callback<BulkWriteResult>, writeResult: BulkWriteResult): boolean {
-    if (this.s.bulkResult.writeErrors.length > 0) {
-      const msg = this.s.bulkResult.writeErrors[0].errmsg
-        ? this.s.bulkResult.writeErrors[0].errmsg
-        : 'write operation failed';
-
-      callback(
-        new MongoBulkWriteError(
-          {
-            message: msg,
-            code: this.s.bulkResult.writeErrors[0].code,
-            writeErrors: this.s.bulkResult.writeErrors
-          },
-          writeResult
-        )
-      );
-
-      return true;
-    }
-
-    const writeConcernError = writeResult.getWriteConcernError();
-    if (writeConcernError) {
-      callback(new MongoBulkWriteError(writeConcernError, writeResult));
-      return true;
-    }
-
-    return false;
-  }
-
-  abstract addToOperationsList(
-    batchType: BatchType,
-    document: Document | UpdateStatement | DeleteStatement
-  ): this;
-}
-
-Object.defineProperty(BulkOperationBase.prototype, 'length', {
-  enumerable: true,
-  get() {
-    return this.s.currentIndex;
-  }
-});
-
-function shouldForceServerObjectId(bulkOperation: BulkOperationBase): boolean {
-  if (typeof bulkOperation.s.options.forceServerObjectId === 'boolean') {
-    return bulkOperation.s.options.forceServerObjectId;
-  }
-
-  if (typeof bulkOperation.s.collection.s.db.options?.forceServerObjectId === 'boolean') {
-    return bulkOperation.s.collection.s.db.options?.forceServerObjectId;
-  }
-
-  return false;
-}
-
-function isInsertBatch(batch: Batch): boolean {
-  return batch.batchType === BatchType.INSERT;
-}
-
-function isUpdateBatch(batch: Batch): batch is Batch<UpdateStatement> {
-  return batch.batchType === BatchType.UPDATE;
-}
-
-function isDeleteBatch(batch: Batch): batch is Batch<DeleteStatement> {
-  return batch.batchType === BatchType.DELETE;
-}
-
-function buildCurrentOp(bulkOp: BulkOperationBase): Document {
-  let { currentOp } = bulkOp.s;
-  bulkOp.s.currentOp = undefined;
-  if (!currentOp) currentOp = {};
-  return currentOp;
-}
diff --git a/server/data-import/node_modules/mongodb/src/bulk/ordered.ts b/server/data-import/node_modules/mongodb/src/bulk/ordered.ts
deleted file mode 100644
index 2a9e9ece2b15b3bcbc1463b415b75ff883f87b71..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/bulk/ordered.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-import type { Document } from '../bson';
-import * as BSON from '../bson';
-import type { Collection } from '../collection';
-import { MongoInvalidArgumentError } from '../error';
-import type { DeleteStatement } from '../operations/delete';
-import type { UpdateStatement } from '../operations/update';
-import { Batch, BatchType, BulkOperationBase, type BulkWriteOptions } from './common';
-
-/** @public */
-export class OrderedBulkOperation extends BulkOperationBase {
-  /** @internal */
-  constructor(collection: Collection, options: BulkWriteOptions) {
-    super(collection, options, true);
-  }
-
-  addToOperationsList(
-    batchType: BatchType,
-    document: Document | UpdateStatement | DeleteStatement
-  ): this {
-    // Get the bsonSize
-    const bsonSize = BSON.calculateObjectSize(document, {
-      checkKeys: false,
-      // Since we don't know what the user selected for BSON options here,
-      // err on the safe side, and check the size with ignoreUndefined: false.
-      ignoreUndefined: false
-    } as any);
-
-    // Throw error if the doc is bigger than the max BSON size
-    if (bsonSize >= this.s.maxBsonObjectSize)
-      // TODO(NODE-3483): Change this to MongoBSONError
-      throw new MongoInvalidArgumentError(
-        `Document is larger than the maximum size ${this.s.maxBsonObjectSize}`
-      );
-
-    // Create a new batch object if we don't have a current one
-    if (this.s.currentBatch == null) {
-      this.s.currentBatch = new Batch(batchType, this.s.currentIndex);
-    }
-
-    const maxKeySize = this.s.maxKeySize;
-
-    // Check if we need to create a new batch
-    if (
-      // New batch if we exceed the max batch op size
-      this.s.currentBatchSize + 1 >= this.s.maxWriteBatchSize ||
-      // New batch if we exceed the maxBatchSizeBytes. Only matters if batch already has a doc,
-      // since we can't sent an empty batch
-      (this.s.currentBatchSize > 0 &&
-        this.s.currentBatchSizeBytes + maxKeySize + bsonSize >= this.s.maxBatchSizeBytes) ||
-      // New batch if the new op does not have the same op type as the current batch
-      this.s.currentBatch.batchType !== batchType
-    ) {
-      // Save the batch to the execution stack
-      this.s.batches.push(this.s.currentBatch);
-
-      // Create a new batch
-      this.s.currentBatch = new Batch(batchType, this.s.currentIndex);
-
-      // Reset the current size trackers
-      this.s.currentBatchSize = 0;
-      this.s.currentBatchSizeBytes = 0;
-    }
-
-    if (batchType === BatchType.INSERT) {
-      this.s.bulkResult.insertedIds.push({
-        index: this.s.currentIndex,
-        _id: (document as Document)._id
-      });
-    }
-
-    // We have an array of documents
-    if (Array.isArray(document)) {
-      throw new MongoInvalidArgumentError('Operation passed in cannot be an Array');
-    }
-
-    this.s.currentBatch.originalIndexes.push(this.s.currentIndex);
-    this.s.currentBatch.operations.push(document);
-    this.s.currentBatchSize += 1;
-    this.s.currentBatchSizeBytes += maxKeySize + bsonSize;
-    this.s.currentIndex += 1;
-    return this;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/bulk/unordered.ts b/server/data-import/node_modules/mongodb/src/bulk/unordered.ts
deleted file mode 100644
index 3b7e7f2f35f091bb9310582bf124b114c23fb8ad..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/bulk/unordered.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-import type { Document } from '../bson';
-import * as BSON from '../bson';
-import type { Collection } from '../collection';
-import { MongoInvalidArgumentError } from '../error';
-import type { DeleteStatement } from '../operations/delete';
-import type { UpdateStatement } from '../operations/update';
-import { type Callback } from '../utils';
-import {
-  Batch,
-  BatchType,
-  BulkOperationBase,
-  type BulkWriteOptions,
-  type BulkWriteResult
-} from './common';
-
-/** @public */
-export class UnorderedBulkOperation extends BulkOperationBase {
-  /** @internal */
-  constructor(collection: Collection, options: BulkWriteOptions) {
-    super(collection, options, false);
-  }
-
-  override handleWriteError(callback: Callback, writeResult: BulkWriteResult): boolean {
-    if (this.s.batches.length) {
-      return false;
-    }
-
-    return super.handleWriteError(callback, writeResult);
-  }
-
-  addToOperationsList(
-    batchType: BatchType,
-    document: Document | UpdateStatement | DeleteStatement
-  ): this {
-    // Get the bsonSize
-    const bsonSize = BSON.calculateObjectSize(document, {
-      checkKeys: false,
-
-      // Since we don't know what the user selected for BSON options here,
-      // err on the safe side, and check the size with ignoreUndefined: false.
-      ignoreUndefined: false
-    } as any);
-
-    // Throw error if the doc is bigger than the max BSON size
-    if (bsonSize >= this.s.maxBsonObjectSize) {
-      // TODO(NODE-3483): Change this to MongoBSONError
-      throw new MongoInvalidArgumentError(
-        `Document is larger than the maximum size ${this.s.maxBsonObjectSize}`
-      );
-    }
-
-    // Holds the current batch
-    this.s.currentBatch = undefined;
-    // Get the right type of batch
-    if (batchType === BatchType.INSERT) {
-      this.s.currentBatch = this.s.currentInsertBatch;
-    } else if (batchType === BatchType.UPDATE) {
-      this.s.currentBatch = this.s.currentUpdateBatch;
-    } else if (batchType === BatchType.DELETE) {
-      this.s.currentBatch = this.s.currentRemoveBatch;
-    }
-
-    const maxKeySize = this.s.maxKeySize;
-
-    // Create a new batch object if we don't have a current one
-    if (this.s.currentBatch == null) {
-      this.s.currentBatch = new Batch(batchType, this.s.currentIndex);
-    }
-
-    // Check if we need to create a new batch
-    if (
-      // New batch if we exceed the max batch op size
-      this.s.currentBatch.size + 1 >= this.s.maxWriteBatchSize ||
-      // New batch if we exceed the maxBatchSizeBytes. Only matters if batch already has a doc,
-      // since we can't sent an empty batch
-      (this.s.currentBatch.size > 0 &&
-        this.s.currentBatch.sizeBytes + maxKeySize + bsonSize >= this.s.maxBatchSizeBytes) ||
-      // New batch if the new op does not have the same op type as the current batch
-      this.s.currentBatch.batchType !== batchType
-    ) {
-      // Save the batch to the execution stack
-      this.s.batches.push(this.s.currentBatch);
-
-      // Create a new batch
-      this.s.currentBatch = new Batch(batchType, this.s.currentIndex);
-    }
-
-    // We have an array of documents
-    if (Array.isArray(document)) {
-      throw new MongoInvalidArgumentError('Operation passed in cannot be an Array');
-    }
-
-    this.s.currentBatch.operations.push(document);
-    this.s.currentBatch.originalIndexes.push(this.s.currentIndex);
-    this.s.currentIndex = this.s.currentIndex + 1;
-
-    // Save back the current Batch to the right type
-    if (batchType === BatchType.INSERT) {
-      this.s.currentInsertBatch = this.s.currentBatch;
-      this.s.bulkResult.insertedIds.push({
-        index: this.s.bulkResult.insertedIds.length,
-        _id: (document as Document)._id
-      });
-    } else if (batchType === BatchType.UPDATE) {
-      this.s.currentUpdateBatch = this.s.currentBatch;
-    } else if (batchType === BatchType.DELETE) {
-      this.s.currentRemoveBatch = this.s.currentBatch;
-    }
-
-    // Update current batch size
-    this.s.currentBatch.size += 1;
-    this.s.currentBatch.sizeBytes += maxKeySize + bsonSize;
-
-    return this;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/change_stream.ts b/server/data-import/node_modules/mongodb/src/change_stream.ts
deleted file mode 100644
index 5041f1ee5064d8bbf407ec5edd98e6a34fec9091..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/change_stream.ts
+++ /dev/null
@@ -1,973 +0,0 @@
-import type { Readable } from 'stream';
-
-import type { Binary, Document, Timestamp } from './bson';
-import { Collection } from './collection';
-import { CHANGE, CLOSE, END, ERROR, INIT, MORE, RESPONSE, RESUME_TOKEN_CHANGED } from './constants';
-import type { AbstractCursorEvents, CursorStreamOptions } from './cursor/abstract_cursor';
-import { ChangeStreamCursor, type ChangeStreamCursorOptions } from './cursor/change_stream_cursor';
-import { Db } from './db';
-import {
-  type AnyError,
-  isResumableError,
-  MongoAPIError,
-  MongoChangeStreamError,
-  MongoRuntimeError
-} from './error';
-import { MongoClient } from './mongo_client';
-import { type InferIdType, TypedEventEmitter } from './mongo_types';
-import type { AggregateOptions } from './operations/aggregate';
-import type { CollationOptions, OperationParent } from './operations/command';
-import type { ReadPreference } from './read_preference';
-import type { ServerSessionId } from './sessions';
-import { filterOptions, getTopology, type MongoDBNamespace } from './utils';
-
-/** @internal */
-const kCursorStream = Symbol('cursorStream');
-/** @internal */
-const kClosed = Symbol('closed');
-/** @internal */
-const kMode = Symbol('mode');
-
-const CHANGE_STREAM_OPTIONS = [
-  'resumeAfter',
-  'startAfter',
-  'startAtOperationTime',
-  'fullDocument',
-  'fullDocumentBeforeChange',
-  'showExpandedEvents'
-] as const;
-
-const CHANGE_DOMAIN_TYPES = {
-  COLLECTION: Symbol('Collection'),
-  DATABASE: Symbol('Database'),
-  CLUSTER: Symbol('Cluster')
-};
-
-const CHANGE_STREAM_EVENTS = [RESUME_TOKEN_CHANGED, END, CLOSE];
-
-const NO_RESUME_TOKEN_ERROR =
-  'A change stream document has been received that lacks a resume token (_id).';
-const CHANGESTREAM_CLOSED_ERROR = 'ChangeStream is closed';
-
-/**
- * @public
- * @deprecated Please use the ChangeStreamCursorOptions type instead.
- */
-export interface ResumeOptions {
-  startAtOperationTime?: Timestamp;
-  batchSize?: number;
-  maxAwaitTimeMS?: number;
-  collation?: CollationOptions;
-  readPreference?: ReadPreference;
-  resumeAfter?: ResumeToken;
-  startAfter?: ResumeToken;
-  fullDocument?: string;
-}
-
-/**
- * Represents the logical starting point for a new ChangeStream or resuming a ChangeStream on the server.
- * @see https://www.mongodb.com/docs/manual/changeStreams/#std-label-change-stream-resume
- * @public
- */
-export type ResumeToken = unknown;
-
-/**
- * Represents a specific point in time on a server. Can be retrieved by using `db.command()`
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/method/db.runCommand/#response
- */
-export type OperationTime = Timestamp;
-
-/**
- * Options that can be passed to a ChangeStream. Note that startAfter, resumeAfter, and startAtOperationTime are all mutually exclusive, and the server will error if more than one is specified.
- * @public
- */
-export interface ChangeStreamOptions extends Omit<AggregateOptions, 'writeConcern'> {
-  /**
-   * Allowed values: 'updateLookup', 'whenAvailable', 'required'.
-   *
-   * When set to 'updateLookup', the change notification for partial updates
-   * will include both a delta describing the changes to the document as well
-   * as a copy of the entire document that was changed from some time after
-   * the change occurred.
-   *
-   * When set to 'whenAvailable', configures the change stream to return the
-   * post-image of the modified document for replace and update change events
-   * if the post-image for this event is available.
-   *
-   * When set to 'required', the same behavior as 'whenAvailable' except that
-   * an error is raised if the post-image is not available.
-   */
-  fullDocument?: string;
-
-  /**
-   * Allowed values: 'whenAvailable', 'required', 'off'.
-   *
-   * The default is to not send a value, which is equivalent to 'off'.
-   *
-   * When set to 'whenAvailable', configures the change stream to return the
-   * pre-image of the modified document for replace, update, and delete change
-   * events if it is available.
-   *
-   * When set to 'required', the same behavior as 'whenAvailable' except that
-   * an error is raised if the pre-image is not available.
-   */
-  fullDocumentBeforeChange?: string;
-  /** The maximum amount of time for the server to wait on new documents to satisfy a change stream query. */
-  maxAwaitTimeMS?: number;
-  /**
-   * Allows you to start a changeStream after a specified event.
-   * @see https://www.mongodb.com/docs/manual/changeStreams/#resumeafter-for-change-streams
-   */
-  resumeAfter?: ResumeToken;
-  /**
-   * Similar to resumeAfter, but will allow you to start after an invalidated event.
-   * @see https://www.mongodb.com/docs/manual/changeStreams/#startafter-for-change-streams
-   */
-  startAfter?: ResumeToken;
-  /** Will start the changeStream after the specified operationTime. */
-  startAtOperationTime?: OperationTime;
-  /**
-   * The number of documents to return per batch.
-   * @see https://www.mongodb.com/docs/manual/reference/command/aggregate
-   */
-  batchSize?: number;
-
-  /**
-   * When enabled, configures the change stream to include extra change events.
-   *
-   * - createIndexes
-   * - dropIndexes
-   * - modify
-   * - create
-   * - shardCollection
-   * - reshardCollection
-   * - refineCollectionShardKey
-   */
-  showExpandedEvents?: boolean;
-}
-
-/** @public */
-export interface ChangeStreamNameSpace {
-  db: string;
-  coll: string;
-}
-
-/** @public */
-export interface ChangeStreamDocumentKey<TSchema extends Document = Document> {
-  /**
-   * For unsharded collections this contains a single field `_id`.
-   * For sharded collections, this will contain all the components of the shard key
-   */
-  documentKey: { _id: InferIdType<TSchema>; [shardKey: string]: any };
-}
-
-/** @public */
-export interface ChangeStreamSplitEvent {
-  /** Which fragment of the change this is. */
-  fragment: number;
-  /** The total number of fragments. */
-  of: number;
-}
-
-/** @public */
-export interface ChangeStreamDocumentCommon {
-  /**
-   * The id functions as an opaque token for use when resuming an interrupted
-   * change stream.
-   */
-  _id: ResumeToken;
-  /**
-   * The timestamp from the oplog entry associated with the event.
-   * For events that happened as part of a multi-document transaction, the associated change stream
-   * notifications will have the same clusterTime value, namely the time when the transaction was committed.
-   * On a sharded cluster, events that occur on different shards can have the same clusterTime but be
-   * associated with different transactions or even not be associated with any transaction.
-   * To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.
-   */
-  clusterTime?: Timestamp;
-
-  /**
-   * The transaction number.
-   * Only present if the operation is part of a multi-document transaction.
-   *
-   * **NOTE:** txnNumber can be a Long if promoteLongs is set to false
-   */
-  txnNumber?: number;
-
-  /**
-   * The identifier for the session associated with the transaction.
-   * Only present if the operation is part of a multi-document transaction.
-   */
-  lsid?: ServerSessionId;
-
-  /**
-   * When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent
-   * stage, events larger than 16MB will be split into multiple events and contain the
-   * following information about which fragment the current event is.
-   */
-  splitEvent?: ChangeStreamSplitEvent;
-}
-
-/** @public */
-export interface ChangeStreamDocumentCollectionUUID {
-  /**
-   * The UUID (Binary subtype 4) of the collection that the operation was performed on.
-   *
-   * Only present when the `showExpandedEvents` flag is enabled.
-   *
-   * **NOTE:** collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers
-   *    flag is enabled.
-   *
-   * @sinceServerVersion 6.1.0
-   */
-  collectionUUID: Binary;
-}
-
-/** @public */
-export interface ChangeStreamDocumentOperationDescription {
-  /**
-   * An description of the operation.
-   *
-   * Only present when the `showExpandedEvents` flag is enabled.
-   *
-   * @sinceServerVersion 6.1.0
-   */
-  operationDescription?: Document;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#insert-event
- */
-export interface ChangeStreamInsertDocument<TSchema extends Document = Document>
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentKey<TSchema>,
-    ChangeStreamDocumentCollectionUUID {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'insert';
-  /** This key will contain the document being inserted */
-  fullDocument: TSchema;
-  /** Namespace the insert event occurred on */
-  ns: ChangeStreamNameSpace;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#update-event
- */
-export interface ChangeStreamUpdateDocument<TSchema extends Document = Document>
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentKey<TSchema>,
-    ChangeStreamDocumentCollectionUUID {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'update';
-  /**
-   * This is only set if `fullDocument` is set to `'updateLookup'`
-   * Contains the point-in-time post-image of the modified document if the
-   * post-image is available and either 'required' or 'whenAvailable' was
-   * specified for the 'fullDocument' option when creating the change stream.
-   */
-  fullDocument?: TSchema;
-  /** Contains a description of updated and removed fields in this operation */
-  updateDescription: UpdateDescription<TSchema>;
-  /** Namespace the update event occurred on */
-  ns: ChangeStreamNameSpace;
-  /**
-   * Contains the pre-image of the modified or deleted document if the
-   * pre-image is available for the change event and either 'required' or
-   * 'whenAvailable' was specified for the 'fullDocumentBeforeChange' option
-   * when creating the change stream. If 'whenAvailable' was specified but the
-   * pre-image is unavailable, this will be explicitly set to null.
-   */
-  fullDocumentBeforeChange?: TSchema;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#replace-event
- */
-export interface ChangeStreamReplaceDocument<TSchema extends Document = Document>
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentKey<TSchema> {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'replace';
-  /** The fullDocument of a replace event represents the document after the insert of the replacement document */
-  fullDocument: TSchema;
-  /** Namespace the replace event occurred on */
-  ns: ChangeStreamNameSpace;
-  /**
-   * Contains the pre-image of the modified or deleted document if the
-   * pre-image is available for the change event and either 'required' or
-   * 'whenAvailable' was specified for the 'fullDocumentBeforeChange' option
-   * when creating the change stream. If 'whenAvailable' was specified but the
-   * pre-image is unavailable, this will be explicitly set to null.
-   */
-  fullDocumentBeforeChange?: TSchema;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#delete-event
- */
-export interface ChangeStreamDeleteDocument<TSchema extends Document = Document>
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentKey<TSchema>,
-    ChangeStreamDocumentCollectionUUID {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'delete';
-  /** Namespace the delete event occurred on */
-  ns: ChangeStreamNameSpace;
-  /**
-   * Contains the pre-image of the modified or deleted document if the
-   * pre-image is available for the change event and either 'required' or
-   * 'whenAvailable' was specified for the 'fullDocumentBeforeChange' option
-   * when creating the change stream. If 'whenAvailable' was specified but the
-   * pre-image is unavailable, this will be explicitly set to null.
-   */
-  fullDocumentBeforeChange?: TSchema;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#drop-event
- */
-export interface ChangeStreamDropDocument
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentCollectionUUID {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'drop';
-  /** Namespace the drop event occurred on */
-  ns: ChangeStreamNameSpace;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#rename-event
- */
-export interface ChangeStreamRenameDocument
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentCollectionUUID {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'rename';
-  /** The new name for the `ns.coll` collection */
-  to: { db: string; coll: string };
-  /** The "from" namespace that the rename occurred on */
-  ns: ChangeStreamNameSpace;
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#dropdatabase-event
- */
-export interface ChangeStreamDropDatabaseDocument extends ChangeStreamDocumentCommon {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'dropDatabase';
-  /** The database dropped */
-  ns: { db: string };
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/#invalidate-event
- */
-export interface ChangeStreamInvalidateDocument extends ChangeStreamDocumentCommon {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'invalidate';
-}
-
-/**
- * Only present when the `showExpandedEvents` flag is enabled.
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export interface ChangeStreamCreateIndexDocument
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentCollectionUUID,
-    ChangeStreamDocumentOperationDescription {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'createIndexes';
-}
-
-/**
- * Only present when the `showExpandedEvents` flag is enabled.
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export interface ChangeStreamDropIndexDocument
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentCollectionUUID,
-    ChangeStreamDocumentOperationDescription {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'dropIndexes';
-}
-
-/**
- * Only present when the `showExpandedEvents` flag is enabled.
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export interface ChangeStreamCollModDocument
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentCollectionUUID {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'modify';
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export interface ChangeStreamCreateDocument
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentCollectionUUID {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'create';
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export interface ChangeStreamShardCollectionDocument
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentCollectionUUID,
-    ChangeStreamDocumentOperationDescription {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'shardCollection';
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export interface ChangeStreamReshardCollectionDocument
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentCollectionUUID,
-    ChangeStreamDocumentOperationDescription {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'reshardCollection';
-}
-
-/**
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/change-events/
- */
-export interface ChangeStreamRefineCollectionShardKeyDocument
-  extends ChangeStreamDocumentCommon,
-    ChangeStreamDocumentCollectionUUID,
-    ChangeStreamDocumentOperationDescription {
-  /** Describes the type of operation represented in this change notification */
-  operationType: 'refineCollectionShardKey';
-}
-
-/** @public */
-export type ChangeStreamDocument<TSchema extends Document = Document> =
-  | ChangeStreamInsertDocument<TSchema>
-  | ChangeStreamUpdateDocument<TSchema>
-  | ChangeStreamReplaceDocument<TSchema>
-  | ChangeStreamDeleteDocument<TSchema>
-  | ChangeStreamDropDocument
-  | ChangeStreamRenameDocument
-  | ChangeStreamDropDatabaseDocument
-  | ChangeStreamInvalidateDocument
-  | ChangeStreamCreateIndexDocument
-  | ChangeStreamCreateDocument
-  | ChangeStreamCollModDocument
-  | ChangeStreamDropIndexDocument
-  | ChangeStreamShardCollectionDocument
-  | ChangeStreamReshardCollectionDocument
-  | ChangeStreamRefineCollectionShardKeyDocument;
-
-/** @public */
-export interface UpdateDescription<TSchema extends Document = Document> {
-  /**
-   * A document containing key:value pairs of names of the fields that were
-   * changed, and the new value for those fields.
-   */
-  updatedFields?: Partial<TSchema>;
-
-  /**
-   * An array of field names that were removed from the document.
-   */
-  removedFields?: string[];
-
-  /**
-   * An array of documents which record array truncations performed with pipeline-based updates using one or more of the following stages:
-   * - $addFields
-   * - $set
-   * - $replaceRoot
-   * - $replaceWith
-   */
-  truncatedArrays?: Array<{
-    /** The name of the truncated field. */
-    field: string;
-    /** The number of elements in the truncated array. */
-    newSize: number;
-  }>;
-
-  /**
-   * A document containing additional information about any ambiguous update paths from the update event.  The document
-   * maps the full ambiguous update path to an array containing the actual resolved components of the path.  For example,
-   * given a document shaped like `{ a: { '0': 0 } }`, and an update of `{ $inc: 'a.0' }`, disambiguated paths would look like
-   * the following:
-   *
-   * ```
-   *   {
-   *     'a.0': ['a', '0']
-   *   }
-   * ```
-   *
-   * This field is only present when there are ambiguous paths that are updated as a part of the update event and `showExpandedEvents`
-   * is enabled for the change stream.
-   * @sinceServerVersion 6.1.0
-   */
-  disambiguatedPaths?: Document;
-}
-
-/** @public */
-export type ChangeStreamEvents<
-  TSchema extends Document = Document,
-  TChange extends Document = ChangeStreamDocument<TSchema>
-> = {
-  resumeTokenChanged(token: ResumeToken): void;
-  init(response: any): void;
-  more(response?: any): void;
-  response(): void;
-  end(): void;
-  error(error: Error): void;
-  change(change: TChange): void;
-} & AbstractCursorEvents;
-
-/**
- * Creates a new Change Stream instance. Normally created using {@link Collection#watch|Collection.watch()}.
- * @public
- */
-export class ChangeStream<
-  TSchema extends Document = Document,
-  TChange extends Document = ChangeStreamDocument<TSchema>
-> extends TypedEventEmitter<ChangeStreamEvents<TSchema, TChange>> {
-  pipeline: Document[];
-  /**
-   * @remarks WriteConcern can still be present on the options because
-   * we inherit options from the client/db/collection.  The
-   * key must be present on the options in order to delete it.
-   * This allows typescript to delete the key but will
-   * not allow a writeConcern to be assigned as a property on options.
-   */
-  options: ChangeStreamOptions & { writeConcern?: never };
-  parent: MongoClient | Db | Collection;
-  namespace: MongoDBNamespace;
-  type: symbol;
-  /** @internal */
-  cursor: ChangeStreamCursor<TSchema, TChange>;
-  streamOptions?: CursorStreamOptions;
-  /** @internal */
-  [kCursorStream]?: Readable & AsyncIterable<TChange>;
-  /** @internal */
-  [kClosed]: boolean;
-  /** @internal */
-  [kMode]: false | 'iterator' | 'emitter';
-
-  /** @event */
-  static readonly RESPONSE = RESPONSE;
-  /** @event */
-  static readonly MORE = MORE;
-  /** @event */
-  static readonly INIT = INIT;
-  /** @event */
-  static readonly CLOSE = CLOSE;
-  /**
-   * Fired for each new matching change in the specified namespace. Attaching a `change`
-   * event listener to a Change Stream will switch the stream into flowing mode. Data will
-   * then be passed as soon as it is available.
-   * @event
-   */
-  static readonly CHANGE = CHANGE;
-  /** @event */
-  static readonly END = END;
-  /** @event */
-  static readonly ERROR = ERROR;
-  /**
-   * Emitted each time the change stream stores a new resume token.
-   * @event
-   */
-  static readonly RESUME_TOKEN_CHANGED = RESUME_TOKEN_CHANGED;
-
-  /**
-   * @internal
-   *
-   * @param parent - The parent object that created this change stream
-   * @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents
-   */
-  constructor(
-    parent: OperationParent,
-    pipeline: Document[] = [],
-    options: ChangeStreamOptions = {}
-  ) {
-    super();
-
-    this.pipeline = pipeline;
-    this.options = { ...options };
-    delete this.options.writeConcern;
-
-    if (parent instanceof Collection) {
-      this.type = CHANGE_DOMAIN_TYPES.COLLECTION;
-    } else if (parent instanceof Db) {
-      this.type = CHANGE_DOMAIN_TYPES.DATABASE;
-    } else if (parent instanceof MongoClient) {
-      this.type = CHANGE_DOMAIN_TYPES.CLUSTER;
-    } else {
-      throw new MongoChangeStreamError(
-        'Parent provided to ChangeStream constructor must be an instance of Collection, Db, or MongoClient'
-      );
-    }
-
-    this.parent = parent;
-    this.namespace = parent.s.namespace;
-    if (!this.options.readPreference && parent.readPreference) {
-      this.options.readPreference = parent.readPreference;
-    }
-
-    // Create contained Change Stream cursor
-    this.cursor = this._createChangeStreamCursor(options);
-
-    this[kClosed] = false;
-    this[kMode] = false;
-
-    // Listen for any `change` listeners being added to ChangeStream
-    this.on('newListener', eventName => {
-      if (eventName === 'change' && this.cursor && this.listenerCount('change') === 0) {
-        this._streamEvents(this.cursor);
-      }
-    });
-
-    this.on('removeListener', eventName => {
-      if (eventName === 'change' && this.listenerCount('change') === 0 && this.cursor) {
-        this[kCursorStream]?.removeAllListeners('data');
-      }
-    });
-  }
-
-  /** @internal */
-  get cursorStream(): (Readable & AsyncIterable<TChange>) | undefined {
-    return this[kCursorStream];
-  }
-
-  /** The cached resume token that is used to resume after the most recently returned change. */
-  get resumeToken(): ResumeToken {
-    return this.cursor?.resumeToken;
-  }
-
-  /** Check if there is any document still available in the Change Stream */
-  async hasNext(): Promise<boolean> {
-    this._setIsIterator();
-    // Change streams must resume indefinitely while each resume event succeeds.
-    // This loop continues until either a change event is received or until a resume attempt
-    // fails.
-    // eslint-disable-next-line no-constant-condition
-    while (true) {
-      try {
-        const hasNext = await this.cursor.hasNext();
-        return hasNext;
-      } catch (error) {
-        try {
-          await this._processErrorIteratorMode(error);
-        } catch (error) {
-          try {
-            await this.close();
-          } catch {
-            // We are not concerned with errors from close()
-          }
-          throw error;
-        }
-      }
-    }
-  }
-
-  /** Get the next available document from the Change Stream. */
-  async next(): Promise<TChange> {
-    this._setIsIterator();
-    // Change streams must resume indefinitely while each resume event succeeds.
-    // This loop continues until either a change event is received or until a resume attempt
-    // fails.
-    // eslint-disable-next-line no-constant-condition
-    while (true) {
-      try {
-        const change = await this.cursor.next();
-        const processedChange = this._processChange(change ?? null);
-        return processedChange;
-      } catch (error) {
-        try {
-          await this._processErrorIteratorMode(error);
-        } catch (error) {
-          try {
-            await this.close();
-          } catch {
-            // We are not concerned with errors from close()
-          }
-          throw error;
-        }
-      }
-    }
-  }
-
-  /**
-   * Try to get the next available document from the Change Stream's cursor or `null` if an empty batch is returned
-   */
-  async tryNext(): Promise<TChange | null> {
-    this._setIsIterator();
-    // Change streams must resume indefinitely while each resume event succeeds.
-    // This loop continues until either a change event is received or until a resume attempt
-    // fails.
-    // eslint-disable-next-line no-constant-condition
-    while (true) {
-      try {
-        const change = await this.cursor.tryNext();
-        return change ?? null;
-      } catch (error) {
-        try {
-          await this._processErrorIteratorMode(error);
-        } catch (error) {
-          try {
-            await this.close();
-          } catch {
-            // We are not concerned with errors from close()
-          }
-          throw error;
-        }
-      }
-    }
-  }
-
-  async *[Symbol.asyncIterator](): AsyncGenerator<TChange, void, void> {
-    if (this.closed) {
-      return;
-    }
-
-    try {
-      // Change streams run indefinitely as long as errors are resumable
-      // So the only loop breaking condition is if `next()` throws
-      while (true) {
-        yield await this.next();
-      }
-    } finally {
-      try {
-        await this.close();
-      } catch {
-        // we're not concerned with errors from close()
-      }
-    }
-  }
-
-  /** Is the cursor closed */
-  get closed(): boolean {
-    return this[kClosed] || this.cursor.closed;
-  }
-
-  /** Close the Change Stream */
-  async close(): Promise<void> {
-    this[kClosed] = true;
-
-    const cursor = this.cursor;
-    try {
-      await cursor.close();
-    } finally {
-      this._endStream();
-    }
-  }
-
-  /**
-   * Return a modified Readable stream including a possible transform method.
-   *
-   * NOTE: When using a Stream to process change stream events, the stream will
-   * NOT automatically resume in the case a resumable error is encountered.
-   *
-   * @throws MongoChangeStreamError if the underlying cursor or the change stream is closed
-   */
-  stream(options?: CursorStreamOptions): Readable & AsyncIterable<TChange> {
-    if (this.closed) {
-      throw new MongoChangeStreamError(CHANGESTREAM_CLOSED_ERROR);
-    }
-
-    this.streamOptions = options;
-    return this.cursor.stream(options);
-  }
-
-  /** @internal */
-  private _setIsEmitter(): void {
-    if (this[kMode] === 'iterator') {
-      // TODO(NODE-3485): Replace with MongoChangeStreamModeError
-      throw new MongoAPIError(
-        'ChangeStream cannot be used as an EventEmitter after being used as an iterator'
-      );
-    }
-    this[kMode] = 'emitter';
-  }
-
-  /** @internal */
-  private _setIsIterator(): void {
-    if (this[kMode] === 'emitter') {
-      // TODO(NODE-3485): Replace with MongoChangeStreamModeError
-      throw new MongoAPIError(
-        'ChangeStream cannot be used as an iterator after being used as an EventEmitter'
-      );
-    }
-    this[kMode] = 'iterator';
-  }
-
-  /**
-   * Create a new change stream cursor based on self's configuration
-   * @internal
-   */
-  private _createChangeStreamCursor(
-    options: ChangeStreamOptions | ChangeStreamCursorOptions
-  ): ChangeStreamCursor<TSchema, TChange> {
-    const changeStreamStageOptions = filterOptions(options, CHANGE_STREAM_OPTIONS);
-    if (this.type === CHANGE_DOMAIN_TYPES.CLUSTER) {
-      changeStreamStageOptions.allChangesForCluster = true;
-    }
-    const pipeline = [{ $changeStream: changeStreamStageOptions }, ...this.pipeline];
-
-    const client: MongoClient | null =
-      this.type === CHANGE_DOMAIN_TYPES.CLUSTER
-        ? (this.parent as MongoClient)
-        : this.type === CHANGE_DOMAIN_TYPES.DATABASE
-        ? (this.parent as Db).client
-        : this.type === CHANGE_DOMAIN_TYPES.COLLECTION
-        ? (this.parent as Collection).client
-        : null;
-
-    if (client == null) {
-      // This should never happen because of the assertion in the constructor
-      throw new MongoRuntimeError(
-        `Changestream type should only be one of cluster, database, collection. Found ${this.type.toString()}`
-      );
-    }
-
-    const changeStreamCursor = new ChangeStreamCursor<TSchema, TChange>(
-      client,
-      this.namespace,
-      pipeline,
-      options
-    );
-
-    for (const event of CHANGE_STREAM_EVENTS) {
-      changeStreamCursor.on(event, e => this.emit(event, e));
-    }
-
-    if (this.listenerCount(ChangeStream.CHANGE) > 0) {
-      this._streamEvents(changeStreamCursor);
-    }
-
-    return changeStreamCursor;
-  }
-
-  /** @internal */
-  private _closeEmitterModeWithError(error: AnyError): void {
-    this.emit(ChangeStream.ERROR, error);
-
-    this.close().catch(() => null);
-  }
-
-  /** @internal */
-  private _streamEvents(cursor: ChangeStreamCursor<TSchema, TChange>): void {
-    this._setIsEmitter();
-    const stream = this[kCursorStream] ?? cursor.stream();
-    this[kCursorStream] = stream;
-    stream.on('data', change => {
-      try {
-        const processedChange = this._processChange(change);
-        this.emit(ChangeStream.CHANGE, processedChange);
-      } catch (error) {
-        this.emit(ChangeStream.ERROR, error);
-      }
-    });
-    stream.on('error', error => this._processErrorStreamMode(error));
-  }
-
-  /** @internal */
-  private _endStream(): void {
-    const cursorStream = this[kCursorStream];
-    if (cursorStream) {
-      ['data', 'close', 'end', 'error'].forEach(event => cursorStream.removeAllListeners(event));
-      cursorStream.destroy();
-    }
-
-    this[kCursorStream] = undefined;
-  }
-
-  /** @internal */
-  private _processChange(change: TChange | null): TChange {
-    if (this[kClosed]) {
-      // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
-      throw new MongoAPIError(CHANGESTREAM_CLOSED_ERROR);
-    }
-
-    // a null change means the cursor has been notified, implicitly closing the change stream
-    if (change == null) {
-      // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
-      throw new MongoRuntimeError(CHANGESTREAM_CLOSED_ERROR);
-    }
-
-    if (change && !change._id) {
-      throw new MongoChangeStreamError(NO_RESUME_TOKEN_ERROR);
-    }
-
-    // cache the resume token
-    this.cursor.cacheResumeToken(change._id);
-
-    // wipe the startAtOperationTime if there was one so that there won't be a conflict
-    // between resumeToken and startAtOperationTime if we need to reconnect the cursor
-    this.options.startAtOperationTime = undefined;
-
-    return change;
-  }
-
-  /** @internal */
-  private _processErrorStreamMode(changeStreamError: AnyError) {
-    // If the change stream has been closed explicitly, do not process error.
-    if (this[kClosed]) return;
-
-    if (isResumableError(changeStreamError, this.cursor.maxWireVersion)) {
-      this._endStream();
-      this.cursor.close().catch(() => null);
-
-      const topology = getTopology(this.parent);
-      topology.selectServer(this.cursor.readPreference, {}, serverSelectionError => {
-        if (serverSelectionError) return this._closeEmitterModeWithError(changeStreamError);
-        this.cursor = this._createChangeStreamCursor(this.cursor.resumeOptions);
-      });
-    } else {
-      this._closeEmitterModeWithError(changeStreamError);
-    }
-  }
-
-  /** @internal */
-  private async _processErrorIteratorMode(changeStreamError: AnyError) {
-    if (this[kClosed]) {
-      // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
-      throw new MongoAPIError(CHANGESTREAM_CLOSED_ERROR);
-    }
-
-    if (!isResumableError(changeStreamError, this.cursor.maxWireVersion)) {
-      try {
-        await this.close();
-      } catch {
-        // ignore errors from close
-      }
-      throw changeStreamError;
-    }
-
-    await this.cursor.close().catch(() => null);
-    const topology = getTopology(this.parent);
-    try {
-      await topology.selectServerAsync(this.cursor.readPreference, {});
-      this.cursor = this._createChangeStreamCursor(this.cursor.resumeOptions);
-    } catch {
-      // if the topology can't reconnect, close the stream
-      await this.close();
-      throw changeStreamError;
-    }
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/client-side-encryption/auto_encrypter.ts b/server/data-import/node_modules/mongodb/src/client-side-encryption/auto_encrypter.ts
deleted file mode 100644
index 981a698837fe9b46a9beb9a796c5a02496aa027a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/client-side-encryption/auto_encrypter.ts
+++ /dev/null
@@ -1,570 +0,0 @@
-import {
-  type MongoCrypt,
-  type MongoCryptConstructor,
-  type MongoCryptOptions
-} from 'mongodb-client-encryption';
-
-import { deserialize, type Document, serialize } from '../bson';
-import { type CommandOptions, type ProxyOptions } from '../cmap/connection';
-import { getMongoDBClientEncryption } from '../deps';
-import { MongoRuntimeError } from '../error';
-import { MongoClient, type MongoClientOptions } from '../mongo_client';
-import { MongoDBCollectionNamespace } from '../utils';
-import * as cryptoCallbacks from './crypto_callbacks';
-import { MongoCryptInvalidArgumentError } from './errors';
-import { MongocryptdManager } from './mongocryptd_manager';
-import { type KMSProviders, refreshKMSCredentials } from './providers';
-import { type CSFLEKMSTlsOptions, StateMachine } from './state_machine';
-
-/** @public */
-export interface AutoEncryptionOptions {
-  /** @internal client for metadata lookups */
-  metadataClient?: MongoClient;
-  /** A `MongoClient` used to fetch keys from a key vault */
-  keyVaultClient?: MongoClient;
-  /** The namespace where keys are stored in the key vault */
-  keyVaultNamespace?: string;
-  /** Configuration options that are used by specific KMS providers during key generation, encryption, and decryption. */
-  kmsProviders?: {
-    /** Configuration options for using 'aws' as your KMS provider */
-    aws?:
-      | {
-          /** The access key used for the AWS KMS provider */
-          accessKeyId: string;
-          /** The secret access key used for the AWS KMS provider */
-          secretAccessKey: string;
-          /**
-           * An optional AWS session token that will be used as the
-           * X-Amz-Security-Token header for AWS requests.
-           */
-          sessionToken?: string;
-        }
-      | Record<string, never>;
-    /** Configuration options for using 'local' as your KMS provider */
-    local?: {
-      /**
-       * The master key used to encrypt/decrypt data keys.
-       * A 96-byte long Buffer or base64 encoded string.
-       */
-      key: Buffer | string;
-    };
-    /** Configuration options for using 'azure' as your KMS provider */
-    azure?:
-      | {
-          /** The tenant ID identifies the organization for the account */
-          tenantId: string;
-          /** The client ID to authenticate a registered application */
-          clientId: string;
-          /** The client secret to authenticate a registered application */
-          clientSecret: string;
-          /**
-           * If present, a host with optional port. E.g. "example.com" or "example.com:443".
-           * This is optional, and only needed if customer is using a non-commercial Azure instance
-           * (e.g. a government or China account, which use different URLs).
-           * Defaults to "login.microsoftonline.com"
-           */
-          identityPlatformEndpoint?: string | undefined;
-        }
-      | {
-          /**
-           * If present, an access token to authenticate with Azure.
-           */
-          accessToken: string;
-        }
-      | Record<string, never>;
-    /** Configuration options for using 'gcp' as your KMS provider */
-    gcp?:
-      | {
-          /** The service account email to authenticate */
-          email: string;
-          /** A PKCS#8 encrypted key. This can either be a base64 string or a binary representation */
-          privateKey: string | Buffer;
-          /**
-           * If present, a host with optional port. E.g. "example.com" or "example.com:443".
-           * Defaults to "oauth2.googleapis.com"
-           */
-          endpoint?: string | undefined;
-        }
-      | {
-          /**
-           * If present, an access token to authenticate with GCP.
-           */
-          accessToken: string;
-        }
-      | Record<string, never>;
-    /**
-     * Configuration options for using 'kmip' as your KMS provider
-     */
-    kmip?: {
-      /**
-       * The output endpoint string.
-       * The endpoint consists of a hostname and port separated by a colon.
-       * E.g. "example.com:123". A port is always present.
-       */
-      endpoint?: string;
-    };
-  };
-  /**
-   * A map of namespaces to a local JSON schema for encryption
-   *
-   * **NOTE**: Supplying options.schemaMap provides more security than relying on JSON Schemas obtained from the server.
-   * It protects against a malicious server advertising a false JSON Schema, which could trick the client into sending decrypted data that should be encrypted.
-   * Schemas supplied in the schemaMap only apply to configuring automatic encryption for Client-Side Field Level Encryption.
-   * Other validation rules in the JSON schema will not be enforced by the driver and will result in an error.
-   */
-  schemaMap?: Document;
-  /** Supply a schema for the encrypted fields in the document  */
-  encryptedFieldsMap?: Document;
-  /** Allows the user to bypass auto encryption, maintaining implicit decryption */
-  bypassAutoEncryption?: boolean;
-  /** Allows users to bypass query analysis */
-  bypassQueryAnalysis?: boolean;
-  options?: {
-    /** An optional hook to catch logging messages from the underlying encryption engine */
-    logger?: (level: AutoEncryptionLoggerLevel, message: string) => void;
-  };
-  extraOptions?: {
-    /**
-     * A local process the driver communicates with to determine how to encrypt values in a command.
-     * Defaults to "mongodb://%2Fvar%2Fmongocryptd.sock" if domain sockets are available or "mongodb://localhost:27020" otherwise
-     */
-    mongocryptdURI?: string;
-    /** If true, autoEncryption will not attempt to spawn a mongocryptd before connecting  */
-    mongocryptdBypassSpawn?: boolean;
-    /** The path to the mongocryptd executable on the system */
-    mongocryptdSpawnPath?: string;
-    /** Command line arguments to use when auto-spawning a mongocryptd */
-    mongocryptdSpawnArgs?: string[];
-    /**
-     * Full path to a MongoDB Crypt shared library to be used (instead of mongocryptd).
-     *
-     * This needs to be the path to the file itself, not a directory.
-     * It can be an absolute or relative path. If the path is relative and
-     * its first component is `$ORIGIN`, it will be replaced by the directory
-     * containing the mongodb-client-encryption native addon file. Otherwise,
-     * the path will be interpreted relative to the current working directory.
-     *
-     * Currently, loading different MongoDB Crypt shared library files from different
-     * MongoClients in the same process is not supported.
-     *
-     * If this option is provided and no MongoDB Crypt shared library could be loaded
-     * from the specified location, creating the MongoClient will fail.
-     *
-     * If this option is not provided and `cryptSharedLibRequired` is not specified,
-     * the AutoEncrypter will attempt to spawn and/or use mongocryptd according
-     * to the mongocryptd-specific `extraOptions` options.
-     *
-     * Specifying a path prevents mongocryptd from being used as a fallback.
-     *
-     * Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher.
-     */
-    cryptSharedLibPath?: string;
-    /**
-     * If specified, never use mongocryptd and instead fail when the MongoDB Crypt
-     * shared library could not be loaded.
-     *
-     * This is always true when `cryptSharedLibPath` is specified.
-     *
-     * Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher.
-     */
-    cryptSharedLibRequired?: boolean;
-    /**
-     * Search paths for a MongoDB Crypt shared library to be used (instead of mongocryptd)
-     * Only for driver testing!
-     * @internal
-     */
-    cryptSharedLibSearchPaths?: string[];
-  };
-  proxyOptions?: ProxyOptions;
-  /** The TLS options to use connecting to the KMS provider */
-  tlsOptions?: CSFLEKMSTlsOptions;
-}
-
-/**
- * @public
- *
- * Extra options related to the mongocryptd process
- * \* _Available in MongoDB 6.0 or higher._
- */
-export type AutoEncryptionExtraOptions = NonNullable<AutoEncryptionOptions['extraOptions']>;
-
-/** @public */
-export const AutoEncryptionLoggerLevel = Object.freeze({
-  FatalError: 0,
-  Error: 1,
-  Warning: 2,
-  Info: 3,
-  Trace: 4
-} as const);
-
-/**
- * @public
- * The level of severity of the log message
- *
- * | Value | Level |
- * |-------|-------|
- * | 0 | Fatal Error |
- * | 1 | Error |
- * | 2 | Warning |
- * | 3 | Info |
- * | 4 | Trace |
- */
-export type AutoEncryptionLoggerLevel =
-  (typeof AutoEncryptionLoggerLevel)[keyof typeof AutoEncryptionLoggerLevel];
-
-// Typescript errors if we index objects with `Symbol.for(...)`, so
-// to avoid TS errors we pull them out into variables.  Then we can type
-// the objects (and class) that we expect to see them on and prevent TS
-// errors.
-/** @internal */
-const kDecorateResult = Symbol.for('@@mdb.decorateDecryptionResult');
-/** @internal */
-const kDecoratedKeys = Symbol.for('@@mdb.decryptedKeys');
-
-/**
- * @internal An internal class to be used by the driver for auto encryption
- * **NOTE**: Not meant to be instantiated directly, this is for internal use only.
- */
-export class AutoEncrypter {
-  _client: MongoClient;
-  _bypassEncryption: boolean;
-  _keyVaultNamespace: string;
-  _keyVaultClient: MongoClient;
-  _metaDataClient: MongoClient;
-  _proxyOptions: ProxyOptions;
-  _tlsOptions: CSFLEKMSTlsOptions;
-  _kmsProviders: KMSProviders;
-  _bypassMongocryptdAndCryptShared: boolean;
-  _contextCounter: number;
-
-  _mongocryptdManager?: MongocryptdManager;
-  _mongocryptdClient?: MongoClient;
-
-  /** @internal */
-  _mongocrypt: MongoCrypt;
-
-  /**
-   * Used by devtools to enable decorating decryption results.
-   *
-   * When set and enabled, `decrypt` will automatically recursively
-   * traverse a decrypted document and if a field has been decrypted,
-   * it will mark it as decrypted.  Compass uses this to determine which
-   * fields were decrypted.
-   */
-  [kDecorateResult] = false;
-
-  /** @internal */
-  static getMongoCrypt(): MongoCryptConstructor {
-    const encryption = getMongoDBClientEncryption();
-    if ('kModuleError' in encryption) {
-      throw encryption.kModuleError;
-    }
-    return encryption.MongoCrypt;
-  }
-
-  /**
-   * Create an AutoEncrypter
-   *
-   * **Note**: Do not instantiate this class directly. Rather, supply the relevant options to a MongoClient
-   *
-   * **Note**: Supplying `options.schemaMap` provides more security than relying on JSON Schemas obtained from the server.
-   * It protects against a malicious server advertising a false JSON Schema, which could trick the client into sending unencrypted data that should be encrypted.
-   * Schemas supplied in the schemaMap only apply to configuring automatic encryption for Client-Side Field Level Encryption.
-   * Other validation rules in the JSON schema will not be enforced by the driver and will result in an error.
-   *
-   * @example <caption>Create an AutoEncrypter that makes use of mongocryptd</caption>
-   * ```ts
-   * // Enabling autoEncryption via a MongoClient using mongocryptd
-   * const { MongoClient } = require('mongodb');
-   * const client = new MongoClient(URL, {
-   *   autoEncryption: {
-   *     kmsProviders: {
-   *       aws: {
-   *         accessKeyId: AWS_ACCESS_KEY,
-   *         secretAccessKey: AWS_SECRET_KEY
-   *       }
-   *     }
-   *   }
-   * });
-   * ```
-   *
-   * await client.connect();
-   * // From here on, the client will be encrypting / decrypting automatically
-   * @example <caption>Create an AutoEncrypter that makes use of libmongocrypt's CSFLE shared library</caption>
-   * ```ts
-   * // Enabling autoEncryption via a MongoClient using CSFLE shared library
-   * const { MongoClient } = require('mongodb');
-   * const client = new MongoClient(URL, {
-   *   autoEncryption: {
-   *     kmsProviders: {
-   *       aws: {}
-   *     },
-   *     extraOptions: {
-   *       cryptSharedLibPath: '/path/to/local/crypt/shared/lib',
-   *       cryptSharedLibRequired: true
-   *     }
-   *   }
-   * });
-   * ```
-   *
-   * await client.connect();
-   * // From here on, the client will be encrypting / decrypting automatically
-   */
-  constructor(client: MongoClient, options: AutoEncryptionOptions) {
-    this._client = client;
-    this._bypassEncryption = options.bypassAutoEncryption === true;
-
-    this._keyVaultNamespace = options.keyVaultNamespace || 'admin.datakeys';
-    this._keyVaultClient = options.keyVaultClient || client;
-    this._metaDataClient = options.metadataClient || client;
-    this._proxyOptions = options.proxyOptions || {};
-    this._tlsOptions = options.tlsOptions || {};
-    this._kmsProviders = options.kmsProviders || {};
-
-    const mongoCryptOptions: MongoCryptOptions = {
-      cryptoCallbacks
-    };
-    if (options.schemaMap) {
-      mongoCryptOptions.schemaMap = Buffer.isBuffer(options.schemaMap)
-        ? options.schemaMap
-        : (serialize(options.schemaMap) as Buffer);
-    }
-
-    if (options.encryptedFieldsMap) {
-      mongoCryptOptions.encryptedFieldsMap = Buffer.isBuffer(options.encryptedFieldsMap)
-        ? options.encryptedFieldsMap
-        : (serialize(options.encryptedFieldsMap) as Buffer);
-    }
-
-    mongoCryptOptions.kmsProviders = !Buffer.isBuffer(this._kmsProviders)
-      ? (serialize(this._kmsProviders) as Buffer)
-      : this._kmsProviders;
-
-    if (options.options?.logger) {
-      mongoCryptOptions.logger = options.options.logger;
-    }
-
-    if (options.extraOptions && options.extraOptions.cryptSharedLibPath) {
-      mongoCryptOptions.cryptSharedLibPath = options.extraOptions.cryptSharedLibPath;
-    }
-
-    if (options.bypassQueryAnalysis) {
-      mongoCryptOptions.bypassQueryAnalysis = options.bypassQueryAnalysis;
-    }
-
-    this._bypassMongocryptdAndCryptShared = this._bypassEncryption || !!options.bypassQueryAnalysis;
-
-    if (options.extraOptions && options.extraOptions.cryptSharedLibSearchPaths) {
-      // Only for driver testing
-      mongoCryptOptions.cryptSharedLibSearchPaths = options.extraOptions.cryptSharedLibSearchPaths;
-    } else if (!this._bypassMongocryptdAndCryptShared) {
-      mongoCryptOptions.cryptSharedLibSearchPaths = ['$SYSTEM'];
-    }
-
-    const MongoCrypt = AutoEncrypter.getMongoCrypt();
-    this._mongocrypt = new MongoCrypt(mongoCryptOptions);
-    this._contextCounter = 0;
-
-    if (
-      options.extraOptions &&
-      options.extraOptions.cryptSharedLibRequired &&
-      !this.cryptSharedLibVersionInfo
-    ) {
-      throw new MongoCryptInvalidArgumentError(
-        '`cryptSharedLibRequired` set but no crypt_shared library loaded'
-      );
-    }
-
-    // Only instantiate mongocryptd manager/client once we know for sure
-    // that we are not using the CSFLE shared library.
-    if (!this._bypassMongocryptdAndCryptShared && !this.cryptSharedLibVersionInfo) {
-      this._mongocryptdManager = new MongocryptdManager(options.extraOptions);
-      const clientOptions: MongoClientOptions = {
-        serverSelectionTimeoutMS: 10000
-      };
-
-      if (options.extraOptions == null || typeof options.extraOptions.mongocryptdURI !== 'string') {
-        clientOptions.family = 4;
-      }
-
-      this._mongocryptdClient = new MongoClient(this._mongocryptdManager.uri, clientOptions);
-    }
-  }
-
-  /**
-   * Initializes the auto encrypter by spawning a mongocryptd and connecting to it.
-   *
-   * This function is a no-op when bypassSpawn is set or the crypt shared library is used.
-   */
-  async init(): Promise<MongoClient | void> {
-    if (this._bypassMongocryptdAndCryptShared || this.cryptSharedLibVersionInfo) {
-      return;
-    }
-    if (!this._mongocryptdManager) {
-      throw new MongoRuntimeError(
-        'Reached impossible state: mongocryptdManager is undefined when neither bypassSpawn nor the shared lib are specified.'
-      );
-    }
-    if (!this._mongocryptdClient) {
-      throw new MongoRuntimeError(
-        'Reached impossible state: mongocryptdClient is undefined when neither bypassSpawn nor the shared lib are specified.'
-      );
-    }
-
-    if (!this._mongocryptdManager.bypassSpawn) {
-      await this._mongocryptdManager.spawn();
-    }
-
-    try {
-      const client = await this._mongocryptdClient.connect();
-      return client;
-    } catch (error) {
-      const { message } = error;
-      if (message && (message.match(/timed out after/) || message.match(/ENOTFOUND/))) {
-        throw new MongoRuntimeError(
-          'Unable to connect to `mongocryptd`, please make sure it is running or in your PATH for auto-spawn',
-          { cause: error }
-        );
-      }
-      throw error;
-    }
-  }
-
-  /**
-   * Cleans up the `_mongocryptdClient`, if present.
-   */
-  async teardown(force: boolean): Promise<void> {
-    await this._mongocryptdClient?.close(force);
-  }
-
-  /**
-   * Encrypt a command for a given namespace.
-   */
-  async encrypt(
-    ns: string,
-    cmd: Document,
-    options: CommandOptions = {}
-  ): Promise<Document | Uint8Array> {
-    if (this._bypassEncryption) {
-      // If `bypassAutoEncryption` has been specified, don't encrypt
-      return cmd;
-    }
-
-    const commandBuffer = Buffer.isBuffer(cmd) ? cmd : serialize(cmd, options);
-
-    const context = this._mongocrypt.makeEncryptionContext(
-      MongoDBCollectionNamespace.fromString(ns).db,
-      commandBuffer
-    );
-
-    context.id = this._contextCounter++;
-    context.ns = ns;
-    context.document = cmd;
-
-    const stateMachine = new StateMachine({
-      promoteValues: false,
-      promoteLongs: false,
-      proxyOptions: this._proxyOptions,
-      tlsOptions: this._tlsOptions
-    });
-    return stateMachine.execute<Document>(this, context);
-  }
-
-  /**
-   * Decrypt a command response
-   */
-  async decrypt(response: Uint8Array | Document, options: CommandOptions = {}): Promise<Document> {
-    const buffer = Buffer.isBuffer(response) ? response : serialize(response, options);
-
-    const context = this._mongocrypt.makeDecryptionContext(buffer);
-
-    context.id = this._contextCounter++;
-
-    const stateMachine = new StateMachine({
-      ...options,
-      proxyOptions: this._proxyOptions,
-      tlsOptions: this._tlsOptions
-    });
-
-    const decorateResult = this[kDecorateResult];
-    const result = await stateMachine.execute<Document>(this, context);
-    if (decorateResult) {
-      decorateDecryptionResult(result, response);
-    }
-    return result;
-  }
-
-  /**
-   * Ask the user for KMS credentials.
-   *
-   * This returns anything that looks like the kmsProviders original input
-   * option. It can be empty, and any provider specified here will override
-   * the original ones.
-   */
-  async askForKMSCredentials(): Promise<KMSProviders> {
-    return refreshKMSCredentials(this._kmsProviders);
-  }
-
-  /**
-   * Return the current libmongocrypt's CSFLE shared library version
-   * as `{ version: bigint, versionStr: string }`, or `null` if no CSFLE
-   * shared library was loaded.
-   */
-  get cryptSharedLibVersionInfo(): { version: bigint; versionStr: string } | null {
-    return this._mongocrypt.cryptSharedLibVersionInfo;
-  }
-
-  static get libmongocryptVersion(): string {
-    return AutoEncrypter.getMongoCrypt().libmongocryptVersion;
-  }
-}
-
-/**
- * Recurse through the (identically-shaped) `decrypted` and `original`
- * objects and attach a `decryptedKeys` property on each sub-object that
- * contained encrypted fields. Because we only call this on BSON responses,
- * we do not need to worry about circular references.
- *
- * @internal
- */
-function decorateDecryptionResult(
-  decrypted: Document & { [kDecoratedKeys]?: Array<string> },
-  original: Document,
-  isTopLevelDecorateCall = true
-): void {
-  if (isTopLevelDecorateCall) {
-    // The original value could have been either a JS object or a BSON buffer
-    if (Buffer.isBuffer(original)) {
-      original = deserialize(original);
-    }
-    if (Buffer.isBuffer(decrypted)) {
-      throw new MongoRuntimeError('Expected result of decryption to be deserialized BSON object');
-    }
-  }
-
-  if (!decrypted || typeof decrypted !== 'object') return;
-  for (const k of Object.keys(decrypted)) {
-    const originalValue = original[k];
-
-    // An object was decrypted by libmongocrypt if and only if it was
-    // a BSON Binary object with subtype 6.
-    if (originalValue && originalValue._bsontype === 'Binary' && originalValue.sub_type === 6) {
-      if (!decrypted[kDecoratedKeys]) {
-        Object.defineProperty(decrypted, kDecoratedKeys, {
-          value: [],
-          configurable: true,
-          enumerable: false,
-          writable: false
-        });
-      }
-      // this is defined in the preceding if-statement
-      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-      decrypted[kDecoratedKeys]!.push(k);
-      // Do not recurse into this decrypted value. It could be a sub-document/array,
-      // in which case there is no original value associated with its subfields.
-      continue;
-    }
-
-    decorateDecryptionResult(decrypted[k], originalValue, false);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/client-side-encryption/client_encryption.ts b/server/data-import/node_modules/mongodb/src/client-side-encryption/client_encryption.ts
deleted file mode 100644
index dbd946ed3664fad72d78acfc12c60283d9335703..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/client-side-encryption/client_encryption.ts
+++ /dev/null
@@ -1,984 +0,0 @@
-import type {
-  ExplicitEncryptionContextOptions,
-  MongoCrypt,
-  MongoCryptConstructor,
-  MongoCryptOptions
-} from 'mongodb-client-encryption';
-
-import { type Binary, type Document, type Long, serialize, type UUID } from '../bson';
-import { type AnyBulkWriteOperation, type BulkWriteResult } from '../bulk/common';
-import { type ProxyOptions } from '../cmap/connection';
-import { type Collection } from '../collection';
-import { type FindCursor } from '../cursor/find_cursor';
-import { type Db } from '../db';
-import { getMongoDBClientEncryption } from '../deps';
-import { type MongoClient } from '../mongo_client';
-import { type Filter, type WithId } from '../mongo_types';
-import { type CreateCollectionOptions } from '../operations/create_collection';
-import { type DeleteResult } from '../operations/delete';
-import { MongoDBCollectionNamespace } from '../utils';
-import * as cryptoCallbacks from './crypto_callbacks';
-import {
-  MongoCryptCreateDataKeyError,
-  MongoCryptCreateEncryptedCollectionError,
-  MongoCryptInvalidArgumentError
-} from './errors';
-import {
-  type ClientEncryptionDataKeyProvider,
-  type KMSProviders,
-  refreshKMSCredentials
-} from './providers/index';
-import { type CSFLEKMSTlsOptions, StateMachine } from './state_machine';
-
-/**
- * @public
- * The schema for a DataKey in the key vault collection.
- */
-export interface DataKey {
-  _id: UUID;
-  version?: number;
-  keyAltNames?: string[];
-  keyMaterial: Binary;
-  creationDate: Date;
-  updateDate: Date;
-  status: number;
-  masterKey: Document;
-}
-
-/**
- * @public
- * The public interface for explicit in-use encryption
- */
-export class ClientEncryption {
-  /** @internal */
-  _client: MongoClient;
-  /** @internal */
-  _keyVaultNamespace: string;
-  /** @internal */
-  _keyVaultClient: MongoClient;
-  /** @internal */
-  _proxyOptions: ProxyOptions;
-  /** @internal */
-  _tlsOptions: CSFLEKMSTlsOptions;
-  /** @internal */
-  _kmsProviders: KMSProviders;
-
-  /** @internal */
-  _mongoCrypt: MongoCrypt;
-
-  /** @internal */
-  static getMongoCrypt(): MongoCryptConstructor {
-    const encryption = getMongoDBClientEncryption();
-    if ('kModuleError' in encryption) {
-      throw encryption.kModuleError;
-    }
-    return encryption.MongoCrypt;
-  }
-
-  /**
-   * Create a new encryption instance
-   *
-   * @example
-   * ```ts
-   * new ClientEncryption(mongoClient, {
-   *   keyVaultNamespace: 'client.encryption',
-   *   kmsProviders: {
-   *     local: {
-   *       key: masterKey // The master key used for encryption/decryption. A 96-byte long Buffer
-   *     }
-   *   }
-   * });
-   * ```
-   *
-   * @example
-   * ```ts
-   * new ClientEncryption(mongoClient, {
-   *   keyVaultNamespace: 'client.encryption',
-   *   kmsProviders: {
-   *     aws: {
-   *       accessKeyId: AWS_ACCESS_KEY,
-   *       secretAccessKey: AWS_SECRET_KEY
-   *     }
-   *   }
-   * });
-   * ```
-   */
-  constructor(client: MongoClient, options: ClientEncryptionOptions) {
-    this._client = client;
-    this._proxyOptions = options.proxyOptions ?? {};
-    this._tlsOptions = options.tlsOptions ?? {};
-    this._kmsProviders = options.kmsProviders || {};
-
-    if (options.keyVaultNamespace == null) {
-      throw new MongoCryptInvalidArgumentError('Missing required option `keyVaultNamespace`');
-    }
-
-    const mongoCryptOptions: MongoCryptOptions = {
-      ...options,
-      cryptoCallbacks,
-      kmsProviders: !Buffer.isBuffer(this._kmsProviders)
-        ? (serialize(this._kmsProviders) as Buffer)
-        : this._kmsProviders
-    };
-
-    this._keyVaultNamespace = options.keyVaultNamespace;
-    this._keyVaultClient = options.keyVaultClient || client;
-    const MongoCrypt = ClientEncryption.getMongoCrypt();
-    this._mongoCrypt = new MongoCrypt(mongoCryptOptions);
-  }
-
-  /**
-   * Creates a data key used for explicit encryption and inserts it into the key vault namespace
-   *
-   * @example
-   * ```ts
-   * // Using async/await to create a local key
-   * const dataKeyId = await clientEncryption.createDataKey('local');
-   * ```
-   *
-   * @example
-   * ```ts
-   * // Using async/await to create an aws key
-   * const dataKeyId = await clientEncryption.createDataKey('aws', {
-   *   masterKey: {
-   *     region: 'us-east-1',
-   *     key: 'xxxxxxxxxxxxxx' // CMK ARN here
-   *   }
-   * });
-   * ```
-   *
-   * @example
-   * ```ts
-   * // Using async/await to create an aws key with a keyAltName
-   * const dataKeyId = await clientEncryption.createDataKey('aws', {
-   *   masterKey: {
-   *     region: 'us-east-1',
-   *     key: 'xxxxxxxxxxxxxx' // CMK ARN here
-   *   },
-   *   keyAltNames: [ 'mySpecialKey' ]
-   * });
-   * ```
-   */
-  async createDataKey(
-    provider: ClientEncryptionDataKeyProvider,
-    options: ClientEncryptionCreateDataKeyProviderOptions = {}
-  ): Promise<UUID> {
-    if (options.keyAltNames && !Array.isArray(options.keyAltNames)) {
-      throw new MongoCryptInvalidArgumentError(
-        `Option "keyAltNames" must be an array of strings, but was of type ${typeof options.keyAltNames}.`
-      );
-    }
-
-    let keyAltNames = undefined;
-    if (options.keyAltNames && options.keyAltNames.length > 0) {
-      keyAltNames = options.keyAltNames.map((keyAltName, i) => {
-        if (typeof keyAltName !== 'string') {
-          throw new MongoCryptInvalidArgumentError(
-            `Option "keyAltNames" must be an array of strings, but item at index ${i} was of type ${typeof keyAltName}`
-          );
-        }
-
-        return serialize({ keyAltName });
-      });
-    }
-
-    let keyMaterial = undefined;
-    if (options.keyMaterial) {
-      keyMaterial = serialize({ keyMaterial: options.keyMaterial });
-    }
-
-    const dataKeyBson = serialize({
-      provider,
-      ...options.masterKey
-    });
-
-    const context = this._mongoCrypt.makeDataKeyContext(dataKeyBson, {
-      keyAltNames,
-      keyMaterial
-    });
-
-    const stateMachine = new StateMachine({
-      proxyOptions: this._proxyOptions,
-      tlsOptions: this._tlsOptions
-    });
-
-    const dataKey = await stateMachine.execute<DataKey>(this, context);
-
-    const { db: dbName, collection: collectionName } = MongoDBCollectionNamespace.fromString(
-      this._keyVaultNamespace
-    );
-
-    const { insertedId } = await this._keyVaultClient
-      .db(dbName)
-      .collection<DataKey>(collectionName)
-      .insertOne(dataKey, { writeConcern: { w: 'majority' } });
-
-    return insertedId;
-  }
-
-  /**
-   * Searches the keyvault for any data keys matching the provided filter.  If there are matches, rewrapManyDataKey then attempts to re-wrap the data keys using the provided options.
-   *
-   * If no matches are found, then no bulk write is performed.
-   *
-   * @example
-   * ```ts
-   * // rewrapping all data data keys (using a filter that matches all documents)
-   * const filter = {};
-   *
-   * const result = await clientEncryption.rewrapManyDataKey(filter);
-   * if (result.bulkWriteResult != null) {
-   *  // keys were re-wrapped, results will be available in the bulkWrite object.
-   * }
-   * ```
-   *
-   * @example
-   * ```ts
-   * // attempting to rewrap all data keys with no matches
-   * const filter = { _id: new Binary() } // assume _id matches no documents in the database
-   * const result = await clientEncryption.rewrapManyDataKey(filter);
-   *
-   * if (result.bulkWriteResult == null) {
-   *  // no keys matched, `bulkWriteResult` does not exist on the result object
-   * }
-   * ```
-   */
-  async rewrapManyDataKey(
-    filter: Filter<DataKey>,
-    options: ClientEncryptionRewrapManyDataKeyProviderOptions
-  ): Promise<{ bulkWriteResult?: BulkWriteResult }> {
-    let keyEncryptionKeyBson = undefined;
-    if (options) {
-      const keyEncryptionKey = Object.assign({ provider: options.provider }, options.masterKey);
-      keyEncryptionKeyBson = serialize(keyEncryptionKey);
-    }
-    const filterBson = serialize(filter);
-    const context = this._mongoCrypt.makeRewrapManyDataKeyContext(filterBson, keyEncryptionKeyBson);
-    const stateMachine = new StateMachine({
-      proxyOptions: this._proxyOptions,
-      tlsOptions: this._tlsOptions
-    });
-
-    const { v: dataKeys } = await stateMachine.execute<{ v: DataKey[] }>(this, context);
-    if (dataKeys.length === 0) {
-      return {};
-    }
-
-    const { db: dbName, collection: collectionName } = MongoDBCollectionNamespace.fromString(
-      this._keyVaultNamespace
-    );
-
-    const replacements = dataKeys.map(
-      (key: DataKey): AnyBulkWriteOperation<DataKey> => ({
-        updateOne: {
-          filter: { _id: key._id },
-          update: {
-            $set: {
-              masterKey: key.masterKey,
-              keyMaterial: key.keyMaterial
-            },
-            $currentDate: {
-              updateDate: true
-            }
-          }
-        }
-      })
-    );
-
-    const result = await this._keyVaultClient
-      .db(dbName)
-      .collection<DataKey>(collectionName)
-      .bulkWrite(replacements, {
-        writeConcern: { w: 'majority' }
-      });
-
-    return { bulkWriteResult: result };
-  }
-
-  /**
-   * Deletes the key with the provided id from the keyvault, if it exists.
-   *
-   * @example
-   * ```ts
-   * // delete a key by _id
-   * const id = new Binary(); // id is a bson binary subtype 4 object
-   * const { deletedCount } = await clientEncryption.deleteKey(id);
-   *
-   * if (deletedCount != null && deletedCount > 0) {
-   *   // successful deletion
-   * }
-   * ```
-   *
-   */
-  async deleteKey(_id: Binary): Promise<DeleteResult> {
-    const { db: dbName, collection: collectionName } = MongoDBCollectionNamespace.fromString(
-      this._keyVaultNamespace
-    );
-
-    return this._keyVaultClient
-      .db(dbName)
-      .collection<DataKey>(collectionName)
-      .deleteOne({ _id }, { writeConcern: { w: 'majority' } });
-  }
-
-  /**
-   * Finds all the keys currently stored in the keyvault.
-   *
-   * This method will not throw.
-   *
-   * @returns a FindCursor over all keys in the keyvault.
-   * @example
-   * ```ts
-   * // fetching all keys
-   * const keys = await clientEncryption.getKeys().toArray();
-   * ```
-   */
-  getKeys(): FindCursor<DataKey> {
-    const { db: dbName, collection: collectionName } = MongoDBCollectionNamespace.fromString(
-      this._keyVaultNamespace
-    );
-
-    return this._keyVaultClient
-      .db(dbName)
-      .collection<DataKey>(collectionName)
-      .find({}, { readConcern: { level: 'majority' } });
-  }
-
-  /**
-   * Finds a key in the keyvault with the specified _id.
-   *
-   * Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
-   * match the id.  The promise rejects with an error if an error is thrown.
-   * @example
-   * ```ts
-   * // getting a key by id
-   * const id = new Binary(); // id is a bson binary subtype 4 object
-   * const key = await clientEncryption.getKey(id);
-   * if (!key) {
-   *  // key is null if there was no matching key
-   * }
-   * ```
-   */
-  async getKey(_id: Binary): Promise<DataKey | null> {
-    const { db: dbName, collection: collectionName } = MongoDBCollectionNamespace.fromString(
-      this._keyVaultNamespace
-    );
-
-    return this._keyVaultClient
-      .db(dbName)
-      .collection<DataKey>(collectionName)
-      .findOne({ _id }, { readConcern: { level: 'majority' } });
-  }
-
-  /**
-   * Finds a key in the keyvault which has the specified keyAltName.
-   *
-   * @param keyAltName - a keyAltName to search for a key
-   * @returns Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
-   * match the keyAltName.  The promise rejects with an error if an error is thrown.
-   * @example
-   * ```ts
-   * // get a key by alt name
-   * const keyAltName = 'keyAltName';
-   * const key = await clientEncryption.getKeyByAltName(keyAltName);
-   * if (!key) {
-   *  // key is null if there is no matching key
-   * }
-   * ```
-   */
-  async getKeyByAltName(keyAltName: string): Promise<WithId<DataKey> | null> {
-    const { db: dbName, collection: collectionName } = MongoDBCollectionNamespace.fromString(
-      this._keyVaultNamespace
-    );
-
-    return this._keyVaultClient
-      .db(dbName)
-      .collection<DataKey>(collectionName)
-      .findOne({ keyAltNames: keyAltName }, { readConcern: { level: 'majority' } });
-  }
-
-  /**
-   * Adds a keyAltName to a key identified by the provided _id.
-   *
-   * This method resolves to/returns the *old* key value (prior to adding the new altKeyName).
-   *
-   * @param _id - The id of the document to update.
-   * @param keyAltName - a keyAltName to search for a key
-   * @returns Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
-   * match the id.  The promise rejects with an error if an error is thrown.
-   * @example
-   * ```ts
-   * // adding an keyAltName to a data key
-   * const id = new Binary();  // id is a bson binary subtype 4 object
-   * const keyAltName = 'keyAltName';
-   * const oldKey = await clientEncryption.addKeyAltName(id, keyAltName);
-   * if (!oldKey) {
-   *  // null is returned if there is no matching document with an id matching the supplied id
-   * }
-   * ```
-   */
-  async addKeyAltName(_id: Binary, keyAltName: string): Promise<WithId<DataKey> | null> {
-    const { db: dbName, collection: collectionName } = MongoDBCollectionNamespace.fromString(
-      this._keyVaultNamespace
-    );
-
-    const value = await this._keyVaultClient
-      .db(dbName)
-      .collection<DataKey>(collectionName)
-      .findOneAndUpdate(
-        { _id },
-        { $addToSet: { keyAltNames: keyAltName } },
-        { writeConcern: { w: 'majority' }, returnDocument: 'before' }
-      );
-
-    return value;
-  }
-
-  /**
-   * Adds a keyAltName to a key identified by the provided _id.
-   *
-   * This method resolves to/returns the *old* key value (prior to removing the new altKeyName).
-   *
-   * If the removed keyAltName is the last keyAltName for that key, the `altKeyNames` property is unset from the document.
-   *
-   * @param _id - The id of the document to update.
-   * @param keyAltName - a keyAltName to search for a key
-   * @returns Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
-   * match the id.  The promise rejects with an error if an error is thrown.
-   * @example
-   * ```ts
-   * // removing a key alt name from a data key
-   * const id = new Binary();  // id is a bson binary subtype 4 object
-   * const keyAltName = 'keyAltName';
-   * const oldKey = await clientEncryption.removeKeyAltName(id, keyAltName);
-   *
-   * if (!oldKey) {
-   *  // null is returned if there is no matching document with an id matching the supplied id
-   * }
-   * ```
-   */
-  async removeKeyAltName(_id: Binary, keyAltName: string): Promise<WithId<DataKey> | null> {
-    const { db: dbName, collection: collectionName } = MongoDBCollectionNamespace.fromString(
-      this._keyVaultNamespace
-    );
-
-    const pipeline = [
-      {
-        $set: {
-          keyAltNames: {
-            $cond: [
-              {
-                $eq: ['$keyAltNames', [keyAltName]]
-              },
-              '$$REMOVE',
-              {
-                $filter: {
-                  input: '$keyAltNames',
-                  cond: {
-                    $ne: ['$$this', keyAltName]
-                  }
-                }
-              }
-            ]
-          }
-        }
-      }
-    ];
-    const value = await this._keyVaultClient
-      .db(dbName)
-      .collection<DataKey>(collectionName)
-      .findOneAndUpdate({ _id }, pipeline, {
-        writeConcern: { w: 'majority' },
-        returnDocument: 'before'
-      });
-
-    return value;
-  }
-
-  /**
-   * A convenience method for creating an encrypted collection.
-   * This method will create data keys for any encryptedFields that do not have a `keyId` defined
-   * and then create a new collection with the full set of encryptedFields.
-   *
-   * @param db - A Node.js driver Db object with which to create the collection
-   * @param name - The name of the collection to be created
-   * @param options - Options for createDataKey and for createCollection
-   * @returns created collection and generated encryptedFields
-   * @throws MongoCryptCreateDataKeyError - If part way through the process a createDataKey invocation fails, an error will be rejected that has the partial `encryptedFields` that were created.
-   * @throws MongoCryptCreateEncryptedCollectionError - If creating the collection fails, an error will be rejected that has the entire `encryptedFields` that were created.
-   */
-  async createEncryptedCollection<TSchema extends Document = Document>(
-    db: Db,
-    name: string,
-    options: {
-      provider: ClientEncryptionDataKeyProvider;
-      createCollectionOptions: Omit<CreateCollectionOptions, 'encryptedFields'> & {
-        encryptedFields: Document;
-      };
-      masterKey?: AWSEncryptionKeyOptions | AzureEncryptionKeyOptions | GCPEncryptionKeyOptions;
-    }
-  ): Promise<{ collection: Collection<TSchema>; encryptedFields: Document }> {
-    const {
-      provider,
-      masterKey,
-      createCollectionOptions: {
-        encryptedFields: { ...encryptedFields },
-        ...createCollectionOptions
-      }
-    } = options;
-
-    if (Array.isArray(encryptedFields.fields)) {
-      const createDataKeyPromises = encryptedFields.fields.map(async field =>
-        field == null || typeof field !== 'object' || field.keyId != null
-          ? field
-          : {
-              ...field,
-              keyId: await this.createDataKey(provider, { masterKey })
-            }
-      );
-
-      const createDataKeyResolutions = await Promise.allSettled(createDataKeyPromises);
-
-      encryptedFields.fields = createDataKeyResolutions.map((resolution, index) =>
-        resolution.status === 'fulfilled' ? resolution.value : encryptedFields.fields[index]
-      );
-
-      const rejection = createDataKeyResolutions.find(
-        (result): result is PromiseRejectedResult => result.status === 'rejected'
-      );
-      if (rejection != null) {
-        throw new MongoCryptCreateDataKeyError(encryptedFields, { cause: rejection.reason });
-      }
-    }
-
-    try {
-      const collection = await db.createCollection<TSchema>(name, {
-        ...createCollectionOptions,
-        encryptedFields
-      });
-      return { collection, encryptedFields };
-    } catch (cause) {
-      throw new MongoCryptCreateEncryptedCollectionError(encryptedFields, { cause });
-    }
-  }
-
-  /**
-   * Explicitly encrypt a provided value. Note that either `options.keyId` or `options.keyAltName` must
-   * be specified. Specifying both `options.keyId` and `options.keyAltName` is considered an error.
-   *
-   * @param value - The value that you wish to serialize. Must be of a type that can be serialized into BSON
-   * @param options -
-   * @returns a Promise that either resolves with the encrypted value, or rejects with an error.
-   *
-   * @example
-   * ```ts
-   * // Encryption with async/await api
-   * async function encryptMyData(value) {
-   *   const keyId = await clientEncryption.createDataKey('local');
-   *   return clientEncryption.encrypt(value, { keyId, algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' });
-   * }
-   * ```
-   *
-   * @example
-   * ```ts
-   * // Encryption using a keyAltName
-   * async function encryptMyData(value) {
-   *   await clientEncryption.createDataKey('local', { keyAltNames: 'mySpecialKey' });
-   *   return clientEncryption.encrypt(value, { keyAltName: 'mySpecialKey', algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' });
-   * }
-   * ```
-   */
-  async encrypt(value: unknown, options: ClientEncryptionEncryptOptions): Promise<Binary> {
-    return this._encrypt(value, false, options);
-  }
-
-  /**
-   * Encrypts a Match Expression or Aggregate Expression to query a range index.
-   *
-   * Only supported when queryType is "rangePreview" and algorithm is "RangePreview".
-   *
-   * @experimental The Range algorithm is experimental only. It is not intended for production use. It is subject to breaking changes.
-   *
-   * @param expression - a BSON document of one of the following forms:
-   *  1. A Match Expression of this form:
-   *      `{$and: [{<field>: {$gt: <value1>}}, {<field>: {$lt: <value2> }}]}`
-   *  2. An Aggregate Expression of this form:
-   *      `{$and: [{$gt: [<fieldpath>, <value1>]}, {$lt: [<fieldpath>, <value2>]}]}`
-   *
-   *    `$gt` may also be `$gte`. `$lt` may also be `$lte`.
-   *
-   * @param options -
-   * @returns Returns a Promise that either resolves with the encrypted value or rejects with an error.
-   */
-  async encryptExpression(
-    expression: Document,
-    options: ClientEncryptionEncryptOptions
-  ): Promise<Binary> {
-    return this._encrypt(expression, true, options);
-  }
-
-  /**
-   * Explicitly decrypt a provided encrypted value
-   *
-   * @param value - An encrypted value
-   * @returns a Promise that either resolves with the decrypted value, or rejects with an error
-   *
-   * @example
-   * ```ts
-   * // Decrypting value with async/await API
-   * async function decryptMyValue(value) {
-   *   return clientEncryption.decrypt(value);
-   * }
-   * ```
-   */
-  async decrypt<T = any>(value: Binary): Promise<T> {
-    const valueBuffer = serialize({ v: value });
-    const context = this._mongoCrypt.makeExplicitDecryptionContext(valueBuffer);
-
-    const stateMachine = new StateMachine({
-      proxyOptions: this._proxyOptions,
-      tlsOptions: this._tlsOptions
-    });
-
-    const { v } = await stateMachine.execute<{ v: T }>(this, context);
-
-    return v;
-  }
-
-  /**
-   * @internal
-   * Ask the user for KMS credentials.
-   *
-   * This returns anything that looks like the kmsProviders original input
-   * option. It can be empty, and any provider specified here will override
-   * the original ones.
-   */
-  async askForKMSCredentials(): Promise<KMSProviders> {
-    return refreshKMSCredentials(this._kmsProviders);
-  }
-
-  static get libmongocryptVersion() {
-    return ClientEncryption.getMongoCrypt().libmongocryptVersion;
-  }
-
-  /**
-   * @internal
-   * A helper that perform explicit encryption of values and expressions.
-   * Explicitly encrypt a provided value. Note that either `options.keyId` or `options.keyAltName` must
-   * be specified. Specifying both `options.keyId` and `options.keyAltName` is considered an error.
-   *
-   * @param value - The value that you wish to encrypt. Must be of a type that can be serialized into BSON
-   * @param expressionMode - a boolean that indicates whether or not to encrypt the value as an expression
-   * @param options - options to pass to encrypt
-   * @returns the raw result of the call to stateMachine.execute().  When expressionMode is set to true, the return
-   *          value will be a bson document.  When false, the value will be a BSON Binary.
-   *
-   */
-  private async _encrypt(
-    value: unknown,
-    expressionMode: boolean,
-    options: ClientEncryptionEncryptOptions
-  ): Promise<Binary> {
-    const { algorithm, keyId, keyAltName, contentionFactor, queryType, rangeOptions } = options;
-    const contextOptions: ExplicitEncryptionContextOptions = {
-      expressionMode,
-      algorithm
-    };
-    if (keyId) {
-      contextOptions.keyId = keyId.buffer;
-    }
-    if (keyAltName) {
-      if (keyId) {
-        throw new MongoCryptInvalidArgumentError(
-          `"options" cannot contain both "keyId" and "keyAltName"`
-        );
-      }
-      if (typeof keyAltName !== 'string') {
-        throw new MongoCryptInvalidArgumentError(
-          `"options.keyAltName" must be of type string, but was of type ${typeof keyAltName}`
-        );
-      }
-
-      contextOptions.keyAltName = serialize({ keyAltName });
-    }
-    if (typeof contentionFactor === 'number' || typeof contentionFactor === 'bigint') {
-      contextOptions.contentionFactor = contentionFactor;
-    }
-    if (typeof queryType === 'string') {
-      contextOptions.queryType = queryType;
-    }
-
-    if (typeof rangeOptions === 'object') {
-      contextOptions.rangeOptions = serialize(rangeOptions);
-    }
-
-    const valueBuffer = serialize({ v: value });
-    const stateMachine = new StateMachine({
-      proxyOptions: this._proxyOptions,
-      tlsOptions: this._tlsOptions
-    });
-    const context = this._mongoCrypt.makeExplicitEncryptionContext(valueBuffer, contextOptions);
-
-    const result = await stateMachine.execute<{ v: Binary }>(this, context);
-    return result.v;
-  }
-}
-
-/**
- * @public
- * Options to provide when encrypting data.
- */
-export interface ClientEncryptionEncryptOptions {
-  /**
-   * The algorithm to use for encryption.
-   */
-  algorithm:
-    | 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic'
-    | 'AEAD_AES_256_CBC_HMAC_SHA_512-Random'
-    | 'Indexed'
-    | 'Unindexed'
-    | 'RangePreview';
-
-  /**
-   * The id of the Binary dataKey to use for encryption
-   */
-  keyId?: Binary;
-
-  /**
-   * A unique string name corresponding to an already existing dataKey.
-   */
-  keyAltName?: string;
-
-  /** The contention factor. */
-  contentionFactor?: bigint | number;
-
-  /**
-   * The query type supported.  Only the queryType `equality` is stable.
-   *
-   * @experimental Public Technical Preview: The queryType `rangePreview` is experimental.
-   */
-  queryType?: 'equality' | 'rangePreview';
-
-  /** @experimental Public Technical Preview: The index options for a Queryable Encryption field supporting "rangePreview" queries.*/
-  rangeOptions?: RangeOptions;
-}
-
-/**
- * @public
- * @experimental
- */
-export interface ClientEncryptionRewrapManyDataKeyProviderOptions {
-  provider: ClientEncryptionDataKeyProvider;
-  masterKey?:
-    | AWSEncryptionKeyOptions
-    | AzureEncryptionKeyOptions
-    | GCPEncryptionKeyOptions
-    | undefined;
-}
-
-/**
- * @public
- * Additional settings to provide when creating a new `ClientEncryption` instance.
- */
-export interface ClientEncryptionOptions {
-  /**
-   * The namespace of the key vault, used to store encryption keys
-   */
-  keyVaultNamespace: string;
-
-  /**
-   * A MongoClient used to fetch keys from a key vault. Defaults to client.
-   */
-  keyVaultClient?: MongoClient | undefined;
-
-  /**
-   * Options for specific KMS providers to use
-   */
-  kmsProviders?: KMSProviders;
-
-  /**
-   * Options for specifying a Socks5 proxy to use for connecting to the KMS.
-   */
-  proxyOptions?: ProxyOptions;
-
-  /**
-   * TLS options for kms providers to use.
-   */
-  tlsOptions?: CSFLEKMSTlsOptions;
-}
-
-/**
- * @public
- * Configuration options for making an AWS encryption key
- */
-export interface AWSEncryptionKeyOptions {
-  /**
-   * The AWS region of the KMS
-   */
-  region: string;
-
-  /**
-   * The Amazon Resource Name (ARN) to the AWS customer master key (CMK)
-   */
-  key: string;
-
-  /**
-   * An alternate host to send KMS requests to. May include port number.
-   */
-  endpoint?: string | undefined;
-}
-
-/**
- * @public
- * Configuration options for making an AWS encryption key
- */
-export interface GCPEncryptionKeyOptions {
-  /**
-   * GCP project ID
-   */
-  projectId: string;
-
-  /**
-   * Location name (e.g. "global")
-   */
-  location: string;
-
-  /**
-   * Key ring name
-   */
-  keyRing: string;
-
-  /**
-   * Key name
-   */
-  keyName: string;
-
-  /**
-   * Key version
-   */
-  keyVersion?: string | undefined;
-
-  /**
-   * KMS URL, defaults to `https://www.googleapis.com/auth/cloudkms`
-   */
-  endpoint?: string | undefined;
-}
-
-/**
- * @public
- * Configuration options for making an Azure encryption key
- */
-export interface AzureEncryptionKeyOptions {
-  /**
-   * Key name
-   */
-  keyName: string;
-
-  /**
-   * Key vault URL, typically `<name>.vault.azure.net`
-   */
-  keyVaultEndpoint: string;
-
-  /**
-   * Key version
-   */
-  keyVersion?: string | undefined;
-}
-
-/**
- * @public
- * Options to provide when creating a new data key.
- */
-export interface ClientEncryptionCreateDataKeyProviderOptions {
-  /**
-   * Identifies a new KMS-specific key used to encrypt the new data key
-   */
-  masterKey?:
-    | AWSEncryptionKeyOptions
-    | AzureEncryptionKeyOptions
-    | GCPEncryptionKeyOptions
-    | undefined;
-
-  /**
-   * An optional list of string alternate names used to reference a key.
-   * If a key is created with alternate names, then encryption may refer to the key by the unique alternate name instead of by _id.
-   */
-  keyAltNames?: string[] | undefined;
-
-  /** @experimental */
-  keyMaterial?: Buffer | Binary;
-}
-
-/**
- * @public
- * @experimental
- */
-export interface ClientEncryptionRewrapManyDataKeyProviderOptions {
-  provider: ClientEncryptionDataKeyProvider;
-  masterKey?:
-    | AWSEncryptionKeyOptions
-    | AzureEncryptionKeyOptions
-    | GCPEncryptionKeyOptions
-    | undefined;
-}
-
-/**
- * @public
- * @experimental
- */
-export interface ClientEncryptionRewrapManyDataKeyResult {
-  /** The result of rewrapping data keys. If unset, no keys matched the filter. */
-  bulkWriteResult?: BulkWriteResult;
-}
-
-/**
- * @public
- * RangeOptions specifies index options for a Queryable Encryption field supporting "rangePreview" queries.
- * min, max, sparsity, and range must match the values set in the encryptedFields of the destination collection.
- * For double and decimal128, min/max/precision must all be set, or all be unset.
- */
-export interface RangeOptions {
-  min?: any;
-  max?: any;
-  sparsity: Long;
-  precision?: number;
-}
-
-/**
- * @public
- * Options to provide when encrypting data.
- */
-export interface ClientEncryptionEncryptOptions {
-  /**
-   * The algorithm to use for encryption.
-   */
-  algorithm:
-    | 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic'
-    | 'AEAD_AES_256_CBC_HMAC_SHA_512-Random'
-    | 'Indexed'
-    | 'Unindexed'
-    | 'RangePreview';
-
-  /**
-   * The id of the Binary dataKey to use for encryption
-   */
-  keyId?: Binary;
-
-  /**
-   * A unique string name corresponding to an already existing dataKey.
-   */
-  keyAltName?: string;
-
-  /** The contention factor. */
-  contentionFactor?: bigint | number;
-
-  /**
-   * The query type supported.  Only the queryType `equality` is stable.
-   *
-   * @experimental Public Technical Preview: The queryType `rangePreview` is experimental.
-   */
-  queryType?: 'equality' | 'rangePreview';
-
-  /** @experimental Public Technical Preview: The index options for a Queryable Encryption field supporting "rangePreview" queries.*/
-  rangeOptions?: RangeOptions;
-}
diff --git a/server/data-import/node_modules/mongodb/src/client-side-encryption/crypto_callbacks.ts b/server/data-import/node_modules/mongodb/src/client-side-encryption/crypto_callbacks.ts
deleted file mode 100644
index 1e2f1f7f0706aa0aee7b6c71e777b1fed768feff..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/client-side-encryption/crypto_callbacks.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-import * as crypto from 'crypto';
-
-type AES256Callback = (key: Buffer, iv: Buffer, input: Buffer, output: Buffer) => number | Error;
-
-export function makeAES256Hook(
-  method: 'createCipheriv' | 'createDecipheriv',
-  mode: 'aes-256-cbc' | 'aes-256-ctr'
-): AES256Callback {
-  return function (key: Buffer, iv: Buffer, input: Buffer, output: Buffer): number | Error {
-    let result;
-
-    try {
-      const cipher = crypto[method](mode, key, iv);
-      cipher.setAutoPadding(false);
-      result = cipher.update(input);
-      const final = cipher.final();
-      if (final.length > 0) {
-        result = Buffer.concat([result, final]);
-      }
-    } catch (e) {
-      return e;
-    }
-
-    result.copy(output);
-    return result.length;
-  };
-}
-
-export function randomHook(buffer: Buffer, count: number): number | Error {
-  try {
-    crypto.randomFillSync(buffer, 0, count);
-  } catch (e) {
-    return e;
-  }
-  return count;
-}
-
-export function sha256Hook(input: Buffer, output: Buffer): number | Error {
-  let result;
-  try {
-    result = crypto.createHash('sha256').update(input).digest();
-  } catch (e) {
-    return e;
-  }
-
-  result.copy(output);
-  return result.length;
-}
-
-type HMACHook = (key: Buffer, input: Buffer, output: Buffer) => number | Error;
-export function makeHmacHook(algorithm: 'sha512' | 'sha256'): HMACHook {
-  return (key: Buffer, input: Buffer, output: Buffer): number | Error => {
-    let result;
-    try {
-      result = crypto.createHmac(algorithm, key).update(input).digest();
-    } catch (e) {
-      return e;
-    }
-
-    result.copy(output);
-    return result.length;
-  };
-}
-
-export function signRsaSha256Hook(key: Buffer, input: Buffer, output: Buffer): number | Error {
-  let result;
-  try {
-    const signer = crypto.createSign('sha256WithRSAEncryption');
-    const privateKey = Buffer.from(
-      `-----BEGIN PRIVATE KEY-----\n${key.toString('base64')}\n-----END PRIVATE KEY-----\n`
-    );
-
-    result = signer.update(input).end().sign(privateKey);
-  } catch (e) {
-    return e;
-  }
-
-  result.copy(output);
-  return result.length;
-}
-
-export const aes256CbcEncryptHook = makeAES256Hook('createCipheriv', 'aes-256-cbc');
-export const aes256CbcDecryptHook = makeAES256Hook('createDecipheriv', 'aes-256-cbc');
-export const aes256CtrEncryptHook = makeAES256Hook('createCipheriv', 'aes-256-ctr');
-export const aes256CtrDecryptHook = makeAES256Hook('createDecipheriv', 'aes-256-ctr');
-export const hmacSha512Hook = makeHmacHook('sha512');
-export const hmacSha256Hook = makeHmacHook('sha256');
diff --git a/server/data-import/node_modules/mongodb/src/client-side-encryption/errors.ts b/server/data-import/node_modules/mongodb/src/client-side-encryption/errors.ts
deleted file mode 100644
index 7ab70748a84d8ca717d5b4cd079e4146bce2e8c5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/client-side-encryption/errors.ts
+++ /dev/null
@@ -1,141 +0,0 @@
-import { type Document } from '../bson';
-import { MongoError } from '../error';
-
-/**
- * @public
- * An error indicating that something went wrong specifically with MongoDB Client Encryption
- */
-export class MongoCryptError extends MongoError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string, options: { cause?: Error } = {}) {
-    super(message, options);
-  }
-
-  override get name() {
-    return 'MongoCryptError';
-  }
-}
-
-/**
- * @public
- *
- * An error indicating an invalid argument was provided to an encryption API.
- */
-export class MongoCryptInvalidArgumentError extends MongoCryptError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name() {
-    return 'MongoCryptInvalidArgumentError';
-  }
-}
-/**
- * @public
- * An error indicating that `ClientEncryption.createEncryptedCollection()` failed to create data keys
- */
-export class MongoCryptCreateDataKeyError extends MongoCryptError {
-  encryptedFields: Document;
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(encryptedFields: Document, { cause }: { cause: Error }) {
-    super(`Unable to complete creating data keys: ${cause.message}`, { cause });
-    this.encryptedFields = encryptedFields;
-  }
-
-  override get name() {
-    return 'MongoCryptCreateDataKeyError';
-  }
-}
-
-/**
- * @public
- * An error indicating that `ClientEncryption.createEncryptedCollection()` failed to create a collection
- */
-export class MongoCryptCreateEncryptedCollectionError extends MongoCryptError {
-  encryptedFields: Document;
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(encryptedFields: Document, { cause }: { cause: Error }) {
-    super(`Unable to create collection: ${cause.message}`, { cause });
-    this.encryptedFields = encryptedFields;
-  }
-
-  override get name() {
-    return 'MongoCryptCreateEncryptedCollectionError';
-  }
-}
-
-/**
- * @public
- * An error indicating that mongodb-client-encryption failed to auto-refresh Azure KMS credentials.
- */
-export class MongoCryptAzureKMSRequestError extends MongoCryptError {
-  /** The body of the http response that failed, if present. */
-  body?: Document;
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string, body?: Document) {
-    super(message);
-    this.body = body;
-  }
-
-  override get name(): string {
-    return 'MongoCryptAzureKMSRequestError';
-  }
-}
-
-/** @public */
-export class MongoCryptKMSRequestNetworkTimeoutError extends MongoCryptError {
-  override get name(): string {
-    return 'MongoCryptKMSRequestNetworkTimeoutError';
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/client-side-encryption/mongocryptd_manager.ts b/server/data-import/node_modules/mongodb/src/client-side-encryption/mongocryptd_manager.ts
deleted file mode 100644
index 499f2aab29654d1c3bb0edbdec48c71051a93ebd..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/client-side-encryption/mongocryptd_manager.ts
+++ /dev/null
@@ -1,96 +0,0 @@
-import type { ChildProcess } from 'child_process';
-
-import { MongoNetworkTimeoutError } from '../error';
-import { type AutoEncryptionExtraOptions } from './auto_encrypter';
-
-/**
- * @internal
- * An internal class that handles spawning a mongocryptd.
- */
-export class MongocryptdManager {
-  static DEFAULT_MONGOCRYPTD_URI = 'mongodb://localhost:27020';
-
-  uri: string;
-  bypassSpawn: boolean;
-  spawnPath: string;
-  spawnArgs: Array<string>;
-  _child?: ChildProcess;
-
-  constructor(extraOptions: AutoEncryptionExtraOptions = {}) {
-    this.uri =
-      typeof extraOptions.mongocryptdURI === 'string' && extraOptions.mongocryptdURI.length > 0
-        ? extraOptions.mongocryptdURI
-        : MongocryptdManager.DEFAULT_MONGOCRYPTD_URI;
-
-    this.bypassSpawn = !!extraOptions.mongocryptdBypassSpawn;
-
-    this.spawnPath = extraOptions.mongocryptdSpawnPath || '';
-    this.spawnArgs = [];
-    if (Array.isArray(extraOptions.mongocryptdSpawnArgs)) {
-      this.spawnArgs = this.spawnArgs.concat(extraOptions.mongocryptdSpawnArgs);
-    }
-    if (
-      this.spawnArgs
-        .filter(arg => typeof arg === 'string')
-        .every(arg => arg.indexOf('--idleShutdownTimeoutSecs') < 0)
-    ) {
-      this.spawnArgs.push('--idleShutdownTimeoutSecs', '60');
-    }
-  }
-
-  /**
-   * Will check to see if a mongocryptd is up. If it is not up, it will attempt
-   * to spawn a mongocryptd in a detached process, and then wait for it to be up.
-   */
-  async spawn(): Promise<void> {
-    const cmdName = this.spawnPath || 'mongocryptd';
-
-    // eslint-disable-next-line @typescript-eslint/no-var-requires
-    const { spawn } = require('child_process') as typeof import('child_process');
-
-    // Spawned with stdio: ignore and detached: true
-    // to ensure child can outlive parent.
-    this._child = spawn(cmdName, this.spawnArgs, {
-      stdio: 'ignore',
-      detached: true
-    });
-
-    this._child.on('error', () => {
-      // From the FLE spec:
-      // "The stdout and stderr of the spawned process MUST not be exposed in the driver
-      // (e.g. redirect to /dev/null). Users can pass the argument --logpath to
-      // extraOptions.mongocryptdSpawnArgs if they need to inspect mongocryptd logs.
-      // If spawning is necessary, the driver MUST spawn mongocryptd whenever server
-      // selection on the MongoClient to mongocryptd fails. If the MongoClient fails to
-      // connect after spawning, the server selection error is propagated to the user."
-      // The AutoEncrypter and MongoCryptdManager should work together to spawn
-      // mongocryptd whenever necessary.  Additionally, the `mongocryptd` intentionally
-      // shuts down after 60s and gets respawned when necessary.  We rely on server
-      // selection timeouts when connecting to the `mongocryptd` to inform users that something
-      // has been configured incorrectly.  For those reasons, we suppress stderr from
-      // the `mongocryptd` process and immediately unref the process.
-    });
-
-    // unref child to remove handle from event loop
-    this._child.unref();
-  }
-
-  /**
-   * @returns the result of `fn` or rejects with an error.
-   */
-  async withRespawn<T>(fn: () => Promise<T>): ReturnType<typeof fn> {
-    try {
-      const result = await fn();
-      return result;
-    } catch (err) {
-      // If we are not bypassing spawning, then we should retry once on a MongoTimeoutError (server selection error)
-      const shouldSpawn = err instanceof MongoNetworkTimeoutError && !this.bypassSpawn;
-      if (!shouldSpawn) {
-        throw err;
-      }
-    }
-    await this.spawn();
-    const result = await fn();
-    return result;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/aws.ts b/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/aws.ts
deleted file mode 100644
index 64aa9f0adca7437e5fe363c24306ee8ddab639b9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/aws.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { getAwsCredentialProvider } from '../../deps';
-import { type KMSProviders } from '.';
-
-/**
- * @internal
- */
-export async function loadAWSCredentials(kmsProviders: KMSProviders): Promise<KMSProviders> {
-  const credentialProvider = getAwsCredentialProvider();
-
-  if ('kModuleError' in credentialProvider) {
-    return kmsProviders;
-  }
-
-  const { fromNodeProviderChain } = credentialProvider;
-  const provider = fromNodeProviderChain();
-  // The state machine is the only place calling this so it will
-  // catch if there is a rejection here.
-  const aws = await provider();
-  return { ...kmsProviders, aws };
-}
diff --git a/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/azure.ts b/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/azure.ts
deleted file mode 100644
index 53536902bc370444ec867b868aaf0419f6c7788b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/azure.ts
+++ /dev/null
@@ -1,168 +0,0 @@
-import { type Document } from '../../bson';
-import { MongoCryptAzureKMSRequestError, MongoCryptKMSRequestNetworkTimeoutError } from '../errors';
-import { type KMSProviders } from './index';
-import { get } from './utils';
-
-const MINIMUM_TOKEN_REFRESH_IN_MILLISECONDS = 6000;
-
-/**
- * The access token that libmongocrypt expects for Azure kms.
- */
-interface AccessToken {
-  accessToken: string;
-}
-
-/**
- * The response from the azure idms endpoint, including the `expiresOnTimestamp`.
- * `expiresOnTimestamp` is needed for caching.
- */
-interface AzureTokenCacheEntry extends AccessToken {
-  accessToken: string;
-  expiresOnTimestamp: number;
-}
-
-/**
- * @internal
- */
-export class AzureCredentialCache {
-  cachedToken: AzureTokenCacheEntry | null = null;
-
-  async getToken(): Promise<AccessToken> {
-    if (this.cachedToken == null || this.needsRefresh(this.cachedToken)) {
-      this.cachedToken = await this._getToken();
-    }
-
-    return { accessToken: this.cachedToken.accessToken };
-  }
-
-  needsRefresh(token: AzureTokenCacheEntry): boolean {
-    const timeUntilExpirationMS = token.expiresOnTimestamp - Date.now();
-    return timeUntilExpirationMS <= MINIMUM_TOKEN_REFRESH_IN_MILLISECONDS;
-  }
-
-  /**
-   * exposed for testing
-   */
-  resetCache() {
-    this.cachedToken = null;
-  }
-
-  /**
-   * exposed for testing
-   */
-  _getToken(): Promise<AzureTokenCacheEntry> {
-    return fetchAzureKMSToken();
-  }
-}
-
-/** @internal */
-export const tokenCache = new AzureCredentialCache();
-
-/** @internal */
-async function parseResponse(response: {
-  body: string;
-  status?: number;
-}): Promise<AzureTokenCacheEntry> {
-  const { status, body: rawBody } = response;
-
-  const body: { expires_in?: number; access_token?: string } = (() => {
-    try {
-      return JSON.parse(rawBody);
-    } catch {
-      throw new MongoCryptAzureKMSRequestError('Malformed JSON body in GET request.');
-    }
-  })();
-
-  if (status !== 200) {
-    throw new MongoCryptAzureKMSRequestError('Unable to complete request.', body);
-  }
-
-  if (!body.access_token) {
-    throw new MongoCryptAzureKMSRequestError(
-      'Malformed response body - missing field `access_token`.'
-    );
-  }
-
-  if (!body.expires_in) {
-    throw new MongoCryptAzureKMSRequestError(
-      'Malformed response body - missing field `expires_in`.'
-    );
-  }
-
-  const expiresInMS = Number(body.expires_in) * 1000;
-  if (Number.isNaN(expiresInMS)) {
-    throw new MongoCryptAzureKMSRequestError(
-      'Malformed response body - unable to parse int from `expires_in` field.'
-    );
-  }
-
-  return {
-    accessToken: body.access_token,
-    expiresOnTimestamp: Date.now() + expiresInMS
-  };
-}
-
-/**
- * @internal
- *
- * exposed for CSFLE
- * [prose test 18](https://github.com/mongodb/specifications/tree/master/source/client-side-encryption/tests#azure-imds-credentials)
- */
-export interface AzureKMSRequestOptions {
-  headers?: Document;
-  url?: URL | string;
-}
-
-/**
- * @internal
- *
- * parses any options provided by prose tests to `fetchAzureKMSToken` and merges them with
- * the default values for headers and the request url.
- */
-export function prepareRequest(options: AzureKMSRequestOptions): {
-  headers: Document;
-  url: URL;
-} {
-  const url = new URL(
-    options.url?.toString() ?? 'http://169.254.169.254/metadata/identity/oauth2/token'
-  );
-
-  url.searchParams.append('api-version', '2018-02-01');
-  url.searchParams.append('resource', 'https://vault.azure.net');
-
-  const headers = { ...options.headers, 'Content-Type': 'application/json', Metadata: true };
-  return { headers, url };
-}
-
-/**
- * @internal
- *
- * `AzureKMSRequestOptions` allows prose tests to modify the http request sent to the idms
- * servers.  This is required to simulate different server conditions.  No options are expected to
- * be set outside of tests.
- *
- * exposed for CSFLE
- * [prose test 18](https://github.com/mongodb/specifications/tree/master/source/client-side-encryption/tests#azure-imds-credentials)
- */
-export async function fetchAzureKMSToken(
-  options: AzureKMSRequestOptions = {}
-): Promise<AzureTokenCacheEntry> {
-  const { headers, url } = prepareRequest(options);
-  const response = await get(url, { headers }).catch(error => {
-    if (error instanceof MongoCryptKMSRequestNetworkTimeoutError) {
-      throw new MongoCryptAzureKMSRequestError(`[Azure KMS] ${error.message}`);
-    }
-    throw error;
-  });
-  return parseResponse(response);
-}
-
-/**
- * @internal
- *
- * @throws Will reject with a `MongoCryptError` if the http request fails or the http response is malformed.
- */
-export async function loadAzureCredentials(kmsProviders: KMSProviders): Promise<KMSProviders> {
-  const azure = await tokenCache.getToken();
-  return { ...kmsProviders, azure };
-}
diff --git a/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/gcp.ts b/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/gcp.ts
deleted file mode 100644
index 1415d216aa964e07fac8f21e5e5987209c9dfd67..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/gcp.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { getGcpMetadata } from '../../deps';
-import { type KMSProviders } from '.';
-
-/** @internal */
-export async function loadGCPCredentials(kmsProviders: KMSProviders): Promise<KMSProviders> {
-  const gcpMetadata = getGcpMetadata();
-
-  if ('kModuleError' in gcpMetadata) {
-    return kmsProviders;
-  }
-
-  const { access_token: accessToken } = await gcpMetadata.instance<{ access_token: string }>({
-    property: 'service-accounts/default/token'
-  });
-  return { ...kmsProviders, gcp: { accessToken } };
-}
diff --git a/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/index.ts b/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/index.ts
deleted file mode 100644
index fb83e7b912d981aaf8aa8a59da931088854a6bf2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/index.ts
+++ /dev/null
@@ -1,168 +0,0 @@
-import { loadAWSCredentials } from './aws';
-import { loadAzureCredentials } from './azure';
-import { loadGCPCredentials } from './gcp';
-
-/**
- * @public
- */
-export type ClientEncryptionDataKeyProvider = 'aws' | 'azure' | 'gcp' | 'local' | 'kmip';
-
-/**
- * @public
- * Configuration options that are used by specific KMS providers during key generation, encryption, and decryption.
- */
-export interface KMSProviders {
-  /**
-   * Configuration options for using 'aws' as your KMS provider
-   */
-  aws?:
-    | {
-        /**
-         * The access key used for the AWS KMS provider
-         */
-        accessKeyId: string;
-
-        /**
-         * The secret access key used for the AWS KMS provider
-         */
-        secretAccessKey: string;
-
-        /**
-         * An optional AWS session token that will be used as the
-         * X-Amz-Security-Token header for AWS requests.
-         */
-        sessionToken?: string;
-      }
-    | Record<string, never>;
-
-  /**
-   * Configuration options for using 'local' as your KMS provider
-   */
-  local?: {
-    /**
-     * The master key used to encrypt/decrypt data keys.
-     * A 96-byte long Buffer or base64 encoded string.
-     */
-    key: Buffer | string;
-  };
-
-  /**
-   * Configuration options for using 'kmip' as your KMS provider
-   */
-  kmip?: {
-    /**
-     * The output endpoint string.
-     * The endpoint consists of a hostname and port separated by a colon.
-     * E.g. "example.com:123". A port is always present.
-     */
-    endpoint?: string;
-  };
-
-  /**
-   * Configuration options for using 'azure' as your KMS provider
-   */
-  azure?:
-    | {
-        /**
-         * The tenant ID identifies the organization for the account
-         */
-        tenantId: string;
-
-        /**
-         * The client ID to authenticate a registered application
-         */
-        clientId: string;
-
-        /**
-         * The client secret to authenticate a registered application
-         */
-        clientSecret: string;
-
-        /**
-         * If present, a host with optional port. E.g. "example.com" or "example.com:443".
-         * This is optional, and only needed if customer is using a non-commercial Azure instance
-         * (e.g. a government or China account, which use different URLs).
-         * Defaults to "login.microsoftonline.com"
-         */
-        identityPlatformEndpoint?: string | undefined;
-      }
-    | {
-        /**
-         * If present, an access token to authenticate with Azure.
-         */
-        accessToken: string;
-      }
-    | Record<string, never>;
-
-  /**
-   * Configuration options for using 'gcp' as your KMS provider
-   */
-  gcp?:
-    | {
-        /**
-         * The service account email to authenticate
-         */
-        email: string;
-
-        /**
-         * A PKCS#8 encrypted key. This can either be a base64 string or a binary representation
-         */
-        privateKey: string | Buffer;
-
-        /**
-         * If present, a host with optional port. E.g. "example.com" or "example.com:443".
-         * Defaults to "oauth2.googleapis.com"
-         */
-        endpoint?: string | undefined;
-      }
-    | {
-        /**
-         * If present, an access token to authenticate with GCP.
-         */
-        accessToken: string;
-      }
-    | Record<string, never>;
-}
-
-/**
- * Auto credential fetching should only occur when the provider is defined on the kmsProviders map
- * and the settings are an empty object.
- *
- * This is distinct from a nullish provider key.
- *
- * @internal - exposed for testing purposes only
- */
-export function isEmptyCredentials(
-  providerName: ClientEncryptionDataKeyProvider,
-  kmsProviders: KMSProviders
-): boolean {
-  const provider = kmsProviders[providerName];
-  if (provider == null) {
-    return false;
-  }
-  return typeof provider === 'object' && Object.keys(provider).length === 0;
-}
-
-/**
- * Load cloud provider credentials for the user provided KMS providers.
- * Credentials will only attempt to get loaded if they do not exist
- * and no existing credentials will get overwritten.
- *
- * @internal
- */
-export async function refreshKMSCredentials(kmsProviders: KMSProviders): Promise<KMSProviders> {
-  let finalKMSProviders = kmsProviders;
-
-  if (isEmptyCredentials('aws', kmsProviders)) {
-    finalKMSProviders = await loadAWSCredentials(finalKMSProviders);
-  }
-
-  if (isEmptyCredentials('gcp', kmsProviders)) {
-    finalKMSProviders = await loadGCPCredentials(finalKMSProviders);
-  }
-
-  if (isEmptyCredentials('azure', kmsProviders)) {
-    finalKMSProviders = await loadAzureCredentials(finalKMSProviders);
-  }
-  return finalKMSProviders;
-}
diff --git a/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/utils.ts b/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/utils.ts
deleted file mode 100644
index 8d5362c6993c612f9d64f8983acd77c0ff0741aa..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/client-side-encryption/providers/utils.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import * as http from 'http';
-import { clearTimeout, setTimeout } from 'timers';
-
-import { MongoCryptKMSRequestNetworkTimeoutError } from '../errors';
-
-/**
- * @internal
- */
-export function get(
-  url: URL | string,
-  options: http.RequestOptions = {}
-): Promise<{ body: string; status: number | undefined }> {
-  return new Promise((resolve, reject) => {
-    /* eslint-disable prefer-const */
-    let timeoutId: NodeJS.Timeout;
-    const request = http
-      .get(url, options, response => {
-        response.setEncoding('utf8');
-        let body = '';
-        response.on('data', chunk => (body += chunk));
-        response.on('end', () => {
-          clearTimeout(timeoutId);
-          resolve({ status: response.statusCode, body });
-        });
-      })
-      .on('error', error => {
-        clearTimeout(timeoutId);
-        reject(error);
-      })
-      .end();
-    timeoutId = setTimeout(() => {
-      request.destroy(
-        new MongoCryptKMSRequestNetworkTimeoutError(`request timed out after 10 seconds`)
-      );
-    }, 10000);
-  });
-}
diff --git a/server/data-import/node_modules/mongodb/src/client-side-encryption/state_machine.ts b/server/data-import/node_modules/mongodb/src/client-side-encryption/state_machine.ts
deleted file mode 100644
index 7d5dc23bf8a0cc77a0b97e0c984983193a14765f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/client-side-encryption/state_machine.ts
+++ /dev/null
@@ -1,516 +0,0 @@
-import * as fs from 'fs/promises';
-import { type MongoCryptContext, type MongoCryptKMSRequest } from 'mongodb-client-encryption';
-import * as net from 'net';
-import * as tls from 'tls';
-
-import {
-  type BSONSerializeOptions,
-  deserialize,
-  type Document,
-  pluckBSONSerializeOptions,
-  serialize
-} from '../bson';
-import { type ProxyOptions } from '../cmap/connection';
-import { getSocks, type SocksLib } from '../deps';
-import { type MongoClient, type MongoClientOptions } from '../mongo_client';
-import { BufferPool, MongoDBCollectionNamespace } from '../utils';
-import { type DataKey } from './client_encryption';
-import { MongoCryptError } from './errors';
-import { type MongocryptdManager } from './mongocryptd_manager';
-import { type ClientEncryptionDataKeyProvider, type KMSProviders } from './providers';
-
-let socks: SocksLib | null = null;
-function loadSocks(): SocksLib {
-  if (socks == null) {
-    const socksImport = getSocks();
-    if ('kModuleError' in socksImport) {
-      throw socksImport.kModuleError;
-    }
-    socks = socksImport;
-  }
-  return socks;
-}
-
-// libmongocrypt states
-const MONGOCRYPT_CTX_ERROR = 0;
-const MONGOCRYPT_CTX_NEED_MONGO_COLLINFO = 1;
-const MONGOCRYPT_CTX_NEED_MONGO_MARKINGS = 2;
-const MONGOCRYPT_CTX_NEED_MONGO_KEYS = 3;
-const MONGOCRYPT_CTX_NEED_KMS_CREDENTIALS = 7;
-const MONGOCRYPT_CTX_NEED_KMS = 4;
-const MONGOCRYPT_CTX_READY = 5;
-const MONGOCRYPT_CTX_DONE = 6;
-
-const HTTPS_PORT = 443;
-
-const stateToString = new Map([
-  [MONGOCRYPT_CTX_ERROR, 'MONGOCRYPT_CTX_ERROR'],
-  [MONGOCRYPT_CTX_NEED_MONGO_COLLINFO, 'MONGOCRYPT_CTX_NEED_MONGO_COLLINFO'],
-  [MONGOCRYPT_CTX_NEED_MONGO_MARKINGS, 'MONGOCRYPT_CTX_NEED_MONGO_MARKINGS'],
-  [MONGOCRYPT_CTX_NEED_MONGO_KEYS, 'MONGOCRYPT_CTX_NEED_MONGO_KEYS'],
-  [MONGOCRYPT_CTX_NEED_KMS_CREDENTIALS, 'MONGOCRYPT_CTX_NEED_KMS_CREDENTIALS'],
-  [MONGOCRYPT_CTX_NEED_KMS, 'MONGOCRYPT_CTX_NEED_KMS'],
-  [MONGOCRYPT_CTX_READY, 'MONGOCRYPT_CTX_READY'],
-  [MONGOCRYPT_CTX_DONE, 'MONGOCRYPT_CTX_DONE']
-]);
-
-const INSECURE_TLS_OPTIONS = [
-  'tlsInsecure',
-  'tlsAllowInvalidCertificates',
-  'tlsAllowInvalidHostnames',
-
-  // These options are disallowed by the spec, so we explicitly filter them out if provided, even
-  // though the StateMachine does not declare support for these options.
-  'tlsDisableOCSPEndpointCheck',
-  'tlsDisableCertificateRevocationCheck'
-];
-
-/**
- * Helper function for logging. Enabled by setting the environment flag MONGODB_CRYPT_DEBUG.
- * @param msg - Anything you want to be logged.
- */
-function debug(msg: unknown) {
-  if (process.env.MONGODB_CRYPT_DEBUG) {
-    // eslint-disable-next-line no-console
-    console.error(msg);
-  }
-}
-
-declare module 'mongodb-client-encryption' {
-  // the properties added to `MongoCryptContext` here are only used for the `StateMachine`'s
-  // execute method and are not part of the C++ bindings.
-  interface MongoCryptContext {
-    id: number;
-    document: Document;
-    ns: string;
-  }
-}
-
-/**
- * @public
- *
- * TLS options to use when connecting. The spec specifically calls out which insecure
- * tls options are not allowed:
- *
- *  - tlsAllowInvalidCertificates
- *  - tlsAllowInvalidHostnames
- *  - tlsInsecure
- *
- * These options are not included in the type, and are ignored if provided.
- */
-export type ClientEncryptionTlsOptions = Pick<
-  MongoClientOptions,
-  'tlsCAFile' | 'tlsCertificateKeyFile' | 'tlsCertificateKeyFilePassword'
->;
-
-/** @public */
-export type CSFLEKMSTlsOptions = {
-  aws?: ClientEncryptionTlsOptions;
-  gcp?: ClientEncryptionTlsOptions;
-  kmip?: ClientEncryptionTlsOptions;
-  local?: ClientEncryptionTlsOptions;
-  azure?: ClientEncryptionTlsOptions;
-};
-
-/**
- * @internal
- *
- * An interface representing an object that can be passed to the `StateMachine.execute` method.
- *
- * Not all properties are required for all operations.
- */
-export interface StateMachineExecutable {
-  _keyVaultNamespace: string;
-  _keyVaultClient: MongoClient;
-  askForKMSCredentials: () => Promise<KMSProviders>;
-
-  /** only used for auto encryption */
-  _metaDataClient?: MongoClient;
-  /** only used for auto encryption */
-  _mongocryptdClient?: MongoClient;
-  /** only used for auto encryption */
-  _mongocryptdManager?: MongocryptdManager;
-}
-
-export type StateMachineOptions = {
-  /** socks5 proxy options, if set. */
-  proxyOptions: ProxyOptions;
-
-  /** TLS options for KMS requests, if set. */
-  tlsOptions: CSFLEKMSTlsOptions;
-} & Pick<BSONSerializeOptions, 'promoteLongs' | 'promoteValues'>;
-
-/**
- * @internal
- * An internal class that executes across a MongoCryptContext until either
- * a finishing state or an error is reached. Do not instantiate directly.
- */
-export class StateMachine {
-  constructor(
-    private options: StateMachineOptions,
-    private bsonOptions = pluckBSONSerializeOptions(options)
-  ) {}
-
-  /**
-   * Executes the state machine according to the specification
-   */
-  async execute<T extends Document>(
-    executor: StateMachineExecutable,
-    context: MongoCryptContext
-  ): Promise<T> {
-    const keyVaultNamespace = executor._keyVaultNamespace;
-    const keyVaultClient = executor._keyVaultClient;
-    const metaDataClient = executor._metaDataClient;
-    const mongocryptdClient = executor._mongocryptdClient;
-    const mongocryptdManager = executor._mongocryptdManager;
-    let result: T | null = null;
-
-    while (context.state !== MONGOCRYPT_CTX_DONE && context.state !== MONGOCRYPT_CTX_ERROR) {
-      debug(`[context#${context.id}] ${stateToString.get(context.state) || context.state}`);
-
-      switch (context.state) {
-        case MONGOCRYPT_CTX_NEED_MONGO_COLLINFO: {
-          const filter = deserialize(context.nextMongoOperation());
-          if (!metaDataClient) {
-            throw new MongoCryptError(
-              'unreachable state machine state: entered MONGOCRYPT_CTX_NEED_MONGO_COLLINFO but metadata client is undefined'
-            );
-          }
-          const collInfo = await this.fetchCollectionInfo(metaDataClient, context.ns, filter);
-
-          if (collInfo) {
-            context.addMongoOperationResponse(collInfo);
-          }
-
-          context.finishMongoOperation();
-          break;
-        }
-
-        case MONGOCRYPT_CTX_NEED_MONGO_MARKINGS: {
-          const command = context.nextMongoOperation();
-          if (!mongocryptdClient) {
-            throw new MongoCryptError(
-              'unreachable state machine state: entered MONGOCRYPT_CTX_NEED_MONGO_MARKINGS but mongocryptdClient is undefined'
-            );
-          }
-
-          // When we are using the shared library, we don't have a mongocryptd manager.
-          const markedCommand: Uint8Array = mongocryptdManager
-            ? await mongocryptdManager.withRespawn(
-                this.markCommand.bind(this, mongocryptdClient, context.ns, command)
-              )
-            : await this.markCommand(mongocryptdClient, context.ns, command);
-
-          context.addMongoOperationResponse(markedCommand);
-          context.finishMongoOperation();
-          break;
-        }
-
-        case MONGOCRYPT_CTX_NEED_MONGO_KEYS: {
-          const filter = context.nextMongoOperation();
-          const keys = await this.fetchKeys(keyVaultClient, keyVaultNamespace, filter);
-
-          if (keys.length === 0) {
-            // This is kind of a hack.  For `rewrapManyDataKey`, we have tests that
-            // guarantee that when there are no matching keys, `rewrapManyDataKey` returns
-            // nothing.  We also have tests for auto encryption that guarantee for `encrypt`
-            // we return an error when there are no matching keys.  This error is generated in
-            // subsequent iterations of the state machine.
-            // Some apis (`encrypt`) throw if there are no filter matches and others (`rewrapManyDataKey`)
-            // do not.  We set the result manually here, and let the state machine continue.  `libmongocrypt`
-            // will inform us if we need to error by setting the state to `MONGOCRYPT_CTX_ERROR` but
-            // otherwise we'll return `{ v: [] }`.
-            result = { v: [] } as any as T;
-          }
-          for await (const key of keys) {
-            context.addMongoOperationResponse(serialize(key));
-          }
-
-          context.finishMongoOperation();
-
-          break;
-        }
-
-        case MONGOCRYPT_CTX_NEED_KMS_CREDENTIALS: {
-          const kmsProviders = await executor.askForKMSCredentials();
-          context.provideKMSProviders(serialize(kmsProviders));
-          break;
-        }
-
-        case MONGOCRYPT_CTX_NEED_KMS: {
-          const requests = Array.from(this.requests(context));
-          await Promise.all(requests);
-
-          context.finishKMSRequests();
-          break;
-        }
-
-        case MONGOCRYPT_CTX_READY: {
-          const finalizedContext = context.finalize();
-          // @ts-expect-error finalize can change the state, check for error
-          if (context.state === MONGOCRYPT_CTX_ERROR) {
-            const message = context.status.message || 'Finalization error';
-            throw new MongoCryptError(message);
-          }
-          result = deserialize(finalizedContext, this.options) as T;
-          break;
-        }
-
-        default:
-          throw new MongoCryptError(`Unknown state: ${context.state}`);
-      }
-    }
-
-    if (context.state === MONGOCRYPT_CTX_ERROR || result == null) {
-      const message = context.status.message;
-      if (!message) {
-        debug(
-          `unidentifiable error in MongoCrypt - received an error status from \`libmongocrypt\` but received no error message.`
-        );
-      }
-      throw new MongoCryptError(
-        message ??
-          'unidentifiable error in MongoCrypt - received an error status from `libmongocrypt` but received no error message.'
-      );
-    }
-
-    return result;
-  }
-
-  /**
-   * Handles the request to the KMS service. Exposed for testing purposes. Do not directly invoke.
-   * @param kmsContext - A C++ KMS context returned from the bindings
-   * @returns A promise that resolves when the KMS reply has be fully parsed
-   */
-  kmsRequest(request: MongoCryptKMSRequest): Promise<void> {
-    const parsedUrl = request.endpoint.split(':');
-    const port = parsedUrl[1] != null ? Number.parseInt(parsedUrl[1], 10) : HTTPS_PORT;
-    const options: tls.ConnectionOptions & { host: string; port: number } = {
-      host: parsedUrl[0],
-      servername: parsedUrl[0],
-      port
-    };
-    const message = request.message;
-
-    // TODO(NODE-3959): We can adopt `for-await on(socket, 'data')` with logic to control abort
-    // eslint-disable-next-line @typescript-eslint/no-misused-promises, no-async-promise-executor
-    return new Promise(async (resolve, reject) => {
-      const buffer = new BufferPool();
-
-      // eslint-disable-next-line prefer-const
-      let socket: net.Socket;
-      let rawSocket: net.Socket;
-
-      function destroySockets() {
-        for (const sock of [socket, rawSocket]) {
-          if (sock) {
-            sock.removeAllListeners();
-            sock.destroy();
-          }
-        }
-      }
-
-      function ontimeout() {
-        destroySockets();
-        reject(new MongoCryptError('KMS request timed out'));
-      }
-
-      function onerror(err: Error) {
-        destroySockets();
-        const mcError = new MongoCryptError('KMS request failed', { cause: err });
-        reject(mcError);
-      }
-
-      if (this.options.proxyOptions && this.options.proxyOptions.proxyHost) {
-        rawSocket = net.connect({
-          host: this.options.proxyOptions.proxyHost,
-          port: this.options.proxyOptions.proxyPort || 1080
-        });
-
-        rawSocket.on('timeout', ontimeout);
-        rawSocket.on('error', onerror);
-        try {
-          // eslint-disable-next-line @typescript-eslint/no-var-requires
-          const events = require('events') as typeof import('events');
-          await events.once(rawSocket, 'connect');
-          socks ??= loadSocks();
-          options.socket = (
-            await socks.SocksClient.createConnection({
-              existing_socket: rawSocket,
-              command: 'connect',
-              destination: { host: options.host, port: options.port },
-              proxy: {
-                // host and port are ignored because we pass existing_socket
-                host: 'iLoveJavaScript',
-                port: 0,
-                type: 5,
-                userId: this.options.proxyOptions.proxyUsername,
-                password: this.options.proxyOptions.proxyPassword
-              }
-            })
-          ).socket;
-        } catch (err) {
-          return onerror(err);
-        }
-      }
-
-      const tlsOptions = this.options.tlsOptions;
-      if (tlsOptions) {
-        const kmsProvider = request.kmsProvider as ClientEncryptionDataKeyProvider;
-        const providerTlsOptions = tlsOptions[kmsProvider];
-        if (providerTlsOptions) {
-          const error = this.validateTlsOptions(kmsProvider, providerTlsOptions);
-          if (error) reject(error);
-          try {
-            await this.setTlsOptions(providerTlsOptions, options);
-          } catch (error) {
-            return onerror(error);
-          }
-        }
-      }
-      socket = tls.connect(options, () => {
-        socket.write(message);
-      });
-
-      socket.once('timeout', ontimeout);
-      socket.once('error', onerror);
-
-      socket.on('data', data => {
-        buffer.append(data);
-        while (request.bytesNeeded > 0 && buffer.length) {
-          const bytesNeeded = Math.min(request.bytesNeeded, buffer.length);
-          request.addResponse(buffer.read(bytesNeeded));
-        }
-
-        if (request.bytesNeeded <= 0) {
-          // There's no need for any more activity on this socket at this point.
-          destroySockets();
-          resolve();
-        }
-      });
-    });
-  }
-
-  *requests(context: MongoCryptContext) {
-    for (
-      let request = context.nextKMSRequest();
-      request != null;
-      request = context.nextKMSRequest()
-    ) {
-      yield this.kmsRequest(request);
-    }
-  }
-
-  /**
-   * Validates the provided TLS options are secure.
-   *
-   * @param kmsProvider - The KMS provider name.
-   * @param tlsOptions - The client TLS options for the provider.
-   *
-   * @returns An error if any option is invalid.
-   */
-  validateTlsOptions(
-    kmsProvider: string,
-    tlsOptions: ClientEncryptionTlsOptions
-  ): MongoCryptError | void {
-    const tlsOptionNames = Object.keys(tlsOptions);
-    for (const option of INSECURE_TLS_OPTIONS) {
-      if (tlsOptionNames.includes(option)) {
-        return new MongoCryptError(`Insecure TLS options prohibited for ${kmsProvider}: ${option}`);
-      }
-    }
-  }
-
-  /**
-   * Sets only the valid secure TLS options.
-   *
-   * @param tlsOptions - The client TLS options for the provider.
-   * @param options - The existing connection options.
-   */
-  async setTlsOptions(
-    tlsOptions: ClientEncryptionTlsOptions,
-    options: tls.ConnectionOptions
-  ): Promise<void> {
-    if (tlsOptions.tlsCertificateKeyFile) {
-      const cert = await fs.readFile(tlsOptions.tlsCertificateKeyFile);
-      options.cert = options.key = cert;
-    }
-    if (tlsOptions.tlsCAFile) {
-      options.ca = await fs.readFile(tlsOptions.tlsCAFile);
-    }
-    if (tlsOptions.tlsCertificateKeyFilePassword) {
-      options.passphrase = tlsOptions.tlsCertificateKeyFilePassword;
-    }
-  }
-
-  /**
-   * Fetches collection info for a provided namespace, when libmongocrypt
-   * enters the `MONGOCRYPT_CTX_NEED_MONGO_COLLINFO` state. The result is
-   * used to inform libmongocrypt of the schema associated with this
-   * namespace. Exposed for testing purposes. Do not directly invoke.
-   *
-   * @param client - A MongoClient connected to the topology
-   * @param ns - The namespace to list collections from
-   * @param filter - A filter for the listCollections command
-   * @param callback - Invoked with the info of the requested collection, or with an error
-   */
-  async fetchCollectionInfo(
-    client: MongoClient,
-    ns: string,
-    filter: Document
-  ): Promise<Uint8Array | null> {
-    const { db } = MongoDBCollectionNamespace.fromString(ns);
-
-    const collections = await client
-      .db(db)
-      .listCollections(filter, {
-        promoteLongs: false,
-        promoteValues: false
-      })
-      .toArray();
-
-    const info = collections.length > 0 ? serialize(collections[0]) : null;
-    return info;
-  }
-
-  /**
-   * Calls to the mongocryptd to provide markings for a command.
-   * Exposed for testing purposes. Do not directly invoke.
-   * @param client - A MongoClient connected to a mongocryptd
-   * @param ns - The namespace (database.collection) the command is being executed on
-   * @param command - The command to execute.
-   * @param callback - Invoked with the serialized and marked bson command, or with an error
-   */
-  async markCommand(client: MongoClient, ns: string, command: Uint8Array): Promise<Uint8Array> {
-    const options = { promoteLongs: false, promoteValues: false };
-    const { db } = MongoDBCollectionNamespace.fromString(ns);
-    const rawCommand = deserialize(command, options);
-
-    const response = await client.db(db).command(rawCommand, options);
-
-    return serialize(response, this.bsonOptions);
-  }
-
-  /**
-   * Requests keys from the keyVault collection on the topology.
-   * Exposed for testing purposes. Do not directly invoke.
-   * @param client - A MongoClient connected to the topology
-   * @param keyVaultNamespace - The namespace (database.collection) of the keyVault Collection
-   * @param filter - The filter for the find query against the keyVault Collection
-   * @param callback - Invoked with the found keys, or with an error
-   */
-  fetchKeys(
-    client: MongoClient,
-    keyVaultNamespace: string,
-    filter: Uint8Array
-  ): Promise<Array<DataKey>> {
-    const { db: dbName, collection: collectionName } =
-      MongoDBCollectionNamespace.fromString(keyVaultNamespace);
-
-    return client
-      .db(dbName)
-      .collection<DataKey>(collectionName, { readConcern: { level: 'majority' } })
-      .find(deserialize(filter))
-      .toArray();
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/auth_provider.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/auth_provider.ts
deleted file mode 100644
index 37a47889b91830f680033b7e5a935c6e0d1f6fcf..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/auth_provider.ts
+++ /dev/null
@@ -1,73 +0,0 @@
-import type { Document } from '../../bson';
-import { MongoRuntimeError } from '../../error';
-import type { HandshakeDocument } from '../connect';
-import type { Connection, ConnectionOptions } from '../connection';
-import type { MongoCredentials } from './mongo_credentials';
-
-/**
- * Context used during authentication
- * @internal
- */
-export class AuthContext {
-  /** The connection to authenticate */
-  connection: Connection;
-  /** The credentials to use for authentication */
-  credentials?: MongoCredentials;
-  /** If the context is for reauthentication. */
-  reauthenticating = false;
-  /** The options passed to the `connect` method */
-  options: ConnectionOptions;
-
-  /** A response from an initial auth attempt, only some mechanisms use this (e.g, SCRAM) */
-  response?: Document;
-  /** A random nonce generated for use in an authentication conversation */
-  nonce?: Buffer;
-
-  constructor(
-    connection: Connection,
-    credentials: MongoCredentials | undefined,
-    options: ConnectionOptions
-  ) {
-    this.connection = connection;
-    this.credentials = credentials;
-    this.options = options;
-  }
-}
-
-export abstract class AuthProvider {
-  /**
-   * Prepare the handshake document before the initial handshake.
-   *
-   * @param handshakeDoc - The document used for the initial handshake on a connection
-   * @param authContext - Context for authentication flow
-   */
-  async prepare(
-    handshakeDoc: HandshakeDocument,
-    _authContext: AuthContext
-  ): Promise<HandshakeDocument> {
-    return handshakeDoc;
-  }
-
-  /**
-   * Authenticate
-   *
-   * @param context - A shared context for authentication flow
-   */
-  abstract auth(context: AuthContext): Promise<void>;
-
-  /**
-   * Reauthenticate.
-   * @param context - The shared auth context.
-   */
-  async reauth(context: AuthContext): Promise<void> {
-    if (context.reauthenticating) {
-      throw new MongoRuntimeError('Reauthentication already in progress.');
-    }
-    try {
-      context.reauthenticating = true;
-      await this.auth(context);
-    } finally {
-      context.reauthenticating = false;
-    }
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/gssapi.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/gssapi.ts
deleted file mode 100644
index 3f8135a4e4f157a9082893a80c6846f42b777904..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/gssapi.ts
+++ /dev/null
@@ -1,204 +0,0 @@
-import * as dns from 'dns';
-
-import { getKerberos, type Kerberos, type KerberosClient } from '../../deps';
-import { MongoInvalidArgumentError, MongoMissingCredentialsError } from '../../error';
-import { ns } from '../../utils';
-import type { Connection } from '../connection';
-import { type AuthContext, AuthProvider } from './auth_provider';
-
-/** @public */
-export const GSSAPICanonicalizationValue = Object.freeze({
-  on: true,
-  off: false,
-  none: 'none',
-  forward: 'forward',
-  forwardAndReverse: 'forwardAndReverse'
-} as const);
-
-/** @public */
-export type GSSAPICanonicalizationValue =
-  (typeof GSSAPICanonicalizationValue)[keyof typeof GSSAPICanonicalizationValue];
-
-type MechanismProperties = {
-  CANONICALIZE_HOST_NAME?: GSSAPICanonicalizationValue;
-  SERVICE_HOST?: string;
-  SERVICE_NAME?: string;
-  SERVICE_REALM?: string;
-};
-
-async function externalCommand(
-  connection: Connection,
-  command: ReturnType<typeof saslStart> | ReturnType<typeof saslContinue>
-): Promise<{ payload: string; conversationId: any }> {
-  return connection.commandAsync(ns('$external.$cmd'), command, undefined) as Promise<{
-    payload: string;
-    conversationId: any;
-  }>;
-}
-
-let krb: typeof Kerberos;
-
-export class GSSAPI extends AuthProvider {
-  override async auth(authContext: AuthContext): Promise<void> {
-    const { connection, credentials } = authContext;
-    if (credentials == null) {
-      throw new MongoMissingCredentialsError('Credentials required for GSSAPI authentication');
-    }
-
-    const { username } = credentials;
-
-    const client = await makeKerberosClient(authContext);
-
-    const payload = await client.step('');
-
-    const saslStartResponse = await externalCommand(connection, saslStart(payload));
-
-    const negotiatedPayload = await negotiate(client, 10, saslStartResponse.payload);
-
-    const saslContinueResponse = await externalCommand(
-      connection,
-      saslContinue(negotiatedPayload, saslStartResponse.conversationId)
-    );
-
-    const finalizePayload = await finalize(client, username, saslContinueResponse.payload);
-
-    await externalCommand(connection, {
-      saslContinue: 1,
-      conversationId: saslContinueResponse.conversationId,
-      payload: finalizePayload
-    });
-  }
-}
-
-async function makeKerberosClient(authContext: AuthContext): Promise<KerberosClient> {
-  const { hostAddress } = authContext.options;
-  const { credentials } = authContext;
-  if (!hostAddress || typeof hostAddress.host !== 'string' || !credentials) {
-    throw new MongoInvalidArgumentError(
-      'Connection must have host and port and credentials defined.'
-    );
-  }
-
-  loadKrb();
-  if ('kModuleError' in krb) {
-    throw krb['kModuleError'];
-  }
-  const { initializeClient } = krb;
-
-  const { username, password } = credentials;
-  const mechanismProperties = credentials.mechanismProperties as MechanismProperties;
-
-  const serviceName = mechanismProperties.SERVICE_NAME ?? 'mongodb';
-
-  const host = await performGSSAPICanonicalizeHostName(hostAddress.host, mechanismProperties);
-
-  const initOptions = {};
-  if (password != null) {
-    // TODO(NODE-5139): These do not match the typescript options in initializeClient
-    Object.assign(initOptions, { user: username, password: password });
-  }
-
-  const spnHost = mechanismProperties.SERVICE_HOST ?? host;
-  let spn = `${serviceName}${process.platform === 'win32' ? '/' : '@'}${spnHost}`;
-  if ('SERVICE_REALM' in mechanismProperties) {
-    spn = `${spn}@${mechanismProperties.SERVICE_REALM}`;
-  }
-
-  return initializeClient(spn, initOptions);
-}
-
-function saslStart(payload: string) {
-  return {
-    saslStart: 1,
-    mechanism: 'GSSAPI',
-    payload,
-    autoAuthorize: 1
-  } as const;
-}
-
-function saslContinue(payload: string, conversationId: number) {
-  return {
-    saslContinue: 1,
-    conversationId,
-    payload
-  } as const;
-}
-
-async function negotiate(
-  client: KerberosClient,
-  retries: number,
-  payload: string
-): Promise<string> {
-  try {
-    const response = await client.step(payload);
-    return response || '';
-  } catch (error) {
-    if (retries === 0) {
-      // Retries exhausted, raise error
-      throw error;
-    }
-    // Adjust number of retries and call step again
-    return negotiate(client, retries - 1, payload);
-  }
-}
-
-async function finalize(client: KerberosClient, user: string, payload: string): Promise<string> {
-  // GSS Client Unwrap
-  const response = await client.unwrap(payload);
-  return client.wrap(response || '', { user });
-}
-
-export async function performGSSAPICanonicalizeHostName(
-  host: string,
-  mechanismProperties: MechanismProperties
-): Promise<string> {
-  const mode = mechanismProperties.CANONICALIZE_HOST_NAME;
-  if (!mode || mode === GSSAPICanonicalizationValue.none) {
-    return host;
-  }
-
-  // If forward and reverse or true
-  if (
-    mode === GSSAPICanonicalizationValue.on ||
-    mode === GSSAPICanonicalizationValue.forwardAndReverse
-  ) {
-    // Perform the lookup of the ip address.
-    const { address } = await dns.promises.lookup(host);
-
-    try {
-      // Perform a reverse ptr lookup on the ip address.
-      const results = await dns.promises.resolvePtr(address);
-      // If the ptr did not error but had no results, return the host.
-      return results.length > 0 ? results[0] : host;
-    } catch (error) {
-      // This can error as ptr records may not exist for all ips. In this case
-      // fallback to a cname lookup as dns.lookup() does not return the
-      // cname.
-      return resolveCname(host);
-    }
-  } else {
-    // The case for forward is just to resolve the cname as dns.lookup()
-    // will not return it.
-    return resolveCname(host);
-  }
-}
-
-export async function resolveCname(host: string): Promise<string> {
-  // Attempt to resolve the host name
-  try {
-    const results = await dns.promises.resolveCname(host);
-    // Get the first resolved host id
-    return results.length > 0 ? results[0] : host;
-  } catch {
-    return host;
-  }
-}
-
-/**
- * Load the Kerberos library.
- */
-function loadKrb() {
-  if (!krb) {
-    krb = getKerberos();
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/mongo_credentials.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/mongo_credentials.ts
deleted file mode 100644
index 150a0841680666bd4ee9842cb83b74f82cb7ecb3..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/mongo_credentials.ts
+++ /dev/null
@@ -1,278 +0,0 @@
-// Resolves the default auth mechanism according to
-// Resolves the default auth mechanism according to
-import type { Document } from '../../bson';
-import {
-  MongoAPIError,
-  MongoAzureError,
-  MongoInvalidArgumentError,
-  MongoMissingCredentialsError
-} from '../../error';
-import { GSSAPICanonicalizationValue } from './gssapi';
-import type { OIDCRefreshFunction, OIDCRequestFunction } from './mongodb_oidc';
-import { AUTH_MECHS_AUTH_SRC_EXTERNAL, AuthMechanism } from './providers';
-
-// https://github.com/mongodb/specifications/blob/master/source/auth/auth.rst
-function getDefaultAuthMechanism(hello?: Document): AuthMechanism {
-  if (hello) {
-    // If hello contains saslSupportedMechs, use scram-sha-256
-    // if it is available, else scram-sha-1
-    if (Array.isArray(hello.saslSupportedMechs)) {
-      return hello.saslSupportedMechs.includes(AuthMechanism.MONGODB_SCRAM_SHA256)
-        ? AuthMechanism.MONGODB_SCRAM_SHA256
-        : AuthMechanism.MONGODB_SCRAM_SHA1;
-    }
-
-    // Fallback to legacy selection method. If wire version >= 3, use scram-sha-1
-    if (hello.maxWireVersion >= 3) {
-      return AuthMechanism.MONGODB_SCRAM_SHA1;
-    }
-  }
-
-  // Default for wireprotocol < 3
-  return AuthMechanism.MONGODB_CR;
-}
-
-const ALLOWED_PROVIDER_NAMES: AuthMechanismProperties['PROVIDER_NAME'][] = ['aws', 'azure'];
-const ALLOWED_HOSTS_ERROR = 'Auth mechanism property ALLOWED_HOSTS must be an array of strings.';
-
-/** @internal */
-export const DEFAULT_ALLOWED_HOSTS = [
-  '*.mongodb.net',
-  '*.mongodb-dev.net',
-  '*.mongodbgov.net',
-  'localhost',
-  '127.0.0.1',
-  '::1'
-];
-
-/** Error for when the token audience is missing in the environment. */
-const TOKEN_AUDIENCE_MISSING_ERROR =
-  'TOKEN_AUDIENCE must be set in the auth mechanism properties when PROVIDER_NAME is azure.';
-
-/** @public */
-export interface AuthMechanismProperties extends Document {
-  SERVICE_HOST?: string;
-  SERVICE_NAME?: string;
-  SERVICE_REALM?: string;
-  CANONICALIZE_HOST_NAME?: GSSAPICanonicalizationValue;
-  AWS_SESSION_TOKEN?: string;
-  /** @experimental */
-  REQUEST_TOKEN_CALLBACK?: OIDCRequestFunction;
-  /** @experimental */
-  REFRESH_TOKEN_CALLBACK?: OIDCRefreshFunction;
-  /** @experimental */
-  PROVIDER_NAME?: 'aws' | 'azure';
-  /** @experimental */
-  ALLOWED_HOSTS?: string[];
-  /** @experimental */
-  TOKEN_AUDIENCE?: string;
-}
-
-/** @public */
-export interface MongoCredentialsOptions {
-  username?: string;
-  password: string;
-  source: string;
-  db?: string;
-  mechanism?: AuthMechanism;
-  mechanismProperties: AuthMechanismProperties;
-}
-
-/**
- * A representation of the credentials used by MongoDB
- * @public
- */
-export class MongoCredentials {
-  /** The username used for authentication */
-  readonly username: string;
-  /** The password used for authentication */
-  readonly password: string;
-  /** The database that the user should authenticate against */
-  readonly source: string;
-  /** The method used to authenticate */
-  readonly mechanism: AuthMechanism;
-  /** Special properties used by some types of auth mechanisms */
-  readonly mechanismProperties: AuthMechanismProperties;
-
-  constructor(options: MongoCredentialsOptions) {
-    this.username = options.username ?? '';
-    this.password = options.password;
-    this.source = options.source;
-    if (!this.source && options.db) {
-      this.source = options.db;
-    }
-    this.mechanism = options.mechanism || AuthMechanism.MONGODB_DEFAULT;
-    this.mechanismProperties = options.mechanismProperties || {};
-
-    if (this.mechanism.match(/MONGODB-AWS/i)) {
-      if (!this.username && process.env.AWS_ACCESS_KEY_ID) {
-        this.username = process.env.AWS_ACCESS_KEY_ID;
-      }
-
-      if (!this.password && process.env.AWS_SECRET_ACCESS_KEY) {
-        this.password = process.env.AWS_SECRET_ACCESS_KEY;
-      }
-
-      if (
-        this.mechanismProperties.AWS_SESSION_TOKEN == null &&
-        process.env.AWS_SESSION_TOKEN != null
-      ) {
-        this.mechanismProperties = {
-          ...this.mechanismProperties,
-          AWS_SESSION_TOKEN: process.env.AWS_SESSION_TOKEN
-        };
-      }
-    }
-
-    if (this.mechanism === AuthMechanism.MONGODB_OIDC && !this.mechanismProperties.ALLOWED_HOSTS) {
-      this.mechanismProperties = {
-        ...this.mechanismProperties,
-        ALLOWED_HOSTS: DEFAULT_ALLOWED_HOSTS
-      };
-    }
-
-    Object.freeze(this.mechanismProperties);
-    Object.freeze(this);
-  }
-
-  /** Determines if two MongoCredentials objects are equivalent */
-  equals(other: MongoCredentials): boolean {
-    return (
-      this.mechanism === other.mechanism &&
-      this.username === other.username &&
-      this.password === other.password &&
-      this.source === other.source
-    );
-  }
-
-  /**
-   * If the authentication mechanism is set to "default", resolves the authMechanism
-   * based on the server version and server supported sasl mechanisms.
-   *
-   * @param hello - A hello response from the server
-   */
-  resolveAuthMechanism(hello?: Document): MongoCredentials {
-    // If the mechanism is not "default", then it does not need to be resolved
-    if (this.mechanism.match(/DEFAULT/i)) {
-      return new MongoCredentials({
-        username: this.username,
-        password: this.password,
-        source: this.source,
-        mechanism: getDefaultAuthMechanism(hello),
-        mechanismProperties: this.mechanismProperties
-      });
-    }
-
-    return this;
-  }
-
-  validate(): void {
-    if (
-      (this.mechanism === AuthMechanism.MONGODB_GSSAPI ||
-        this.mechanism === AuthMechanism.MONGODB_CR ||
-        this.mechanism === AuthMechanism.MONGODB_PLAIN ||
-        this.mechanism === AuthMechanism.MONGODB_SCRAM_SHA1 ||
-        this.mechanism === AuthMechanism.MONGODB_SCRAM_SHA256) &&
-      !this.username
-    ) {
-      throw new MongoMissingCredentialsError(`Username required for mechanism '${this.mechanism}'`);
-    }
-
-    if (this.mechanism === AuthMechanism.MONGODB_OIDC) {
-      if (this.username && this.mechanismProperties.PROVIDER_NAME) {
-        throw new MongoInvalidArgumentError(
-          `username and PROVIDER_NAME may not be used together for mechanism '${this.mechanism}'.`
-        );
-      }
-
-      if (
-        this.mechanismProperties.PROVIDER_NAME === 'azure' &&
-        !this.mechanismProperties.TOKEN_AUDIENCE
-      ) {
-        throw new MongoAzureError(TOKEN_AUDIENCE_MISSING_ERROR);
-      }
-
-      if (
-        this.mechanismProperties.PROVIDER_NAME &&
-        !ALLOWED_PROVIDER_NAMES.includes(this.mechanismProperties.PROVIDER_NAME)
-      ) {
-        throw new MongoInvalidArgumentError(
-          `Currently only a PROVIDER_NAME in ${ALLOWED_PROVIDER_NAMES.join(
-            ','
-          )} is supported for mechanism '${this.mechanism}'.`
-        );
-      }
-
-      if (
-        this.mechanismProperties.REFRESH_TOKEN_CALLBACK &&
-        !this.mechanismProperties.REQUEST_TOKEN_CALLBACK
-      ) {
-        throw new MongoInvalidArgumentError(
-          `A REQUEST_TOKEN_CALLBACK must be provided when using a REFRESH_TOKEN_CALLBACK for mechanism '${this.mechanism}'`
-        );
-      }
-
-      if (
-        !this.mechanismProperties.PROVIDER_NAME &&
-        !this.mechanismProperties.REQUEST_TOKEN_CALLBACK
-      ) {
-        throw new MongoInvalidArgumentError(
-          `Either a PROVIDER_NAME or a REQUEST_TOKEN_CALLBACK must be specified for mechanism '${this.mechanism}'.`
-        );
-      }
-
-      if (this.mechanismProperties.ALLOWED_HOSTS) {
-        const hosts = this.mechanismProperties.ALLOWED_HOSTS;
-        if (!Array.isArray(hosts)) {
-          throw new MongoInvalidArgumentError(ALLOWED_HOSTS_ERROR);
-        }
-        for (const host of hosts) {
-          if (typeof host !== 'string') {
-            throw new MongoInvalidArgumentError(ALLOWED_HOSTS_ERROR);
-          }
-        }
-      }
-    }
-
-    if (AUTH_MECHS_AUTH_SRC_EXTERNAL.has(this.mechanism)) {
-      if (this.source != null && this.source !== '$external') {
-        // TODO(NODE-3485): Replace this with a MongoAuthValidationError
-        throw new MongoAPIError(
-          `Invalid source '${this.source}' for mechanism '${this.mechanism}' specified.`
-        );
-      }
-    }
-
-    if (this.mechanism === AuthMechanism.MONGODB_PLAIN && this.source == null) {
-      // TODO(NODE-3485): Replace this with a MongoAuthValidationError
-      throw new MongoAPIError('PLAIN Authentication Mechanism needs an auth source');
-    }
-
-    if (this.mechanism === AuthMechanism.MONGODB_X509 && this.password != null) {
-      if (this.password === '') {
-        Reflect.set(this, 'password', undefined);
-        return;
-      }
-      // TODO(NODE-3485): Replace this with a MongoAuthValidationError
-      throw new MongoAPIError(`Password not allowed for mechanism MONGODB-X509`);
-    }
-
-    const canonicalization = this.mechanismProperties.CANONICALIZE_HOST_NAME ?? false;
-    if (!Object.values(GSSAPICanonicalizationValue).includes(canonicalization)) {
-      throw new MongoAPIError(`Invalid CANONICALIZE_HOST_NAME value: ${canonicalization}`);
-    }
-  }
-
-  static merge(
-    creds: MongoCredentials | undefined,
-    options: Partial<MongoCredentialsOptions>
-  ): MongoCredentials {
-    return new MongoCredentials({
-      username: options.username ?? creds?.username ?? '',
-      password: options.password ?? creds?.password ?? '',
-      mechanism: options.mechanism ?? creds?.mechanism ?? AuthMechanism.MONGODB_DEFAULT,
-      mechanismProperties: options.mechanismProperties ?? creds?.mechanismProperties ?? {},
-      source: options.source ?? options.db ?? creds?.source ?? 'admin'
-    });
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/mongocr.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/mongocr.ts
deleted file mode 100644
index f886a7bd26c7f652d8522267f889aca173ecc344..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/mongocr.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import * as crypto from 'crypto';
-
-import { MongoMissingCredentialsError } from '../../error';
-import { ns } from '../../utils';
-import { type AuthContext, AuthProvider } from './auth_provider';
-
-export class MongoCR extends AuthProvider {
-  override async auth(authContext: AuthContext): Promise<void> {
-    const { connection, credentials } = authContext;
-    if (!credentials) {
-      throw new MongoMissingCredentialsError('AuthContext must provide credentials.');
-    }
-
-    const { username, password, source } = credentials;
-
-    const { nonce } = await connection.commandAsync(
-      ns(`${source}.$cmd`),
-      { getnonce: 1 },
-      undefined
-    );
-
-    const hashPassword = crypto
-      .createHash('md5')
-      .update(`${username}:mongo:${password}`, 'utf8')
-      .digest('hex');
-
-    // Final key
-    const key = crypto
-      .createHash('md5')
-      .update(`${nonce}${username}${hashPassword}`, 'utf8')
-      .digest('hex');
-
-    const authenticateCommand = {
-      authenticate: 1,
-      user: username,
-      nonce,
-      key
-    };
-
-    await connection.commandAsync(ns(`${source}.$cmd`), authenticateCommand, undefined);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts
deleted file mode 100644
index cfaf8e6f9b32a8505d6381a3a3c03c256c87e2a3..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts
+++ /dev/null
@@ -1,293 +0,0 @@
-import * as crypto from 'crypto';
-import * as process from 'process';
-import { promisify } from 'util';
-
-import type { Binary, BSONSerializeOptions } from '../../bson';
-import * as BSON from '../../bson';
-import { aws4, getAwsCredentialProvider } from '../../deps';
-import {
-  MongoAWSError,
-  MongoCompatibilityError,
-  MongoMissingCredentialsError,
-  MongoRuntimeError
-} from '../../error';
-import { ByteUtils, maxWireVersion, ns, request } from '../../utils';
-import { type AuthContext, AuthProvider } from './auth_provider';
-import { MongoCredentials } from './mongo_credentials';
-import { AuthMechanism } from './providers';
-
-/**
- * The following regions use the global AWS STS endpoint, sts.amazonaws.com, by default
- * https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html
- */
-const LEGACY_REGIONS = new Set([
-  'ap-northeast-1',
-  'ap-south-1',
-  'ap-southeast-1',
-  'ap-southeast-2',
-  'aws-global',
-  'ca-central-1',
-  'eu-central-1',
-  'eu-north-1',
-  'eu-west-1',
-  'eu-west-2',
-  'eu-west-3',
-  'sa-east-1',
-  'us-east-1',
-  'us-east-2',
-  'us-west-1',
-  'us-west-2'
-]);
-const ASCII_N = 110;
-const AWS_RELATIVE_URI = 'http://169.254.170.2';
-const AWS_EC2_URI = 'http://169.254.169.254';
-const AWS_EC2_PATH = '/latest/meta-data/iam/security-credentials';
-const bsonOptions: BSONSerializeOptions = {
-  useBigInt64: false,
-  promoteLongs: true,
-  promoteValues: true,
-  promoteBuffers: false,
-  bsonRegExp: false
-};
-
-interface AWSSaslContinuePayload {
-  a: string;
-  d: string;
-  t?: string;
-}
-
-export class MongoDBAWS extends AuthProvider {
-  static credentialProvider: ReturnType<typeof getAwsCredentialProvider> | null = null;
-  randomBytesAsync: (size: number) => Promise<Buffer>;
-
-  constructor() {
-    super();
-    this.randomBytesAsync = promisify(crypto.randomBytes);
-  }
-
-  override async auth(authContext: AuthContext): Promise<void> {
-    const { connection } = authContext;
-    if (!authContext.credentials) {
-      throw new MongoMissingCredentialsError('AuthContext must provide credentials.');
-    }
-
-    if ('kModuleError' in aws4) {
-      throw aws4['kModuleError'];
-    }
-    const { sign } = aws4;
-
-    if (maxWireVersion(connection) < 9) {
-      throw new MongoCompatibilityError(
-        'MONGODB-AWS authentication requires MongoDB version 4.4 or later'
-      );
-    }
-
-    if (!authContext.credentials.username) {
-      authContext.credentials = await makeTempCredentials(authContext.credentials);
-    }
-
-    const { credentials } = authContext;
-
-    const accessKeyId = credentials.username;
-    const secretAccessKey = credentials.password;
-    const sessionToken = credentials.mechanismProperties.AWS_SESSION_TOKEN;
-
-    // If all three defined, include sessionToken, else include username and pass, else no credentials
-    const awsCredentials =
-      accessKeyId && secretAccessKey && sessionToken
-        ? { accessKeyId, secretAccessKey, sessionToken }
-        : accessKeyId && secretAccessKey
-        ? { accessKeyId, secretAccessKey }
-        : undefined;
-
-    const db = credentials.source;
-    const nonce = await this.randomBytesAsync(32);
-
-    const saslStart = {
-      saslStart: 1,
-      mechanism: 'MONGODB-AWS',
-      payload: BSON.serialize({ r: nonce, p: ASCII_N }, bsonOptions)
-    };
-
-    const saslStartResponse = await connection.commandAsync(ns(`${db}.$cmd`), saslStart, undefined);
-
-    const serverResponse = BSON.deserialize(saslStartResponse.payload.buffer, bsonOptions) as {
-      s: Binary;
-      h: string;
-    };
-    const host = serverResponse.h;
-    const serverNonce = serverResponse.s.buffer;
-    if (serverNonce.length !== 64) {
-      // TODO(NODE-3483)
-      throw new MongoRuntimeError(`Invalid server nonce length ${serverNonce.length}, expected 64`);
-    }
-
-    if (!ByteUtils.equals(serverNonce.subarray(0, nonce.byteLength), nonce)) {
-      // throw because the serverNonce's leading 32 bytes must equal the client nonce's 32 bytes
-      // https://github.com/mongodb/specifications/blob/875446db44aade414011731840831f38a6c668df/source/auth/auth.rst#id11
-
-      // TODO(NODE-3483)
-      throw new MongoRuntimeError('Server nonce does not begin with client nonce');
-    }
-
-    if (host.length < 1 || host.length > 255 || host.indexOf('..') !== -1) {
-      // TODO(NODE-3483)
-      throw new MongoRuntimeError(`Server returned an invalid host: "${host}"`);
-    }
-
-    const body = 'Action=GetCallerIdentity&Version=2011-06-15';
-    const options = sign(
-      {
-        method: 'POST',
-        host,
-        region: deriveRegion(serverResponse.h),
-        service: 'sts',
-        headers: {
-          'Content-Type': 'application/x-www-form-urlencoded',
-          'Content-Length': body.length,
-          'X-MongoDB-Server-Nonce': ByteUtils.toBase64(serverNonce),
-          'X-MongoDB-GS2-CB-Flag': 'n'
-        },
-        path: '/',
-        body
-      },
-      awsCredentials
-    );
-
-    const payload: AWSSaslContinuePayload = {
-      a: options.headers.Authorization,
-      d: options.headers['X-Amz-Date']
-    };
-
-    if (sessionToken) {
-      payload.t = sessionToken;
-    }
-
-    const saslContinue = {
-      saslContinue: 1,
-      conversationId: 1,
-      payload: BSON.serialize(payload, bsonOptions)
-    };
-
-    await connection.commandAsync(ns(`${db}.$cmd`), saslContinue, undefined);
-  }
-}
-
-interface AWSTempCredentials {
-  AccessKeyId?: string;
-  SecretAccessKey?: string;
-  Token?: string;
-  RoleArn?: string;
-  Expiration?: Date;
-}
-
-async function makeTempCredentials(credentials: MongoCredentials): Promise<MongoCredentials> {
-  function makeMongoCredentialsFromAWSTemp(creds: AWSTempCredentials) {
-    if (!creds.AccessKeyId || !creds.SecretAccessKey || !creds.Token) {
-      throw new MongoMissingCredentialsError('Could not obtain temporary MONGODB-AWS credentials');
-    }
-
-    return new MongoCredentials({
-      username: creds.AccessKeyId,
-      password: creds.SecretAccessKey,
-      source: credentials.source,
-      mechanism: AuthMechanism.MONGODB_AWS,
-      mechanismProperties: {
-        AWS_SESSION_TOKEN: creds.Token
-      }
-    });
-  }
-
-  MongoDBAWS.credentialProvider ??= getAwsCredentialProvider();
-
-  // Check if the AWS credential provider from the SDK is present. If not,
-  // use the old method.
-  if ('kModuleError' in MongoDBAWS.credentialProvider) {
-    // If the environment variable AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
-    // is set then drivers MUST assume that it was set by an AWS ECS agent
-    if (process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI) {
-      return makeMongoCredentialsFromAWSTemp(
-        await request(`${AWS_RELATIVE_URI}${process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI}`)
-      );
-    }
-
-    // Otherwise assume we are on an EC2 instance
-
-    // get a token
-    const token = await request(`${AWS_EC2_URI}/latest/api/token`, {
-      method: 'PUT',
-      json: false,
-      headers: { 'X-aws-ec2-metadata-token-ttl-seconds': 30 }
-    });
-
-    // get role name
-    const roleName = await request(`${AWS_EC2_URI}/${AWS_EC2_PATH}`, {
-      json: false,
-      headers: { 'X-aws-ec2-metadata-token': token }
-    });
-
-    // get temp credentials
-    const creds = await request(`${AWS_EC2_URI}/${AWS_EC2_PATH}/${roleName}`, {
-      headers: { 'X-aws-ec2-metadata-token': token }
-    });
-
-    return makeMongoCredentialsFromAWSTemp(creds);
-  } else {
-    let { AWS_STS_REGIONAL_ENDPOINTS = '', AWS_REGION = '' } = process.env;
-    AWS_STS_REGIONAL_ENDPOINTS = AWS_STS_REGIONAL_ENDPOINTS.toLowerCase();
-    AWS_REGION = AWS_REGION.toLowerCase();
-
-    /** The option setting should work only for users who have explicit settings in their environment, the driver should not encode "defaults" */
-    const awsRegionSettingsExist =
-      AWS_REGION.length !== 0 && AWS_STS_REGIONAL_ENDPOINTS.length !== 0;
-
-    /**
-     * If AWS_STS_REGIONAL_ENDPOINTS is set to regional, users are opting into the new behavior of respecting the region settings
-     *
-     * If AWS_STS_REGIONAL_ENDPOINTS is set to legacy, then "old" regions need to keep using the global setting.
-     * Technically the SDK gets this wrong, it reaches out to 'sts.us-east-1.amazonaws.com' when it should be 'sts.amazonaws.com'.
-     * That is not our bug to fix here. We leave that up to the SDK.
-     */
-    const useRegionalSts =
-      AWS_STS_REGIONAL_ENDPOINTS === 'regional' ||
-      (AWS_STS_REGIONAL_ENDPOINTS === 'legacy' && !LEGACY_REGIONS.has(AWS_REGION));
-
-    const provider =
-      awsRegionSettingsExist && useRegionalSts
-        ? MongoDBAWS.credentialProvider.fromNodeProviderChain({
-            clientConfig: { region: AWS_REGION }
-          })
-        : MongoDBAWS.credentialProvider.fromNodeProviderChain();
-
-    /*
-     * Creates a credential provider that will attempt to find credentials from the
-     * following sources (listed in order of precedence):
-     *
-     * - Environment variables exposed via process.env
-     * - SSO credentials from token cache
-     * - Web identity token credentials
-     * - Shared credentials and config ini files
-     * - The EC2/ECS Instance Metadata Service
-     */
-    try {
-      const creds = await provider();
-      return makeMongoCredentialsFromAWSTemp({
-        AccessKeyId: creds.accessKeyId,
-        SecretAccessKey: creds.secretAccessKey,
-        Token: creds.sessionToken,
-        Expiration: creds.expiration
-      });
-    } catch (error) {
-      throw new MongoAWSError(error.message);
-    }
-  }
-}
-
-function deriveRegion(host: string) {
-  const parts = host.split('.');
-  if (parts.length === 1 || parts[1] === 'amazonaws') {
-    return 'us-east-1';
-  }
-
-  return parts[1];
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc.ts
deleted file mode 100644
index f3584c4893e0aa67e92fbee099e75d70f4978edd..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc.ts
+++ /dev/null
@@ -1,149 +0,0 @@
-import type { Document } from 'bson';
-
-import { MongoInvalidArgumentError, MongoMissingCredentialsError } from '../../error';
-import type { HandshakeDocument } from '../connect';
-import type { Connection } from '../connection';
-import { type AuthContext, AuthProvider } from './auth_provider';
-import type { MongoCredentials } from './mongo_credentials';
-import { AwsServiceWorkflow } from './mongodb_oidc/aws_service_workflow';
-import { AzureServiceWorkflow } from './mongodb_oidc/azure_service_workflow';
-import { CallbackWorkflow } from './mongodb_oidc/callback_workflow';
-
-/** Error when credentials are missing. */
-const MISSING_CREDENTIALS_ERROR = 'AuthContext must provide credentials.';
-
-/**
- * @public
- * @experimental
- */
-export interface IdPServerInfo {
-  issuer: string;
-  clientId: string;
-  requestScopes?: string[];
-}
-
-/**
- * @public
- * @experimental
- */
-export interface IdPServerResponse {
-  accessToken: string;
-  expiresInSeconds?: number;
-  refreshToken?: string;
-}
-
-/**
- * @public
- * @experimental
- */
-export interface OIDCCallbackContext {
-  refreshToken?: string;
-  timeoutSeconds?: number;
-  timeoutContext?: AbortSignal;
-  version: number;
-}
-
-/**
- * @public
- * @experimental
- */
-export type OIDCRequestFunction = (
-  info: IdPServerInfo,
-  context: OIDCCallbackContext
-) => Promise<IdPServerResponse>;
-
-/**
- * @public
- * @experimental
- */
-export type OIDCRefreshFunction = (
-  info: IdPServerInfo,
-  context: OIDCCallbackContext
-) => Promise<IdPServerResponse>;
-
-type ProviderName = 'aws' | 'azure' | 'callback';
-
-export interface Workflow {
-  /**
-   * All device workflows must implement this method in order to get the access
-   * token and then call authenticate with it.
-   */
-  execute(
-    connection: Connection,
-    credentials: MongoCredentials,
-    reauthenticating: boolean,
-    response?: Document
-  ): Promise<Document>;
-
-  /**
-   * Get the document to add for speculative authentication.
-   */
-  speculativeAuth(credentials: MongoCredentials): Promise<Document>;
-}
-
-/** @internal */
-export const OIDC_WORKFLOWS: Map<ProviderName, Workflow> = new Map();
-OIDC_WORKFLOWS.set('callback', new CallbackWorkflow());
-OIDC_WORKFLOWS.set('aws', new AwsServiceWorkflow());
-OIDC_WORKFLOWS.set('azure', new AzureServiceWorkflow());
-
-/**
- * OIDC auth provider.
- * @experimental
- */
-export class MongoDBOIDC extends AuthProvider {
-  /**
-   * Instantiate the auth provider.
-   */
-  constructor() {
-    super();
-  }
-
-  /**
-   * Authenticate using OIDC
-   */
-  override async auth(authContext: AuthContext): Promise<void> {
-    const { connection, reauthenticating, response } = authContext;
-    const credentials = getCredentials(authContext);
-    const workflow = getWorkflow(credentials);
-    await workflow.execute(connection, credentials, reauthenticating, response);
-  }
-
-  /**
-   * Add the speculative auth for the initial handshake.
-   */
-  override async prepare(
-    handshakeDoc: HandshakeDocument,
-    authContext: AuthContext
-  ): Promise<HandshakeDocument> {
-    const credentials = getCredentials(authContext);
-    const workflow = getWorkflow(credentials);
-    const result = await workflow.speculativeAuth(credentials);
-    return { ...handshakeDoc, ...result };
-  }
-}
-
-/**
- * Get credentials from the auth context, throwing if they do not exist.
- */
-function getCredentials(authContext: AuthContext): MongoCredentials {
-  const { credentials } = authContext;
-  if (!credentials) {
-    throw new MongoMissingCredentialsError(MISSING_CREDENTIALS_ERROR);
-  }
-  return credentials;
-}
-
-/**
- * Gets either a device workflow or callback workflow.
- */
-function getWorkflow(credentials: MongoCredentials): Workflow {
-  const providerName = credentials.mechanismProperties.PROVIDER_NAME;
-  const workflow = OIDC_WORKFLOWS.get(providerName || 'callback');
-  if (!workflow) {
-    throw new MongoInvalidArgumentError(
-      `Could not load workflow for provider ${credentials.mechanismProperties.PROVIDER_NAME}`
-    );
-  }
-  return workflow;
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/aws_service_workflow.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/aws_service_workflow.ts
deleted file mode 100644
index 5dd07b1d28e7d30623eeef3444f182265274433f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/aws_service_workflow.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import * as fs from 'fs';
-
-import { MongoAWSError } from '../../../error';
-import { ServiceWorkflow } from './service_workflow';
-
-/** Error for when the token is missing in the environment. */
-const TOKEN_MISSING_ERROR = 'AWS_WEB_IDENTITY_TOKEN_FILE must be set in the environment.';
-
-/**
- * Device workflow implementation for AWS.
- *
- * @internal
- */
-export class AwsServiceWorkflow extends ServiceWorkflow {
-  constructor() {
-    super();
-  }
-
-  /**
-   * Get the token from the environment.
-   */
-  async getToken(): Promise<string> {
-    const tokenFile = process.env.AWS_WEB_IDENTITY_TOKEN_FILE;
-    if (!tokenFile) {
-      throw new MongoAWSError(TOKEN_MISSING_ERROR);
-    }
-    return fs.promises.readFile(tokenFile, 'utf8');
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/azure_service_workflow.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/azure_service_workflow.ts
deleted file mode 100644
index fadbf5e9fd94bb0058fab34982f41fa59d5c2b72..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/azure_service_workflow.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-import { MongoAzureError } from '../../../error';
-import { request } from '../../../utils';
-import type { MongoCredentials } from '../mongo_credentials';
-import { AzureTokenCache } from './azure_token_cache';
-import { ServiceWorkflow } from './service_workflow';
-
-/** Base URL for getting Azure tokens. */
-const AZURE_BASE_URL =
-  'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01';
-
-/** Azure request headers. */
-const AZURE_HEADERS = Object.freeze({ Metadata: 'true', Accept: 'application/json' });
-
-/** Invalid endpoint result error. */
-const ENDPOINT_RESULT_ERROR =
-  'Azure endpoint did not return a value with only access_token and expires_in properties';
-
-/** Error for when the token audience is missing in the environment. */
-const TOKEN_AUDIENCE_MISSING_ERROR =
-  'TOKEN_AUDIENCE must be set in the auth mechanism properties when PROVIDER_NAME is azure.';
-
-/**
- * The Azure access token format.
- * @internal
- */
-export interface AzureAccessToken {
-  access_token: string;
-  expires_in: number;
-}
-
-/**
- * Device workflow implementation for Azure.
- *
- * @internal
- */
-export class AzureServiceWorkflow extends ServiceWorkflow {
-  cache = new AzureTokenCache();
-
-  /**
-   * Get the token from the environment.
-   */
-  async getToken(credentials?: MongoCredentials): Promise<string> {
-    const tokenAudience = credentials?.mechanismProperties.TOKEN_AUDIENCE;
-    if (!tokenAudience) {
-      throw new MongoAzureError(TOKEN_AUDIENCE_MISSING_ERROR);
-    }
-    let token;
-    const entry = this.cache.getEntry(tokenAudience);
-    if (entry?.isValid()) {
-      token = entry.token;
-    } else {
-      this.cache.deleteEntry(tokenAudience);
-      const response = await getAzureTokenData(tokenAudience);
-      if (!isEndpointResultValid(response)) {
-        throw new MongoAzureError(ENDPOINT_RESULT_ERROR);
-      }
-      this.cache.addEntry(tokenAudience, response);
-      token = response.access_token;
-    }
-    return token;
-  }
-}
-
-/**
- * Hit the Azure endpoint to get the token data.
- */
-async function getAzureTokenData(tokenAudience: string): Promise<AzureAccessToken> {
-  const url = `${AZURE_BASE_URL}&resource=${tokenAudience}`;
-  const data = await request(url, {
-    json: true,
-    headers: AZURE_HEADERS
-  });
-  return data as AzureAccessToken;
-}
-
-/**
- * Determines if a result returned from the endpoint is valid.
- * This means the result is not nullish, contains the access_token required field
- * and the expires_in required field.
- */
-function isEndpointResultValid(
-  token: unknown
-): token is { access_token: unknown; expires_in: unknown } {
-  if (token == null || typeof token !== 'object') return false;
-  return 'access_token' in token && 'expires_in' in token;
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/azure_token_cache.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/azure_token_cache.ts
deleted file mode 100644
index f68725120e878a9e5be2c1e1b079339fc84b2d66..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/azure_token_cache.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import type { AzureAccessToken } from './azure_service_workflow';
-import { Cache, ExpiringCacheEntry } from './cache';
-
-/** @internal */
-export class AzureTokenEntry extends ExpiringCacheEntry {
-  token: string;
-
-  /**
-   * Instantiate the entry.
-   */
-  constructor(token: string, expiration: number) {
-    super(expiration);
-    this.token = token;
-  }
-}
-
-/**
- * A cache of access tokens from Azure.
- * @internal
- */
-export class AzureTokenCache extends Cache<AzureTokenEntry> {
-  /**
-   * Add an entry to the cache.
-   */
-  addEntry(tokenAudience: string, token: AzureAccessToken): AzureTokenEntry {
-    const entry = new AzureTokenEntry(token.access_token, token.expires_in);
-    this.entries.set(tokenAudience, entry);
-    return entry;
-  }
-
-  /**
-   * Create a cache key.
-   */
-  cacheKey(tokenAudience: string): string {
-    return tokenAudience;
-  }
-
-  /**
-   * Delete an entry from the cache.
-   */
-  deleteEntry(tokenAudience: string): void {
-    this.entries.delete(tokenAudience);
-  }
-
-  /**
-   * Get an Azure token entry from the cache.
-   */
-  getEntry(tokenAudience: string): AzureTokenEntry | undefined {
-    return this.entries.get(tokenAudience);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/cache.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/cache.ts
deleted file mode 100644
index e23685b3bca00a5818c30683b0078fe96ab9ded6..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/cache.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-/* 5 minutes in milliseconds */
-const EXPIRATION_BUFFER_MS = 300000;
-
-/**
- * An entry in a cache that can expire in a certain amount of time.
- */
-export abstract class ExpiringCacheEntry {
-  expiration: number;
-
-  /**
-   * Create a new expiring token entry.
-   */
-  constructor(expiration: number) {
-    this.expiration = this.expirationTime(expiration);
-  }
-  /**
-   * The entry is still valid if the expiration is more than
-   * 5 minutes from the expiration time.
-   */
-  isValid() {
-    return this.expiration - Date.now() > EXPIRATION_BUFFER_MS;
-  }
-
-  /**
-   * Get an expiration time in milliseconds past epoch.
-   */
-  private expirationTime(expiresInSeconds: number): number {
-    return Date.now() + expiresInSeconds * 1000;
-  }
-}
-
-/**
- * Base class for OIDC caches.
- */
-export abstract class Cache<T> {
-  entries: Map<string, T>;
-
-  /**
-   * Create a new cache.
-   */
-  constructor() {
-    this.entries = new Map<string, T>();
-  }
-
-  /**
-   * Clear the cache.
-   */
-  clear() {
-    this.entries.clear();
-  }
-
-  /**
-   * Implement the cache key for the token.
-   */
-  abstract cacheKey(address: string, username: string, callbackHash: string): string;
-
-  /**
-   * Create a cache key from the address and username.
-   */
-  hashedCacheKey(address: string, username: string, callbackHash: string): string {
-    return JSON.stringify([address, username, callbackHash]);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/callback_lock_cache.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/callback_lock_cache.ts
deleted file mode 100644
index b92a504b0a868fad42548a40ececabf61b631356..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/callback_lock_cache.ts
+++ /dev/null
@@ -1,114 +0,0 @@
-import { MongoInvalidArgumentError } from '../../../error';
-import type { Connection } from '../../connection';
-import type { MongoCredentials } from '../mongo_credentials';
-import type {
-  IdPServerInfo,
-  IdPServerResponse,
-  OIDCCallbackContext,
-  OIDCRefreshFunction,
-  OIDCRequestFunction
-} from '../mongodb_oidc';
-import { Cache } from './cache';
-
-/** Error message for when request callback is missing. */
-const REQUEST_CALLBACK_REQUIRED_ERROR =
-  'Auth mechanism property REQUEST_TOKEN_CALLBACK is required.';
-/* Counter for function "hashes".*/
-let FN_HASH_COUNTER = 0;
-/* No function present function */
-const NO_FUNCTION: OIDCRequestFunction = async () => ({ accessToken: 'test' });
-/* The map of function hashes */
-const FN_HASHES = new WeakMap<OIDCRequestFunction | OIDCRefreshFunction, number>();
-/* Put the no function hash in the map. */
-FN_HASHES.set(NO_FUNCTION, FN_HASH_COUNTER);
-
-/**
- * An entry of callbacks in the cache.
- */
-interface CallbacksEntry {
-  requestCallback: OIDCRequestFunction;
-  refreshCallback?: OIDCRefreshFunction;
-  callbackHash: string;
-}
-
-/**
- * A cache of request and refresh callbacks per server/user.
- */
-export class CallbackLockCache extends Cache<CallbacksEntry> {
-  /**
-   * Get the callbacks for the connection and credentials. If an entry does not
-   * exist a new one will get set.
-   */
-  getEntry(connection: Connection, credentials: MongoCredentials): CallbacksEntry {
-    const requestCallback = credentials.mechanismProperties.REQUEST_TOKEN_CALLBACK;
-    const refreshCallback = credentials.mechanismProperties.REFRESH_TOKEN_CALLBACK;
-    if (!requestCallback) {
-      throw new MongoInvalidArgumentError(REQUEST_CALLBACK_REQUIRED_ERROR);
-    }
-    const callbackHash = hashFunctions(requestCallback, refreshCallback);
-    const key = this.cacheKey(connection.address, credentials.username, callbackHash);
-    const entry = this.entries.get(key);
-    if (entry) {
-      return entry;
-    }
-    return this.addEntry(key, callbackHash, requestCallback, refreshCallback);
-  }
-
-  /**
-   * Set locked callbacks on for connection and credentials.
-   */
-  private addEntry(
-    key: string,
-    callbackHash: string,
-    requestCallback: OIDCRequestFunction,
-    refreshCallback?: OIDCRefreshFunction
-  ): CallbacksEntry {
-    const entry = {
-      requestCallback: withLock(requestCallback),
-      refreshCallback: refreshCallback ? withLock(refreshCallback) : undefined,
-      callbackHash: callbackHash
-    };
-    this.entries.set(key, entry);
-    return entry;
-  }
-
-  /**
-   * Create a cache key from the address and username.
-   */
-  cacheKey(address: string, username: string, callbackHash: string): string {
-    return this.hashedCacheKey(address, username, callbackHash);
-  }
-}
-
-/**
- * Ensure the callback is only executed one at a time.
- */
-function withLock(callback: OIDCRequestFunction | OIDCRefreshFunction) {
-  let lock: Promise<any> = Promise.resolve();
-  return async (info: IdPServerInfo, context: OIDCCallbackContext): Promise<IdPServerResponse> => {
-    await lock;
-    lock = lock.then(() => callback(info, context));
-    return lock;
-  };
-}
-
-/**
- * Get the hash string for the request and refresh functions.
- */
-function hashFunctions(requestFn: OIDCRequestFunction, refreshFn?: OIDCRefreshFunction): string {
-  let requestHash = FN_HASHES.get(requestFn);
-  let refreshHash = FN_HASHES.get(refreshFn ?? NO_FUNCTION);
-  if (requestHash == null) {
-    // Create a new one for the function and put it in the map.
-    FN_HASH_COUNTER++;
-    requestHash = FN_HASH_COUNTER;
-    FN_HASHES.set(requestFn, FN_HASH_COUNTER);
-  }
-  if (refreshHash == null && refreshFn) {
-    // Create a new one for the function and put it in the map.
-    FN_HASH_COUNTER++;
-    refreshHash = FN_HASH_COUNTER;
-    FN_HASHES.set(refreshFn, FN_HASH_COUNTER);
-  }
-  return `${requestHash}-${refreshHash}`;
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/callback_workflow.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/callback_workflow.ts
deleted file mode 100644
index c220ae5b70cc44e25803dffa5bc8188af5a9cc83..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/callback_workflow.ts
+++ /dev/null
@@ -1,296 +0,0 @@
-import { Binary, BSON, type Document } from 'bson';
-
-import { MONGODB_ERROR_CODES, MongoError, MongoMissingCredentialsError } from '../../../error';
-import { ns } from '../../../utils';
-import type { Connection } from '../../connection';
-import type { MongoCredentials } from '../mongo_credentials';
-import type {
-  IdPServerInfo,
-  IdPServerResponse,
-  OIDCCallbackContext,
-  OIDCRefreshFunction,
-  OIDCRequestFunction,
-  Workflow
-} from '../mongodb_oidc';
-import { AuthMechanism } from '../providers';
-import { CallbackLockCache } from './callback_lock_cache';
-import { TokenEntryCache } from './token_entry_cache';
-
-/** The current version of OIDC implementation. */
-const OIDC_VERSION = 0;
-
-/** 5 minutes in seconds */
-const TIMEOUT_S = 300;
-
-/** Properties allowed on results of callbacks. */
-const RESULT_PROPERTIES = ['accessToken', 'expiresInSeconds', 'refreshToken'];
-
-/** Error message when the callback result is invalid. */
-const CALLBACK_RESULT_ERROR =
-  'User provided OIDC callbacks must return a valid object with an accessToken.';
-
-/**
- * OIDC implementation of a callback based workflow.
- * @internal
- */
-export class CallbackWorkflow implements Workflow {
-  cache: TokenEntryCache;
-  callbackCache: CallbackLockCache;
-
-  /**
-   * Instantiate the workflow
-   */
-  constructor() {
-    this.cache = new TokenEntryCache();
-    this.callbackCache = new CallbackLockCache();
-  }
-
-  /**
-   * Get the document to add for speculative authentication. This also needs
-   * to add a db field from the credentials source.
-   */
-  async speculativeAuth(credentials: MongoCredentials): Promise<Document> {
-    const document = startCommandDocument(credentials);
-    document.db = credentials.source;
-    return { speculativeAuthenticate: document };
-  }
-
-  /**
-   * Execute the OIDC callback workflow.
-   */
-  async execute(
-    connection: Connection,
-    credentials: MongoCredentials,
-    reauthenticating: boolean,
-    response?: Document
-  ): Promise<Document> {
-    // Get the callbacks with locks from the callback lock cache.
-    const { requestCallback, refreshCallback, callbackHash } = this.callbackCache.getEntry(
-      connection,
-      credentials
-    );
-    // Look for an existing entry in the cache.
-    const entry = this.cache.getEntry(connection.address, credentials.username, callbackHash);
-    let result;
-    if (entry) {
-      // Reauthentication cannot use a token from the cache since the server has
-      // stated it is invalid by the request for reauthentication.
-      if (entry.isValid() && !reauthenticating) {
-        // Presence of a valid cache entry means we can skip to the finishing step.
-        result = await this.finishAuthentication(
-          connection,
-          credentials,
-          entry.tokenResult,
-          response?.speculativeAuthenticate?.conversationId
-        );
-      } else {
-        // Presence of an expired cache entry means we must fetch a new one and
-        // then execute the final step.
-        const tokenResult = await this.fetchAccessToken(
-          connection,
-          credentials,
-          entry.serverInfo,
-          reauthenticating,
-          callbackHash,
-          requestCallback,
-          refreshCallback
-        );
-        try {
-          result = await this.finishAuthentication(
-            connection,
-            credentials,
-            tokenResult,
-            reauthenticating ? undefined : response?.speculativeAuthenticate?.conversationId
-          );
-        } catch (error) {
-          // If we are reauthenticating and this errors with reauthentication
-          // required, we need to do the entire process over again and clear
-          // the cache entry.
-          if (
-            reauthenticating &&
-            error instanceof MongoError &&
-            error.code === MONGODB_ERROR_CODES.Reauthenticate
-          ) {
-            this.cache.deleteEntry(connection.address, credentials.username, callbackHash);
-            result = await this.execute(connection, credentials, reauthenticating);
-          } else {
-            throw error;
-          }
-        }
-      }
-    } else {
-      // No entry in the cache requires us to do all authentication steps
-      // from start to finish, including getting a fresh token for the cache.
-      const startDocument = await this.startAuthentication(
-        connection,
-        credentials,
-        reauthenticating,
-        response
-      );
-      const conversationId = startDocument.conversationId;
-      const serverResult = BSON.deserialize(startDocument.payload.buffer) as IdPServerInfo;
-      const tokenResult = await this.fetchAccessToken(
-        connection,
-        credentials,
-        serverResult,
-        reauthenticating,
-        callbackHash,
-        requestCallback,
-        refreshCallback
-      );
-      result = await this.finishAuthentication(
-        connection,
-        credentials,
-        tokenResult,
-        conversationId
-      );
-    }
-    return result;
-  }
-
-  /**
-   * Starts the callback authentication process. If there is a speculative
-   * authentication document from the initial handshake, then we will use that
-   * value to get the issuer, otherwise we will send the saslStart command.
-   */
-  private async startAuthentication(
-    connection: Connection,
-    credentials: MongoCredentials,
-    reauthenticating: boolean,
-    response?: Document
-  ): Promise<Document> {
-    let result;
-    if (!reauthenticating && response?.speculativeAuthenticate) {
-      result = response.speculativeAuthenticate;
-    } else {
-      result = await connection.commandAsync(
-        ns(credentials.source),
-        startCommandDocument(credentials),
-        undefined
-      );
-    }
-    return result;
-  }
-
-  /**
-   * Finishes the callback authentication process.
-   */
-  private async finishAuthentication(
-    connection: Connection,
-    credentials: MongoCredentials,
-    tokenResult: IdPServerResponse,
-    conversationId?: number
-  ): Promise<Document> {
-    const result = await connection.commandAsync(
-      ns(credentials.source),
-      finishCommandDocument(tokenResult.accessToken, conversationId),
-      undefined
-    );
-    return result;
-  }
-
-  /**
-   * Fetches an access token using either the request or refresh callbacks and
-   * puts it in the cache.
-   */
-  private async fetchAccessToken(
-    connection: Connection,
-    credentials: MongoCredentials,
-    serverInfo: IdPServerInfo,
-    reauthenticating: boolean,
-    callbackHash: string,
-    requestCallback: OIDCRequestFunction,
-    refreshCallback?: OIDCRefreshFunction
-  ): Promise<IdPServerResponse> {
-    // Get the token from the cache.
-    const entry = this.cache.getEntry(connection.address, credentials.username, callbackHash);
-    let result;
-    const context: OIDCCallbackContext = { timeoutSeconds: TIMEOUT_S, version: OIDC_VERSION };
-    // Check if there's a token in the cache.
-    if (entry) {
-      // If the cache entry is valid, return the token result.
-      if (entry.isValid() && !reauthenticating) {
-        return entry.tokenResult;
-      }
-      // If the cache entry is not valid, remove it from the cache and first attempt
-      // to use the refresh callback to get a new token. If no refresh callback
-      // exists, then fallback to the request callback.
-      if (refreshCallback) {
-        context.refreshToken = entry.tokenResult.refreshToken;
-        result = await refreshCallback(serverInfo, context);
-      } else {
-        result = await requestCallback(serverInfo, context);
-      }
-    } else {
-      // With no token in the cache we use the request callback.
-      result = await requestCallback(serverInfo, context);
-    }
-    // Validate that the result returned by the callback is acceptable. If it is not
-    // we must clear the token result from the cache.
-    if (isCallbackResultInvalid(result)) {
-      this.cache.deleteEntry(connection.address, credentials.username, callbackHash);
-      throw new MongoMissingCredentialsError(CALLBACK_RESULT_ERROR);
-    }
-    // Cleanup the cache.
-    this.cache.deleteExpiredEntries();
-    // Put the new entry into the cache.
-    this.cache.addEntry(
-      connection.address,
-      credentials.username || '',
-      callbackHash,
-      result,
-      serverInfo
-    );
-    return result;
-  }
-}
-
-/**
- * Generate the finishing command document for authentication. Will be a
- * saslStart or saslContinue depending on the presence of a conversation id.
- */
-function finishCommandDocument(token: string, conversationId?: number): Document {
-  if (conversationId != null && typeof conversationId === 'number') {
-    return {
-      saslContinue: 1,
-      conversationId: conversationId,
-      payload: new Binary(BSON.serialize({ jwt: token }))
-    };
-  }
-  // saslContinue requires a conversationId in the command to be valid so in this
-  // case the server allows "step two" to actually be a saslStart with the token
-  // as the jwt since the use of the cached value has no correlating conversating
-  // on the particular connection.
-  return {
-    saslStart: 1,
-    mechanism: AuthMechanism.MONGODB_OIDC,
-    payload: new Binary(BSON.serialize({ jwt: token }))
-  };
-}
-
-/**
- * Determines if a result returned from a request or refresh callback
- * function is invalid. This means the result is nullish, doesn't contain
- * the accessToken required field, and does not contain extra fields.
- */
-function isCallbackResultInvalid(tokenResult: unknown): boolean {
-  if (tokenResult == null || typeof tokenResult !== 'object') return true;
-  if (!('accessToken' in tokenResult)) return true;
-  return !Object.getOwnPropertyNames(tokenResult).every(prop => RESULT_PROPERTIES.includes(prop));
-}
-
-/**
- * Generate the saslStart command document.
- */
-function startCommandDocument(credentials: MongoCredentials): Document {
-  const payload: Document = {};
-  if (credentials.username) {
-    payload.n = credentials.username;
-  }
-  return {
-    saslStart: 1,
-    autoAuthorize: 1,
-    mechanism: AuthMechanism.MONGODB_OIDC,
-    payload: new Binary(BSON.serialize(payload))
-  };
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/service_workflow.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/service_workflow.ts
deleted file mode 100644
index fb01e2c24ce23d6922ebe9f7807756847754e296..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/service_workflow.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import { BSON, type Document } from 'bson';
-
-import { ns } from '../../../utils';
-import type { Connection } from '../../connection';
-import type { MongoCredentials } from '../mongo_credentials';
-import type { Workflow } from '../mongodb_oidc';
-import { AuthMechanism } from '../providers';
-
-/**
- * Common behaviour for OIDC device workflows.
- * @internal
- */
-export abstract class ServiceWorkflow implements Workflow {
-  /**
-   * Execute the workflow. Looks for AWS_WEB_IDENTITY_TOKEN_FILE in the environment
-   * and then attempts to read the token from that path.
-   */
-  async execute(connection: Connection, credentials: MongoCredentials): Promise<Document> {
-    const token = await this.getToken(credentials);
-    const command = commandDocument(token);
-    return connection.commandAsync(ns(credentials.source), command, undefined);
-  }
-
-  /**
-   * Get the document to add for speculative authentication.
-   */
-  async speculativeAuth(credentials: MongoCredentials): Promise<Document> {
-    const token = await this.getToken(credentials);
-    const document = commandDocument(token);
-    document.db = credentials.source;
-    return { speculativeAuthenticate: document };
-  }
-
-  /**
-   * Get the token from the environment or endpoint.
-   */
-  abstract getToken(credentials: MongoCredentials): Promise<string>;
-}
-
-/**
- * Create the saslStart command document.
- */
-export function commandDocument(token: string): Document {
-  return {
-    saslStart: 1,
-    mechanism: AuthMechanism.MONGODB_OIDC,
-    payload: BSON.serialize({ jwt: token })
-  };
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_entry_cache.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_entry_cache.ts
deleted file mode 100644
index 1b5b9de3314afe200a76f7941bbc305411ecec78..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_entry_cache.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import type { IdPServerInfo, IdPServerResponse } from '../mongodb_oidc';
-import { Cache, ExpiringCacheEntry } from './cache';
-
-/* Default expiration is now for when no expiration provided */
-const DEFAULT_EXPIRATION_SECS = 0;
-
-/** @internal */
-export class TokenEntry extends ExpiringCacheEntry {
-  tokenResult: IdPServerResponse;
-  serverInfo: IdPServerInfo;
-
-  /**
-   * Instantiate the entry.
-   */
-  constructor(tokenResult: IdPServerResponse, serverInfo: IdPServerInfo, expiration: number) {
-    super(expiration);
-    this.tokenResult = tokenResult;
-    this.serverInfo = serverInfo;
-  }
-}
-
-/**
- * Cache of OIDC token entries.
- * @internal
- */
-export class TokenEntryCache extends Cache<TokenEntry> {
-  /**
-   * Set an entry in the token cache.
-   */
-  addEntry(
-    address: string,
-    username: string,
-    callbackHash: string,
-    tokenResult: IdPServerResponse,
-    serverInfo: IdPServerInfo
-  ): TokenEntry {
-    const entry = new TokenEntry(
-      tokenResult,
-      serverInfo,
-      tokenResult.expiresInSeconds ?? DEFAULT_EXPIRATION_SECS
-    );
-    this.entries.set(this.cacheKey(address, username, callbackHash), entry);
-    return entry;
-  }
-
-  /**
-   * Delete an entry from the cache.
-   */
-  deleteEntry(address: string, username: string, callbackHash: string): void {
-    this.entries.delete(this.cacheKey(address, username, callbackHash));
-  }
-
-  /**
-   * Get an entry from the cache.
-   */
-  getEntry(address: string, username: string, callbackHash: string): TokenEntry | undefined {
-    return this.entries.get(this.cacheKey(address, username, callbackHash));
-  }
-
-  /**
-   * Delete all expired entries from the cache.
-   */
-  deleteExpiredEntries(): void {
-    for (const [key, entry] of this.entries) {
-      if (!entry.isValid()) {
-        this.entries.delete(key);
-      }
-    }
-  }
-
-  /**
-   * Create a cache key from the address and username.
-   */
-  cacheKey(address: string, username: string, callbackHash: string): string {
-    return this.hashedCacheKey(address, username, callbackHash);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/plain.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/plain.ts
deleted file mode 100644
index d568c939e9c72712d961532f0ab85c58fdbcb1f3..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/plain.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { Binary } from '../../bson';
-import { MongoMissingCredentialsError } from '../../error';
-import { ns } from '../../utils';
-import { type AuthContext, AuthProvider } from './auth_provider';
-
-export class Plain extends AuthProvider {
-  override async auth(authContext: AuthContext): Promise<void> {
-    const { connection, credentials } = authContext;
-    if (!credentials) {
-      throw new MongoMissingCredentialsError('AuthContext must provide credentials.');
-    }
-
-    const { username, password } = credentials;
-
-    const payload = new Binary(Buffer.from(`\x00${username}\x00${password}`));
-    const command = {
-      saslStart: 1,
-      mechanism: 'PLAIN',
-      payload: payload,
-      autoAuthorize: 1
-    };
-
-    await connection.commandAsync(ns('$external.$cmd'), command, undefined);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/providers.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/providers.ts
deleted file mode 100644
index d01c06324bbb0f12074fb664e3ab1a0c528dbe89..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/providers.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/** @public */
-export const AuthMechanism = Object.freeze({
-  MONGODB_AWS: 'MONGODB-AWS',
-  MONGODB_CR: 'MONGODB-CR',
-  MONGODB_DEFAULT: 'DEFAULT',
-  MONGODB_GSSAPI: 'GSSAPI',
-  MONGODB_PLAIN: 'PLAIN',
-  MONGODB_SCRAM_SHA1: 'SCRAM-SHA-1',
-  MONGODB_SCRAM_SHA256: 'SCRAM-SHA-256',
-  MONGODB_X509: 'MONGODB-X509',
-  /** @experimental */
-  MONGODB_OIDC: 'MONGODB-OIDC'
-} as const);
-
-/** @public */
-export type AuthMechanism = (typeof AuthMechanism)[keyof typeof AuthMechanism];
-
-/** @internal */
-export const AUTH_MECHS_AUTH_SRC_EXTERNAL = new Set<AuthMechanism>([
-  AuthMechanism.MONGODB_GSSAPI,
-  AuthMechanism.MONGODB_AWS,
-  AuthMechanism.MONGODB_OIDC,
-  AuthMechanism.MONGODB_X509
-]);
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/scram.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/scram.ts
deleted file mode 100644
index a2eededa82f875c38454321c0d86ff54a35e08a0..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/scram.ts
+++ /dev/null
@@ -1,346 +0,0 @@
-import { saslprep } from '@mongodb-js/saslprep';
-import * as crypto from 'crypto';
-import { promisify } from 'util';
-
-import { Binary, type Document } from '../../bson';
-import {
-  MongoInvalidArgumentError,
-  MongoMissingCredentialsError,
-  MongoRuntimeError
-} from '../../error';
-import { ns } from '../../utils';
-import type { HandshakeDocument } from '../connect';
-import { type AuthContext, AuthProvider } from './auth_provider';
-import type { MongoCredentials } from './mongo_credentials';
-import { AuthMechanism } from './providers';
-
-type CryptoMethod = 'sha1' | 'sha256';
-
-class ScramSHA extends AuthProvider {
-  cryptoMethod: CryptoMethod;
-  randomBytesAsync: (size: number) => Promise<Buffer>;
-  constructor(cryptoMethod: CryptoMethod) {
-    super();
-    this.cryptoMethod = cryptoMethod || 'sha1';
-    this.randomBytesAsync = promisify(crypto.randomBytes);
-  }
-
-  override async prepare(
-    handshakeDoc: HandshakeDocument,
-    authContext: AuthContext
-  ): Promise<HandshakeDocument> {
-    const cryptoMethod = this.cryptoMethod;
-    const credentials = authContext.credentials;
-    if (!credentials) {
-      throw new MongoMissingCredentialsError('AuthContext must provide credentials.');
-    }
-
-    const nonce = await this.randomBytesAsync(24);
-    // store the nonce for later use
-    authContext.nonce = nonce;
-
-    const request = {
-      ...handshakeDoc,
-      speculativeAuthenticate: {
-        ...makeFirstMessage(cryptoMethod, credentials, nonce),
-        db: credentials.source
-      }
-    };
-
-    return request;
-  }
-
-  override async auth(authContext: AuthContext) {
-    const { reauthenticating, response } = authContext;
-    if (response?.speculativeAuthenticate && !reauthenticating) {
-      return continueScramConversation(
-        this.cryptoMethod,
-        response.speculativeAuthenticate,
-        authContext
-      );
-    }
-    return executeScram(this.cryptoMethod, authContext);
-  }
-}
-
-function cleanUsername(username: string) {
-  return username.replace('=', '=3D').replace(',', '=2C');
-}
-
-function clientFirstMessageBare(username: string, nonce: Buffer) {
-  // NOTE: This is done b/c Javascript uses UTF-16, but the server is hashing in UTF-8.
-  // Since the username is not sasl-prep-d, we need to do this here.
-  return Buffer.concat([
-    Buffer.from('n=', 'utf8'),
-    Buffer.from(username, 'utf8'),
-    Buffer.from(',r=', 'utf8'),
-    Buffer.from(nonce.toString('base64'), 'utf8')
-  ]);
-}
-
-function makeFirstMessage(
-  cryptoMethod: CryptoMethod,
-  credentials: MongoCredentials,
-  nonce: Buffer
-) {
-  const username = cleanUsername(credentials.username);
-  const mechanism =
-    cryptoMethod === 'sha1' ? AuthMechanism.MONGODB_SCRAM_SHA1 : AuthMechanism.MONGODB_SCRAM_SHA256;
-
-  // NOTE: This is done b/c Javascript uses UTF-16, but the server is hashing in UTF-8.
-  // Since the username is not sasl-prep-d, we need to do this here.
-  return {
-    saslStart: 1,
-    mechanism,
-    payload: new Binary(
-      Buffer.concat([Buffer.from('n,,', 'utf8'), clientFirstMessageBare(username, nonce)])
-    ),
-    autoAuthorize: 1,
-    options: { skipEmptyExchange: true }
-  };
-}
-
-async function executeScram(cryptoMethod: CryptoMethod, authContext: AuthContext): Promise<void> {
-  const { connection, credentials } = authContext;
-  if (!credentials) {
-    throw new MongoMissingCredentialsError('AuthContext must provide credentials.');
-  }
-  if (!authContext.nonce) {
-    throw new MongoInvalidArgumentError('AuthContext must contain a valid nonce property');
-  }
-  const nonce = authContext.nonce;
-  const db = credentials.source;
-
-  const saslStartCmd = makeFirstMessage(cryptoMethod, credentials, nonce);
-  const response = await connection.commandAsync(ns(`${db}.$cmd`), saslStartCmd, undefined);
-  await continueScramConversation(cryptoMethod, response, authContext);
-}
-
-async function continueScramConversation(
-  cryptoMethod: CryptoMethod,
-  response: Document,
-  authContext: AuthContext
-): Promise<void> {
-  const connection = authContext.connection;
-  const credentials = authContext.credentials;
-  if (!credentials) {
-    throw new MongoMissingCredentialsError('AuthContext must provide credentials.');
-  }
-  if (!authContext.nonce) {
-    throw new MongoInvalidArgumentError('Unable to continue SCRAM without valid nonce');
-  }
-  const nonce = authContext.nonce;
-
-  const db = credentials.source;
-  const username = cleanUsername(credentials.username);
-  const password = credentials.password;
-
-  const processedPassword =
-    cryptoMethod === 'sha256' ? saslprep(password) : passwordDigest(username, password);
-
-  const payload: Binary = Buffer.isBuffer(response.payload)
-    ? new Binary(response.payload)
-    : response.payload;
-
-  const dict = parsePayload(payload);
-
-  const iterations = parseInt(dict.i, 10);
-  if (iterations && iterations < 4096) {
-    // TODO(NODE-3483)
-    throw new MongoRuntimeError(`Server returned an invalid iteration count ${iterations}`);
-  }
-
-  const salt = dict.s;
-  const rnonce = dict.r;
-  if (rnonce.startsWith('nonce')) {
-    // TODO(NODE-3483)
-    throw new MongoRuntimeError(`Server returned an invalid nonce: ${rnonce}`);
-  }
-
-  // Set up start of proof
-  const withoutProof = `c=biws,r=${rnonce}`;
-  const saltedPassword = HI(
-    processedPassword,
-    Buffer.from(salt, 'base64'),
-    iterations,
-    cryptoMethod
-  );
-
-  const clientKey = HMAC(cryptoMethod, saltedPassword, 'Client Key');
-  const serverKey = HMAC(cryptoMethod, saltedPassword, 'Server Key');
-  const storedKey = H(cryptoMethod, clientKey);
-  const authMessage = [
-    clientFirstMessageBare(username, nonce),
-    payload.toString('utf8'),
-    withoutProof
-  ].join(',');
-
-  const clientSignature = HMAC(cryptoMethod, storedKey, authMessage);
-  const clientProof = `p=${xor(clientKey, clientSignature)}`;
-  const clientFinal = [withoutProof, clientProof].join(',');
-
-  const serverSignature = HMAC(cryptoMethod, serverKey, authMessage);
-  const saslContinueCmd = {
-    saslContinue: 1,
-    conversationId: response.conversationId,
-    payload: new Binary(Buffer.from(clientFinal))
-  };
-
-  const r = await connection.commandAsync(ns(`${db}.$cmd`), saslContinueCmd, undefined);
-  const parsedResponse = parsePayload(r.payload);
-
-  if (!compareDigest(Buffer.from(parsedResponse.v, 'base64'), serverSignature)) {
-    throw new MongoRuntimeError('Server returned an invalid signature');
-  }
-
-  if (r.done !== false) {
-    // If the server sends r.done === true we can save one RTT
-    return;
-  }
-
-  const retrySaslContinueCmd = {
-    saslContinue: 1,
-    conversationId: r.conversationId,
-    payload: Buffer.alloc(0)
-  };
-
-  await connection.commandAsync(ns(`${db}.$cmd`), retrySaslContinueCmd, undefined);
-}
-
-function parsePayload(payload: Binary) {
-  const payloadStr = payload.toString('utf8');
-  const dict: Document = {};
-  const parts = payloadStr.split(',');
-  for (let i = 0; i < parts.length; i++) {
-    const valueParts = parts[i].split('=');
-    dict[valueParts[0]] = valueParts[1];
-  }
-  return dict;
-}
-
-function passwordDigest(username: string, password: string) {
-  if (typeof username !== 'string') {
-    throw new MongoInvalidArgumentError('Username must be a string');
-  }
-
-  if (typeof password !== 'string') {
-    throw new MongoInvalidArgumentError('Password must be a string');
-  }
-
-  if (password.length === 0) {
-    throw new MongoInvalidArgumentError('Password cannot be empty');
-  }
-
-  let md5: crypto.Hash;
-  try {
-    md5 = crypto.createHash('md5');
-  } catch (err) {
-    if (crypto.getFips()) {
-      // This error is (slightly) more helpful than what comes from OpenSSL directly, e.g.
-      // 'Error: error:060800C8:digital envelope routines:EVP_DigestInit_ex:disabled for FIPS'
-      throw new Error('Auth mechanism SCRAM-SHA-1 is not supported in FIPS mode');
-    }
-    throw err;
-  }
-  md5.update(`${username}:mongo:${password}`, 'utf8');
-  return md5.digest('hex');
-}
-
-// XOR two buffers
-function xor(a: Buffer, b: Buffer) {
-  if (!Buffer.isBuffer(a)) {
-    a = Buffer.from(a);
-  }
-
-  if (!Buffer.isBuffer(b)) {
-    b = Buffer.from(b);
-  }
-
-  const length = Math.max(a.length, b.length);
-  const res = [];
-
-  for (let i = 0; i < length; i += 1) {
-    res.push(a[i] ^ b[i]);
-  }
-
-  return Buffer.from(res).toString('base64');
-}
-
-function H(method: CryptoMethod, text: Buffer) {
-  return crypto.createHash(method).update(text).digest();
-}
-
-function HMAC(method: CryptoMethod, key: Buffer, text: Buffer | string) {
-  return crypto.createHmac(method, key).update(text).digest();
-}
-
-interface HICache {
-  [key: string]: Buffer;
-}
-
-let _hiCache: HICache = {};
-let _hiCacheCount = 0;
-function _hiCachePurge() {
-  _hiCache = {};
-  _hiCacheCount = 0;
-}
-
-const hiLengthMap = {
-  sha256: 32,
-  sha1: 20
-};
-
-function HI(data: string, salt: Buffer, iterations: number, cryptoMethod: CryptoMethod) {
-  // omit the work if already generated
-  const key = [data, salt.toString('base64'), iterations].join('_');
-  if (_hiCache[key] != null) {
-    return _hiCache[key];
-  }
-
-  // generate the salt
-  const saltedData = crypto.pbkdf2Sync(
-    data,
-    salt,
-    iterations,
-    hiLengthMap[cryptoMethod],
-    cryptoMethod
-  );
-
-  // cache a copy to speed up the next lookup, but prevent unbounded cache growth
-  if (_hiCacheCount >= 200) {
-    _hiCachePurge();
-  }
-
-  _hiCache[key] = saltedData;
-  _hiCacheCount += 1;
-  return saltedData;
-}
-
-function compareDigest(lhs: Buffer, rhs: Uint8Array) {
-  if (lhs.length !== rhs.length) {
-    return false;
-  }
-
-  if (typeof crypto.timingSafeEqual === 'function') {
-    return crypto.timingSafeEqual(lhs, rhs);
-  }
-
-  let result = 0;
-  for (let i = 0; i < lhs.length; i++) {
-    result |= lhs[i] ^ rhs[i];
-  }
-
-  return result === 0;
-}
-
-export class ScramSHA1 extends ScramSHA {
-  constructor() {
-    super('sha1');
-  }
-}
-
-export class ScramSHA256 extends ScramSHA {
-  constructor() {
-    super('sha256');
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/auth/x509.ts b/server/data-import/node_modules/mongodb/src/cmap/auth/x509.ts
deleted file mode 100644
index 793f28796bdf74cf3ef971c62e146a11fd16230a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/auth/x509.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import type { Document } from '../../bson';
-import { MongoMissingCredentialsError } from '../../error';
-import { ns } from '../../utils';
-import type { HandshakeDocument } from '../connect';
-import { type AuthContext, AuthProvider } from './auth_provider';
-import type { MongoCredentials } from './mongo_credentials';
-
-export class X509 extends AuthProvider {
-  override async prepare(
-    handshakeDoc: HandshakeDocument,
-    authContext: AuthContext
-  ): Promise<HandshakeDocument> {
-    const { credentials } = authContext;
-    if (!credentials) {
-      throw new MongoMissingCredentialsError('AuthContext must provide credentials.');
-    }
-    return { ...handshakeDoc, speculativeAuthenticate: x509AuthenticateCommand(credentials) };
-  }
-
-  override async auth(authContext: AuthContext) {
-    const connection = authContext.connection;
-    const credentials = authContext.credentials;
-    if (!credentials) {
-      throw new MongoMissingCredentialsError('AuthContext must provide credentials.');
-    }
-    const response = authContext.response;
-
-    if (response?.speculativeAuthenticate) {
-      return;
-    }
-
-    await connection.commandAsync(
-      ns('$external.$cmd'),
-      x509AuthenticateCommand(credentials),
-      undefined
-    );
-  }
-}
-
-function x509AuthenticateCommand(credentials: MongoCredentials) {
-  const command: Document = { authenticate: 1, mechanism: 'MONGODB-X509' };
-  if (credentials.username) {
-    command.user = credentials.username;
-  }
-
-  return command;
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/command_monitoring_events.ts b/server/data-import/node_modules/mongodb/src/cmap/command_monitoring_events.ts
deleted file mode 100644
index b08ce723ebcdad801461f2f631e60c29a08a0bda..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/command_monitoring_events.ts
+++ /dev/null
@@ -1,315 +0,0 @@
-import type { Document, ObjectId } from '../bson';
-import {
-  COMMAND_FAILED,
-  COMMAND_STARTED,
-  COMMAND_SUCCEEDED,
-  LEGACY_HELLO_COMMAND,
-  LEGACY_HELLO_COMMAND_CAMEL_CASE
-} from '../constants';
-import { calculateDurationInMs, deepCopy } from '../utils';
-import { OpMsgRequest, type OpQueryRequest, type WriteProtocolMessageType } from './commands';
-import type { Connection } from './connection';
-
-/**
- * An event indicating the start of a given command
- * @public
- * @category Event
- */
-export class CommandStartedEvent {
-  commandObj?: Document;
-  requestId: number;
-  databaseName: string;
-  commandName: string;
-  command: Document;
-  address: string;
-  connectionId?: string | number;
-  serviceId?: ObjectId;
-  /** @internal */
-  name = COMMAND_STARTED;
-
-  /**
-   * Create a started event
-   *
-   * @internal
-   * @param pool - the pool that originated the command
-   * @param command - the command
-   */
-  constructor(connection: Connection, command: WriteProtocolMessageType) {
-    const cmd = extractCommand(command);
-    const commandName = extractCommandName(cmd);
-    const { address, connectionId, serviceId } = extractConnectionDetails(connection);
-
-    // TODO: remove in major revision, this is not spec behavior
-    if (SENSITIVE_COMMANDS.has(commandName)) {
-      this.commandObj = {};
-      this.commandObj[commandName] = true;
-    }
-
-    this.address = address;
-    this.connectionId = connectionId;
-    this.serviceId = serviceId;
-    this.requestId = command.requestId;
-    this.databaseName = command.databaseName;
-    this.commandName = commandName;
-    this.command = maybeRedact(commandName, cmd, cmd);
-  }
-
-  /* @internal */
-  get hasServiceId(): boolean {
-    return !!this.serviceId;
-  }
-}
-
-/**
- * An event indicating the success of a given command
- * @public
- * @category Event
- */
-export class CommandSucceededEvent {
-  address: string;
-  connectionId?: string | number;
-  requestId: number;
-  duration: number;
-  commandName: string;
-  reply: unknown;
-  serviceId?: ObjectId;
-  /** @internal */
-  name = COMMAND_SUCCEEDED;
-
-  /**
-   * Create a succeeded event
-   *
-   * @internal
-   * @param pool - the pool that originated the command
-   * @param command - the command
-   * @param reply - the reply for this command from the server
-   * @param started - a high resolution tuple timestamp of when the command was first sent, to calculate duration
-   */
-  constructor(
-    connection: Connection,
-    command: WriteProtocolMessageType,
-    reply: Document | undefined,
-    started: number
-  ) {
-    const cmd = extractCommand(command);
-    const commandName = extractCommandName(cmd);
-    const { address, connectionId, serviceId } = extractConnectionDetails(connection);
-
-    this.address = address;
-    this.connectionId = connectionId;
-    this.serviceId = serviceId;
-    this.requestId = command.requestId;
-    this.commandName = commandName;
-    this.duration = calculateDurationInMs(started);
-    this.reply = maybeRedact(commandName, cmd, extractReply(command, reply));
-  }
-
-  /* @internal */
-  get hasServiceId(): boolean {
-    return !!this.serviceId;
-  }
-}
-
-/**
- * An event indicating the failure of a given command
- * @public
- * @category Event
- */
-export class CommandFailedEvent {
-  address: string;
-  connectionId?: string | number;
-  requestId: number;
-  duration: number;
-  commandName: string;
-  failure: Error;
-  serviceId?: ObjectId;
-  /** @internal */
-  name = COMMAND_FAILED;
-
-  /**
-   * Create a failure event
-   *
-   * @internal
-   * @param pool - the pool that originated the command
-   * @param command - the command
-   * @param error - the generated error or a server error response
-   * @param started - a high resolution tuple timestamp of when the command was first sent, to calculate duration
-   */
-  constructor(
-    connection: Connection,
-    command: WriteProtocolMessageType,
-    error: Error | Document,
-    started: number
-  ) {
-    const cmd = extractCommand(command);
-    const commandName = extractCommandName(cmd);
-    const { address, connectionId, serviceId } = extractConnectionDetails(connection);
-
-    this.address = address;
-    this.connectionId = connectionId;
-    this.serviceId = serviceId;
-
-    this.requestId = command.requestId;
-    this.commandName = commandName;
-    this.duration = calculateDurationInMs(started);
-    this.failure = maybeRedact(commandName, cmd, error) as Error;
-  }
-
-  /* @internal */
-  get hasServiceId(): boolean {
-    return !!this.serviceId;
-  }
-}
-
-/**
- * Commands that we want to redact because of the sensitive nature of their contents
- * @internal
- */
-export const SENSITIVE_COMMANDS = new Set([
-  'authenticate',
-  'saslStart',
-  'saslContinue',
-  'getnonce',
-  'createUser',
-  'updateUser',
-  'copydbgetnonce',
-  'copydbsaslstart',
-  'copydb'
-]);
-
-const HELLO_COMMANDS = new Set(['hello', LEGACY_HELLO_COMMAND, LEGACY_HELLO_COMMAND_CAMEL_CASE]);
-
-// helper methods
-const extractCommandName = (commandDoc: Document) => Object.keys(commandDoc)[0];
-const namespace = (command: OpQueryRequest) => command.ns;
-const collectionName = (command: OpQueryRequest) => command.ns.split('.')[1];
-const maybeRedact = (commandName: string, commandDoc: Document, result: Error | Document) =>
-  SENSITIVE_COMMANDS.has(commandName) ||
-  (HELLO_COMMANDS.has(commandName) && commandDoc.speculativeAuthenticate)
-    ? {}
-    : result;
-
-const LEGACY_FIND_QUERY_MAP: { [key: string]: string } = {
-  $query: 'filter',
-  $orderby: 'sort',
-  $hint: 'hint',
-  $comment: 'comment',
-  $maxScan: 'maxScan',
-  $max: 'max',
-  $min: 'min',
-  $returnKey: 'returnKey',
-  $showDiskLoc: 'showRecordId',
-  $maxTimeMS: 'maxTimeMS',
-  $snapshot: 'snapshot'
-};
-
-const LEGACY_FIND_OPTIONS_MAP = {
-  numberToSkip: 'skip',
-  numberToReturn: 'batchSize',
-  returnFieldSelector: 'projection'
-} as const;
-
-const OP_QUERY_KEYS = [
-  'tailable',
-  'oplogReplay',
-  'noCursorTimeout',
-  'awaitData',
-  'partial',
-  'exhaust'
-] as const;
-
-/** Extract the actual command from the query, possibly up-converting if it's a legacy format */
-function extractCommand(command: WriteProtocolMessageType): Document {
-  if (command instanceof OpMsgRequest) {
-    return deepCopy(command.command);
-  }
-
-  if (command.query?.$query) {
-    let result: Document;
-    if (command.ns === 'admin.$cmd') {
-      // up-convert legacy command
-      result = Object.assign({}, command.query.$query);
-    } else {
-      // up-convert legacy find command
-      result = { find: collectionName(command) };
-      Object.keys(LEGACY_FIND_QUERY_MAP).forEach(key => {
-        if (command.query[key] != null) {
-          result[LEGACY_FIND_QUERY_MAP[key]] = deepCopy(command.query[key]);
-        }
-      });
-    }
-
-    Object.keys(LEGACY_FIND_OPTIONS_MAP).forEach(key => {
-      const legacyKey = key as keyof typeof LEGACY_FIND_OPTIONS_MAP;
-      if (command[legacyKey] != null) {
-        result[LEGACY_FIND_OPTIONS_MAP[legacyKey]] = deepCopy(command[legacyKey]);
-      }
-    });
-
-    OP_QUERY_KEYS.forEach(key => {
-      if (command[key]) {
-        result[key] = command[key];
-      }
-    });
-
-    if (command.pre32Limit != null) {
-      result.limit = command.pre32Limit;
-    }
-
-    if (command.query.$explain) {
-      return { explain: result };
-    }
-    return result;
-  }
-
-  const clonedQuery: Record<string, unknown> = {};
-  const clonedCommand: Record<string, unknown> = {};
-  if (command.query) {
-    for (const k in command.query) {
-      clonedQuery[k] = deepCopy(command.query[k]);
-    }
-    clonedCommand.query = clonedQuery;
-  }
-
-  for (const k in command) {
-    if (k === 'query') continue;
-    clonedCommand[k] = deepCopy((command as unknown as Record<string, unknown>)[k]);
-  }
-  return command.query ? clonedQuery : clonedCommand;
-}
-
-function extractReply(command: WriteProtocolMessageType, reply?: Document) {
-  if (!reply) {
-    return reply;
-  }
-
-  if (command instanceof OpMsgRequest) {
-    return deepCopy(reply.result ? reply.result : reply);
-  }
-
-  // is this a legacy find command?
-  if (command.query && command.query.$query != null) {
-    return {
-      ok: 1,
-      cursor: {
-        id: deepCopy(reply.cursorId),
-        ns: namespace(command),
-        firstBatch: deepCopy(reply.documents)
-      }
-    };
-  }
-
-  return deepCopy(reply.result ? reply.result : reply);
-}
-
-function extractConnectionDetails(connection: Connection) {
-  let connectionId;
-  if ('id' in connection) {
-    connectionId = connection.id;
-  }
-  return {
-    address: connection.address,
-    serviceId: connection.serviceId,
-    connectionId
-  };
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/commands.ts b/server/data-import/node_modules/mongodb/src/cmap/commands.ts
deleted file mode 100644
index ee1e7b6a7f044618324147f4c695e738f74c8017..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/commands.ts
+++ /dev/null
@@ -1,768 +0,0 @@
-import type { BSONSerializeOptions, Document, Long } from '../bson';
-import * as BSON from '../bson';
-import { MongoInvalidArgumentError, MongoRuntimeError } from '../error';
-import { ReadPreference } from '../read_preference';
-import type { ClientSession } from '../sessions';
-import type { CommandOptions } from './connection';
-import {
-  compress,
-  Compressor,
-  type CompressorName,
-  uncompressibleCommands
-} from './wire_protocol/compression';
-import { OP_COMPRESSED, OP_MSG, OP_QUERY } from './wire_protocol/constants';
-
-// Incrementing request id
-let _requestId = 0;
-
-// Query flags
-const OPTS_TAILABLE_CURSOR = 2;
-const OPTS_SECONDARY = 4;
-const OPTS_OPLOG_REPLAY = 8;
-const OPTS_NO_CURSOR_TIMEOUT = 16;
-const OPTS_AWAIT_DATA = 32;
-const OPTS_EXHAUST = 64;
-const OPTS_PARTIAL = 128;
-
-// Response flags
-const CURSOR_NOT_FOUND = 1;
-const QUERY_FAILURE = 2;
-const SHARD_CONFIG_STALE = 4;
-const AWAIT_CAPABLE = 8;
-
-/** @internal */
-export type WriteProtocolMessageType = OpQueryRequest | OpMsgRequest;
-
-/** @internal */
-export interface OpQueryOptions extends CommandOptions {
-  socketTimeoutMS?: number;
-  session?: ClientSession;
-  documentsReturnedIn?: string;
-  numberToSkip?: number;
-  numberToReturn?: number;
-  returnFieldSelector?: Document;
-  pre32Limit?: number;
-  serializeFunctions?: boolean;
-  ignoreUndefined?: boolean;
-  maxBsonSize?: number;
-  checkKeys?: boolean;
-  secondaryOk?: boolean;
-
-  requestId?: number;
-  moreToCome?: boolean;
-  exhaustAllowed?: boolean;
-  readPreference?: ReadPreference;
-}
-
-/**************************************************************
- * QUERY
- **************************************************************/
-/** @internal */
-export class OpQueryRequest {
-  ns: string;
-  numberToSkip: number;
-  numberToReturn: number;
-  returnFieldSelector?: Document;
-  requestId: number;
-  pre32Limit?: number;
-  serializeFunctions: boolean;
-  ignoreUndefined: boolean;
-  maxBsonSize: number;
-  checkKeys: boolean;
-  batchSize: number;
-  tailable: boolean;
-  secondaryOk: boolean;
-  oplogReplay: boolean;
-  noCursorTimeout: boolean;
-  awaitData: boolean;
-  exhaust: boolean;
-  partial: boolean;
-  documentsReturnedIn?: string;
-
-  constructor(public databaseName: string, public query: Document, options: OpQueryOptions) {
-    // Basic options needed to be passed in
-    // TODO(NODE-3483): Replace with MongoCommandError
-    const ns = `${databaseName}.$cmd`;
-    if (typeof databaseName !== 'string') {
-      throw new MongoRuntimeError('Database name must be a string for a query');
-    }
-    // TODO(NODE-3483): Replace with MongoCommandError
-    if (query == null) throw new MongoRuntimeError('A query document must be specified for query');
-
-    // Validate that we are not passing 0x00 in the collection name
-    if (ns.indexOf('\x00') !== -1) {
-      // TODO(NODE-3483): Use MongoNamespace static method
-      throw new MongoRuntimeError('Namespace cannot contain a null character');
-    }
-
-    // Basic options
-    this.ns = ns;
-
-    // Additional options
-    this.numberToSkip = options.numberToSkip || 0;
-    this.numberToReturn = options.numberToReturn || 0;
-    this.returnFieldSelector = options.returnFieldSelector || undefined;
-    this.requestId = options.requestId ?? OpQueryRequest.getRequestId();
-
-    // special case for pre-3.2 find commands, delete ASAP
-    this.pre32Limit = options.pre32Limit;
-
-    // Serialization option
-    this.serializeFunctions =
-      typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    this.ignoreUndefined =
-      typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : false;
-    this.maxBsonSize = options.maxBsonSize || 1024 * 1024 * 16;
-    this.checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-    this.batchSize = this.numberToReturn;
-
-    // Flags
-    this.tailable = false;
-    this.secondaryOk = typeof options.secondaryOk === 'boolean' ? options.secondaryOk : false;
-    this.oplogReplay = false;
-    this.noCursorTimeout = false;
-    this.awaitData = false;
-    this.exhaust = false;
-    this.partial = false;
-  }
-
-  /** Assign next request Id. */
-  incRequestId(): void {
-    this.requestId = _requestId++;
-  }
-
-  /** Peek next request Id. */
-  nextRequestId(): number {
-    return _requestId + 1;
-  }
-
-  /** Increment then return next request Id. */
-  static getRequestId(): number {
-    return ++_requestId;
-  }
-
-  // Uses a single allocated buffer for the process, avoiding multiple memory allocations
-  toBin(): Uint8Array[] {
-    const buffers = [];
-    let projection = null;
-
-    // Set up the flags
-    let flags = 0;
-    if (this.tailable) {
-      flags |= OPTS_TAILABLE_CURSOR;
-    }
-
-    if (this.secondaryOk) {
-      flags |= OPTS_SECONDARY;
-    }
-
-    if (this.oplogReplay) {
-      flags |= OPTS_OPLOG_REPLAY;
-    }
-
-    if (this.noCursorTimeout) {
-      flags |= OPTS_NO_CURSOR_TIMEOUT;
-    }
-
-    if (this.awaitData) {
-      flags |= OPTS_AWAIT_DATA;
-    }
-
-    if (this.exhaust) {
-      flags |= OPTS_EXHAUST;
-    }
-
-    if (this.partial) {
-      flags |= OPTS_PARTIAL;
-    }
-
-    // If batchSize is different to this.numberToReturn
-    if (this.batchSize !== this.numberToReturn) this.numberToReturn = this.batchSize;
-
-    // Allocate write protocol header buffer
-    const header = Buffer.alloc(
-      4 * 4 + // Header
-        4 + // Flags
-        Buffer.byteLength(this.ns) +
-        1 + // namespace
-        4 + // numberToSkip
-        4 // numberToReturn
-    );
-
-    // Add header to buffers
-    buffers.push(header);
-
-    // Serialize the query
-    const query = BSON.serialize(this.query, {
-      checkKeys: this.checkKeys,
-      serializeFunctions: this.serializeFunctions,
-      ignoreUndefined: this.ignoreUndefined
-    });
-
-    // Add query document
-    buffers.push(query);
-
-    if (this.returnFieldSelector && Object.keys(this.returnFieldSelector).length > 0) {
-      // Serialize the projection document
-      projection = BSON.serialize(this.returnFieldSelector, {
-        checkKeys: this.checkKeys,
-        serializeFunctions: this.serializeFunctions,
-        ignoreUndefined: this.ignoreUndefined
-      });
-      // Add projection document
-      buffers.push(projection);
-    }
-
-    // Total message size
-    const totalLength = header.length + query.length + (projection ? projection.length : 0);
-
-    // Set up the index
-    let index = 4;
-
-    // Write total document length
-    header[3] = (totalLength >> 24) & 0xff;
-    header[2] = (totalLength >> 16) & 0xff;
-    header[1] = (totalLength >> 8) & 0xff;
-    header[0] = totalLength & 0xff;
-
-    // Write header information requestId
-    header[index + 3] = (this.requestId >> 24) & 0xff;
-    header[index + 2] = (this.requestId >> 16) & 0xff;
-    header[index + 1] = (this.requestId >> 8) & 0xff;
-    header[index] = this.requestId & 0xff;
-    index = index + 4;
-
-    // Write header information responseTo
-    header[index + 3] = (0 >> 24) & 0xff;
-    header[index + 2] = (0 >> 16) & 0xff;
-    header[index + 1] = (0 >> 8) & 0xff;
-    header[index] = 0 & 0xff;
-    index = index + 4;
-
-    // Write header information OP_QUERY
-    header[index + 3] = (OP_QUERY >> 24) & 0xff;
-    header[index + 2] = (OP_QUERY >> 16) & 0xff;
-    header[index + 1] = (OP_QUERY >> 8) & 0xff;
-    header[index] = OP_QUERY & 0xff;
-    index = index + 4;
-
-    // Write header information flags
-    header[index + 3] = (flags >> 24) & 0xff;
-    header[index + 2] = (flags >> 16) & 0xff;
-    header[index + 1] = (flags >> 8) & 0xff;
-    header[index] = flags & 0xff;
-    index = index + 4;
-
-    // Write collection name
-    index = index + header.write(this.ns, index, 'utf8') + 1;
-    header[index - 1] = 0;
-
-    // Write header information flags numberToSkip
-    header[index + 3] = (this.numberToSkip >> 24) & 0xff;
-    header[index + 2] = (this.numberToSkip >> 16) & 0xff;
-    header[index + 1] = (this.numberToSkip >> 8) & 0xff;
-    header[index] = this.numberToSkip & 0xff;
-    index = index + 4;
-
-    // Write header information flags numberToReturn
-    header[index + 3] = (this.numberToReturn >> 24) & 0xff;
-    header[index + 2] = (this.numberToReturn >> 16) & 0xff;
-    header[index + 1] = (this.numberToReturn >> 8) & 0xff;
-    header[index] = this.numberToReturn & 0xff;
-    index = index + 4;
-
-    // Return the buffers
-    return buffers;
-  }
-}
-
-/** @internal */
-export interface MessageHeader {
-  length: number;
-  requestId: number;
-  responseTo: number;
-  opCode: number;
-  fromCompressed?: boolean;
-}
-
-/** @internal */
-export interface OpResponseOptions extends BSONSerializeOptions {
-  documentsReturnedIn?: string | null;
-}
-
-/** @internal */
-export class OpQueryResponse {
-  parsed: boolean;
-  raw: Buffer;
-  data: Buffer;
-  opts: OpResponseOptions;
-  length: number;
-  requestId: number;
-  responseTo: number;
-  opCode: number;
-  fromCompressed?: boolean;
-  responseFlags?: number;
-  cursorId?: Long;
-  startingFrom?: number;
-  numberReturned?: number;
-  documents: (Document | Buffer)[] = new Array(0);
-  cursorNotFound?: boolean;
-  queryFailure?: boolean;
-  shardConfigStale?: boolean;
-  awaitCapable?: boolean;
-  useBigInt64: boolean;
-  promoteLongs: boolean;
-  promoteValues: boolean;
-  promoteBuffers: boolean;
-  bsonRegExp?: boolean;
-  index?: number;
-
-  constructor(
-    message: Buffer,
-    msgHeader: MessageHeader,
-    msgBody: Buffer,
-    opts?: OpResponseOptions
-  ) {
-    this.parsed = false;
-    this.raw = message;
-    this.data = msgBody;
-    this.opts = opts ?? {
-      useBigInt64: false,
-      promoteLongs: true,
-      promoteValues: true,
-      promoteBuffers: false,
-      bsonRegExp: false
-    };
-
-    // Read the message header
-    this.length = msgHeader.length;
-    this.requestId = msgHeader.requestId;
-    this.responseTo = msgHeader.responseTo;
-    this.opCode = msgHeader.opCode;
-    this.fromCompressed = msgHeader.fromCompressed;
-
-    // Flag values
-    this.useBigInt64 = typeof this.opts.useBigInt64 === 'boolean' ? this.opts.useBigInt64 : false;
-    this.promoteLongs = typeof this.opts.promoteLongs === 'boolean' ? this.opts.promoteLongs : true;
-    this.promoteValues =
-      typeof this.opts.promoteValues === 'boolean' ? this.opts.promoteValues : true;
-    this.promoteBuffers =
-      typeof this.opts.promoteBuffers === 'boolean' ? this.opts.promoteBuffers : false;
-    this.bsonRegExp = typeof this.opts.bsonRegExp === 'boolean' ? this.opts.bsonRegExp : false;
-  }
-
-  isParsed(): boolean {
-    return this.parsed;
-  }
-
-  parse(options: OpResponseOptions): void {
-    // Don't parse again if not needed
-    if (this.parsed) return;
-    options = options ?? {};
-
-    // Allow the return of raw documents instead of parsing
-    const raw = options.raw || false;
-    const documentsReturnedIn = options.documentsReturnedIn || null;
-    const useBigInt64 = options.useBigInt64 ?? this.opts.useBigInt64;
-    const promoteLongs = options.promoteLongs ?? this.opts.promoteLongs;
-    const promoteValues = options.promoteValues ?? this.opts.promoteValues;
-    const promoteBuffers = options.promoteBuffers ?? this.opts.promoteBuffers;
-    const bsonRegExp = options.bsonRegExp ?? this.opts.bsonRegExp;
-    let bsonSize;
-
-    // Set up the options
-    const _options: BSONSerializeOptions = {
-      useBigInt64,
-      promoteLongs,
-      promoteValues,
-      promoteBuffers,
-      bsonRegExp
-    };
-
-    // Position within OP_REPLY at which documents start
-    // (See https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/#wire-op-reply)
-    this.index = 20;
-
-    // Read the message body
-    this.responseFlags = this.data.readInt32LE(0);
-    this.cursorId = new BSON.Long(this.data.readInt32LE(4), this.data.readInt32LE(8));
-    this.startingFrom = this.data.readInt32LE(12);
-    this.numberReturned = this.data.readInt32LE(16);
-
-    // Preallocate document array
-    this.documents = new Array(this.numberReturned);
-
-    this.cursorNotFound = (this.responseFlags & CURSOR_NOT_FOUND) !== 0;
-    this.queryFailure = (this.responseFlags & QUERY_FAILURE) !== 0;
-    this.shardConfigStale = (this.responseFlags & SHARD_CONFIG_STALE) !== 0;
-    this.awaitCapable = (this.responseFlags & AWAIT_CAPABLE) !== 0;
-
-    // Parse Body
-    for (let i = 0; i < this.numberReturned; i++) {
-      bsonSize =
-        this.data[this.index] |
-        (this.data[this.index + 1] << 8) |
-        (this.data[this.index + 2] << 16) |
-        (this.data[this.index + 3] << 24);
-
-      // If we have raw results specified slice the return document
-      if (raw) {
-        this.documents[i] = this.data.slice(this.index, this.index + bsonSize);
-      } else {
-        this.documents[i] = BSON.deserialize(
-          this.data.slice(this.index, this.index + bsonSize),
-          _options
-        );
-      }
-
-      // Adjust the index
-      this.index = this.index + bsonSize;
-    }
-
-    if (this.documents.length === 1 && documentsReturnedIn != null && raw) {
-      const fieldsAsRaw: Document = {};
-      fieldsAsRaw[documentsReturnedIn] = true;
-      _options.fieldsAsRaw = fieldsAsRaw;
-
-      const doc = BSON.deserialize(this.documents[0] as Buffer, _options);
-      this.documents = [doc];
-    }
-
-    // Set parsed
-    this.parsed = true;
-  }
-}
-
-// Implementation of OP_MSG spec:
-// https://github.com/mongodb/specifications/blob/master/source/message/OP_MSG.rst
-//
-// struct Section {
-//   uint8 payloadType;
-//   union payload {
-//       document  document; // payloadType == 0
-//       struct sequence { // payloadType == 1
-//           int32      size;
-//           cstring    identifier;
-//           document*  documents;
-//       };
-//   };
-// };
-
-// struct OP_MSG {
-//   struct MsgHeader {
-//       int32  messageLength;
-//       int32  requestID;
-//       int32  responseTo;
-//       int32  opCode = 2013;
-//   };
-//   uint32      flagBits;
-//   Section+    sections;
-//   [uint32     checksum;]
-// };
-
-// Msg Flags
-const OPTS_CHECKSUM_PRESENT = 1;
-const OPTS_MORE_TO_COME = 2;
-const OPTS_EXHAUST_ALLOWED = 1 << 16;
-
-/** @internal */
-export interface OpMsgOptions {
-  requestId: number;
-  serializeFunctions: boolean;
-  ignoreUndefined: boolean;
-  checkKeys: boolean;
-  maxBsonSize: number;
-  moreToCome: boolean;
-  exhaustAllowed: boolean;
-  readPreference: ReadPreference;
-}
-
-/** @internal */
-export class OpMsgRequest {
-  requestId: number;
-  serializeFunctions: boolean;
-  ignoreUndefined: boolean;
-  checkKeys: boolean;
-  maxBsonSize: number;
-  checksumPresent: boolean;
-  moreToCome: boolean;
-  exhaustAllowed: boolean;
-
-  constructor(
-    public databaseName: string,
-    public command: Document,
-    public options: OpQueryOptions
-  ) {
-    // Basic options needed to be passed in
-    if (command == null)
-      throw new MongoInvalidArgumentError('Query document must be specified for query');
-
-    // Basic options
-    this.command.$db = databaseName;
-
-    if (options.readPreference && options.readPreference.mode !== ReadPreference.PRIMARY) {
-      this.command.$readPreference = options.readPreference.toJSON();
-    }
-
-    // Ensure empty options
-    this.options = options ?? {};
-
-    // Additional options
-    this.requestId = options.requestId ? options.requestId : OpMsgRequest.getRequestId();
-
-    // Serialization option
-    this.serializeFunctions =
-      typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
-    this.ignoreUndefined =
-      typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : false;
-    this.checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
-    this.maxBsonSize = options.maxBsonSize || 1024 * 1024 * 16;
-
-    // flags
-    this.checksumPresent = false;
-    this.moreToCome = options.moreToCome || false;
-    this.exhaustAllowed =
-      typeof options.exhaustAllowed === 'boolean' ? options.exhaustAllowed : false;
-  }
-
-  toBin(): Buffer[] {
-    const buffers: Buffer[] = [];
-    let flags = 0;
-
-    if (this.checksumPresent) {
-      flags |= OPTS_CHECKSUM_PRESENT;
-    }
-
-    if (this.moreToCome) {
-      flags |= OPTS_MORE_TO_COME;
-    }
-
-    if (this.exhaustAllowed) {
-      flags |= OPTS_EXHAUST_ALLOWED;
-    }
-
-    const header = Buffer.alloc(
-      4 * 4 + // Header
-        4 // Flags
-    );
-
-    buffers.push(header);
-
-    let totalLength = header.length;
-    const command = this.command;
-    totalLength += this.makeDocumentSegment(buffers, command);
-
-    header.writeInt32LE(totalLength, 0); // messageLength
-    header.writeInt32LE(this.requestId, 4); // requestID
-    header.writeInt32LE(0, 8); // responseTo
-    header.writeInt32LE(OP_MSG, 12); // opCode
-    header.writeUInt32LE(flags, 16); // flags
-    return buffers;
-  }
-
-  makeDocumentSegment(buffers: Uint8Array[], document: Document): number {
-    const payloadTypeBuffer = Buffer.alloc(1);
-    payloadTypeBuffer[0] = 0;
-
-    const documentBuffer = this.serializeBson(document);
-    buffers.push(payloadTypeBuffer);
-    buffers.push(documentBuffer);
-
-    return payloadTypeBuffer.length + documentBuffer.length;
-  }
-
-  serializeBson(document: Document): Uint8Array {
-    return BSON.serialize(document, {
-      checkKeys: this.checkKeys,
-      serializeFunctions: this.serializeFunctions,
-      ignoreUndefined: this.ignoreUndefined
-    });
-  }
-
-  static getRequestId(): number {
-    _requestId = (_requestId + 1) & 0x7fffffff;
-    return _requestId;
-  }
-}
-
-/** @internal */
-export class OpMsgResponse {
-  parsed: boolean;
-  raw: Buffer;
-  data: Buffer;
-  opts: OpResponseOptions;
-  length: number;
-  requestId: number;
-  responseTo: number;
-  opCode: number;
-  fromCompressed?: boolean;
-  responseFlags: number;
-  checksumPresent: boolean;
-  moreToCome: boolean;
-  exhaustAllowed: boolean;
-  useBigInt64: boolean;
-  promoteLongs: boolean;
-  promoteValues: boolean;
-  promoteBuffers: boolean;
-  bsonRegExp: boolean;
-  documents: (Document | Buffer)[];
-  index?: number;
-
-  constructor(
-    message: Buffer,
-    msgHeader: MessageHeader,
-    msgBody: Buffer,
-    opts?: OpResponseOptions
-  ) {
-    this.parsed = false;
-    this.raw = message;
-    this.data = msgBody;
-    this.opts = opts ?? {
-      useBigInt64: false,
-      promoteLongs: true,
-      promoteValues: true,
-      promoteBuffers: false,
-      bsonRegExp: false
-    };
-
-    // Read the message header
-    this.length = msgHeader.length;
-    this.requestId = msgHeader.requestId;
-    this.responseTo = msgHeader.responseTo;
-    this.opCode = msgHeader.opCode;
-    this.fromCompressed = msgHeader.fromCompressed;
-
-    // Read response flags
-    this.responseFlags = msgBody.readInt32LE(0);
-    this.checksumPresent = (this.responseFlags & OPTS_CHECKSUM_PRESENT) !== 0;
-    this.moreToCome = (this.responseFlags & OPTS_MORE_TO_COME) !== 0;
-    this.exhaustAllowed = (this.responseFlags & OPTS_EXHAUST_ALLOWED) !== 0;
-    this.useBigInt64 = typeof this.opts.useBigInt64 === 'boolean' ? this.opts.useBigInt64 : false;
-    this.promoteLongs = typeof this.opts.promoteLongs === 'boolean' ? this.opts.promoteLongs : true;
-    this.promoteValues =
-      typeof this.opts.promoteValues === 'boolean' ? this.opts.promoteValues : true;
-    this.promoteBuffers =
-      typeof this.opts.promoteBuffers === 'boolean' ? this.opts.promoteBuffers : false;
-    this.bsonRegExp = typeof this.opts.bsonRegExp === 'boolean' ? this.opts.bsonRegExp : false;
-
-    this.documents = [];
-  }
-
-  isParsed(): boolean {
-    return this.parsed;
-  }
-
-  parse(options: OpResponseOptions): void {
-    // Don't parse again if not needed
-    if (this.parsed) return;
-    options = options ?? {};
-
-    this.index = 4;
-    // Allow the return of raw documents instead of parsing
-    const raw = options.raw || false;
-    const documentsReturnedIn = options.documentsReturnedIn || null;
-    const useBigInt64 = options.useBigInt64 ?? this.opts.useBigInt64;
-    const promoteLongs = options.promoteLongs ?? this.opts.promoteLongs;
-    const promoteValues = options.promoteValues ?? this.opts.promoteValues;
-    const promoteBuffers = options.promoteBuffers ?? this.opts.promoteBuffers;
-    const bsonRegExp = options.bsonRegExp ?? this.opts.bsonRegExp;
-    const validation = this.parseBsonSerializationOptions(options);
-
-    // Set up the options
-    const bsonOptions: BSONSerializeOptions = {
-      useBigInt64,
-      promoteLongs,
-      promoteValues,
-      promoteBuffers,
-      bsonRegExp,
-      validation
-      // Due to the strictness of the BSON libraries validation option we need this cast
-    } as BSONSerializeOptions & { validation: { utf8: { writeErrors: boolean } } };
-
-    while (this.index < this.data.length) {
-      const payloadType = this.data.readUInt8(this.index++);
-      if (payloadType === 0) {
-        const bsonSize = this.data.readUInt32LE(this.index);
-        const bin = this.data.slice(this.index, this.index + bsonSize);
-        this.documents.push(raw ? bin : BSON.deserialize(bin, bsonOptions));
-        this.index += bsonSize;
-      } else if (payloadType === 1) {
-        // It was decided that no driver makes use of payload type 1
-
-        // TODO(NODE-3483): Replace with MongoDeprecationError
-        throw new MongoRuntimeError('OP_MSG Payload Type 1 detected unsupported protocol');
-      }
-    }
-
-    if (this.documents.length === 1 && documentsReturnedIn != null && raw) {
-      const fieldsAsRaw: Document = {};
-      fieldsAsRaw[documentsReturnedIn] = true;
-      bsonOptions.fieldsAsRaw = fieldsAsRaw;
-      const doc = BSON.deserialize(this.documents[0] as Buffer, bsonOptions);
-      this.documents = [doc];
-    }
-
-    this.parsed = true;
-  }
-
-  parseBsonSerializationOptions({ enableUtf8Validation }: BSONSerializeOptions): {
-    utf8: { writeErrors: false } | false;
-  } {
-    if (enableUtf8Validation === false) {
-      return { utf8: false };
-    }
-
-    return { utf8: { writeErrors: false } };
-  }
-}
-
-const MESSAGE_HEADER_SIZE = 16;
-const COMPRESSION_DETAILS_SIZE = 9; // originalOpcode + uncompressedSize, compressorID
-
-/**
- * @internal
- *
- * An OP_COMPRESSED request wraps either an OP_QUERY or OP_MSG message.
- */
-export class OpCompressedRequest {
-  constructor(
-    private command: WriteProtocolMessageType,
-    private options: { zlibCompressionLevel: number; agreedCompressor: CompressorName }
-  ) {}
-
-  // Return whether a command contains an uncompressible command term
-  // Will return true if command contains no uncompressible command terms
-  static canCompress(command: WriteProtocolMessageType) {
-    const commandDoc = command instanceof OpMsgRequest ? command.command : command.query;
-    const commandName = Object.keys(commandDoc)[0];
-    return !uncompressibleCommands.has(commandName);
-  }
-
-  async toBin(): Promise<Buffer[]> {
-    const concatenatedOriginalCommandBuffer = Buffer.concat(this.command.toBin());
-    // otherwise, compress the message
-    const messageToBeCompressed = concatenatedOriginalCommandBuffer.slice(MESSAGE_HEADER_SIZE);
-
-    // Extract information needed for OP_COMPRESSED from the uncompressed message
-    const originalCommandOpCode = concatenatedOriginalCommandBuffer.readInt32LE(12);
-
-    // Compress the message body
-    const compressedMessage = await compress(this.options, messageToBeCompressed);
-    // Create the msgHeader of OP_COMPRESSED
-    const msgHeader = Buffer.alloc(MESSAGE_HEADER_SIZE);
-    msgHeader.writeInt32LE(
-      MESSAGE_HEADER_SIZE + COMPRESSION_DETAILS_SIZE + compressedMessage.length,
-      0
-    ); // messageLength
-    msgHeader.writeInt32LE(this.command.requestId, 4); // requestID
-    msgHeader.writeInt32LE(0, 8); // responseTo (zero)
-    msgHeader.writeInt32LE(OP_COMPRESSED, 12); // opCode
-
-    // Create the compression details of OP_COMPRESSED
-    const compressionDetails = Buffer.alloc(COMPRESSION_DETAILS_SIZE);
-    compressionDetails.writeInt32LE(originalCommandOpCode, 0); // originalOpcode
-    compressionDetails.writeInt32LE(messageToBeCompressed.length, 4); // Size of the uncompressed compressedMessage, excluding the MsgHeader
-    compressionDetails.writeUInt8(Compressor[this.options.agreedCompressor], 8); // compressorID
-    return [msgHeader, compressionDetails, compressedMessage];
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/connect.ts b/server/data-import/node_modules/mongodb/src/cmap/connect.ts
deleted file mode 100644
index d3839a5a03aa4217472f728be9d3dd2165946fd5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/connect.ts
+++ /dev/null
@@ -1,515 +0,0 @@
-import type { Socket, SocketConnectOpts } from 'net';
-import * as net from 'net';
-import type { ConnectionOptions as TLSConnectionOpts, TLSSocket } from 'tls';
-import * as tls from 'tls';
-
-import type { Document } from '../bson';
-import { LEGACY_HELLO_COMMAND } from '../constants';
-import { getSocks, type SocksLib } from '../deps';
-import {
-  MongoCompatibilityError,
-  MongoError,
-  MongoErrorLabel,
-  MongoInvalidArgumentError,
-  MongoNetworkError,
-  MongoNetworkTimeoutError,
-  MongoRuntimeError,
-  needsRetryableWriteLabel
-} from '../error';
-import { type Callback, HostAddress, ns } from '../utils';
-import { AuthContext, type AuthProvider } from './auth/auth_provider';
-import { GSSAPI } from './auth/gssapi';
-import { MongoCR } from './auth/mongocr';
-import { MongoDBAWS } from './auth/mongodb_aws';
-import { MongoDBOIDC } from './auth/mongodb_oidc';
-import { Plain } from './auth/plain';
-import { AuthMechanism } from './auth/providers';
-import { ScramSHA1, ScramSHA256 } from './auth/scram';
-import { X509 } from './auth/x509';
-import {
-  type CommandOptions,
-  Connection,
-  type ConnectionOptions,
-  CryptoConnection
-} from './connection';
-import type { ClientMetadata } from './handshake/client_metadata';
-import {
-  MAX_SUPPORTED_SERVER_VERSION,
-  MAX_SUPPORTED_WIRE_VERSION,
-  MIN_SUPPORTED_SERVER_VERSION,
-  MIN_SUPPORTED_WIRE_VERSION
-} from './wire_protocol/constants';
-
-/** @internal */
-export const AUTH_PROVIDERS = new Map<AuthMechanism | string, AuthProvider>([
-  [AuthMechanism.MONGODB_AWS, new MongoDBAWS()],
-  [AuthMechanism.MONGODB_CR, new MongoCR()],
-  [AuthMechanism.MONGODB_GSSAPI, new GSSAPI()],
-  [AuthMechanism.MONGODB_OIDC, new MongoDBOIDC()],
-  [AuthMechanism.MONGODB_PLAIN, new Plain()],
-  [AuthMechanism.MONGODB_SCRAM_SHA1, new ScramSHA1()],
-  [AuthMechanism.MONGODB_SCRAM_SHA256, new ScramSHA256()],
-  [AuthMechanism.MONGODB_X509, new X509()]
-]);
-
-/** @public */
-export type Stream = Socket | TLSSocket;
-
-export function connect(options: ConnectionOptions, callback: Callback<Connection>): void {
-  makeConnection({ ...options, existingSocket: undefined }, (err, socket) => {
-    if (err || !socket) {
-      return callback(err);
-    }
-
-    let ConnectionType = options.connectionType ?? Connection;
-    if (options.autoEncrypter) {
-      ConnectionType = CryptoConnection;
-    }
-
-    const connection = new ConnectionType(socket, options);
-
-    performInitialHandshake(connection, options).then(
-      () => callback(undefined, connection),
-      error => {
-        connection.destroy({ force: false });
-        callback(error);
-      }
-    );
-  });
-}
-
-function checkSupportedServer(hello: Document, options: ConnectionOptions) {
-  const maxWireVersion = Number(hello.maxWireVersion);
-  const minWireVersion = Number(hello.minWireVersion);
-  const serverVersionHighEnough =
-    !Number.isNaN(maxWireVersion) && maxWireVersion >= MIN_SUPPORTED_WIRE_VERSION;
-  const serverVersionLowEnough =
-    !Number.isNaN(minWireVersion) && minWireVersion <= MAX_SUPPORTED_WIRE_VERSION;
-
-  if (serverVersionHighEnough) {
-    if (serverVersionLowEnough) {
-      return null;
-    }
-
-    const message = `Server at ${options.hostAddress} reports minimum wire version ${JSON.stringify(
-      hello.minWireVersion
-    )}, but this version of the Node.js Driver requires at most ${MAX_SUPPORTED_WIRE_VERSION} (MongoDB ${MAX_SUPPORTED_SERVER_VERSION})`;
-    return new MongoCompatibilityError(message);
-  }
-
-  const message = `Server at ${options.hostAddress} reports maximum wire version ${
-    JSON.stringify(hello.maxWireVersion) ?? 0
-  }, but this version of the Node.js Driver requires at least ${MIN_SUPPORTED_WIRE_VERSION} (MongoDB ${MIN_SUPPORTED_SERVER_VERSION})`;
-  return new MongoCompatibilityError(message);
-}
-
-async function performInitialHandshake(
-  conn: Connection,
-  options: ConnectionOptions
-): Promise<void> {
-  const credentials = options.credentials;
-
-  if (credentials) {
-    if (
-      !(credentials.mechanism === AuthMechanism.MONGODB_DEFAULT) &&
-      !AUTH_PROVIDERS.get(credentials.mechanism)
-    ) {
-      throw new MongoInvalidArgumentError(`AuthMechanism '${credentials.mechanism}' not supported`);
-    }
-  }
-
-  const authContext = new AuthContext(conn, credentials, options);
-  conn.authContext = authContext;
-
-  const handshakeDoc = await prepareHandshakeDocument(authContext);
-
-  // @ts-expect-error: TODO(NODE-5141): The options need to be filtered properly, Connection options differ from Command options
-  const handshakeOptions: CommandOptions = { ...options };
-  if (typeof options.connectTimeoutMS === 'number') {
-    // The handshake technically is a monitoring check, so its socket timeout should be connectTimeoutMS
-    handshakeOptions.socketTimeoutMS = options.connectTimeoutMS;
-  }
-
-  const start = new Date().getTime();
-  const response = await conn.commandAsync(ns('admin.$cmd'), handshakeDoc, handshakeOptions);
-
-  if (!('isWritablePrimary' in response)) {
-    // Provide hello-style response document.
-    response.isWritablePrimary = response[LEGACY_HELLO_COMMAND];
-  }
-
-  if (response.helloOk) {
-    conn.helloOk = true;
-  }
-
-  const supportedServerErr = checkSupportedServer(response, options);
-  if (supportedServerErr) {
-    throw supportedServerErr;
-  }
-
-  if (options.loadBalanced) {
-    if (!response.serviceId) {
-      throw new MongoCompatibilityError(
-        'Driver attempted to initialize in load balancing mode, ' +
-          'but the server does not support this mode.'
-      );
-    }
-  }
-
-  // NOTE: This is metadata attached to the connection while porting away from
-  //       handshake being done in the `Server` class. Likely, it should be
-  //       relocated, or at very least restructured.
-  conn.hello = response;
-  conn.lastHelloMS = new Date().getTime() - start;
-
-  if (!response.arbiterOnly && credentials) {
-    // store the response on auth context
-    authContext.response = response;
-
-    const resolvedCredentials = credentials.resolveAuthMechanism(response);
-    const provider = AUTH_PROVIDERS.get(resolvedCredentials.mechanism);
-    if (!provider) {
-      throw new MongoInvalidArgumentError(
-        `No AuthProvider for ${resolvedCredentials.mechanism} defined.`
-      );
-    }
-
-    try {
-      await provider.auth(authContext);
-    } catch (error) {
-      if (error instanceof MongoError) {
-        error.addErrorLabel(MongoErrorLabel.HandshakeError);
-        if (needsRetryableWriteLabel(error, response.maxWireVersion)) {
-          error.addErrorLabel(MongoErrorLabel.RetryableWriteError);
-        }
-      }
-      throw error;
-    }
-  }
-}
-
-export interface HandshakeDocument extends Document {
-  /**
-   * @deprecated Use hello instead
-   */
-  ismaster?: boolean;
-  hello?: boolean;
-  helloOk?: boolean;
-  client: ClientMetadata;
-  compression: string[];
-  saslSupportedMechs?: string;
-  loadBalanced?: boolean;
-}
-
-/**
- * @internal
- *
- * This function is only exposed for testing purposes.
- */
-export async function prepareHandshakeDocument(
-  authContext: AuthContext
-): Promise<HandshakeDocument> {
-  const options = authContext.options;
-  const compressors = options.compressors ? options.compressors : [];
-  const { serverApi } = authContext.connection;
-
-  const handshakeDoc: HandshakeDocument = {
-    [serverApi?.version || options.loadBalanced === true ? 'hello' : LEGACY_HELLO_COMMAND]: 1,
-    helloOk: true,
-    client: options.metadata,
-    compression: compressors
-  };
-
-  if (options.loadBalanced === true) {
-    handshakeDoc.loadBalanced = true;
-  }
-
-  const credentials = authContext.credentials;
-  if (credentials) {
-    if (credentials.mechanism === AuthMechanism.MONGODB_DEFAULT && credentials.username) {
-      handshakeDoc.saslSupportedMechs = `${credentials.source}.${credentials.username}`;
-
-      const provider = AUTH_PROVIDERS.get(AuthMechanism.MONGODB_SCRAM_SHA256);
-      if (!provider) {
-        // This auth mechanism is always present.
-        throw new MongoInvalidArgumentError(
-          `No AuthProvider for ${AuthMechanism.MONGODB_SCRAM_SHA256} defined.`
-        );
-      }
-      return provider.prepare(handshakeDoc, authContext);
-    }
-    const provider = AUTH_PROVIDERS.get(credentials.mechanism);
-    if (!provider) {
-      throw new MongoInvalidArgumentError(`No AuthProvider for ${credentials.mechanism} defined.`);
-    }
-    return provider.prepare(handshakeDoc, authContext);
-  }
-  return handshakeDoc;
-}
-
-/** @public */
-export const LEGAL_TLS_SOCKET_OPTIONS = [
-  'ALPNProtocols',
-  'ca',
-  'cert',
-  'checkServerIdentity',
-  'ciphers',
-  'crl',
-  'ecdhCurve',
-  'key',
-  'minDHSize',
-  'passphrase',
-  'pfx',
-  'rejectUnauthorized',
-  'secureContext',
-  'secureProtocol',
-  'servername',
-  'session'
-] as const;
-
-/** @public */
-export const LEGAL_TCP_SOCKET_OPTIONS = [
-  'family',
-  'hints',
-  'localAddress',
-  'localPort',
-  'lookup'
-] as const;
-
-function parseConnectOptions(options: ConnectionOptions): SocketConnectOpts {
-  const hostAddress = options.hostAddress;
-  if (!hostAddress) throw new MongoInvalidArgumentError('Option "hostAddress" is required');
-
-  const result: Partial<net.TcpNetConnectOpts & net.IpcNetConnectOpts> = {};
-  for (const name of LEGAL_TCP_SOCKET_OPTIONS) {
-    if (options[name] != null) {
-      (result as Document)[name] = options[name];
-    }
-  }
-
-  if (typeof hostAddress.socketPath === 'string') {
-    result.path = hostAddress.socketPath;
-    return result as net.IpcNetConnectOpts;
-  } else if (typeof hostAddress.host === 'string') {
-    result.host = hostAddress.host;
-    result.port = hostAddress.port;
-    return result as net.TcpNetConnectOpts;
-  } else {
-    // This should never happen since we set up HostAddresses
-    // But if we don't throw here the socket could hang until timeout
-    // TODO(NODE-3483)
-    throw new MongoRuntimeError(`Unexpected HostAddress ${JSON.stringify(hostAddress)}`);
-  }
-}
-
-type MakeConnectionOptions = ConnectionOptions & { existingSocket?: Stream };
-
-function parseSslOptions(options: MakeConnectionOptions): TLSConnectionOpts {
-  const result: TLSConnectionOpts = parseConnectOptions(options);
-  // Merge in valid SSL options
-  for (const name of LEGAL_TLS_SOCKET_OPTIONS) {
-    if (options[name] != null) {
-      (result as Document)[name] = options[name];
-    }
-  }
-
-  if (options.existingSocket) {
-    result.socket = options.existingSocket;
-  }
-
-  // Set default sni servername to be the same as host
-  if (result.servername == null && result.host && !net.isIP(result.host)) {
-    result.servername = result.host;
-  }
-
-  return result;
-}
-
-const SOCKET_ERROR_EVENT_LIST = ['error', 'close', 'timeout', 'parseError'] as const;
-type ErrorHandlerEventName = (typeof SOCKET_ERROR_EVENT_LIST)[number] | 'cancel';
-const SOCKET_ERROR_EVENTS = new Set(SOCKET_ERROR_EVENT_LIST);
-
-function makeConnection(options: MakeConnectionOptions, _callback: Callback<Stream>) {
-  const useTLS = options.tls ?? false;
-  const noDelay = options.noDelay ?? true;
-  const connectTimeoutMS = options.connectTimeoutMS ?? 30000;
-  const rejectUnauthorized = options.rejectUnauthorized ?? true;
-  const existingSocket = options.existingSocket;
-
-  let socket: Stream;
-  const callback: Callback<Stream> = function (err, ret) {
-    if (err && socket) {
-      socket.destroy();
-    }
-
-    _callback(err, ret);
-  };
-
-  if (options.proxyHost != null) {
-    // Currently, only Socks5 is supported.
-    return makeSocks5Connection(
-      {
-        ...options,
-        connectTimeoutMS // Should always be present for Socks5
-      },
-      callback
-    );
-  }
-
-  if (useTLS) {
-    const tlsSocket = tls.connect(parseSslOptions(options));
-    if (typeof tlsSocket.disableRenegotiation === 'function') {
-      tlsSocket.disableRenegotiation();
-    }
-    socket = tlsSocket;
-  } else if (existingSocket) {
-    // In the TLS case, parseSslOptions() sets options.socket to existingSocket,
-    // so we only need to handle the non-TLS case here (where existingSocket
-    // gives us all we need out of the box).
-    socket = existingSocket;
-  } else {
-    socket = net.createConnection(parseConnectOptions(options));
-  }
-
-  socket.setKeepAlive(true, 300000);
-  socket.setTimeout(connectTimeoutMS);
-  socket.setNoDelay(noDelay);
-
-  const connectEvent = useTLS ? 'secureConnect' : 'connect';
-  let cancellationHandler: (err: Error) => void;
-  function errorHandler(eventName: ErrorHandlerEventName) {
-    return (err: Error) => {
-      SOCKET_ERROR_EVENTS.forEach(event => socket.removeAllListeners(event));
-      if (cancellationHandler && options.cancellationToken) {
-        options.cancellationToken.removeListener('cancel', cancellationHandler);
-      }
-
-      socket.removeListener(connectEvent, connectHandler);
-      callback(connectionFailureError(eventName, err));
-    };
-  }
-
-  function connectHandler() {
-    SOCKET_ERROR_EVENTS.forEach(event => socket.removeAllListeners(event));
-    if (cancellationHandler && options.cancellationToken) {
-      options.cancellationToken.removeListener('cancel', cancellationHandler);
-    }
-
-    if ('authorizationError' in socket) {
-      if (socket.authorizationError && rejectUnauthorized) {
-        // TODO(NODE-5192): wrap this with a MongoError subclass
-        return callback(socket.authorizationError);
-      }
-    }
-
-    socket.setTimeout(0);
-    callback(undefined, socket);
-  }
-
-  SOCKET_ERROR_EVENTS.forEach(event => socket.once(event, errorHandler(event)));
-  if (options.cancellationToken) {
-    cancellationHandler = errorHandler('cancel');
-    options.cancellationToken.once('cancel', cancellationHandler);
-  }
-
-  if (existingSocket) {
-    process.nextTick(connectHandler);
-  } else {
-    socket.once(connectEvent, connectHandler);
-  }
-}
-
-let socks: SocksLib | null = null;
-function loadSocks() {
-  if (socks == null) {
-    const socksImport = getSocks();
-    if ('kModuleError' in socksImport) {
-      throw socksImport.kModuleError;
-    }
-    socks = socksImport;
-  }
-  return socks;
-}
-
-function makeSocks5Connection(options: MakeConnectionOptions, callback: Callback<Stream>) {
-  const hostAddress = HostAddress.fromHostPort(
-    options.proxyHost ?? '', // proxyHost is guaranteed to set here
-    options.proxyPort ?? 1080
-  );
-
-  // First, connect to the proxy server itself:
-  makeConnection(
-    {
-      ...options,
-      hostAddress,
-      tls: false,
-      proxyHost: undefined
-    },
-    (err, rawSocket) => {
-      if (err || !rawSocket) {
-        return callback(err);
-      }
-
-      const destination = parseConnectOptions(options) as net.TcpNetConnectOpts;
-      if (typeof destination.host !== 'string' || typeof destination.port !== 'number') {
-        return callback(
-          new MongoInvalidArgumentError('Can only make Socks5 connections to TCP hosts')
-        );
-      }
-
-      try {
-        socks ??= loadSocks();
-      } catch (error) {
-        return callback(error);
-      }
-
-      // Then, establish the Socks5 proxy connection:
-      socks.SocksClient.createConnection({
-        existing_socket: rawSocket,
-        timeout: options.connectTimeoutMS,
-        command: 'connect',
-        destination: {
-          host: destination.host,
-          port: destination.port
-        },
-        proxy: {
-          // host and port are ignored because we pass existing_socket
-          host: 'iLoveJavaScript',
-          port: 0,
-          type: 5,
-          userId: options.proxyUsername || undefined,
-          password: options.proxyPassword || undefined
-        }
-      }).then(
-        ({ socket }) => {
-          // Finally, now treat the resulting duplex stream as the
-          // socket over which we send and receive wire protocol messages:
-          makeConnection(
-            {
-              ...options,
-              existingSocket: socket,
-              proxyHost: undefined
-            },
-            callback
-          );
-        },
-        error => callback(connectionFailureError('error', error))
-      );
-    }
-  );
-}
-
-function connectionFailureError(type: ErrorHandlerEventName, err: Error) {
-  switch (type) {
-    case 'error':
-      return new MongoNetworkError(MongoError.buildErrorMessage(err), { cause: err });
-    case 'timeout':
-      return new MongoNetworkTimeoutError('connection timed out');
-    case 'close':
-      return new MongoNetworkError('connection closed');
-    case 'cancel':
-      return new MongoNetworkError('connection establishment was cancelled');
-    default:
-      return new MongoNetworkError('unknown network error');
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/connection.ts b/server/data-import/node_modules/mongodb/src/cmap/connection.ts
deleted file mode 100644
index d505496519ea13d7eaac4e06a74136142485125f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/connection.ts
+++ /dev/null
@@ -1,1298 +0,0 @@
-import { once } from 'events';
-import { on } from 'stream';
-import { clearTimeout, setTimeout } from 'timers';
-import { promisify } from 'util';
-
-import type { BSONSerializeOptions, Document, ObjectId } from '../bson';
-import type { AutoEncrypter } from '../client-side-encryption/auto_encrypter';
-import {
-  CLOSE,
-  CLUSTER_TIME_RECEIVED,
-  COMMAND_FAILED,
-  COMMAND_STARTED,
-  COMMAND_SUCCEEDED,
-  MESSAGE,
-  PINNED,
-  UNPINNED
-} from '../constants';
-import {
-  MongoCompatibilityError,
-  MongoMissingDependencyError,
-  MongoNetworkError,
-  MongoNetworkTimeoutError,
-  MongoParseError,
-  MongoRuntimeError,
-  MongoServerError,
-  MongoWriteConcernError
-} from '../error';
-import type { ServerApi, SupportedNodeConnectionOptions } from '../mongo_client';
-import { type CancellationToken, TypedEventEmitter } from '../mongo_types';
-import type { ReadPreferenceLike } from '../read_preference';
-import { applySession, type ClientSession, updateSessionFromResponse } from '../sessions';
-import {
-  BufferPool,
-  calculateDurationInMs,
-  type Callback,
-  HostAddress,
-  maxWireVersion,
-  type MongoDBNamespace,
-  now,
-  uuidV4
-} from '../utils';
-import type { WriteConcern } from '../write_concern';
-import type { AuthContext } from './auth/auth_provider';
-import type { MongoCredentials } from './auth/mongo_credentials';
-import {
-  CommandFailedEvent,
-  CommandStartedEvent,
-  CommandSucceededEvent
-} from './command_monitoring_events';
-import {
-  OpCompressedRequest,
-  OpMsgRequest,
-  type OpMsgResponse,
-  OpQueryRequest,
-  type OpQueryResponse,
-  type WriteProtocolMessageType
-} from './commands';
-import type { Stream } from './connect';
-import type { ClientMetadata } from './handshake/client_metadata';
-import { MessageStream, type OperationDescription } from './message_stream';
-import { StreamDescription, type StreamDescriptionOptions } from './stream_description';
-import { decompressResponse } from './wire_protocol/compression';
-import { getReadPreference, isSharded } from './wire_protocol/shared';
-
-/** @internal */
-const kStream = Symbol('stream');
-/** @internal */
-const kQueue = Symbol('queue');
-/** @internal */
-const kMessageStream = Symbol('messageStream');
-/** @internal */
-const kGeneration = Symbol('generation');
-/** @internal */
-const kLastUseTime = Symbol('lastUseTime');
-/** @internal */
-const kClusterTime = Symbol('clusterTime');
-/** @internal */
-const kDescription = Symbol('description');
-/** @internal */
-const kHello = Symbol('hello');
-/** @internal */
-const kAutoEncrypter = Symbol('autoEncrypter');
-/** @internal */
-const kDelayedTimeoutId = Symbol('delayedTimeoutId');
-
-const INVALID_QUEUE_SIZE = 'Connection internal queue contains more than 1 operation description';
-
-/** @internal */
-export interface CommandOptions extends BSONSerializeOptions {
-  secondaryOk?: boolean;
-  /** Specify read preference if command supports it */
-  readPreference?: ReadPreferenceLike;
-  monitoring?: boolean;
-  socketTimeoutMS?: number;
-  /** Session to use for the operation */
-  session?: ClientSession;
-  documentsReturnedIn?: string;
-  noResponse?: boolean;
-  omitReadPreference?: boolean;
-
-  // TODO(NODE-2802): Currently the CommandOptions take a property willRetryWrite which is a hint
-  // from executeOperation that the txnNum should be applied to this command.
-  // Applying a session to a command should happen as part of command construction,
-  // most likely in the CommandOperation#executeCommand method, where we have access to
-  // the details we need to determine if a txnNum should also be applied.
-  willRetryWrite?: boolean;
-
-  writeConcern?: WriteConcern;
-}
-
-/** @public */
-export interface ProxyOptions {
-  proxyHost?: string;
-  proxyPort?: number;
-  proxyUsername?: string;
-  proxyPassword?: string;
-}
-
-/** @public */
-export interface ConnectionOptions
-  extends SupportedNodeConnectionOptions,
-    StreamDescriptionOptions,
-    ProxyOptions {
-  // Internal creation info
-  id: number | '<monitor>';
-  generation: number;
-  hostAddress: HostAddress;
-  /** @internal */
-  autoEncrypter?: AutoEncrypter;
-  serverApi?: ServerApi;
-  monitorCommands: boolean;
-  /** @internal */
-  connectionType?: typeof Connection;
-  credentials?: MongoCredentials;
-  connectTimeoutMS?: number;
-  tls: boolean;
-  noDelay?: boolean;
-  socketTimeoutMS?: number;
-  cancellationToken?: CancellationToken;
-  metadata: ClientMetadata;
-}
-
-/** @internal */
-export interface DestroyOptions {
-  /** Force the destruction. */
-  force: boolean;
-}
-
-/** @public */
-export type ConnectionEvents = {
-  commandStarted(event: CommandStartedEvent): void;
-  commandSucceeded(event: CommandSucceededEvent): void;
-  commandFailed(event: CommandFailedEvent): void;
-  clusterTimeReceived(clusterTime: Document): void;
-  close(): void;
-  message(message: any): void;
-  pinned(pinType: string): void;
-  unpinned(pinType: string): void;
-};
-
-/** @internal */
-export class Connection extends TypedEventEmitter<ConnectionEvents> {
-  id: number | '<monitor>';
-  address: string;
-  socketTimeoutMS: number;
-  monitorCommands: boolean;
-  /** Indicates that the connection (including underlying TCP socket) has been closed. */
-  closed: boolean;
-  lastHelloMS?: number;
-  serverApi?: ServerApi;
-  helloOk?: boolean;
-  commandAsync: (
-    ns: MongoDBNamespace,
-    cmd: Document,
-    options: CommandOptions | undefined
-  ) => Promise<Document>;
-  /** @internal */
-  authContext?: AuthContext;
-
-  /**@internal */
-  [kDelayedTimeoutId]: NodeJS.Timeout | null;
-  /** @internal */
-  [kDescription]: StreamDescription;
-  /** @internal */
-  [kGeneration]: number;
-  /** @internal */
-  [kLastUseTime]: number;
-  /** @internal */
-  [kQueue]: Map<number, OperationDescription>;
-  /** @internal */
-  [kMessageStream]: MessageStream;
-  /** @internal */
-  [kStream]: Stream;
-  /** @internal */
-  [kHello]: Document | null;
-  /** @internal */
-  [kClusterTime]: Document | null;
-
-  /** @event */
-  static readonly COMMAND_STARTED = COMMAND_STARTED;
-  /** @event */
-  static readonly COMMAND_SUCCEEDED = COMMAND_SUCCEEDED;
-  /** @event */
-  static readonly COMMAND_FAILED = COMMAND_FAILED;
-  /** @event */
-  static readonly CLUSTER_TIME_RECEIVED = CLUSTER_TIME_RECEIVED;
-  /** @event */
-  static readonly CLOSE = CLOSE;
-  /** @event */
-  static readonly MESSAGE = MESSAGE;
-  /** @event */
-  static readonly PINNED = PINNED;
-  /** @event */
-  static readonly UNPINNED = UNPINNED;
-
-  constructor(stream: Stream, options: ConnectionOptions) {
-    super();
-
-    this.commandAsync = promisify(
-      (
-        ns: MongoDBNamespace,
-        cmd: Document,
-        options: CommandOptions | undefined,
-        callback: Callback
-      ) => this.command(ns, cmd, options, callback as any)
-    );
-
-    this.id = options.id;
-    this.address = streamIdentifier(stream, options);
-    this.socketTimeoutMS = options.socketTimeoutMS ?? 0;
-    this.monitorCommands = options.monitorCommands;
-    this.serverApi = options.serverApi;
-    this.closed = false;
-    this[kHello] = null;
-    this[kClusterTime] = null;
-
-    this[kDescription] = new StreamDescription(this.address, options);
-    this[kGeneration] = options.generation;
-    this[kLastUseTime] = now();
-
-    // setup parser stream and message handling
-    this[kQueue] = new Map();
-    this[kMessageStream] = new MessageStream({
-      ...options,
-      maxBsonMessageSize: this.hello?.maxBsonMessageSize
-    });
-    this[kStream] = stream;
-
-    this[kDelayedTimeoutId] = null;
-
-    this[kMessageStream].on('message', message => this.onMessage(message));
-    this[kMessageStream].on('error', error => this.onError(error));
-    this[kStream].on('close', () => this.onClose());
-    this[kStream].on('timeout', () => this.onTimeout());
-    this[kStream].on('error', () => {
-      /* ignore errors, listen to `close` instead */
-    });
-
-    // hook the message stream up to the passed in stream
-    this[kStream].pipe(this[kMessageStream]);
-    this[kMessageStream].pipe(this[kStream]);
-  }
-
-  get description(): StreamDescription {
-    return this[kDescription];
-  }
-
-  get hello(): Document | null {
-    return this[kHello];
-  }
-
-  // the `connect` method stores the result of the handshake hello on the connection
-  set hello(response: Document | null) {
-    this[kDescription].receiveResponse(response);
-    this[kDescription] = Object.freeze(this[kDescription]);
-
-    // TODO: remove this, and only use the `StreamDescription` in the future
-    this[kHello] = response;
-  }
-
-  // Set the whether the message stream is for a monitoring connection.
-  set isMonitoringConnection(value: boolean) {
-    this[kMessageStream].isMonitoringConnection = value;
-  }
-
-  get isMonitoringConnection(): boolean {
-    return this[kMessageStream].isMonitoringConnection;
-  }
-
-  get serviceId(): ObjectId | undefined {
-    return this.hello?.serviceId;
-  }
-
-  get loadBalanced(): boolean {
-    return this.description.loadBalanced;
-  }
-
-  get generation(): number {
-    return this[kGeneration] || 0;
-  }
-
-  set generation(generation: number) {
-    this[kGeneration] = generation;
-  }
-
-  get idleTime(): number {
-    return calculateDurationInMs(this[kLastUseTime]);
-  }
-
-  get clusterTime(): Document | null {
-    return this[kClusterTime];
-  }
-
-  get stream(): Stream {
-    return this[kStream];
-  }
-
-  markAvailable(): void {
-    this[kLastUseTime] = now();
-  }
-
-  onError(error: Error) {
-    this.cleanup(true, error);
-  }
-
-  onClose() {
-    const message = `connection ${this.id} to ${this.address} closed`;
-    this.cleanup(true, new MongoNetworkError(message));
-  }
-
-  onTimeout() {
-    this[kDelayedTimeoutId] = setTimeout(() => {
-      const message = `connection ${this.id} to ${this.address} timed out`;
-      const beforeHandshake = this.hello == null;
-      this.cleanup(true, new MongoNetworkTimeoutError(message, { beforeHandshake }));
-    }, 1).unref(); // No need for this timer to hold the event loop open
-  }
-
-  onMessage(message: OpMsgResponse | OpQueryResponse) {
-    const delayedTimeoutId = this[kDelayedTimeoutId];
-    if (delayedTimeoutId != null) {
-      clearTimeout(delayedTimeoutId);
-      this[kDelayedTimeoutId] = null;
-    }
-
-    const socketTimeoutMS = this[kStream].timeout ?? 0;
-    this[kStream].setTimeout(0);
-
-    // always emit the message, in case we are streaming
-    this.emit('message', message);
-    let operationDescription = this[kQueue].get(message.responseTo);
-
-    if (!operationDescription && this.isMonitoringConnection) {
-      // This is how we recover when the initial hello's requestId is not
-      // the responseTo when hello responses have been skipped:
-
-      // First check if the map is of invalid size
-      if (this[kQueue].size > 1) {
-        this.cleanup(true, new MongoRuntimeError(INVALID_QUEUE_SIZE));
-      } else {
-        // Get the first orphaned operation description.
-        const entry = this[kQueue].entries().next();
-        if (entry.value != null) {
-          const [requestId, orphaned]: [number, OperationDescription] = entry.value;
-          // If the orphaned operation description exists then set it.
-          operationDescription = orphaned;
-          // Remove the entry with the bad request id from the queue.
-          this[kQueue].delete(requestId);
-        }
-      }
-    }
-
-    if (!operationDescription) {
-      return;
-    }
-
-    const callback = operationDescription.cb;
-
-    // SERVER-45775: For exhaust responses we should be able to use the same requestId to
-    // track response, however the server currently synthetically produces remote requests
-    // making the `responseTo` change on each response
-    this[kQueue].delete(message.responseTo);
-    if ('moreToCome' in message && message.moreToCome) {
-      // If the operation description check above does find an orphaned
-      // description and sets the operationDescription then this line will put one
-      // back in the queue with the correct requestId and will resolve not being able
-      // to find the next one via the responseTo of the next streaming hello.
-      this[kQueue].set(message.requestId, operationDescription);
-      this[kStream].setTimeout(socketTimeoutMS);
-    }
-
-    try {
-      // Pass in the entire description because it has BSON parsing options
-      message.parse(operationDescription);
-    } catch (err) {
-      // If this error is generated by our own code, it will already have the correct class applied
-      // if it is not, then it is coming from a catastrophic data parse failure or the BSON library
-      // in either case, it should not be wrapped
-      callback(err);
-      return;
-    }
-
-    if (message.documents[0]) {
-      const document: Document = message.documents[0];
-      const session = operationDescription.session;
-      if (session) {
-        updateSessionFromResponse(session, document);
-      }
-
-      if (document.$clusterTime) {
-        this[kClusterTime] = document.$clusterTime;
-        this.emit(Connection.CLUSTER_TIME_RECEIVED, document.$clusterTime);
-      }
-
-      if (document.writeConcernError) {
-        callback(new MongoWriteConcernError(document.writeConcernError, document), document);
-        return;
-      }
-
-      if (document.ok === 0 || document.$err || document.errmsg || document.code) {
-        callback(new MongoServerError(document));
-        return;
-      }
-    }
-
-    callback(undefined, message.documents[0]);
-  }
-
-  destroy(options: DestroyOptions, callback?: Callback): void {
-    if (this.closed) {
-      process.nextTick(() => callback?.());
-      return;
-    }
-    if (typeof callback === 'function') {
-      this.once('close', () => process.nextTick(() => callback()));
-    }
-
-    // load balanced mode requires that these listeners remain on the connection
-    // after cleanup on timeouts, errors or close so we remove them before calling
-    // cleanup.
-    this.removeAllListeners(Connection.PINNED);
-    this.removeAllListeners(Connection.UNPINNED);
-    const message = `connection ${this.id} to ${this.address} closed`;
-    this.cleanup(options.force, new MongoNetworkError(message));
-  }
-
-  /**
-   * A method that cleans up the connection.  When `force` is true, this method
-   * forcibly destroys the socket.
-   *
-   * If an error is provided, any in-flight operations will be closed with the error.
-   *
-   * This method does nothing if the connection is already closed.
-   */
-  private cleanup(force: boolean, error?: Error): void {
-    if (this.closed) {
-      return;
-    }
-
-    this.closed = true;
-
-    const completeCleanup = () => {
-      for (const op of this[kQueue].values()) {
-        op.cb(error);
-      }
-
-      this[kQueue].clear();
-
-      this.emit(Connection.CLOSE);
-    };
-
-    this[kStream].removeAllListeners();
-    this[kMessageStream].removeAllListeners();
-
-    this[kMessageStream].destroy();
-
-    if (force) {
-      this[kStream].destroy();
-      completeCleanup();
-      return;
-    }
-
-    if (!this[kStream].writableEnded) {
-      this[kStream].end(() => {
-        this[kStream].destroy();
-        completeCleanup();
-      });
-    } else {
-      completeCleanup();
-    }
-  }
-
-  command(
-    ns: MongoDBNamespace,
-    command: Document,
-    options: CommandOptions | undefined,
-    callback: Callback
-  ): void {
-    let cmd = { ...command };
-
-    const readPreference = getReadPreference(options);
-    const shouldUseOpMsg = supportsOpMsg(this);
-    const session = options?.session;
-
-    let clusterTime = this.clusterTime;
-
-    if (this.serverApi) {
-      const { version, strict, deprecationErrors } = this.serverApi;
-      cmd.apiVersion = version;
-      if (strict != null) cmd.apiStrict = strict;
-      if (deprecationErrors != null) cmd.apiDeprecationErrors = deprecationErrors;
-    }
-
-    if (hasSessionSupport(this) && session) {
-      if (
-        session.clusterTime &&
-        clusterTime &&
-        session.clusterTime.clusterTime.greaterThan(clusterTime.clusterTime)
-      ) {
-        clusterTime = session.clusterTime;
-      }
-
-      const err = applySession(session, cmd, options);
-      if (err) {
-        return callback(err);
-      }
-    } else if (session?.explicit) {
-      return callback(new MongoCompatibilityError('Current topology does not support sessions'));
-    }
-
-    // if we have a known cluster time, gossip it
-    if (clusterTime) {
-      cmd.$clusterTime = clusterTime;
-    }
-
-    if (isSharded(this) && !shouldUseOpMsg && readPreference && readPreference.mode !== 'primary') {
-      cmd = {
-        $query: cmd,
-        $readPreference: readPreference.toJSON()
-      };
-    }
-
-    const commandOptions: Document = Object.assign(
-      {
-        numberToSkip: 0,
-        numberToReturn: -1,
-        checkKeys: false,
-        // This value is not overridable
-        secondaryOk: readPreference.secondaryOk()
-      },
-      options
-    );
-
-    const message = shouldUseOpMsg
-      ? new OpMsgRequest(ns.db, cmd, commandOptions)
-      : new OpQueryRequest(ns.db, cmd, commandOptions);
-
-    try {
-      write(this, message, commandOptions, callback);
-    } catch (err) {
-      callback(err);
-    }
-  }
-}
-
-/** @internal */
-export class CryptoConnection extends Connection {
-  /** @internal */
-  [kAutoEncrypter]?: AutoEncrypter;
-
-  constructor(stream: Stream, options: ConnectionOptions) {
-    super(stream, options);
-    this[kAutoEncrypter] = options.autoEncrypter;
-  }
-
-  /** @internal @override */
-  override command(
-    ns: MongoDBNamespace,
-    cmd: Document,
-    options: CommandOptions,
-    callback: Callback
-  ): void {
-    const autoEncrypter = this[kAutoEncrypter];
-    if (!autoEncrypter) {
-      return callback(new MongoMissingDependencyError('No AutoEncrypter available for encryption'));
-    }
-
-    const serverWireVersion = maxWireVersion(this);
-    if (serverWireVersion === 0) {
-      // This means the initial handshake hasn't happened yet
-      return super.command(ns, cmd, options, callback);
-    }
-
-    if (serverWireVersion < 8) {
-      callback(
-        new MongoCompatibilityError('Auto-encryption requires a minimum MongoDB version of 4.2')
-      );
-      return;
-    }
-
-    // Save sort or indexKeys based on the command being run
-    // the encrypt API serializes our JS objects to BSON to pass to the native code layer
-    // and then deserializes the encrypted result, the protocol level components
-    // of the command (ex. sort) are then converted to JS objects potentially losing
-    // import key order information. These fields are never encrypted so we can save the values
-    // from before the encryption and replace them after encryption has been performed
-    const sort: Map<string, number> | null = cmd.find || cmd.findAndModify ? cmd.sort : null;
-    const indexKeys: Map<string, number>[] | null = cmd.createIndexes
-      ? cmd.indexes.map((index: { key: Map<string, number> }) => index.key)
-      : null;
-
-    autoEncrypter.encrypt(ns.toString(), cmd, options).then(
-      encrypted => {
-        // Replace the saved values
-        if (sort != null && (cmd.find || cmd.findAndModify)) {
-          encrypted.sort = sort;
-        }
-        if (indexKeys != null && cmd.createIndexes) {
-          for (const [offset, index] of indexKeys.entries()) {
-            // @ts-expect-error `encrypted` is a generic "command", but we've narrowed for only `createIndexes` commands here
-            encrypted.indexes[offset].key = index;
-          }
-        }
-
-        super.command(ns, encrypted, options, (err, response) => {
-          if (err || response == null) {
-            callback(err, response);
-            return;
-          }
-
-          autoEncrypter.decrypt(response, options).then(
-            res => callback(undefined, res),
-            err => callback(err)
-          );
-        });
-      },
-      err => {
-        if (err) {
-          callback(err, null);
-        }
-      }
-    );
-  }
-}
-
-/** @internal */
-export function hasSessionSupport(conn: Connection): boolean {
-  const description = conn.description;
-  return description.logicalSessionTimeoutMinutes != null;
-}
-
-function supportsOpMsg(conn: Connection) {
-  const description = conn.description;
-  if (description == null) {
-    return false;
-  }
-
-  return maxWireVersion(conn) >= 6 && !description.__nodejs_mock_server__;
-}
-
-function streamIdentifier(stream: Stream, options: ConnectionOptions): string {
-  if (options.proxyHost) {
-    // If proxy options are specified, the properties of `stream` itself
-    // will not accurately reflect what endpoint this is connected to.
-    return options.hostAddress.toString();
-  }
-
-  const { remoteAddress, remotePort } = stream;
-  if (typeof remoteAddress === 'string' && typeof remotePort === 'number') {
-    return HostAddress.fromHostPort(remoteAddress, remotePort).toString();
-  }
-
-  return uuidV4().toString('hex');
-}
-
-function write(
-  conn: Connection,
-  command: WriteProtocolMessageType,
-  options: CommandOptions,
-  callback: Callback
-) {
-  options = options ?? {};
-  const operationDescription: OperationDescription = {
-    requestId: command.requestId,
-    cb: callback,
-    session: options.session,
-    noResponse: typeof options.noResponse === 'boolean' ? options.noResponse : false,
-    documentsReturnedIn: options.documentsReturnedIn,
-
-    // for BSON parsing
-    useBigInt64: typeof options.useBigInt64 === 'boolean' ? options.useBigInt64 : false,
-    promoteLongs: typeof options.promoteLongs === 'boolean' ? options.promoteLongs : true,
-    promoteValues: typeof options.promoteValues === 'boolean' ? options.promoteValues : true,
-    promoteBuffers: typeof options.promoteBuffers === 'boolean' ? options.promoteBuffers : false,
-    bsonRegExp: typeof options.bsonRegExp === 'boolean' ? options.bsonRegExp : false,
-    enableUtf8Validation:
-      typeof options.enableUtf8Validation === 'boolean' ? options.enableUtf8Validation : true,
-    raw: typeof options.raw === 'boolean' ? options.raw : false,
-    started: 0
-  };
-
-  if (conn[kDescription] && conn[kDescription].compressor) {
-    operationDescription.agreedCompressor = conn[kDescription].compressor;
-
-    if (conn[kDescription].zlibCompressionLevel) {
-      operationDescription.zlibCompressionLevel = conn[kDescription].zlibCompressionLevel;
-    }
-  }
-
-  if (typeof options.socketTimeoutMS === 'number') {
-    conn[kStream].setTimeout(options.socketTimeoutMS);
-  } else if (conn.socketTimeoutMS !== 0) {
-    conn[kStream].setTimeout(conn.socketTimeoutMS);
-  }
-
-  // if command monitoring is enabled we need to modify the callback here
-  if (conn.monitorCommands) {
-    conn.emit(Connection.COMMAND_STARTED, new CommandStartedEvent(conn, command));
-
-    operationDescription.started = now();
-    operationDescription.cb = (err, reply) => {
-      // Command monitoring spec states that if ok is 1, then we must always emit
-      // a command succeeded event, even if there's an error. Write concern errors
-      // will have an ok: 1 in their reply.
-      if (err && reply?.ok !== 1) {
-        conn.emit(
-          Connection.COMMAND_FAILED,
-          new CommandFailedEvent(conn, command, err, operationDescription.started)
-        );
-      } else {
-        if (reply && (reply.ok === 0 || reply.$err)) {
-          conn.emit(
-            Connection.COMMAND_FAILED,
-            new CommandFailedEvent(conn, command, reply, operationDescription.started)
-          );
-        } else {
-          conn.emit(
-            Connection.COMMAND_SUCCEEDED,
-            new CommandSucceededEvent(conn, command, reply, operationDescription.started)
-          );
-        }
-      }
-
-      if (typeof callback === 'function') {
-        // Since we're passing through the reply with the write concern error now, we
-        // need it not to be provided to the original callback in this case so
-        // retryability does not get tricked into thinking the command actually
-        // succeeded.
-        callback(err, err instanceof MongoWriteConcernError ? undefined : reply);
-      }
-    };
-  }
-
-  if (!operationDescription.noResponse) {
-    conn[kQueue].set(operationDescription.requestId, operationDescription);
-  }
-
-  try {
-    conn[kMessageStream].writeCommand(command, operationDescription);
-  } catch (e) {
-    if (!operationDescription.noResponse) {
-      conn[kQueue].delete(operationDescription.requestId);
-      operationDescription.cb(e);
-      return;
-    }
-  }
-
-  if (operationDescription.noResponse) {
-    operationDescription.cb();
-  }
-}
-
-/** in-progress connection layer */
-
-/** @internal */
-export class ModernConnection extends TypedEventEmitter<ConnectionEvents> {
-  id: number | '<monitor>';
-  address: string;
-  socketTimeoutMS: number;
-  monitorCommands: boolean;
-  /** Indicates that the connection (including underlying TCP socket) has been closed. */
-  closed: boolean;
-  lastHelloMS?: number;
-  serverApi?: ServerApi;
-  helloOk?: boolean;
-  commandAsync: (
-    ns: MongoDBNamespace,
-    cmd: Document,
-    options: CommandOptions | undefined
-  ) => Promise<Document>;
-  /** @internal */
-  authContext?: AuthContext;
-
-  /**@internal */
-  [kDelayedTimeoutId]: NodeJS.Timeout | null;
-  /** @internal */
-  [kDescription]: StreamDescription;
-  /** @internal */
-  [kGeneration]: number;
-  /** @internal */
-  [kLastUseTime]: number;
-  /** @internal */
-  [kQueue]: Map<number, OperationDescription>;
-  /** @internal */
-  [kMessageStream]: MessageStream;
-  /** @internal */
-  socket: Stream;
-  /** @internal */
-  [kHello]: Document | null;
-  /** @internal */
-  [kClusterTime]: Document | null;
-
-  /** @event */
-  static readonly COMMAND_STARTED = COMMAND_STARTED;
-  /** @event */
-  static readonly COMMAND_SUCCEEDED = COMMAND_SUCCEEDED;
-  /** @event */
-  static readonly COMMAND_FAILED = COMMAND_FAILED;
-  /** @event */
-  static readonly CLUSTER_TIME_RECEIVED = CLUSTER_TIME_RECEIVED;
-  /** @event */
-  static readonly CLOSE = CLOSE;
-  /** @event */
-  static readonly MESSAGE = MESSAGE;
-  /** @event */
-  static readonly PINNED = PINNED;
-  /** @event */
-  static readonly UNPINNED = UNPINNED;
-
-  constructor(stream: Stream, options: ConnectionOptions) {
-    super();
-
-    this.commandAsync = promisify(
-      (
-        ns: MongoDBNamespace,
-        cmd: Document,
-        options: CommandOptions | undefined,
-        callback: Callback
-      ) => this.command(ns, cmd, options, callback as any)
-    );
-
-    this.id = options.id;
-    this.address = streamIdentifier(stream, options);
-    this.socketTimeoutMS = options.socketTimeoutMS ?? 0;
-    this.monitorCommands = options.monitorCommands;
-    this.serverApi = options.serverApi;
-    this.closed = false;
-    this[kHello] = null;
-    this[kClusterTime] = null;
-
-    this[kDescription] = new StreamDescription(this.address, options);
-    this[kGeneration] = options.generation;
-    this[kLastUseTime] = now();
-
-    // setup parser stream and message handling
-    this[kQueue] = new Map();
-    this[kMessageStream] = new MessageStream({
-      ...options,
-      maxBsonMessageSize: this.hello?.maxBsonMessageSize
-    });
-    this.socket = stream;
-
-    this[kDelayedTimeoutId] = null;
-
-    this[kMessageStream].on('message', message => this.onMessage(message));
-    this[kMessageStream].on('error', error => this.onError(error));
-    this.socket.on('close', () => this.onClose());
-    this.socket.on('timeout', () => this.onTimeout());
-    this.socket.on('error', () => {
-      /* ignore errors, listen to `close` instead */
-    });
-
-    // hook the message stream up to the passed in stream
-    this.socket.pipe(this[kMessageStream]);
-    this[kMessageStream].pipe(this.socket);
-  }
-
-  get description(): StreamDescription {
-    return this[kDescription];
-  }
-
-  get hello(): Document | null {
-    return this[kHello];
-  }
-
-  // the `connect` method stores the result of the handshake hello on the connection
-  set hello(response: Document | null) {
-    this[kDescription].receiveResponse(response);
-    this[kDescription] = Object.freeze(this[kDescription]);
-
-    // TODO: remove this, and only use the `StreamDescription` in the future
-    this[kHello] = response;
-  }
-
-  // Set the whether the message stream is for a monitoring connection.
-  set isMonitoringConnection(value: boolean) {
-    this[kMessageStream].isMonitoringConnection = value;
-  }
-
-  get isMonitoringConnection(): boolean {
-    return this[kMessageStream].isMonitoringConnection;
-  }
-
-  get serviceId(): ObjectId | undefined {
-    return this.hello?.serviceId;
-  }
-
-  get loadBalanced(): boolean {
-    return this.description.loadBalanced;
-  }
-
-  get generation(): number {
-    return this[kGeneration] || 0;
-  }
-
-  set generation(generation: number) {
-    this[kGeneration] = generation;
-  }
-
-  get idleTime(): number {
-    return calculateDurationInMs(this[kLastUseTime]);
-  }
-
-  get clusterTime(): Document | null {
-    return this[kClusterTime];
-  }
-
-  get stream(): Stream {
-    return this.socket;
-  }
-
-  get hasSessionSupport(): boolean {
-    return this.description.logicalSessionTimeoutMinutes != null;
-  }
-
-  get supportsOpMsg(): boolean {
-    return (
-      this.description != null &&
-      maxWireVersion(this as any as Connection) >= 6 &&
-      !this.description.__nodejs_mock_server__
-    );
-  }
-
-  markAvailable(): void {
-    this[kLastUseTime] = now();
-  }
-
-  onError(error: Error) {
-    this.cleanup(true, error);
-  }
-
-  onClose() {
-    const message = `connection ${this.id} to ${this.address} closed`;
-    this.cleanup(true, new MongoNetworkError(message));
-  }
-
-  onTimeout() {
-    this[kDelayedTimeoutId] = setTimeout(() => {
-      const message = `connection ${this.id} to ${this.address} timed out`;
-      const beforeHandshake = this.hello == null;
-      this.cleanup(true, new MongoNetworkTimeoutError(message, { beforeHandshake }));
-    }, 1).unref(); // No need for this timer to hold the event loop open
-  }
-
-  onMessage(message: OpMsgResponse | OpQueryResponse) {
-    const delayedTimeoutId = this[kDelayedTimeoutId];
-    if (delayedTimeoutId != null) {
-      clearTimeout(delayedTimeoutId);
-      this[kDelayedTimeoutId] = null;
-    }
-
-    const socketTimeoutMS = this.socket.timeout ?? 0;
-    this.socket.setTimeout(0);
-
-    // always emit the message, in case we are streaming
-    this.emit('message', message);
-    let operationDescription = this[kQueue].get(message.responseTo);
-
-    if (!operationDescription && this.isMonitoringConnection) {
-      // This is how we recover when the initial hello's requestId is not
-      // the responseTo when hello responses have been skipped:
-
-      // First check if the map is of invalid size
-      if (this[kQueue].size > 1) {
-        this.cleanup(true, new MongoRuntimeError(INVALID_QUEUE_SIZE));
-      } else {
-        // Get the first orphaned operation description.
-        const entry = this[kQueue].entries().next();
-        if (entry.value != null) {
-          const [requestId, orphaned]: [number, OperationDescription] = entry.value;
-          // If the orphaned operation description exists then set it.
-          operationDescription = orphaned;
-          // Remove the entry with the bad request id from the queue.
-          this[kQueue].delete(requestId);
-        }
-      }
-    }
-
-    if (!operationDescription) {
-      return;
-    }
-
-    const callback = operationDescription.cb;
-
-    // SERVER-45775: For exhaust responses we should be able to use the same requestId to
-    // track response, however the server currently synthetically produces remote requests
-    // making the `responseTo` change on each response
-    this[kQueue].delete(message.responseTo);
-    if ('moreToCome' in message && message.moreToCome) {
-      // If the operation description check above does find an orphaned
-      // description and sets the operationDescription then this line will put one
-      // back in the queue with the correct requestId and will resolve not being able
-      // to find the next one via the responseTo of the next streaming hello.
-      this[kQueue].set(message.requestId, operationDescription);
-      this.socket.setTimeout(socketTimeoutMS);
-    }
-
-    try {
-      // Pass in the entire description because it has BSON parsing options
-      message.parse(operationDescription);
-    } catch (err) {
-      // If this error is generated by our own code, it will already have the correct class applied
-      // if it is not, then it is coming from a catastrophic data parse failure or the BSON library
-      // in either case, it should not be wrapped
-      callback(err);
-      return;
-    }
-
-    if (message.documents[0]) {
-      const document: Document = message.documents[0];
-      const session = operationDescription.session;
-      if (session) {
-        updateSessionFromResponse(session, document);
-      }
-
-      if (document.$clusterTime) {
-        this[kClusterTime] = document.$clusterTime;
-        this.emit(Connection.CLUSTER_TIME_RECEIVED, document.$clusterTime);
-      }
-
-      if (document.writeConcernError) {
-        callback(new MongoWriteConcernError(document.writeConcernError, document), document);
-        return;
-      }
-
-      if (document.ok === 0 || document.$err || document.errmsg || document.code) {
-        callback(new MongoServerError(document));
-        return;
-      }
-    }
-
-    callback(undefined, message.documents[0]);
-  }
-
-  destroy(options: DestroyOptions, callback?: Callback): void {
-    if (this.closed) {
-      process.nextTick(() => callback?.());
-      return;
-    }
-    if (typeof callback === 'function') {
-      this.once('close', () => process.nextTick(() => callback()));
-    }
-
-    // load balanced mode requires that these listeners remain on the connection
-    // after cleanup on timeouts, errors or close so we remove them before calling
-    // cleanup.
-    this.removeAllListeners(Connection.PINNED);
-    this.removeAllListeners(Connection.UNPINNED);
-    const message = `connection ${this.id} to ${this.address} closed`;
-    this.cleanup(options.force, new MongoNetworkError(message));
-  }
-
-  /**
-   * A method that cleans up the connection.  When `force` is true, this method
-   * forcibly destroys the socket.
-   *
-   * If an error is provided, any in-flight operations will be closed with the error.
-   *
-   * This method does nothing if the connection is already closed.
-   */
-  private cleanup(force: boolean, error?: Error): void {
-    if (this.closed) {
-      return;
-    }
-
-    this.closed = true;
-
-    const completeCleanup = () => {
-      for (const op of this[kQueue].values()) {
-        op.cb(error);
-      }
-
-      this[kQueue].clear();
-
-      this.emit(Connection.CLOSE);
-    };
-
-    this.socket.removeAllListeners();
-    this[kMessageStream].removeAllListeners();
-
-    this[kMessageStream].destroy();
-
-    if (force) {
-      this.socket.destroy();
-      completeCleanup();
-      return;
-    }
-
-    if (!this.socket.writableEnded) {
-      this.socket.end(() => {
-        this.socket.destroy();
-        completeCleanup();
-      });
-    } else {
-      completeCleanup();
-    }
-  }
-
-  command(
-    ns: MongoDBNamespace,
-    command: Document,
-    options: CommandOptions | undefined,
-    callback: Callback
-  ): void {
-    let cmd = { ...command };
-
-    const readPreference = getReadPreference(options);
-    const session = options?.session;
-
-    let clusterTime = this.clusterTime;
-
-    if (this.serverApi) {
-      const { version, strict, deprecationErrors } = this.serverApi;
-      cmd.apiVersion = version;
-      if (strict != null) cmd.apiStrict = strict;
-      if (deprecationErrors != null) cmd.apiDeprecationErrors = deprecationErrors;
-    }
-
-    if (this.hasSessionSupport && session) {
-      if (
-        session.clusterTime &&
-        clusterTime &&
-        session.clusterTime.clusterTime.greaterThan(clusterTime.clusterTime)
-      ) {
-        clusterTime = session.clusterTime;
-      }
-
-      const err = applySession(session, cmd, options);
-      if (err) {
-        return callback(err);
-      }
-    } else if (session?.explicit) {
-      return callback(new MongoCompatibilityError('Current topology does not support sessions'));
-    }
-
-    // if we have a known cluster time, gossip it
-    if (clusterTime) {
-      cmd.$clusterTime = clusterTime;
-    }
-
-    if (
-      // @ts-expect-error ModernConnections cannot be passed as connections
-      isSharded(this) &&
-      !this.supportsOpMsg &&
-      readPreference &&
-      readPreference.mode !== 'primary'
-    ) {
-      cmd = {
-        $query: cmd,
-        $readPreference: readPreference.toJSON()
-      };
-    }
-
-    const commandOptions: Document = Object.assign(
-      {
-        numberToSkip: 0,
-        numberToReturn: -1,
-        checkKeys: false,
-        // This value is not overridable
-        secondaryOk: readPreference.secondaryOk()
-      },
-      options
-    );
-
-    const message = this.supportsOpMsg
-      ? new OpMsgRequest(ns.db, cmd, commandOptions)
-      : new OpQueryRequest(ns.db, cmd, commandOptions);
-
-    try {
-      write(this as any as Connection, message, commandOptions, callback);
-    } catch (err) {
-      callback(err);
-    }
-  }
-}
-
-const kDefaultMaxBsonMessageSize = 1024 * 1024 * 16 * 4;
-
-/**
- * @internal
- *
- * This helper reads chucks of data out of a socket and buffers them until it has received a
- * full wire protocol message.
- *
- * By itself, produces an infinite async generator of wire protocol messages and consumers must end
- * the stream by calling `return` on the generator.
- *
- * Note that `for-await` loops call `return` automatically when the loop is exited.
- */
-export async function* readWireProtocolMessages(
-  connection: ModernConnection
-): AsyncGenerator<Buffer> {
-  const bufferPool = new BufferPool();
-  const maxBsonMessageSize = connection.hello?.maxBsonMessageSize ?? kDefaultMaxBsonMessageSize;
-  for await (const [chunk] of on(connection.socket, 'data')) {
-    bufferPool.append(chunk);
-    const sizeOfMessage = bufferPool.getInt32();
-
-    if (sizeOfMessage == null) {
-      continue;
-    }
-
-    if (sizeOfMessage < 0) {
-      throw new MongoParseError(`Invalid message size: ${sizeOfMessage}`);
-    }
-
-    if (sizeOfMessage > maxBsonMessageSize) {
-      throw new MongoParseError(
-        `Invalid message size: ${sizeOfMessage}, max allowed: ${maxBsonMessageSize}`
-      );
-    }
-
-    if (sizeOfMessage > bufferPool.length) {
-      continue;
-    }
-
-    yield bufferPool.read(sizeOfMessage);
-  }
-}
-
-/**
- * @internal
- *
- * Writes an OP_MSG or OP_QUERY request to the socket, optionally compressing the command. This method
- * waits until the socket's buffer has emptied (the Nodejs socket `drain` event has fired).
- */
-export async function writeCommand(
-  connection: ModernConnection,
-  command: WriteProtocolMessageType,
-  options: Partial<Pick<OperationDescription, 'agreedCompressor' | 'zlibCompressionLevel'>>
-): Promise<void> {
-  const drained = once(connection.socket, 'drain');
-  const finalCommand =
-    options.agreedCompressor === 'none' || !OpCompressedRequest.canCompress(command)
-      ? command
-      : new OpCompressedRequest(command, {
-          agreedCompressor: options.agreedCompressor ?? 'none',
-          zlibCompressionLevel: options.zlibCompressionLevel ?? 0
-        });
-  const buffer = Buffer.concat(await finalCommand.toBin());
-  connection.socket.push(buffer);
-  await drained;
-}
-
-/**
- * @internal
- *
- * Returns an async generator that yields full wire protocol messages from the underlying socket.  This function
- * yields messages until `moreToCome` is false or not present in a response, or the caller cancels the request
- * by calling `return` on the generator.
- *
- * Note that `for-await` loops call `return` automatically when the loop is exited.
- */
-export async function* readMany(
-  connection: ModernConnection
-): AsyncGenerator<OpMsgResponse | OpQueryResponse> {
-  for await (const message of readWireProtocolMessages(connection)) {
-    const response = await decompressResponse(message);
-    yield response;
-
-    if (!('moreToCome' in response) || !response.moreToCome) {
-      return;
-    }
-  }
-}
-
-/**
- * @internal
- *
- * Reads a single wire protocol message out of a connection.
- */
-export async function read(connection: ModernConnection): Promise<OpMsgResponse | OpQueryResponse> {
-  for await (const value of readMany(connection)) {
-    return value;
-  }
-
-  throw new MongoRuntimeError('unable to read message off of connection');
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/connection_pool.ts b/server/data-import/node_modules/mongodb/src/cmap/connection_pool.ts
deleted file mode 100644
index 187d6b09a000fd2a1e7a0542120def65e69d2d09..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/connection_pool.ts
+++ /dev/null
@@ -1,916 +0,0 @@
-import { clearTimeout, setTimeout } from 'timers';
-
-import type { ObjectId } from '../bson';
-import {
-  APM_EVENTS,
-  CONNECTION_CHECK_OUT_FAILED,
-  CONNECTION_CHECK_OUT_STARTED,
-  CONNECTION_CHECKED_IN,
-  CONNECTION_CHECKED_OUT,
-  CONNECTION_CLOSED,
-  CONNECTION_CREATED,
-  CONNECTION_POOL_CLEARED,
-  CONNECTION_POOL_CLOSED,
-  CONNECTION_POOL_CREATED,
-  CONNECTION_POOL_READY,
-  CONNECTION_READY
-} from '../constants';
-import {
-  type AnyError,
-  MONGODB_ERROR_CODES,
-  MongoError,
-  MongoInvalidArgumentError,
-  MongoMissingCredentialsError,
-  MongoNetworkError,
-  MongoRuntimeError,
-  MongoServerError
-} from '../error';
-import { CancellationToken, TypedEventEmitter } from '../mongo_types';
-import type { Server } from '../sdam/server';
-import { type Callback, eachAsync, List, makeCounter, TimeoutController } from '../utils';
-import { AUTH_PROVIDERS, connect } from './connect';
-import { Connection, type ConnectionEvents, type ConnectionOptions } from './connection';
-import {
-  ConnectionCheckedInEvent,
-  ConnectionCheckedOutEvent,
-  ConnectionCheckOutFailedEvent,
-  ConnectionCheckOutStartedEvent,
-  ConnectionClosedEvent,
-  ConnectionCreatedEvent,
-  ConnectionPoolClearedEvent,
-  ConnectionPoolClosedEvent,
-  ConnectionPoolCreatedEvent,
-  ConnectionPoolReadyEvent,
-  ConnectionReadyEvent
-} from './connection_pool_events';
-import {
-  PoolClearedError,
-  PoolClearedOnNetworkError,
-  PoolClosedError,
-  WaitQueueTimeoutError
-} from './errors';
-import { ConnectionPoolMetrics } from './metrics';
-
-/** @internal */
-const kServer = Symbol('server');
-/** @internal */
-const kConnections = Symbol('connections');
-/** @internal */
-const kPending = Symbol('pending');
-/** @internal */
-const kCheckedOut = Symbol('checkedOut');
-/** @internal */
-const kMinPoolSizeTimer = Symbol('minPoolSizeTimer');
-/** @internal */
-const kGeneration = Symbol('generation');
-/** @internal */
-const kServiceGenerations = Symbol('serviceGenerations');
-/** @internal */
-const kConnectionCounter = Symbol('connectionCounter');
-/** @internal */
-const kCancellationToken = Symbol('cancellationToken');
-/** @internal */
-const kWaitQueue = Symbol('waitQueue');
-/** @internal */
-const kCancelled = Symbol('cancelled');
-/** @internal */
-const kMetrics = Symbol('metrics');
-/** @internal */
-const kProcessingWaitQueue = Symbol('processingWaitQueue');
-/** @internal */
-const kPoolState = Symbol('poolState');
-
-/** @public */
-export interface ConnectionPoolOptions extends Omit<ConnectionOptions, 'id' | 'generation'> {
-  /** The maximum number of connections that may be associated with a pool at a given time. This includes in use and available connections. */
-  maxPoolSize: number;
-  /** The minimum number of connections that MUST exist at any moment in a single connection pool. */
-  minPoolSize: number;
-  /** The maximum number of connections that may be in the process of being established concurrently by the connection pool. */
-  maxConnecting: number;
-  /** The maximum amount of time a connection should remain idle in the connection pool before being marked idle. */
-  maxIdleTimeMS: number;
-  /** The maximum amount of time operation execution should wait for a connection to become available. The default is 0 which means there is no limit. */
-  waitQueueTimeoutMS: number;
-  /** If we are in load balancer mode. */
-  loadBalanced: boolean;
-  /** @internal */
-  minPoolSizeCheckFrequencyMS?: number;
-}
-
-/** @internal */
-export interface WaitQueueMember {
-  callback: Callback<Connection>;
-  timeoutController: TimeoutController;
-  [kCancelled]?: boolean;
-}
-
-/** @internal */
-export const PoolState = Object.freeze({
-  paused: 'paused',
-  ready: 'ready',
-  closed: 'closed'
-} as const);
-
-/** @public */
-export interface CloseOptions {
-  force?: boolean;
-}
-
-/** @public */
-export type ConnectionPoolEvents = {
-  connectionPoolCreated(event: ConnectionPoolCreatedEvent): void;
-  connectionPoolReady(event: ConnectionPoolReadyEvent): void;
-  connectionPoolClosed(event: ConnectionPoolClosedEvent): void;
-  connectionPoolCleared(event: ConnectionPoolClearedEvent): void;
-  connectionCreated(event: ConnectionCreatedEvent): void;
-  connectionReady(event: ConnectionReadyEvent): void;
-  connectionClosed(event: ConnectionClosedEvent): void;
-  connectionCheckOutStarted(event: ConnectionCheckOutStartedEvent): void;
-  connectionCheckOutFailed(event: ConnectionCheckOutFailedEvent): void;
-  connectionCheckedOut(event: ConnectionCheckedOutEvent): void;
-  connectionCheckedIn(event: ConnectionCheckedInEvent): void;
-} & Omit<ConnectionEvents, 'close' | 'message'>;
-
-/**
- * A pool of connections which dynamically resizes, and emit events related to pool activity
- * @internal
- */
-export class ConnectionPool extends TypedEventEmitter<ConnectionPoolEvents> {
-  options: Readonly<ConnectionPoolOptions>;
-  [kPoolState]: (typeof PoolState)[keyof typeof PoolState];
-  [kServer]: Server;
-  [kConnections]: List<Connection>;
-  [kPending]: number;
-  [kCheckedOut]: Set<Connection>;
-  [kMinPoolSizeTimer]?: NodeJS.Timeout;
-  /**
-   * An integer representing the SDAM generation of the pool
-   */
-  [kGeneration]: number;
-  /**
-   * A map of generations to service ids
-   */
-  [kServiceGenerations]: Map<string, number>;
-  [kConnectionCounter]: Generator<number>;
-  [kCancellationToken]: CancellationToken;
-  [kWaitQueue]: List<WaitQueueMember>;
-  [kMetrics]: ConnectionPoolMetrics;
-  [kProcessingWaitQueue]: boolean;
-
-  /**
-   * Emitted when the connection pool is created.
-   * @event
-   */
-  static readonly CONNECTION_POOL_CREATED = CONNECTION_POOL_CREATED;
-  /**
-   * Emitted once when the connection pool is closed
-   * @event
-   */
-  static readonly CONNECTION_POOL_CLOSED = CONNECTION_POOL_CLOSED;
-  /**
-   * Emitted each time the connection pool is cleared and it's generation incremented
-   * @event
-   */
-  static readonly CONNECTION_POOL_CLEARED = CONNECTION_POOL_CLEARED;
-  /**
-   * Emitted each time the connection pool is marked ready
-   * @event
-   */
-  static readonly CONNECTION_POOL_READY = CONNECTION_POOL_READY;
-  /**
-   * Emitted when a connection is created.
-   * @event
-   */
-  static readonly CONNECTION_CREATED = CONNECTION_CREATED;
-  /**
-   * Emitted when a connection becomes established, and is ready to use
-   * @event
-   */
-  static readonly CONNECTION_READY = CONNECTION_READY;
-  /**
-   * Emitted when a connection is closed
-   * @event
-   */
-  static readonly CONNECTION_CLOSED = CONNECTION_CLOSED;
-  /**
-   * Emitted when an attempt to check out a connection begins
-   * @event
-   */
-  static readonly CONNECTION_CHECK_OUT_STARTED = CONNECTION_CHECK_OUT_STARTED;
-  /**
-   * Emitted when an attempt to check out a connection fails
-   * @event
-   */
-  static readonly CONNECTION_CHECK_OUT_FAILED = CONNECTION_CHECK_OUT_FAILED;
-  /**
-   * Emitted each time a connection is successfully checked out of the connection pool
-   * @event
-   */
-  static readonly CONNECTION_CHECKED_OUT = CONNECTION_CHECKED_OUT;
-  /**
-   * Emitted each time a connection is successfully checked into the connection pool
-   * @event
-   */
-  static readonly CONNECTION_CHECKED_IN = CONNECTION_CHECKED_IN;
-
-  constructor(server: Server, options: ConnectionPoolOptions) {
-    super();
-
-    this.options = Object.freeze({
-      ...options,
-      connectionType: Connection,
-      maxPoolSize: options.maxPoolSize ?? 100,
-      minPoolSize: options.minPoolSize ?? 0,
-      maxConnecting: options.maxConnecting ?? 2,
-      maxIdleTimeMS: options.maxIdleTimeMS ?? 0,
-      waitQueueTimeoutMS: options.waitQueueTimeoutMS ?? 0,
-      minPoolSizeCheckFrequencyMS: options.minPoolSizeCheckFrequencyMS ?? 100,
-      autoEncrypter: options.autoEncrypter,
-      metadata: options.metadata
-    });
-
-    if (this.options.minPoolSize > this.options.maxPoolSize) {
-      throw new MongoInvalidArgumentError(
-        'Connection pool minimum size must not be greater than maximum pool size'
-      );
-    }
-
-    this[kPoolState] = PoolState.paused;
-    this[kServer] = server;
-    this[kConnections] = new List();
-    this[kPending] = 0;
-    this[kCheckedOut] = new Set();
-    this[kMinPoolSizeTimer] = undefined;
-    this[kGeneration] = 0;
-    this[kServiceGenerations] = new Map();
-    this[kConnectionCounter] = makeCounter(1);
-    this[kCancellationToken] = new CancellationToken();
-    this[kCancellationToken].setMaxListeners(Infinity);
-    this[kWaitQueue] = new List();
-    this[kMetrics] = new ConnectionPoolMetrics();
-    this[kProcessingWaitQueue] = false;
-
-    this.mongoLogger = this[kServer].topology.client.mongoLogger;
-    this.component = 'connection';
-
-    process.nextTick(() => {
-      this.emitAndLog(ConnectionPool.CONNECTION_POOL_CREATED, new ConnectionPoolCreatedEvent(this));
-    });
-  }
-
-  /** The address of the endpoint the pool is connected to */
-  get address(): string {
-    return this.options.hostAddress.toString();
-  }
-
-  /**
-   * Check if the pool has been closed
-   *
-   * TODO(NODE-3263): We can remove this property once shell no longer needs it
-   */
-  get closed(): boolean {
-    return this[kPoolState] === PoolState.closed;
-  }
-
-  /** An integer representing the SDAM generation of the pool */
-  get generation(): number {
-    return this[kGeneration];
-  }
-
-  /** An integer expressing how many total connections (available + pending + in use) the pool currently has */
-  get totalConnectionCount(): number {
-    return (
-      this.availableConnectionCount + this.pendingConnectionCount + this.currentCheckedOutCount
-    );
-  }
-
-  /** An integer expressing how many connections are currently available in the pool. */
-  get availableConnectionCount(): number {
-    return this[kConnections].length;
-  }
-
-  get pendingConnectionCount(): number {
-    return this[kPending];
-  }
-
-  get currentCheckedOutCount(): number {
-    return this[kCheckedOut].size;
-  }
-
-  get waitQueueSize(): number {
-    return this[kWaitQueue].length;
-  }
-
-  get loadBalanced(): boolean {
-    return this.options.loadBalanced;
-  }
-
-  get serviceGenerations(): Map<string, number> {
-    return this[kServiceGenerations];
-  }
-
-  get serverError() {
-    return this[kServer].description.error;
-  }
-
-  /**
-   * This is exposed ONLY for use in mongosh, to enable
-   * killing all connections if a user quits the shell with
-   * operations in progress.
-   *
-   * This property may be removed as a part of NODE-3263.
-   */
-  get checkedOutConnections() {
-    return this[kCheckedOut];
-  }
-
-  /**
-   * Get the metrics information for the pool when a wait queue timeout occurs.
-   */
-  private waitQueueErrorMetrics(): string {
-    return this[kMetrics].info(this.options.maxPoolSize);
-  }
-
-  /**
-   * Set the pool state to "ready"
-   */
-  ready(): void {
-    if (this[kPoolState] !== PoolState.paused) {
-      return;
-    }
-    this[kPoolState] = PoolState.ready;
-    this.emitAndLog(ConnectionPool.CONNECTION_POOL_READY, new ConnectionPoolReadyEvent(this));
-    clearTimeout(this[kMinPoolSizeTimer]);
-    this.ensureMinPoolSize();
-  }
-
-  /**
-   * Check a connection out of this pool. The connection will continue to be tracked, but no reference to it
-   * will be held by the pool. This means that if a connection is checked out it MUST be checked back in or
-   * explicitly destroyed by the new owner.
-   */
-  checkOut(callback: Callback<Connection>): void {
-    this.emitAndLog(
-      ConnectionPool.CONNECTION_CHECK_OUT_STARTED,
-      new ConnectionCheckOutStartedEvent(this)
-    );
-
-    const waitQueueTimeoutMS = this.options.waitQueueTimeoutMS;
-
-    const waitQueueMember: WaitQueueMember = {
-      callback,
-      timeoutController: new TimeoutController(waitQueueTimeoutMS)
-    };
-    waitQueueMember.timeoutController.signal.addEventListener('abort', () => {
-      waitQueueMember[kCancelled] = true;
-      waitQueueMember.timeoutController.clear();
-
-      this.emitAndLog(
-        ConnectionPool.CONNECTION_CHECK_OUT_FAILED,
-        new ConnectionCheckOutFailedEvent(this, 'timeout')
-      );
-      waitQueueMember.callback(
-        new WaitQueueTimeoutError(
-          this.loadBalanced
-            ? this.waitQueueErrorMetrics()
-            : 'Timed out while checking out a connection from connection pool',
-          this.address
-        )
-      );
-    });
-
-    this[kWaitQueue].push(waitQueueMember);
-    process.nextTick(() => this.processWaitQueue());
-  }
-
-  /**
-   * Check a connection into the pool.
-   *
-   * @param connection - The connection to check in
-   */
-  checkIn(connection: Connection): void {
-    if (!this[kCheckedOut].has(connection)) {
-      return;
-    }
-    const poolClosed = this.closed;
-    const stale = this.connectionIsStale(connection);
-    const willDestroy = !!(poolClosed || stale || connection.closed);
-
-    if (!willDestroy) {
-      connection.markAvailable();
-      this[kConnections].unshift(connection);
-    }
-
-    this[kCheckedOut].delete(connection);
-    this.emitAndLog(
-      ConnectionPool.CONNECTION_CHECKED_IN,
-      new ConnectionCheckedInEvent(this, connection)
-    );
-
-    if (willDestroy) {
-      const reason = connection.closed ? 'error' : poolClosed ? 'poolClosed' : 'stale';
-      this.destroyConnection(connection, reason);
-    }
-
-    process.nextTick(() => this.processWaitQueue());
-  }
-
-  /**
-   * Clear the pool
-   *
-   * Pool reset is handled by incrementing the pool's generation count. Any existing connection of a
-   * previous generation will eventually be pruned during subsequent checkouts.
-   */
-  clear(options: { serviceId?: ObjectId; interruptInUseConnections?: boolean } = {}): void {
-    if (this.closed) {
-      return;
-    }
-
-    // handle load balanced case
-    if (this.loadBalanced) {
-      const { serviceId } = options;
-      if (!serviceId) {
-        throw new MongoRuntimeError(
-          'ConnectionPool.clear() called in load balanced mode with no serviceId.'
-        );
-      }
-      const sid = serviceId.toHexString();
-      const generation = this.serviceGenerations.get(sid);
-      // Only need to worry if the generation exists, since it should
-      // always be there but typescript needs the check.
-      if (generation == null) {
-        throw new MongoRuntimeError('Service generations are required in load balancer mode.');
-      } else {
-        // Increment the generation for the service id.
-        this.serviceGenerations.set(sid, generation + 1);
-      }
-      this.emitAndLog(
-        ConnectionPool.CONNECTION_POOL_CLEARED,
-        new ConnectionPoolClearedEvent(this, { serviceId })
-      );
-      return;
-    }
-    // handle non load-balanced case
-    const interruptInUseConnections = options.interruptInUseConnections ?? false;
-    const oldGeneration = this[kGeneration];
-    this[kGeneration] += 1;
-    const alreadyPaused = this[kPoolState] === PoolState.paused;
-    this[kPoolState] = PoolState.paused;
-
-    this.clearMinPoolSizeTimer();
-    if (!alreadyPaused) {
-      this.emitAndLog(
-        ConnectionPool.CONNECTION_POOL_CLEARED,
-        new ConnectionPoolClearedEvent(this, {
-          interruptInUseConnections
-        })
-      );
-    }
-
-    if (interruptInUseConnections) {
-      process.nextTick(() => this.interruptInUseConnections(oldGeneration));
-    }
-
-    this.processWaitQueue();
-  }
-
-  /**
-   * Closes all stale in-use connections in the pool with a resumable PoolClearedOnNetworkError.
-   *
-   * Only connections where `connection.generation <= minGeneration` are killed.
-   */
-  private interruptInUseConnections(minGeneration: number) {
-    for (const connection of this[kCheckedOut]) {
-      if (connection.generation <= minGeneration) {
-        this.checkIn(connection);
-        connection.onError(new PoolClearedOnNetworkError(this));
-      }
-    }
-  }
-
-  /** Close the pool */
-  close(callback: Callback<void>): void;
-  close(options: CloseOptions, callback: Callback<void>): void;
-  close(_options?: CloseOptions | Callback<void>, _cb?: Callback<void>): void {
-    let options = _options as CloseOptions;
-    const callback = (_cb ?? _options) as Callback<void>;
-    if (typeof options === 'function') {
-      options = {};
-    }
-
-    options = Object.assign({ force: false }, options);
-    if (this.closed) {
-      return callback();
-    }
-
-    // immediately cancel any in-flight connections
-    this[kCancellationToken].emit('cancel');
-
-    // end the connection counter
-    if (typeof this[kConnectionCounter].return === 'function') {
-      this[kConnectionCounter].return(undefined);
-    }
-
-    this[kPoolState] = PoolState.closed;
-    this.clearMinPoolSizeTimer();
-    this.processWaitQueue();
-
-    eachAsync<Connection>(
-      this[kConnections].toArray(),
-      (conn, cb) => {
-        this.emitAndLog(
-          ConnectionPool.CONNECTION_CLOSED,
-          new ConnectionClosedEvent(this, conn, 'poolClosed')
-        );
-        conn.destroy({ force: !!options.force }, cb);
-      },
-      err => {
-        this[kConnections].clear();
-        this.emitAndLog(ConnectionPool.CONNECTION_POOL_CLOSED, new ConnectionPoolClosedEvent(this));
-        callback(err);
-      }
-    );
-  }
-
-  /**
-   * Runs a lambda with an implicitly checked out connection, checking that connection back in when the lambda
-   * has completed by calling back.
-   *
-   * NOTE: please note the required signature of `fn`
-   *
-   * @remarks When in load balancer mode, connections can be pinned to cursors or transactions.
-   *   In these cases we pass the connection in to this method to ensure it is used and a new
-   *   connection is not checked out.
-   *
-   * @param conn - A pinned connection for use in load balancing mode.
-   * @param fn - A function which operates on a managed connection
-   * @param callback - The original callback
-   */
-  withConnection(
-    conn: Connection | undefined,
-    fn: WithConnectionCallback,
-    callback: Callback<Connection>
-  ): void {
-    if (conn) {
-      // use the provided connection, and do _not_ check it in after execution
-      fn(undefined, conn, (fnErr, result) => {
-        if (fnErr) {
-          return this.withReauthentication(fnErr, conn, fn, callback);
-        }
-        callback(undefined, result);
-      });
-      return;
-    }
-
-    this.checkOut((err, conn) => {
-      // don't callback with `err` here, we might want to act upon it inside `fn`
-      fn(err as MongoError, conn, (fnErr, result) => {
-        if (fnErr) {
-          if (conn) {
-            this.withReauthentication(fnErr, conn, fn, callback);
-          } else {
-            callback(fnErr);
-          }
-        } else {
-          callback(undefined, result);
-        }
-
-        if (conn) {
-          this.checkIn(conn);
-        }
-      });
-    });
-  }
-
-  private withReauthentication(
-    fnErr: AnyError,
-    conn: Connection,
-    fn: WithConnectionCallback,
-    callback: Callback<Connection>
-  ) {
-    if (fnErr instanceof MongoError && fnErr.code === MONGODB_ERROR_CODES.Reauthenticate) {
-      this.reauthenticate(conn, fn, (error, res) => {
-        if (error) {
-          return callback(error);
-        }
-        callback(undefined, res);
-      });
-    } else {
-      callback(fnErr);
-    }
-  }
-
-  /**
-   * Reauthenticate on the same connection and then retry the operation.
-   */
-  private reauthenticate(
-    connection: Connection,
-    fn: WithConnectionCallback,
-    callback: Callback
-  ): void {
-    const authContext = connection.authContext;
-    if (!authContext) {
-      return callback(new MongoRuntimeError('No auth context found on connection.'));
-    }
-    const credentials = authContext.credentials;
-    if (!credentials) {
-      return callback(
-        new MongoMissingCredentialsError(
-          'Connection is missing credentials when asked to reauthenticate'
-        )
-      );
-    }
-    const resolvedCredentials = credentials.resolveAuthMechanism(connection.hello || undefined);
-    const provider = AUTH_PROVIDERS.get(resolvedCredentials.mechanism);
-    if (!provider) {
-      return callback(
-        new MongoMissingCredentialsError(
-          `Reauthenticate failed due to no auth provider for ${credentials.mechanism}`
-        )
-      );
-    }
-    provider.reauth(authContext).then(
-      () => {
-        fn(undefined, connection, (fnErr, fnResult) => {
-          if (fnErr) {
-            return callback(fnErr);
-          }
-          callback(undefined, fnResult);
-        });
-      },
-      error => callback(error)
-    );
-  }
-
-  /** Clear the min pool size timer */
-  private clearMinPoolSizeTimer(): void {
-    const minPoolSizeTimer = this[kMinPoolSizeTimer];
-    if (minPoolSizeTimer) {
-      clearTimeout(minPoolSizeTimer);
-    }
-  }
-
-  private destroyConnection(
-    connection: Connection,
-    reason: 'error' | 'idle' | 'stale' | 'poolClosed'
-  ) {
-    this.emitAndLog(
-      ConnectionPool.CONNECTION_CLOSED,
-      new ConnectionClosedEvent(this, connection, reason)
-    );
-    // destroy the connection
-    process.nextTick(() => connection.destroy({ force: false }));
-  }
-
-  private connectionIsStale(connection: Connection) {
-    const serviceId = connection.serviceId;
-    if (this.loadBalanced && serviceId) {
-      const sid = serviceId.toHexString();
-      const generation = this.serviceGenerations.get(sid);
-      return connection.generation !== generation;
-    }
-
-    return connection.generation !== this[kGeneration];
-  }
-
-  private connectionIsIdle(connection: Connection) {
-    return !!(this.options.maxIdleTimeMS && connection.idleTime > this.options.maxIdleTimeMS);
-  }
-
-  /**
-   * Destroys a connection if the connection is perished.
-   *
-   * @returns `true` if the connection was destroyed, `false` otherwise.
-   */
-  private destroyConnectionIfPerished(connection: Connection): boolean {
-    const isStale = this.connectionIsStale(connection);
-    const isIdle = this.connectionIsIdle(connection);
-    if (!isStale && !isIdle && !connection.closed) {
-      return false;
-    }
-    const reason = connection.closed ? 'error' : isStale ? 'stale' : 'idle';
-    this.destroyConnection(connection, reason);
-    return true;
-  }
-
-  private createConnection(callback: Callback<Connection>) {
-    const connectOptions: ConnectionOptions = {
-      ...this.options,
-      id: this[kConnectionCounter].next().value,
-      generation: this[kGeneration],
-      cancellationToken: this[kCancellationToken]
-    };
-
-    this[kPending]++;
-    // This is our version of a "virtual" no-I/O connection as the spec requires
-    this.emitAndLog(
-      ConnectionPool.CONNECTION_CREATED,
-      new ConnectionCreatedEvent(this, { id: connectOptions.id })
-    );
-
-    connect(connectOptions, (err, connection) => {
-      if (err || !connection) {
-        this[kPending]--;
-        this.emitAndLog(
-          ConnectionPool.CONNECTION_CLOSED,
-          new ConnectionClosedEvent(
-            this,
-            { id: connectOptions.id, serviceId: undefined },
-            'error',
-            // TODO(NODE-5192): Remove this cast
-            err as MongoError
-          )
-        );
-        if (err instanceof MongoNetworkError || err instanceof MongoServerError) {
-          err.connectionGeneration = connectOptions.generation;
-        }
-        callback(err ?? new MongoRuntimeError('Connection creation failed without error'));
-        return;
-      }
-
-      // The pool might have closed since we started trying to create a connection
-      if (this[kPoolState] !== PoolState.ready) {
-        this[kPending]--;
-        connection.destroy({ force: true });
-        callback(this.closed ? new PoolClosedError(this) : new PoolClearedError(this));
-        return;
-      }
-
-      // forward all events from the connection to the pool
-      for (const event of [...APM_EVENTS, Connection.CLUSTER_TIME_RECEIVED]) {
-        connection.on(event, (e: any) => this.emit(event, e));
-      }
-
-      if (this.loadBalanced) {
-        connection.on(Connection.PINNED, pinType => this[kMetrics].markPinned(pinType));
-        connection.on(Connection.UNPINNED, pinType => this[kMetrics].markUnpinned(pinType));
-
-        const serviceId = connection.serviceId;
-        if (serviceId) {
-          let generation;
-          const sid = serviceId.toHexString();
-          if ((generation = this.serviceGenerations.get(sid))) {
-            connection.generation = generation;
-          } else {
-            this.serviceGenerations.set(sid, 0);
-            connection.generation = 0;
-          }
-        }
-      }
-
-      connection.markAvailable();
-      this.emitAndLog(ConnectionPool.CONNECTION_READY, new ConnectionReadyEvent(this, connection));
-
-      this[kPending]--;
-      callback(undefined, connection);
-      return;
-    });
-  }
-
-  private ensureMinPoolSize() {
-    const minPoolSize = this.options.minPoolSize;
-    if (this[kPoolState] !== PoolState.ready || minPoolSize === 0) {
-      return;
-    }
-
-    this[kConnections].prune(connection => this.destroyConnectionIfPerished(connection));
-
-    if (
-      this.totalConnectionCount < minPoolSize &&
-      this.pendingConnectionCount < this.options.maxConnecting
-    ) {
-      // NOTE: ensureMinPoolSize should not try to get all the pending
-      // connection permits because that potentially delays the availability of
-      // the connection to a checkout request
-      this.createConnection((err, connection) => {
-        if (err) {
-          this[kServer].handleError(err);
-        }
-        if (!err && connection) {
-          this[kConnections].push(connection);
-          process.nextTick(() => this.processWaitQueue());
-        }
-        if (this[kPoolState] === PoolState.ready) {
-          clearTimeout(this[kMinPoolSizeTimer]);
-          this[kMinPoolSizeTimer] = setTimeout(
-            () => this.ensureMinPoolSize(),
-            this.options.minPoolSizeCheckFrequencyMS
-          );
-        }
-      });
-    } else {
-      clearTimeout(this[kMinPoolSizeTimer]);
-      this[kMinPoolSizeTimer] = setTimeout(
-        () => this.ensureMinPoolSize(),
-        this.options.minPoolSizeCheckFrequencyMS
-      );
-    }
-  }
-
-  private processWaitQueue() {
-    if (this[kProcessingWaitQueue]) {
-      return;
-    }
-    this[kProcessingWaitQueue] = true;
-
-    while (this.waitQueueSize) {
-      const waitQueueMember = this[kWaitQueue].first();
-      if (!waitQueueMember) {
-        this[kWaitQueue].shift();
-        continue;
-      }
-
-      if (waitQueueMember[kCancelled]) {
-        this[kWaitQueue].shift();
-        continue;
-      }
-
-      if (this[kPoolState] !== PoolState.ready) {
-        const reason = this.closed ? 'poolClosed' : 'connectionError';
-        const error = this.closed ? new PoolClosedError(this) : new PoolClearedError(this);
-        this.emitAndLog(
-          ConnectionPool.CONNECTION_CHECK_OUT_FAILED,
-          new ConnectionCheckOutFailedEvent(this, reason, error)
-        );
-        waitQueueMember.timeoutController.clear();
-        this[kWaitQueue].shift();
-        waitQueueMember.callback(error);
-        continue;
-      }
-
-      if (!this.availableConnectionCount) {
-        break;
-      }
-
-      const connection = this[kConnections].shift();
-      if (!connection) {
-        break;
-      }
-
-      if (!this.destroyConnectionIfPerished(connection)) {
-        this[kCheckedOut].add(connection);
-        this.emitAndLog(
-          ConnectionPool.CONNECTION_CHECKED_OUT,
-          new ConnectionCheckedOutEvent(this, connection)
-        );
-        waitQueueMember.timeoutController.clear();
-
-        this[kWaitQueue].shift();
-        waitQueueMember.callback(undefined, connection);
-      }
-    }
-
-    const { maxPoolSize, maxConnecting } = this.options;
-    while (
-      this.waitQueueSize > 0 &&
-      this.pendingConnectionCount < maxConnecting &&
-      (maxPoolSize === 0 || this.totalConnectionCount < maxPoolSize)
-    ) {
-      const waitQueueMember = this[kWaitQueue].shift();
-      if (!waitQueueMember || waitQueueMember[kCancelled]) {
-        continue;
-      }
-      this.createConnection((err, connection) => {
-        if (waitQueueMember[kCancelled]) {
-          if (!err && connection) {
-            this[kConnections].push(connection);
-          }
-        } else {
-          if (err) {
-            this.emitAndLog(
-              ConnectionPool.CONNECTION_CHECK_OUT_FAILED,
-              // TODO(NODE-5192): Remove this cast
-              new ConnectionCheckOutFailedEvent(this, 'connectionError', err as MongoError)
-            );
-          } else if (connection) {
-            this[kCheckedOut].add(connection);
-            this.emitAndLog(
-              ConnectionPool.CONNECTION_CHECKED_OUT,
-              new ConnectionCheckedOutEvent(this, connection)
-            );
-          }
-
-          waitQueueMember.timeoutController.clear();
-          waitQueueMember.callback(err, connection);
-        }
-        process.nextTick(() => this.processWaitQueue());
-      });
-    }
-    this[kProcessingWaitQueue] = false;
-  }
-}
-
-/**
- * A callback provided to `withConnection`
- * @internal
- *
- * @param error - An error instance representing the error during the execution.
- * @param connection - The managed connection which was checked out of the pool.
- * @param callback - A function to call back after connection management is complete
- */
-export type WithConnectionCallback = (
-  error: MongoError | undefined,
-  connection: Connection | undefined,
-  callback: Callback<Connection>
-) => void;
diff --git a/server/data-import/node_modules/mongodb/src/cmap/connection_pool_events.ts b/server/data-import/node_modules/mongodb/src/cmap/connection_pool_events.ts
deleted file mode 100644
index 379bc2d521749241b728050aeda95581a3b49287..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/connection_pool_events.ts
+++ /dev/null
@@ -1,268 +0,0 @@
-import type { ObjectId } from '../bson';
-import {
-  CONNECTION_CHECK_OUT_FAILED,
-  CONNECTION_CHECK_OUT_STARTED,
-  CONNECTION_CHECKED_IN,
-  CONNECTION_CHECKED_OUT,
-  CONNECTION_CLOSED,
-  CONNECTION_CREATED,
-  CONNECTION_POOL_CLEARED,
-  CONNECTION_POOL_CLOSED,
-  CONNECTION_POOL_CREATED,
-  CONNECTION_POOL_READY,
-  CONNECTION_READY
-} from '../constants';
-import type { MongoError } from '../error';
-import type { Connection } from './connection';
-import type { ConnectionPool, ConnectionPoolOptions } from './connection_pool';
-
-/**
- * The base export class for all monitoring events published from the connection pool
- * @public
- * @category Event
- */
-export abstract class ConnectionPoolMonitoringEvent {
-  /** A timestamp when the event was created  */
-  time: Date;
-  /** The address (host/port pair) of the pool */
-  address: string;
-  /** @internal */
-  abstract name:
-    | typeof CONNECTION_CHECK_OUT_FAILED
-    | typeof CONNECTION_CHECK_OUT_STARTED
-    | typeof CONNECTION_CHECKED_IN
-    | typeof CONNECTION_CHECKED_OUT
-    | typeof CONNECTION_CLOSED
-    | typeof CONNECTION_CREATED
-    | typeof CONNECTION_POOL_CLEARED
-    | typeof CONNECTION_POOL_CLOSED
-    | typeof CONNECTION_POOL_CREATED
-    | typeof CONNECTION_POOL_READY
-    | typeof CONNECTION_READY;
-
-  /** @internal */
-  constructor(pool: ConnectionPool) {
-    this.time = new Date();
-    this.address = pool.address;
-  }
-}
-
-/**
- * An event published when a connection pool is created
- * @public
- * @category Event
- */
-export class ConnectionPoolCreatedEvent extends ConnectionPoolMonitoringEvent {
-  /** The options used to create this connection pool */
-  options: Pick<
-    ConnectionPoolOptions,
-    'maxPoolSize' | 'minPoolSize' | 'maxConnecting' | 'maxIdleTimeMS' | 'waitQueueTimeoutMS'
-  >;
-  /** @internal */
-  name = CONNECTION_POOL_CREATED;
-
-  /** @internal */
-  constructor(pool: ConnectionPool) {
-    super(pool);
-    const { maxConnecting, maxPoolSize, minPoolSize, maxIdleTimeMS, waitQueueTimeoutMS } =
-      pool.options;
-    this.options = { maxConnecting, maxPoolSize, minPoolSize, maxIdleTimeMS, waitQueueTimeoutMS };
-  }
-}
-
-/**
- * An event published when a connection pool is ready
- * @public
- * @category Event
- */
-export class ConnectionPoolReadyEvent extends ConnectionPoolMonitoringEvent {
-  /** @internal */
-  name = CONNECTION_POOL_READY;
-
-  /** @internal */
-  constructor(pool: ConnectionPool) {
-    super(pool);
-  }
-}
-
-/**
- * An event published when a connection pool is closed
- * @public
- * @category Event
- */
-export class ConnectionPoolClosedEvent extends ConnectionPoolMonitoringEvent {
-  /** @internal */
-  name = CONNECTION_POOL_CLOSED;
-
-  /** @internal */
-  constructor(pool: ConnectionPool) {
-    super(pool);
-  }
-}
-
-/**
- * An event published when a connection pool creates a new connection
- * @public
- * @category Event
- */
-export class ConnectionCreatedEvent extends ConnectionPoolMonitoringEvent {
-  /** A monotonically increasing, per-pool id for the newly created connection */
-  connectionId: number | '<monitor>';
-  /** @internal */
-  name = CONNECTION_CREATED;
-
-  /** @internal */
-  constructor(pool: ConnectionPool, connection: { id: number | '<monitor>' }) {
-    super(pool);
-    this.connectionId = connection.id;
-  }
-}
-
-/**
- * An event published when a connection is ready for use
- * @public
- * @category Event
- */
-export class ConnectionReadyEvent extends ConnectionPoolMonitoringEvent {
-  /** The id of the connection */
-  connectionId: number | '<monitor>';
-  /** @internal */
-  name = CONNECTION_READY;
-
-  /** @internal */
-  constructor(pool: ConnectionPool, connection: Connection) {
-    super(pool);
-    this.connectionId = connection.id;
-  }
-}
-
-/**
- * An event published when a connection is closed
- * @public
- * @category Event
- */
-export class ConnectionClosedEvent extends ConnectionPoolMonitoringEvent {
-  /** The id of the connection */
-  connectionId: number | '<monitor>';
-  /** The reason the connection was closed */
-  reason: string;
-  serviceId?: ObjectId;
-  /** @internal */
-  name = CONNECTION_CLOSED;
-  /** @internal */
-  error: MongoError | null;
-
-  /** @internal */
-  constructor(
-    pool: ConnectionPool,
-    connection: Pick<Connection, 'id' | 'serviceId'>,
-    reason: 'idle' | 'stale' | 'poolClosed' | 'error',
-    error?: MongoError
-  ) {
-    super(pool);
-    this.connectionId = connection.id;
-    this.reason = reason;
-    this.serviceId = connection.serviceId;
-    this.error = error ?? null;
-  }
-}
-
-/**
- * An event published when a request to check a connection out begins
- * @public
- * @category Event
- */
-export class ConnectionCheckOutStartedEvent extends ConnectionPoolMonitoringEvent {
-  /** @internal */
-  name = CONNECTION_CHECK_OUT_STARTED;
-
-  /** @internal */
-  constructor(pool: ConnectionPool) {
-    super(pool);
-  }
-}
-
-/**
- * An event published when a request to check a connection out fails
- * @public
- * @category Event
- */
-export class ConnectionCheckOutFailedEvent extends ConnectionPoolMonitoringEvent {
-  /** The reason the attempt to check out failed */
-  reason: string;
-  /** @internal */
-  error?: MongoError;
-  /** @internal */
-  name = CONNECTION_CHECK_OUT_FAILED;
-
-  /** @internal */
-  constructor(
-    pool: ConnectionPool,
-    reason: 'poolClosed' | 'timeout' | 'connectionError',
-    error?: MongoError
-  ) {
-    super(pool);
-    this.reason = reason;
-    this.error = error;
-  }
-}
-
-/**
- * An event published when a connection is checked out of the connection pool
- * @public
- * @category Event
- */
-export class ConnectionCheckedOutEvent extends ConnectionPoolMonitoringEvent {
-  /** The id of the connection */
-  connectionId: number | '<monitor>';
-  /** @internal */
-  name = CONNECTION_CHECKED_OUT;
-
-  /** @internal */
-  constructor(pool: ConnectionPool, connection: Connection) {
-    super(pool);
-    this.connectionId = connection.id;
-  }
-}
-
-/**
- * An event published when a connection is checked into the connection pool
- * @public
- * @category Event
- */
-export class ConnectionCheckedInEvent extends ConnectionPoolMonitoringEvent {
-  /** The id of the connection */
-  connectionId: number | '<monitor>';
-  /** @internal */
-  name = CONNECTION_CHECKED_IN;
-
-  /** @internal */
-  constructor(pool: ConnectionPool, connection: Connection) {
-    super(pool);
-    this.connectionId = connection.id;
-  }
-}
-
-/**
- * An event published when a connection pool is cleared
- * @public
- * @category Event
- */
-export class ConnectionPoolClearedEvent extends ConnectionPoolMonitoringEvent {
-  /** @internal */
-  serviceId?: ObjectId;
-
-  interruptInUseConnections?: boolean;
-  /** @internal */
-  name = CONNECTION_POOL_CLEARED;
-
-  /** @internal */
-  constructor(
-    pool: ConnectionPool,
-    options: { serviceId?: ObjectId; interruptInUseConnections?: boolean } = {}
-  ) {
-    super(pool);
-    this.serviceId = options.serviceId;
-    this.interruptInUseConnections = options.interruptInUseConnections;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/errors.ts b/server/data-import/node_modules/mongodb/src/cmap/errors.ts
deleted file mode 100644
index 9d51aa02c860b881b35ceb2c553d949b115b37e4..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/errors.ts
+++ /dev/null
@@ -1,119 +0,0 @@
-import { MongoDriverError, MongoErrorLabel, MongoNetworkError } from '../error';
-import type { ConnectionPool } from './connection_pool';
-
-/**
- * An error indicating a connection pool is closed
- * @category Error
- */
-export class PoolClosedError extends MongoDriverError {
-  /** The address of the connection pool */
-  address: string;
-
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(pool: ConnectionPool) {
-    super('Attempted to check out a connection from closed connection pool');
-    this.address = pool.address;
-  }
-
-  override get name(): string {
-    return 'MongoPoolClosedError';
-  }
-}
-
-/**
- * An error indicating a connection pool is currently paused
- * @category Error
- */
-export class PoolClearedError extends MongoNetworkError {
-  /** The address of the connection pool */
-  address: string;
-
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(pool: ConnectionPool, message?: string) {
-    const errorMessage = message
-      ? message
-      : `Connection pool for ${pool.address} was cleared because another operation failed with: "${pool.serverError?.message}"`;
-    super(errorMessage, pool.serverError ? { cause: pool.serverError } : undefined);
-    this.address = pool.address;
-
-    this.addErrorLabel(MongoErrorLabel.PoolRequstedRetry);
-  }
-
-  override get name(): string {
-    return 'MongoPoolClearedError';
-  }
-}
-
-/**
- * An error indicating that a connection pool has been cleared after the monitor for that server timed out.
- * @category Error
- */
-export class PoolClearedOnNetworkError extends PoolClearedError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(pool: ConnectionPool) {
-    super(pool, `Connection to ${pool.address} interrupted due to server monitor timeout`);
-  }
-
-  override get name(): string {
-    return 'PoolClearedOnNetworkError';
-  }
-}
-
-/**
- * An error thrown when a request to check out a connection times out
- * @category Error
- */
-export class WaitQueueTimeoutError extends MongoDriverError {
-  /** The address of the connection pool */
-  address: string;
-
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string, address: string) {
-    super(message);
-    this.address = address;
-  }
-
-  override get name(): string {
-    return 'MongoWaitQueueTimeoutError';
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/handshake/client_metadata.ts b/server/data-import/node_modules/mongodb/src/cmap/handshake/client_metadata.ts
deleted file mode 100644
index fb1ba40b14eefb47899627814cd7bd6087a1812c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/handshake/client_metadata.ts
+++ /dev/null
@@ -1,273 +0,0 @@
-import * as os from 'os';
-import * as process from 'process';
-
-import { BSON, Int32 } from '../../bson';
-import { MongoInvalidArgumentError } from '../../error';
-import type { MongoOptions } from '../../mongo_client';
-
-// eslint-disable-next-line @typescript-eslint/no-var-requires
-const NODE_DRIVER_VERSION = require('../../../package.json').version;
-
-/**
- * @public
- * @see https://github.com/mongodb/specifications/blob/master/source/mongodb-handshake/handshake.rst#hello-command
- */
-export interface ClientMetadata {
-  driver: {
-    name: string;
-    version: string;
-  };
-  os: {
-    type: string;
-    name?: NodeJS.Platform;
-    architecture?: string;
-    version?: string;
-  };
-  platform: string;
-  application?: {
-    name: string;
-  };
-  /** FaaS environment information */
-  env?: {
-    name: 'aws.lambda' | 'gcp.func' | 'azure.func' | 'vercel';
-    timeout_sec?: Int32;
-    memory_mb?: Int32;
-    region?: string;
-    url?: string;
-  };
-}
-
-/** @public */
-export interface ClientMetadataOptions {
-  driverInfo?: {
-    name?: string;
-    version?: string;
-    platform?: string;
-  };
-  appName?: string;
-}
-
-/** @internal */
-export class LimitedSizeDocument {
-  private document = new Map();
-  /** BSON overhead: Int32 + Null byte */
-  private documentSize = 5;
-  constructor(private maxSize: number) {}
-
-  /** Only adds key/value if the bsonByteLength is less than MAX_SIZE */
-  public ifItFitsItSits(key: string, value: Record<string, any> | string): boolean {
-    // The BSON byteLength of the new element is the same as serializing it to its own document
-    // subtracting the document size int32 and the null terminator.
-    const newElementSize = BSON.serialize(new Map().set(key, value)).byteLength - 5;
-
-    if (newElementSize + this.documentSize > this.maxSize) {
-      return false;
-    }
-
-    this.documentSize += newElementSize;
-
-    this.document.set(key, value);
-
-    return true;
-  }
-
-  toObject(): ClientMetadata {
-    return BSON.deserialize(BSON.serialize(this.document), {
-      promoteLongs: false,
-      promoteBuffers: false,
-      promoteValues: false,
-      useBigInt64: false
-    }) as ClientMetadata;
-  }
-}
-
-type MakeClientMetadataOptions = Pick<MongoOptions, 'appName' | 'driverInfo'>;
-/**
- * From the specs:
- * Implementors SHOULD cumulatively update fields in the following order until the document is under the size limit:
- * 1. Omit fields from `env` except `env.name`.
- * 2. Omit fields from `os` except `os.type`.
- * 3. Omit the `env` document entirely.
- * 4. Truncate `platform`. -- special we do not truncate this field
- */
-export function makeClientMetadata(options: MakeClientMetadataOptions): ClientMetadata {
-  const metadataDocument = new LimitedSizeDocument(512);
-
-  const { appName = '' } = options;
-  // Add app name first, it must be sent
-  if (appName.length > 0) {
-    const name =
-      Buffer.byteLength(appName, 'utf8') <= 128
-        ? options.appName
-        : Buffer.from(appName, 'utf8').subarray(0, 128).toString('utf8');
-    metadataDocument.ifItFitsItSits('application', { name });
-  }
-
-  const { name = '', version = '', platform = '' } = options.driverInfo;
-
-  const driverInfo = {
-    name: name.length > 0 ? `nodejs|${name}` : 'nodejs',
-    version: version.length > 0 ? `${NODE_DRIVER_VERSION}|${version}` : NODE_DRIVER_VERSION
-  };
-
-  if (!metadataDocument.ifItFitsItSits('driver', driverInfo)) {
-    throw new MongoInvalidArgumentError(
-      'Unable to include driverInfo name and version, metadata cannot exceed 512 bytes'
-    );
-  }
-
-  let runtimeInfo = getRuntimeInfo();
-  if (platform.length > 0) {
-    runtimeInfo = `${runtimeInfo}|${platform}`;
-  }
-
-  if (!metadataDocument.ifItFitsItSits('platform', runtimeInfo)) {
-    throw new MongoInvalidArgumentError(
-      'Unable to include driverInfo platform, metadata cannot exceed 512 bytes'
-    );
-  }
-
-  // Note: order matters, os.type is last so it will be removed last if we're at maxSize
-  const osInfo = new Map()
-    .set('name', process.platform)
-    .set('architecture', process.arch)
-    .set('version', os.release())
-    .set('type', os.type());
-
-  if (!metadataDocument.ifItFitsItSits('os', osInfo)) {
-    for (const key of osInfo.keys()) {
-      osInfo.delete(key);
-      if (osInfo.size === 0) break;
-      if (metadataDocument.ifItFitsItSits('os', osInfo)) break;
-    }
-  }
-
-  const faasEnv = getFAASEnv();
-  if (faasEnv != null) {
-    if (!metadataDocument.ifItFitsItSits('env', faasEnv)) {
-      for (const key of faasEnv.keys()) {
-        faasEnv.delete(key);
-        if (faasEnv.size === 0) break;
-        if (metadataDocument.ifItFitsItSits('env', faasEnv)) break;
-      }
-    }
-  }
-
-  return metadataDocument.toObject();
-}
-
-/**
- * Collects FaaS metadata.
- * - `name` MUST be the last key in the Map returned.
- */
-export function getFAASEnv(): Map<string, string | Int32> | null {
-  const {
-    AWS_EXECUTION_ENV = '',
-    AWS_LAMBDA_RUNTIME_API = '',
-    FUNCTIONS_WORKER_RUNTIME = '',
-    K_SERVICE = '',
-    FUNCTION_NAME = '',
-    VERCEL = '',
-    AWS_LAMBDA_FUNCTION_MEMORY_SIZE = '',
-    AWS_REGION = '',
-    FUNCTION_MEMORY_MB = '',
-    FUNCTION_REGION = '',
-    FUNCTION_TIMEOUT_SEC = '',
-    VERCEL_REGION = ''
-  } = process.env;
-
-  const isAWSFaaS =
-    AWS_EXECUTION_ENV.startsWith('AWS_Lambda_') || AWS_LAMBDA_RUNTIME_API.length > 0;
-  const isAzureFaaS = FUNCTIONS_WORKER_RUNTIME.length > 0;
-  const isGCPFaaS = K_SERVICE.length > 0 || FUNCTION_NAME.length > 0;
-  const isVercelFaaS = VERCEL.length > 0;
-
-  // Note: order matters, name must always be the last key
-  const faasEnv = new Map();
-
-  // When isVercelFaaS is true so is isAWSFaaS; Vercel inherits the AWS env
-  if (isVercelFaaS && !(isAzureFaaS || isGCPFaaS)) {
-    if (VERCEL_REGION.length > 0) {
-      faasEnv.set('region', VERCEL_REGION);
-    }
-
-    faasEnv.set('name', 'vercel');
-    return faasEnv;
-  }
-
-  if (isAWSFaaS && !(isAzureFaaS || isGCPFaaS || isVercelFaaS)) {
-    if (AWS_REGION.length > 0) {
-      faasEnv.set('region', AWS_REGION);
-    }
-
-    if (
-      AWS_LAMBDA_FUNCTION_MEMORY_SIZE.length > 0 &&
-      Number.isInteger(+AWS_LAMBDA_FUNCTION_MEMORY_SIZE)
-    ) {
-      faasEnv.set('memory_mb', new Int32(AWS_LAMBDA_FUNCTION_MEMORY_SIZE));
-    }
-
-    faasEnv.set('name', 'aws.lambda');
-    return faasEnv;
-  }
-
-  if (isAzureFaaS && !(isGCPFaaS || isAWSFaaS || isVercelFaaS)) {
-    faasEnv.set('name', 'azure.func');
-    return faasEnv;
-  }
-
-  if (isGCPFaaS && !(isAzureFaaS || isAWSFaaS || isVercelFaaS)) {
-    if (FUNCTION_REGION.length > 0) {
-      faasEnv.set('region', FUNCTION_REGION);
-    }
-
-    if (FUNCTION_MEMORY_MB.length > 0 && Number.isInteger(+FUNCTION_MEMORY_MB)) {
-      faasEnv.set('memory_mb', new Int32(FUNCTION_MEMORY_MB));
-    }
-
-    if (FUNCTION_TIMEOUT_SEC.length > 0 && Number.isInteger(+FUNCTION_TIMEOUT_SEC)) {
-      faasEnv.set('timeout_sec', new Int32(FUNCTION_TIMEOUT_SEC));
-    }
-
-    faasEnv.set('name', 'gcp.func');
-    return faasEnv;
-  }
-
-  return null;
-}
-
-/**
- * @internal
- * This type represents the global Deno object and the minimal type contract we expect it to satisfy.
- */
-declare const Deno: { version?: { deno?: string } } | undefined;
-
-/**
- * @internal
- * This type represents the global Bun object and the minimal type contract we expect it to satisfy.
- */
-declare const Bun: { (): void; version?: string } | undefined;
-
-/**
- * @internal
- * Get current JavaScript runtime platform
- *
- * NOTE: The version information fetching is intentionally written defensively
- * to avoid having a released driver version that becomes incompatible
- * with a future change to these global objects.
- */
-function getRuntimeInfo(): string {
-  if ('Deno' in globalThis) {
-    const version = typeof Deno?.version?.deno === 'string' ? Deno?.version?.deno : '0.0.0-unknown';
-
-    return `Deno v${version}, ${os.endianness()}`;
-  }
-
-  if ('Bun' in globalThis) {
-    const version = typeof Bun?.version === 'string' ? Bun?.version : '0.0.0-unknown';
-
-    return `Bun v${version}, ${os.endianness()}`;
-  }
-
-  return `Node.js ${process.version}, ${os.endianness()}`;
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/message_stream.ts b/server/data-import/node_modules/mongodb/src/cmap/message_stream.ts
deleted file mode 100644
index 42d16ae26e5c220e7c740e7728d0936f9fd34bf9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/message_stream.ts
+++ /dev/null
@@ -1,220 +0,0 @@
-import { Duplex, type DuplexOptions } from 'stream';
-
-import type { BSONSerializeOptions, Document } from '../bson';
-import { MongoDecompressionError, MongoParseError } from '../error';
-import type { ClientSession } from '../sessions';
-import { BufferPool, type Callback } from '../utils';
-import {
-  type MessageHeader,
-  OpCompressedRequest,
-  OpMsgResponse,
-  OpQueryResponse,
-  type WriteProtocolMessageType
-} from './commands';
-import { compress, Compressor, type CompressorName, decompress } from './wire_protocol/compression';
-import { OP_COMPRESSED, OP_MSG } from './wire_protocol/constants';
-
-const MESSAGE_HEADER_SIZE = 16;
-const COMPRESSION_DETAILS_SIZE = 9; // originalOpcode + uncompressedSize, compressorID
-
-const kDefaultMaxBsonMessageSize = 1024 * 1024 * 16 * 4;
-/** @internal */
-const kBuffer = Symbol('buffer');
-
-/** @internal */
-export interface MessageStreamOptions extends DuplexOptions {
-  maxBsonMessageSize?: number;
-}
-
-/** @internal */
-export interface OperationDescription extends BSONSerializeOptions {
-  started: number;
-  cb: Callback<Document>;
-  documentsReturnedIn?: string;
-  noResponse: boolean;
-  raw: boolean;
-  requestId: number;
-  session?: ClientSession;
-  agreedCompressor?: CompressorName;
-  zlibCompressionLevel?: number;
-  $clusterTime?: Document;
-}
-
-/**
- * A duplex stream that is capable of reading and writing raw wire protocol messages, with
- * support for optional compression
- * @internal
- */
-export class MessageStream extends Duplex {
-  /** @internal */
-  maxBsonMessageSize: number;
-  /** @internal */
-  [kBuffer]: BufferPool;
-  /** @internal */
-  isMonitoringConnection = false;
-
-  constructor(options: MessageStreamOptions = {}) {
-    super(options);
-    this.maxBsonMessageSize = options.maxBsonMessageSize || kDefaultMaxBsonMessageSize;
-    this[kBuffer] = new BufferPool();
-  }
-
-  get buffer(): BufferPool {
-    return this[kBuffer];
-  }
-
-  override _write(chunk: Buffer, _: unknown, callback: Callback<Buffer>): void {
-    this[kBuffer].append(chunk);
-    processIncomingData(this, callback);
-  }
-
-  override _read(/* size */): void {
-    // NOTE: This implementation is empty because we explicitly push data to be read
-    //       when `writeMessage` is called.
-    return;
-  }
-
-  writeCommand(
-    command: WriteProtocolMessageType,
-    operationDescription: OperationDescription
-  ): void {
-    const agreedCompressor = operationDescription.agreedCompressor ?? 'none';
-    if (agreedCompressor === 'none' || !OpCompressedRequest.canCompress(command)) {
-      const data = command.toBin();
-      this.push(Array.isArray(data) ? Buffer.concat(data) : data);
-      return;
-    }
-    // otherwise, compress the message
-    const concatenatedOriginalCommandBuffer = Buffer.concat(command.toBin());
-    const messageToBeCompressed = concatenatedOriginalCommandBuffer.slice(MESSAGE_HEADER_SIZE);
-
-    // Extract information needed for OP_COMPRESSED from the uncompressed message
-    const originalCommandOpCode = concatenatedOriginalCommandBuffer.readInt32LE(12);
-
-    const options = {
-      agreedCompressor,
-      zlibCompressionLevel: operationDescription.zlibCompressionLevel ?? 0
-    };
-    // Compress the message body
-    compress(options, messageToBeCompressed).then(
-      compressedMessage => {
-        // Create the msgHeader of OP_COMPRESSED
-        const msgHeader = Buffer.alloc(MESSAGE_HEADER_SIZE);
-        msgHeader.writeInt32LE(
-          MESSAGE_HEADER_SIZE + COMPRESSION_DETAILS_SIZE + compressedMessage.length,
-          0
-        ); // messageLength
-        msgHeader.writeInt32LE(command.requestId, 4); // requestID
-        msgHeader.writeInt32LE(0, 8); // responseTo (zero)
-        msgHeader.writeInt32LE(OP_COMPRESSED, 12); // opCode
-
-        // Create the compression details of OP_COMPRESSED
-        const compressionDetails = Buffer.alloc(COMPRESSION_DETAILS_SIZE);
-        compressionDetails.writeInt32LE(originalCommandOpCode, 0); // originalOpcode
-        compressionDetails.writeInt32LE(messageToBeCompressed.length, 4); // Size of the uncompressed compressedMessage, excluding the MsgHeader
-        compressionDetails.writeUInt8(Compressor[agreedCompressor], 8); // compressorID
-        this.push(Buffer.concat([msgHeader, compressionDetails, compressedMessage]));
-      },
-      error => {
-        operationDescription.cb(error);
-      }
-    );
-  }
-}
-
-function processIncomingData(stream: MessageStream, callback: Callback<Buffer>): void {
-  const buffer = stream[kBuffer];
-  const sizeOfMessage = buffer.getInt32();
-
-  if (sizeOfMessage == null) {
-    return callback();
-  }
-
-  if (sizeOfMessage < 0) {
-    return callback(new MongoParseError(`Invalid message size: ${sizeOfMessage}`));
-  }
-
-  if (sizeOfMessage > stream.maxBsonMessageSize) {
-    return callback(
-      new MongoParseError(
-        `Invalid message size: ${sizeOfMessage}, max allowed: ${stream.maxBsonMessageSize}`
-      )
-    );
-  }
-
-  if (sizeOfMessage > buffer.length) {
-    return callback();
-  }
-
-  const message = buffer.read(sizeOfMessage);
-  const messageHeader: MessageHeader = {
-    length: message.readInt32LE(0),
-    requestId: message.readInt32LE(4),
-    responseTo: message.readInt32LE(8),
-    opCode: message.readInt32LE(12)
-  };
-
-  const monitorHasAnotherHello = () => {
-    if (stream.isMonitoringConnection) {
-      // Can we read the next message size?
-      const sizeOfMessage = buffer.getInt32();
-      if (sizeOfMessage != null && sizeOfMessage <= buffer.length) {
-        return true;
-      }
-    }
-    return false;
-  };
-
-  let ResponseType = messageHeader.opCode === OP_MSG ? OpMsgResponse : OpQueryResponse;
-  if (messageHeader.opCode !== OP_COMPRESSED) {
-    const messageBody = message.subarray(MESSAGE_HEADER_SIZE);
-
-    // If we are a monitoring connection message stream and
-    // there is more in the buffer that can be read, skip processing since we
-    // want the last hello command response that is in the buffer.
-    if (monitorHasAnotherHello()) {
-      return processIncomingData(stream, callback);
-    }
-
-    stream.emit('message', new ResponseType(message, messageHeader, messageBody));
-
-    if (buffer.length >= 4) {
-      return processIncomingData(stream, callback);
-    }
-    return callback();
-  }
-
-  messageHeader.fromCompressed = true;
-  messageHeader.opCode = message.readInt32LE(MESSAGE_HEADER_SIZE);
-  messageHeader.length = message.readInt32LE(MESSAGE_HEADER_SIZE + 4);
-  const compressorID = message[MESSAGE_HEADER_SIZE + 8];
-  const compressedBuffer = message.slice(MESSAGE_HEADER_SIZE + 9);
-
-  // recalculate based on wrapped opcode
-  ResponseType = messageHeader.opCode === OP_MSG ? OpMsgResponse : OpQueryResponse;
-  decompress(compressorID, compressedBuffer).then(
-    messageBody => {
-      if (messageBody.length !== messageHeader.length) {
-        return callback(
-          new MongoDecompressionError('Message body and message header must be the same length')
-        );
-      }
-
-      // If we are a monitoring connection message stream and
-      // there is more in the buffer that can be read, skip processing since we
-      // want the last hello command response that is in the buffer.
-      if (monitorHasAnotherHello()) {
-        return processIncomingData(stream, callback);
-      }
-      stream.emit('message', new ResponseType(message, messageHeader, messageBody));
-
-      if (buffer.length >= 4) {
-        return processIncomingData(stream, callback);
-      }
-      return callback();
-    },
-    error => {
-      return callback(error);
-    }
-  );
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/metrics.ts b/server/data-import/node_modules/mongodb/src/cmap/metrics.ts
deleted file mode 100644
index b825b539363e42ecdea1d2f64b0192e1d7132b2c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/metrics.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-/** @internal */
-export class ConnectionPoolMetrics {
-  static readonly TXN = 'txn' as const;
-  static readonly CURSOR = 'cursor' as const;
-  static readonly OTHER = 'other' as const;
-
-  txnConnections = 0;
-  cursorConnections = 0;
-  otherConnections = 0;
-
-  /**
-   * Mark a connection as pinned for a specific operation.
-   */
-  markPinned(pinType: string): void {
-    if (pinType === ConnectionPoolMetrics.TXN) {
-      this.txnConnections += 1;
-    } else if (pinType === ConnectionPoolMetrics.CURSOR) {
-      this.cursorConnections += 1;
-    } else {
-      this.otherConnections += 1;
-    }
-  }
-
-  /**
-   * Unmark a connection as pinned for an operation.
-   */
-  markUnpinned(pinType: string): void {
-    if (pinType === ConnectionPoolMetrics.TXN) {
-      this.txnConnections -= 1;
-    } else if (pinType === ConnectionPoolMetrics.CURSOR) {
-      this.cursorConnections -= 1;
-    } else {
-      this.otherConnections -= 1;
-    }
-  }
-
-  /**
-   * Return information about the cmap metrics as a string.
-   */
-  info(maxPoolSize: number): string {
-    return (
-      'Timed out while checking out a connection from connection pool: ' +
-      `maxPoolSize: ${maxPoolSize}, ` +
-      `connections in use by cursors: ${this.cursorConnections}, ` +
-      `connections in use by transactions: ${this.txnConnections}, ` +
-      `connections in use by other operations: ${this.otherConnections}`
-    );
-  }
-
-  /**
-   * Reset the metrics to the initial values.
-   */
-  reset(): void {
-    this.txnConnections = 0;
-    this.cursorConnections = 0;
-    this.otherConnections = 0;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/stream_description.ts b/server/data-import/node_modules/mongodb/src/cmap/stream_description.ts
deleted file mode 100644
index c5fbec0f40472168dd899655d8911582b6f545d5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/stream_description.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-import type { Document } from '../bson';
-import { ServerType } from '../sdam/common';
-import { parseServerType } from '../sdam/server_description';
-import type { CompressorName } from './wire_protocol/compression';
-
-const RESPONSE_FIELDS = [
-  'minWireVersion',
-  'maxWireVersion',
-  'maxBsonObjectSize',
-  'maxMessageSizeBytes',
-  'maxWriteBatchSize',
-  'logicalSessionTimeoutMinutes'
-] as const;
-
-/** @public */
-export interface StreamDescriptionOptions {
-  compressors?: CompressorName[];
-  logicalSessionTimeoutMinutes?: number;
-  loadBalanced: boolean;
-}
-
-/** @public */
-export class StreamDescription {
-  address: string;
-  type: string;
-  minWireVersion?: number;
-  maxWireVersion?: number;
-  maxBsonObjectSize: number;
-  maxMessageSizeBytes: number;
-  maxWriteBatchSize: number;
-  compressors: CompressorName[];
-  compressor?: CompressorName;
-  logicalSessionTimeoutMinutes?: number;
-  loadBalanced: boolean;
-
-  __nodejs_mock_server__?: boolean;
-
-  zlibCompressionLevel?: number;
-
-  constructor(address: string, options?: StreamDescriptionOptions) {
-    this.address = address;
-    this.type = ServerType.Unknown;
-    this.minWireVersion = undefined;
-    this.maxWireVersion = undefined;
-    this.maxBsonObjectSize = 16777216;
-    this.maxMessageSizeBytes = 48000000;
-    this.maxWriteBatchSize = 100000;
-    this.logicalSessionTimeoutMinutes = options?.logicalSessionTimeoutMinutes;
-    this.loadBalanced = !!options?.loadBalanced;
-    this.compressors =
-      options && options.compressors && Array.isArray(options.compressors)
-        ? options.compressors
-        : [];
-  }
-
-  receiveResponse(response: Document | null): void {
-    if (response == null) {
-      return;
-    }
-    this.type = parseServerType(response);
-    for (const field of RESPONSE_FIELDS) {
-      if (response[field] != null) {
-        this[field] = response[field];
-      }
-
-      // testing case
-      if ('__nodejs_mock_server__' in response) {
-        this.__nodejs_mock_server__ = response['__nodejs_mock_server__'];
-      }
-    }
-
-    if (response.compression) {
-      this.compressor = this.compressors.filter(c => response.compression?.includes(c))[0];
-    }
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/wire_protocol/compression.ts b/server/data-import/node_modules/mongodb/src/cmap/wire_protocol/compression.ts
deleted file mode 100644
index 74cca5da5fb96433a2d035e133ffc0b62bd5759d..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/wire_protocol/compression.ts
+++ /dev/null
@@ -1,199 +0,0 @@
-import { promisify } from 'util';
-import * as zlib from 'zlib';
-
-import { LEGACY_HELLO_COMMAND } from '../../constants';
-import { getSnappy, getZstdLibrary, type SnappyLib, type ZStandard } from '../../deps';
-import { MongoDecompressionError, MongoInvalidArgumentError } from '../../error';
-import {
-  type MessageHeader,
-  OpCompressedRequest,
-  OpMsgResponse,
-  OpQueryResponse,
-  type WriteProtocolMessageType
-} from '../commands';
-import { type OperationDescription } from '../message_stream';
-import { OP_COMPRESSED, OP_MSG } from './constants';
-
-/** @public */
-export const Compressor = Object.freeze({
-  none: 0,
-  snappy: 1,
-  zlib: 2,
-  zstd: 3
-} as const);
-
-/** @public */
-export type Compressor = (typeof Compressor)[CompressorName];
-
-/** @public */
-export type CompressorName = keyof typeof Compressor;
-
-export const uncompressibleCommands = new Set([
-  LEGACY_HELLO_COMMAND,
-  'saslStart',
-  'saslContinue',
-  'getnonce',
-  'authenticate',
-  'createUser',
-  'updateUser',
-  'copydbSaslStart',
-  'copydbgetnonce',
-  'copydb'
-]);
-
-const ZSTD_COMPRESSION_LEVEL = 3;
-
-const zlibInflate = promisify(zlib.inflate.bind(zlib));
-const zlibDeflate = promisify(zlib.deflate.bind(zlib));
-
-let zstd: typeof ZStandard;
-let Snappy: SnappyLib | null = null;
-function loadSnappy() {
-  if (Snappy == null) {
-    const snappyImport = getSnappy();
-    if ('kModuleError' in snappyImport) {
-      throw snappyImport.kModuleError;
-    }
-    Snappy = snappyImport;
-  }
-  return Snappy;
-}
-
-// Facilitate compressing a message using an agreed compressor
-export async function compress(
-  options: { zlibCompressionLevel: number; agreedCompressor: CompressorName },
-  dataToBeCompressed: Buffer
-): Promise<Buffer> {
-  const zlibOptions = {} as zlib.ZlibOptions;
-  switch (options.agreedCompressor) {
-    case 'snappy': {
-      Snappy ??= loadSnappy();
-      return Snappy.compress(dataToBeCompressed);
-    }
-    case 'zstd': {
-      loadZstd();
-      if ('kModuleError' in zstd) {
-        throw zstd['kModuleError'];
-      }
-      return zstd.compress(dataToBeCompressed, ZSTD_COMPRESSION_LEVEL);
-    }
-    case 'zlib': {
-      if (options.zlibCompressionLevel) {
-        zlibOptions.level = options.zlibCompressionLevel;
-      }
-      return zlibDeflate(dataToBeCompressed, zlibOptions);
-    }
-    default: {
-      throw new MongoInvalidArgumentError(
-        `Unknown compressor ${options.agreedCompressor} failed to compress`
-      );
-    }
-  }
-}
-
-// Decompress a message using the given compressor
-export async function decompress(compressorID: number, compressedData: Buffer): Promise<Buffer> {
-  if (
-    compressorID !== Compressor.snappy &&
-    compressorID !== Compressor.zstd &&
-    compressorID !== Compressor.zlib &&
-    compressorID !== Compressor.none
-  ) {
-    throw new MongoDecompressionError(
-      `Server sent message compressed using an unsupported compressor. (Received compressor ID ${compressorID})`
-    );
-  }
-
-  switch (compressorID) {
-    case Compressor.snappy: {
-      Snappy ??= loadSnappy();
-      return Snappy.uncompress(compressedData, { asBuffer: true });
-    }
-    case Compressor.zstd: {
-      loadZstd();
-      if ('kModuleError' in zstd) {
-        throw zstd['kModuleError'];
-      }
-      return zstd.decompress(compressedData);
-    }
-    case Compressor.zlib: {
-      return zlibInflate(compressedData);
-    }
-    default: {
-      return compressedData;
-    }
-  }
-}
-
-/**
- * Load ZStandard if it is not already set.
- */
-function loadZstd() {
-  if (!zstd) {
-    zstd = getZstdLibrary();
-  }
-}
-
-const MESSAGE_HEADER_SIZE = 16;
-
-/**
- * @internal
- *
- * Compresses an OP_MSG or OP_QUERY message, if compression is configured.  This method
- * also serializes the command to BSON.
- */
-export async function compressCommand(
-  command: WriteProtocolMessageType,
-  description: OperationDescription
-): Promise<Buffer> {
-  const finalCommand =
-    description.agreedCompressor === 'none' || !OpCompressedRequest.canCompress(command)
-      ? command
-      : new OpCompressedRequest(command, {
-          agreedCompressor: description.agreedCompressor ?? 'none',
-          zlibCompressionLevel: description.zlibCompressionLevel ?? 0
-        });
-  const data = await finalCommand.toBin();
-  return Buffer.concat(data);
-}
-
-/**
- * @internal
- *
- * Decompresses an OP_MSG or OP_QUERY response from the server, if compression is configured.
- *
- * This method does not parse the response's BSON.
- */
-export async function decompressResponse(
-  message: Buffer
-): Promise<OpMsgResponse | OpQueryResponse> {
-  const messageHeader: MessageHeader = {
-    length: message.readInt32LE(0),
-    requestId: message.readInt32LE(4),
-    responseTo: message.readInt32LE(8),
-    opCode: message.readInt32LE(12)
-  };
-
-  if (messageHeader.opCode !== OP_COMPRESSED) {
-    const ResponseType = messageHeader.opCode === OP_MSG ? OpMsgResponse : OpQueryResponse;
-    const messageBody = message.subarray(MESSAGE_HEADER_SIZE);
-    return new ResponseType(message, messageHeader, messageBody);
-  }
-
-  const header: MessageHeader = {
-    ...messageHeader,
-    fromCompressed: true,
-    opCode: message.readInt32LE(MESSAGE_HEADER_SIZE),
-    length: message.readInt32LE(MESSAGE_HEADER_SIZE + 4)
-  };
-  const compressorID = message[MESSAGE_HEADER_SIZE + 8];
-  const compressedBuffer = message.slice(MESSAGE_HEADER_SIZE + 9);
-
-  // recalculate based on wrapped opcode
-  const ResponseType = header.opCode === OP_MSG ? OpMsgResponse : OpQueryResponse;
-  const messageBody = await decompress(compressorID, compressedBuffer);
-  if (messageBody.length !== header.length) {
-    throw new MongoDecompressionError('Message body and message header must be the same length');
-  }
-  return new ResponseType(message, header, messageBody);
-}
diff --git a/server/data-import/node_modules/mongodb/src/cmap/wire_protocol/constants.ts b/server/data-import/node_modules/mongodb/src/cmap/wire_protocol/constants.ts
deleted file mode 100644
index b62cdc90c5a40918e27821c3e58be31f3fb1656e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/wire_protocol/constants.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-export const MIN_SUPPORTED_SERVER_VERSION = '3.6';
-export const MAX_SUPPORTED_SERVER_VERSION = '7.0';
-export const MIN_SUPPORTED_WIRE_VERSION = 6;
-export const MAX_SUPPORTED_WIRE_VERSION = 21;
-export const MIN_SUPPORTED_QE_WIRE_VERSION = 21;
-export const MIN_SUPPORTED_QE_SERVER_VERSION = '7.0';
-export const OP_REPLY = 1;
-export const OP_UPDATE = 2001;
-export const OP_INSERT = 2002;
-export const OP_QUERY = 2004;
-export const OP_DELETE = 2006;
-export const OP_COMPRESSED = 2012;
-export const OP_MSG = 2013;
diff --git a/server/data-import/node_modules/mongodb/src/cmap/wire_protocol/shared.ts b/server/data-import/node_modules/mongodb/src/cmap/wire_protocol/shared.ts
deleted file mode 100644
index 53375d8ec57399c4a7d54f87ce87c3a2da3d8134..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cmap/wire_protocol/shared.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { MongoInvalidArgumentError } from '../../error';
-import type { ReadPreferenceLike } from '../../read_preference';
-import { ReadPreference } from '../../read_preference';
-import { ServerType } from '../../sdam/common';
-import type { Server } from '../../sdam/server';
-import type { ServerDescription } from '../../sdam/server_description';
-import type { Topology } from '../../sdam/topology';
-import { TopologyDescription } from '../../sdam/topology_description';
-import type { Connection } from '../connection';
-
-export interface ReadPreferenceOption {
-  readPreference?: ReadPreferenceLike;
-}
-
-export function getReadPreference(options?: ReadPreferenceOption): ReadPreference {
-  // Default to command version of the readPreference
-  let readPreference = options?.readPreference ?? ReadPreference.primary;
-  // If we have an option readPreference override the command one
-  if (options?.readPreference) {
-    readPreference = options.readPreference;
-  }
-
-  if (typeof readPreference === 'string') {
-    readPreference = ReadPreference.fromString(readPreference);
-  }
-
-  if (!(readPreference instanceof ReadPreference)) {
-    throw new MongoInvalidArgumentError(
-      'Option "readPreference" must be a ReadPreference instance'
-    );
-  }
-
-  return readPreference;
-}
-
-export function isSharded(topologyOrServer?: Topology | Server | Connection): boolean {
-  if (topologyOrServer == null) {
-    return false;
-  }
-
-  if (topologyOrServer.description && topologyOrServer.description.type === ServerType.Mongos) {
-    return true;
-  }
-
-  // NOTE: This is incredibly inefficient, and should be removed once command construction
-  //       happens based on `Server` not `Topology`.
-  if (topologyOrServer.description && topologyOrServer.description instanceof TopologyDescription) {
-    const servers: ServerDescription[] = Array.from(topologyOrServer.description.servers.values());
-    return servers.some((server: ServerDescription) => server.type === ServerType.Mongos);
-  }
-
-  return false;
-}
diff --git a/server/data-import/node_modules/mongodb/src/collection.ts b/server/data-import/node_modules/mongodb/src/collection.ts
deleted file mode 100644
index 4346620a192157b4096693a39914197180f7edc5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/collection.ts
+++ /dev/null
@@ -1,1130 +0,0 @@
-import { type BSONSerializeOptions, type Document, resolveBSONOptions } from './bson';
-import type { AnyBulkWriteOperation, BulkWriteOptions, BulkWriteResult } from './bulk/common';
-import { OrderedBulkOperation } from './bulk/ordered';
-import { UnorderedBulkOperation } from './bulk/unordered';
-import { ChangeStream, type ChangeStreamDocument, type ChangeStreamOptions } from './change_stream';
-import { AggregationCursor } from './cursor/aggregation_cursor';
-import { FindCursor } from './cursor/find_cursor';
-import { ListIndexesCursor } from './cursor/list_indexes_cursor';
-import {
-  ListSearchIndexesCursor,
-  type ListSearchIndexesOptions
-} from './cursor/list_search_indexes_cursor';
-import type { Db } from './db';
-import { MongoInvalidArgumentError } from './error';
-import type { MongoClient, PkFactory } from './mongo_client';
-import type {
-  Filter,
-  Flatten,
-  OptionalUnlessRequiredId,
-  TODO_NODE_3286,
-  UpdateFilter,
-  WithId,
-  WithoutId
-} from './mongo_types';
-import type { AggregateOptions } from './operations/aggregate';
-import { BulkWriteOperation } from './operations/bulk_write';
-import type { IndexInformationOptions } from './operations/common_functions';
-import { CountOperation, type CountOptions } from './operations/count';
-import { CountDocumentsOperation, type CountDocumentsOptions } from './operations/count_documents';
-import {
-  DeleteManyOperation,
-  DeleteOneOperation,
-  type DeleteOptions,
-  type DeleteResult
-} from './operations/delete';
-import { DistinctOperation, type DistinctOptions } from './operations/distinct';
-import { DropCollectionOperation, type DropCollectionOptions } from './operations/drop';
-import {
-  EstimatedDocumentCountOperation,
-  type EstimatedDocumentCountOptions
-} from './operations/estimated_document_count';
-import { executeOperation } from './operations/execute_operation';
-import type { FindOptions } from './operations/find';
-import {
-  FindOneAndDeleteOperation,
-  type FindOneAndDeleteOptions,
-  FindOneAndReplaceOperation,
-  type FindOneAndReplaceOptions,
-  FindOneAndUpdateOperation,
-  type FindOneAndUpdateOptions
-} from './operations/find_and_modify';
-import {
-  CreateIndexesOperation,
-  type CreateIndexesOptions,
-  CreateIndexOperation,
-  type DropIndexesOptions,
-  DropIndexOperation,
-  type IndexDescription,
-  IndexesOperation,
-  IndexExistsOperation,
-  IndexInformationOperation,
-  type IndexSpecification,
-  type ListIndexesOptions
-} from './operations/indexes';
-import {
-  InsertManyOperation,
-  type InsertManyResult,
-  InsertOneOperation,
-  type InsertOneOptions,
-  type InsertOneResult
-} from './operations/insert';
-import { IsCappedOperation } from './operations/is_capped';
-import type { Hint, OperationOptions } from './operations/operation';
-import { OptionsOperation } from './operations/options_operation';
-import { RenameOperation, type RenameOptions } from './operations/rename';
-import {
-  CreateSearchIndexesOperation,
-  type SearchIndexDescription
-} from './operations/search_indexes/create';
-import { DropSearchIndexOperation } from './operations/search_indexes/drop';
-import { UpdateSearchIndexOperation } from './operations/search_indexes/update';
-import {
-  ReplaceOneOperation,
-  type ReplaceOptions,
-  UpdateManyOperation,
-  UpdateOneOperation,
-  type UpdateOptions,
-  type UpdateResult
-} from './operations/update';
-import { ReadConcern, type ReadConcernLike } from './read_concern';
-import { ReadPreference, type ReadPreferenceLike } from './read_preference';
-import {
-  DEFAULT_PK_FACTORY,
-  MongoDBCollectionNamespace,
-  normalizeHintField,
-  resolveOptions
-} from './utils';
-import { WriteConcern, type WriteConcernOptions } from './write_concern';
-
-/** @public */
-export interface ModifyResult<TSchema = Document> {
-  value: WithId<TSchema> | null;
-  lastErrorObject?: Document;
-  ok: 0 | 1;
-}
-
-/** @public */
-export interface CollectionOptions extends BSONSerializeOptions, WriteConcernOptions {
-  /** Specify a read concern for the collection. (only MongoDB 3.2 or higher supported) */
-  readConcern?: ReadConcernLike;
-  /** The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). */
-  readPreference?: ReadPreferenceLike;
-}
-
-/** @internal */
-export interface CollectionPrivate {
-  pkFactory: PkFactory;
-  db: Db;
-  options: any;
-  namespace: MongoDBCollectionNamespace;
-  readPreference?: ReadPreference;
-  bsonOptions: BSONSerializeOptions;
-  collectionHint?: Hint;
-  readConcern?: ReadConcern;
-  writeConcern?: WriteConcern;
-}
-
-/**
- * The **Collection** class is an internal class that embodies a MongoDB collection
- * allowing for insert/find/update/delete and other command operation on that MongoDB collection.
- *
- * **COLLECTION Cannot directly be instantiated**
- * @public
- *
- * @example
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * interface Pet {
- *   name: string;
- *   kind: 'dog' | 'cat' | 'fish';
- * }
- *
- * const client = new MongoClient('mongodb://localhost:27017');
- * const pets = client.db().collection<Pet>('pets');
- *
- * const petCursor = pets.find();
- *
- * for await (const pet of petCursor) {
- *   console.log(`${pet.name} is a ${pet.kind}!`);
- * }
- * ```
- */
-export class Collection<TSchema extends Document = Document> {
-  /** @internal */
-  s: CollectionPrivate;
-
-  /** @internal */
-  client: MongoClient;
-
-  /**
-   * Create a new Collection instance
-   * @internal
-   */
-  constructor(db: Db, name: string, options?: CollectionOptions) {
-    // Internal state
-    this.s = {
-      db,
-      options,
-      namespace: new MongoDBCollectionNamespace(db.databaseName, name),
-      pkFactory: db.options?.pkFactory ?? DEFAULT_PK_FACTORY,
-      readPreference: ReadPreference.fromOptions(options),
-      bsonOptions: resolveBSONOptions(options, db),
-      readConcern: ReadConcern.fromOptions(options),
-      writeConcern: WriteConcern.fromOptions(options)
-    };
-
-    this.client = db.client;
-  }
-
-  /**
-   * The name of the database this collection belongs to
-   */
-  get dbName(): string {
-    return this.s.namespace.db;
-  }
-
-  /**
-   * The name of this collection
-   */
-  get collectionName(): string {
-    return this.s.namespace.collection;
-  }
-
-  /**
-   * The namespace of this collection, in the format `${this.dbName}.${this.collectionName}`
-   */
-  get namespace(): string {
-    return this.fullNamespace.toString();
-  }
-
-  /**
-   *  @internal
-   *
-   * The `MongoDBNamespace` for the collection.
-   */
-  get fullNamespace(): MongoDBCollectionNamespace {
-    return this.s.namespace;
-  }
-
-  /**
-   * The current readConcern of the collection. If not explicitly defined for
-   * this collection, will be inherited from the parent DB
-   */
-  get readConcern(): ReadConcern | undefined {
-    if (this.s.readConcern == null) {
-      return this.s.db.readConcern;
-    }
-    return this.s.readConcern;
-  }
-
-  /**
-   * The current readPreference of the collection. If not explicitly defined for
-   * this collection, will be inherited from the parent DB
-   */
-  get readPreference(): ReadPreference | undefined {
-    if (this.s.readPreference == null) {
-      return this.s.db.readPreference;
-    }
-
-    return this.s.readPreference;
-  }
-
-  get bsonOptions(): BSONSerializeOptions {
-    return this.s.bsonOptions;
-  }
-
-  /**
-   * The current writeConcern of the collection. If not explicitly defined for
-   * this collection, will be inherited from the parent DB
-   */
-  get writeConcern(): WriteConcern | undefined {
-    if (this.s.writeConcern == null) {
-      return this.s.db.writeConcern;
-    }
-    return this.s.writeConcern;
-  }
-
-  /** The current index hint for the collection */
-  get hint(): Hint | undefined {
-    return this.s.collectionHint;
-  }
-
-  set hint(v: Hint | undefined) {
-    this.s.collectionHint = normalizeHintField(v);
-  }
-
-  /**
-   * Inserts a single document into MongoDB. If documents passed in do not contain the **_id** field,
-   * one will be added to each of the documents missing it by the driver, mutating the document. This behavior
-   * can be overridden by setting the **forceServerObjectId** flag.
-   *
-   * @param doc - The document to insert
-   * @param options - Optional settings for the command
-   */
-  async insertOne(
-    doc: OptionalUnlessRequiredId<TSchema>,
-    options?: InsertOneOptions
-  ): Promise<InsertOneResult<TSchema>> {
-    return executeOperation(
-      this.client,
-      new InsertOneOperation(
-        this as TODO_NODE_3286,
-        doc,
-        resolveOptions(this, options)
-      ) as TODO_NODE_3286
-    );
-  }
-
-  /**
-   * Inserts an array of documents into MongoDB. If documents passed in do not contain the **_id** field,
-   * one will be added to each of the documents missing it by the driver, mutating the document. This behavior
-   * can be overridden by setting the **forceServerObjectId** flag.
-   *
-   * @param docs - The documents to insert
-   * @param options - Optional settings for the command
-   */
-  async insertMany(
-    docs: OptionalUnlessRequiredId<TSchema>[],
-    options?: BulkWriteOptions
-  ): Promise<InsertManyResult<TSchema>> {
-    return executeOperation(
-      this.client,
-      new InsertManyOperation(
-        this as TODO_NODE_3286,
-        docs,
-        resolveOptions(this, options ?? { ordered: true })
-      ) as TODO_NODE_3286
-    );
-  }
-
-  /**
-   * Perform a bulkWrite operation without a fluent API
-   *
-   * Legal operation types are
-   * - `insertOne`
-   * - `replaceOne`
-   * - `updateOne`
-   * - `updateMany`
-   * - `deleteOne`
-   * - `deleteMany`
-   *
-   * If documents passed in do not contain the **_id** field,
-   * one will be added to each of the documents missing it by the driver, mutating the document. This behavior
-   * can be overridden by setting the **forceServerObjectId** flag.
-   *
-   * @param operations - Bulk operations to perform
-   * @param options - Optional settings for the command
-   * @throws MongoDriverError if operations is not an array
-   */
-  async bulkWrite(
-    operations: AnyBulkWriteOperation<TSchema>[],
-    options?: BulkWriteOptions
-  ): Promise<BulkWriteResult> {
-    if (!Array.isArray(operations)) {
-      throw new MongoInvalidArgumentError('Argument "operations" must be an array of documents');
-    }
-
-    return executeOperation(
-      this.client,
-      new BulkWriteOperation(
-        this as TODO_NODE_3286,
-        operations as TODO_NODE_3286,
-        resolveOptions(this, options ?? { ordered: true })
-      )
-    );
-  }
-
-  /**
-   * Update a single document in a collection
-   *
-   * @param filter - The filter used to select the document to update
-   * @param update - The update operations to be applied to the document
-   * @param options - Optional settings for the command
-   */
-  async updateOne(
-    filter: Filter<TSchema>,
-    update: UpdateFilter<TSchema> | Partial<TSchema>,
-    options?: UpdateOptions
-  ): Promise<UpdateResult<TSchema>> {
-    return executeOperation(
-      this.client,
-      new UpdateOneOperation(
-        this as TODO_NODE_3286,
-        filter,
-        update,
-        resolveOptions(this, options)
-      ) as TODO_NODE_3286
-    );
-  }
-
-  /**
-   * Replace a document in a collection with another document
-   *
-   * @param filter - The filter used to select the document to replace
-   * @param replacement - The Document that replaces the matching document
-   * @param options - Optional settings for the command
-   */
-  async replaceOne(
-    filter: Filter<TSchema>,
-    replacement: WithoutId<TSchema>,
-    options?: ReplaceOptions
-  ): Promise<UpdateResult<TSchema> | Document> {
-    return executeOperation(
-      this.client,
-      new ReplaceOneOperation(
-        this as TODO_NODE_3286,
-        filter,
-        replacement,
-        resolveOptions(this, options)
-      )
-    );
-  }
-
-  /**
-   * Update multiple documents in a collection
-   *
-   * @param filter - The filter used to select the documents to update
-   * @param update - The update operations to be applied to the documents
-   * @param options - Optional settings for the command
-   */
-  async updateMany(
-    filter: Filter<TSchema>,
-    update: UpdateFilter<TSchema>,
-    options?: UpdateOptions
-  ): Promise<UpdateResult<TSchema>> {
-    return executeOperation(
-      this.client,
-      new UpdateManyOperation(
-        this as TODO_NODE_3286,
-        filter,
-        update,
-        resolveOptions(this, options)
-      ) as TODO_NODE_3286
-    );
-  }
-
-  /**
-   * Delete a document from a collection
-   *
-   * @param filter - The filter used to select the document to remove
-   * @param options - Optional settings for the command
-   */
-  async deleteOne(
-    filter: Filter<TSchema> = {},
-    options: DeleteOptions = {}
-  ): Promise<DeleteResult> {
-    return executeOperation(
-      this.client,
-      new DeleteOneOperation(this as TODO_NODE_3286, filter, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Delete multiple documents from a collection
-   *
-   * @param filter - The filter used to select the documents to remove
-   * @param options - Optional settings for the command
-   */
-  async deleteMany(
-    filter: Filter<TSchema> = {},
-    options: DeleteOptions = {}
-  ): Promise<DeleteResult> {
-    return executeOperation(
-      this.client,
-      new DeleteManyOperation(this as TODO_NODE_3286, filter, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Rename the collection.
-   *
-   * @remarks
-   * This operation does not inherit options from the Db or MongoClient.
-   *
-   * @param newName - New name of of the collection.
-   * @param options - Optional settings for the command
-   */
-  async rename(newName: string, options?: RenameOptions): Promise<Collection> {
-    // Intentionally, we do not inherit options from parent for this operation.
-    return executeOperation(
-      this.client,
-      new RenameOperation(this as TODO_NODE_3286, newName, {
-        ...options,
-        readPreference: ReadPreference.PRIMARY
-      }) as TODO_NODE_3286
-    );
-  }
-
-  /**
-   * Drop the collection from the database, removing it permanently. New accesses will create a new collection.
-   *
-   * @param options - Optional settings for the command
-   */
-  async drop(options?: DropCollectionOptions): Promise<boolean> {
-    return executeOperation(
-      this.client,
-      new DropCollectionOperation(this.s.db, this.collectionName, options)
-    );
-  }
-
-  /**
-   * Fetches the first document that matches the filter
-   *
-   * @param filter - Query for find Operation
-   * @param options - Optional settings for the command
-   */
-  async findOne(): Promise<WithId<TSchema> | null>;
-  async findOne(filter: Filter<TSchema>): Promise<WithId<TSchema> | null>;
-  async findOne(filter: Filter<TSchema>, options: FindOptions): Promise<WithId<TSchema> | null>;
-
-  // allow an override of the schema.
-  async findOne<T = TSchema>(): Promise<T | null>;
-  async findOne<T = TSchema>(filter: Filter<TSchema>): Promise<T | null>;
-  async findOne<T = TSchema>(filter: Filter<TSchema>, options?: FindOptions): Promise<T | null>;
-
-  async findOne(
-    filter: Filter<TSchema> = {},
-    options: FindOptions = {}
-  ): Promise<WithId<TSchema> | null> {
-    const cursor = this.find(filter, options).limit(-1).batchSize(1);
-    const res = await cursor.next();
-    await cursor.close();
-    return res;
-  }
-
-  /**
-   * Creates a cursor for a filter that can be used to iterate over results from MongoDB
-   *
-   * @param filter - The filter predicate. If unspecified, then all documents in the collection will match the predicate
-   */
-  find(): FindCursor<WithId<TSchema>>;
-  find(filter: Filter<TSchema>, options?: FindOptions): FindCursor<WithId<TSchema>>;
-  find<T extends Document>(filter: Filter<TSchema>, options?: FindOptions): FindCursor<T>;
-  find(filter: Filter<TSchema> = {}, options: FindOptions = {}): FindCursor<WithId<TSchema>> {
-    return new FindCursor<WithId<TSchema>>(
-      this.client,
-      this.s.namespace,
-      filter,
-      resolveOptions(this as TODO_NODE_3286, options)
-    );
-  }
-
-  /**
-   * Returns the options of the collection.
-   *
-   * @param options - Optional settings for the command
-   */
-  async options(options?: OperationOptions): Promise<Document> {
-    return executeOperation(
-      this.client,
-      new OptionsOperation(this as TODO_NODE_3286, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Returns if the collection is a capped collection
-   *
-   * @param options - Optional settings for the command
-   */
-  async isCapped(options?: OperationOptions): Promise<boolean> {
-    return executeOperation(
-      this.client,
-      new IsCappedOperation(this as TODO_NODE_3286, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Creates an index on the db and collection collection.
-   *
-   * @param indexSpec - The field name or index specification to create an index for
-   * @param options - Optional settings for the command
-   *
-   * @example
-   * ```ts
-   * const collection = client.db('foo').collection('bar');
-   *
-   * await collection.createIndex({ a: 1, b: -1 });
-   *
-   * // Alternate syntax for { c: 1, d: -1 } that ensures order of indexes
-   * await collection.createIndex([ [c, 1], [d, -1] ]);
-   *
-   * // Equivalent to { e: 1 }
-   * await collection.createIndex('e');
-   *
-   * // Equivalent to { f: 1, g: 1 }
-   * await collection.createIndex(['f', 'g'])
-   *
-   * // Equivalent to { h: 1, i: -1 }
-   * await collection.createIndex([ { h: 1 }, { i: -1 } ]);
-   *
-   * // Equivalent to { j: 1, k: -1, l: 2d }
-   * await collection.createIndex(['j', ['k', -1], { l: '2d' }])
-   * ```
-   */
-  async createIndex(
-    indexSpec: IndexSpecification,
-    options?: CreateIndexesOptions
-  ): Promise<string> {
-    return executeOperation(
-      this.client,
-      new CreateIndexOperation(
-        this as TODO_NODE_3286,
-        this.collectionName,
-        indexSpec,
-        resolveOptions(this, options)
-      )
-    );
-  }
-
-  /**
-   * Creates multiple indexes in the collection, this method is only supported for
-   * MongoDB 2.6 or higher. Earlier version of MongoDB will throw a command not supported
-   * error.
-   *
-   * **Note**: Unlike {@link Collection#createIndex| createIndex}, this function takes in raw index specifications.
-   * Index specifications are defined {@link https://www.mongodb.com/docs/manual/reference/command/createIndexes/| here}.
-   *
-   * @param indexSpecs - An array of index specifications to be created
-   * @param options - Optional settings for the command
-   *
-   * @example
-   * ```ts
-   * const collection = client.db('foo').collection('bar');
-   * await collection.createIndexes([
-   *   // Simple index on field fizz
-   *   {
-   *     key: { fizz: 1 },
-   *   }
-   *   // wildcard index
-   *   {
-   *     key: { '$**': 1 }
-   *   },
-   *   // named index on darmok and jalad
-   *   {
-   *     key: { darmok: 1, jalad: -1 }
-   *     name: 'tanagra'
-   *   }
-   * ]);
-   * ```
-   */
-  async createIndexes(
-    indexSpecs: IndexDescription[],
-    options?: CreateIndexesOptions
-  ): Promise<string[]> {
-    return executeOperation(
-      this.client,
-      new CreateIndexesOperation(
-        this as TODO_NODE_3286,
-        this.collectionName,
-        indexSpecs,
-        resolveOptions(this, { ...options, maxTimeMS: undefined })
-      )
-    );
-  }
-
-  /**
-   * Drops an index from this collection.
-   *
-   * @param indexName - Name of the index to drop.
-   * @param options - Optional settings for the command
-   */
-  async dropIndex(indexName: string, options?: DropIndexesOptions): Promise<Document> {
-    return executeOperation(
-      this.client,
-      new DropIndexOperation(this as TODO_NODE_3286, indexName, {
-        ...resolveOptions(this, options),
-        readPreference: ReadPreference.primary
-      })
-    );
-  }
-
-  /**
-   * Drops all indexes from this collection.
-   *
-   * @param options - Optional settings for the command
-   */
-  async dropIndexes(options?: DropIndexesOptions): Promise<boolean> {
-    try {
-      await executeOperation(
-        this.client,
-        new DropIndexOperation(this as TODO_NODE_3286, '*', resolveOptions(this, options))
-      );
-      return true;
-    } catch {
-      return false;
-    }
-  }
-
-  /**
-   * Get the list of all indexes information for the collection.
-   *
-   * @param options - Optional settings for the command
-   */
-  listIndexes(options?: ListIndexesOptions): ListIndexesCursor {
-    return new ListIndexesCursor(this as TODO_NODE_3286, resolveOptions(this, options));
-  }
-
-  /**
-   * Checks if one or more indexes exist on the collection, fails on first non-existing index
-   *
-   * @param indexes - One or more index names to check.
-   * @param options - Optional settings for the command
-   */
-  async indexExists(
-    indexes: string | string[],
-    options?: IndexInformationOptions
-  ): Promise<boolean> {
-    return executeOperation(
-      this.client,
-      new IndexExistsOperation(this as TODO_NODE_3286, indexes, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Retrieves this collections index info.
-   *
-   * @param options - Optional settings for the command
-   */
-  async indexInformation(options?: IndexInformationOptions): Promise<Document> {
-    return executeOperation(
-      this.client,
-      new IndexInformationOperation(this.s.db, this.collectionName, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Gets an estimate of the count of documents in a collection using collection metadata.
-   * This will always run a count command on all server versions.
-   *
-   * due to an oversight in versions 5.0.0-5.0.8 of MongoDB, the count command,
-   * which estimatedDocumentCount uses in its implementation, was not included in v1 of
-   * the Stable API, and so users of the Stable API with estimatedDocumentCount are
-   * recommended to upgrade their server version to 5.0.9+ or set apiStrict: false to avoid
-   * encountering errors.
-   *
-   * @see {@link https://www.mongodb.com/docs/manual/reference/command/count/#behavior|Count: Behavior}
-   * @param options - Optional settings for the command
-   */
-  async estimatedDocumentCount(options?: EstimatedDocumentCountOptions): Promise<number> {
-    return executeOperation(
-      this.client,
-      new EstimatedDocumentCountOperation(this as TODO_NODE_3286, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Gets the number of documents matching the filter.
-   * For a fast count of the total documents in a collection see {@link Collection#estimatedDocumentCount| estimatedDocumentCount}.
-   * **Note**: When migrating from {@link Collection#count| count} to {@link Collection#countDocuments| countDocuments}
-   * the following query operators must be replaced:
-   *
-   * | Operator | Replacement |
-   * | -------- | ----------- |
-   * | `$where`   | [`$expr`][1] |
-   * | `$near`    | [`$geoWithin`][2] with [`$center`][3] |
-   * | `$nearSphere` | [`$geoWithin`][2] with [`$centerSphere`][4] |
-   *
-   * [1]: https://www.mongodb.com/docs/manual/reference/operator/query/expr/
-   * [2]: https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/
-   * [3]: https://www.mongodb.com/docs/manual/reference/operator/query/center/#op._S_center
-   * [4]: https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/#op._S_centerSphere
-   *
-   * @param filter - The filter for the count
-   * @param options - Optional settings for the command
-   *
-   * @see https://www.mongodb.com/docs/manual/reference/operator/query/expr/
-   * @see https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/
-   * @see https://www.mongodb.com/docs/manual/reference/operator/query/center/#op._S_center
-   * @see https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/#op._S_centerSphere
-   */
-  async countDocuments(
-    filter: Document = {},
-    options: CountDocumentsOptions = {}
-  ): Promise<number> {
-    return executeOperation(
-      this.client,
-      new CountDocumentsOperation(this as TODO_NODE_3286, filter, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * The distinct command returns a list of distinct values for the given key across a collection.
-   *
-   * @param key - Field of the document to find distinct values for
-   * @param filter - The filter for filtering the set of documents to which we apply the distinct filter.
-   * @param options - Optional settings for the command
-   */
-  distinct<Key extends keyof WithId<TSchema>>(
-    key: Key
-  ): Promise<Array<Flatten<WithId<TSchema>[Key]>>>;
-  distinct<Key extends keyof WithId<TSchema>>(
-    key: Key,
-    filter: Filter<TSchema>
-  ): Promise<Array<Flatten<WithId<TSchema>[Key]>>>;
-  distinct<Key extends keyof WithId<TSchema>>(
-    key: Key,
-    filter: Filter<TSchema>,
-    options: DistinctOptions
-  ): Promise<Array<Flatten<WithId<TSchema>[Key]>>>;
-
-  // Embedded documents overload
-  distinct(key: string): Promise<any[]>;
-  distinct(key: string, filter: Filter<TSchema>): Promise<any[]>;
-  distinct(key: string, filter: Filter<TSchema>, options: DistinctOptions): Promise<any[]>;
-
-  async distinct<Key extends keyof WithId<TSchema>>(
-    key: Key,
-    filter: Filter<TSchema> = {},
-    options: DistinctOptions = {}
-  ): Promise<any[]> {
-    return executeOperation(
-      this.client,
-      new DistinctOperation(
-        this as TODO_NODE_3286,
-        key as TODO_NODE_3286,
-        filter,
-        resolveOptions(this, options)
-      )
-    );
-  }
-
-  /**
-   * Retrieve all the indexes on the collection.
-   *
-   * @param options - Optional settings for the command
-   */
-  async indexes(options?: IndexInformationOptions): Promise<Document[]> {
-    return executeOperation(
-      this.client,
-      new IndexesOperation(this as TODO_NODE_3286, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Find a document and delete it in one atomic operation. Requires a write lock for the duration of the operation.
-   *
-   * @param filter - The filter used to select the document to remove
-   * @param options - Optional settings for the command
-   */
-  async findOneAndDelete(
-    filter: Filter<TSchema>,
-    options: FindOneAndDeleteOptions & { includeResultMetadata: true }
-  ): Promise<ModifyResult<TSchema>>;
-  async findOneAndDelete(
-    filter: Filter<TSchema>,
-    options: FindOneAndDeleteOptions & { includeResultMetadata: false }
-  ): Promise<WithId<TSchema> | null>;
-  async findOneAndDelete(
-    filter: Filter<TSchema>,
-    options: FindOneAndDeleteOptions
-  ): Promise<WithId<TSchema> | null>;
-  async findOneAndDelete(filter: Filter<TSchema>): Promise<WithId<TSchema> | null>;
-  async findOneAndDelete(
-    filter: Filter<TSchema>,
-    options?: FindOneAndDeleteOptions
-  ): Promise<WithId<TSchema> | ModifyResult<TSchema> | null> {
-    return executeOperation(
-      this.client,
-      new FindOneAndDeleteOperation(
-        this as TODO_NODE_3286,
-        filter,
-        resolveOptions(this, options)
-      ) as TODO_NODE_3286
-    );
-  }
-
-  /**
-   * Find a document and replace it in one atomic operation. Requires a write lock for the duration of the operation.
-   *
-   * @param filter - The filter used to select the document to replace
-   * @param replacement - The Document that replaces the matching document
-   * @param options - Optional settings for the command
-   */
-  async findOneAndReplace(
-    filter: Filter<TSchema>,
-    replacement: WithoutId<TSchema>,
-    options: FindOneAndReplaceOptions & { includeResultMetadata: true }
-  ): Promise<ModifyResult<TSchema>>;
-  async findOneAndReplace(
-    filter: Filter<TSchema>,
-    replacement: WithoutId<TSchema>,
-    options: FindOneAndReplaceOptions & { includeResultMetadata: false }
-  ): Promise<WithId<TSchema> | null>;
-  async findOneAndReplace(
-    filter: Filter<TSchema>,
-    replacement: WithoutId<TSchema>,
-    options: FindOneAndReplaceOptions
-  ): Promise<WithId<TSchema> | null>;
-  async findOneAndReplace(
-    filter: Filter<TSchema>,
-    replacement: WithoutId<TSchema>
-  ): Promise<WithId<TSchema> | null>;
-  async findOneAndReplace(
-    filter: Filter<TSchema>,
-    replacement: WithoutId<TSchema>,
-    options?: FindOneAndReplaceOptions
-  ): Promise<WithId<TSchema> | ModifyResult<TSchema> | null> {
-    return executeOperation(
-      this.client,
-      new FindOneAndReplaceOperation(
-        this as TODO_NODE_3286,
-        filter,
-        replacement,
-        resolveOptions(this, options)
-      ) as TODO_NODE_3286
-    );
-  }
-
-  /**
-   * Find a document and update it in one atomic operation. Requires a write lock for the duration of the operation.
-   *
-   * @param filter - The filter used to select the document to update
-   * @param update - Update operations to be performed on the document
-   * @param options - Optional settings for the command
-   */
-  async findOneAndUpdate(
-    filter: Filter<TSchema>,
-    update: UpdateFilter<TSchema>,
-    options: FindOneAndUpdateOptions & { includeResultMetadata: true }
-  ): Promise<ModifyResult<TSchema>>;
-  async findOneAndUpdate(
-    filter: Filter<TSchema>,
-    update: UpdateFilter<TSchema>,
-    options: FindOneAndUpdateOptions & { includeResultMetadata: false }
-  ): Promise<WithId<TSchema> | null>;
-  async findOneAndUpdate(
-    filter: Filter<TSchema>,
-    update: UpdateFilter<TSchema>,
-    options: FindOneAndUpdateOptions
-  ): Promise<WithId<TSchema> | null>;
-  async findOneAndUpdate(
-    filter: Filter<TSchema>,
-    update: UpdateFilter<TSchema>
-  ): Promise<WithId<TSchema> | null>;
-  async findOneAndUpdate(
-    filter: Filter<TSchema>,
-    update: UpdateFilter<TSchema>,
-    options?: FindOneAndUpdateOptions
-  ): Promise<WithId<TSchema> | ModifyResult<TSchema> | null> {
-    return executeOperation(
-      this.client,
-      new FindOneAndUpdateOperation(
-        this as TODO_NODE_3286,
-        filter,
-        update,
-        resolveOptions(this, options)
-      ) as TODO_NODE_3286
-    );
-  }
-
-  /**
-   * Execute an aggregation framework pipeline against the collection, needs MongoDB \>= 2.2
-   *
-   * @param pipeline - An array of aggregation pipelines to execute
-   * @param options - Optional settings for the command
-   */
-  aggregate<T extends Document = Document>(
-    pipeline: Document[] = [],
-    options?: AggregateOptions
-  ): AggregationCursor<T> {
-    if (!Array.isArray(pipeline)) {
-      throw new MongoInvalidArgumentError(
-        'Argument "pipeline" must be an array of aggregation stages'
-      );
-    }
-
-    return new AggregationCursor(
-      this.client,
-      this.s.namespace,
-      pipeline,
-      resolveOptions(this, options)
-    );
-  }
-
-  /**
-   * Create a new Change Stream, watching for new changes (insertions, updates, replacements, deletions, and invalidations) in this collection.
-   *
-   * @remarks
-   * watch() accepts two generic arguments for distinct use cases:
-   * - The first is to override the schema that may be defined for this specific collection
-   * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument
-   * @example
-   * By just providing the first argument I can type the change to be `ChangeStreamDocument<{ _id: number }>`
-   * ```ts
-   * collection.watch<{ _id: number }>()
-   *   .on('change', change => console.log(change._id.toFixed(4)));
-   * ```
-   *
-   * @example
-   * Passing a second argument provides a way to reflect the type changes caused by an advanced pipeline.
-   * Here, we are using a pipeline to have MongoDB filter for insert changes only and add a comment.
-   * No need start from scratch on the ChangeStreamInsertDocument type!
-   * By using an intersection we can save time and ensure defaults remain the same type!
-   * ```ts
-   * collection
-   *   .watch<Schema, ChangeStreamInsertDocument<Schema> & { comment: string }>([
-   *     { $addFields: { comment: 'big changes' } },
-   *     { $match: { operationType: 'insert' } }
-   *   ])
-   *   .on('change', change => {
-   *     change.comment.startsWith('big');
-   *     change.operationType === 'insert';
-   *     // No need to narrow in code because the generics did that for us!
-   *     expectType<Schema>(change.fullDocument);
-   *   });
-   * ```
-   *
-   * @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.
-   * @param options - Optional settings for the command
-   * @typeParam TLocal - Type of the data being detected by the change stream
-   * @typeParam TChange - Type of the whole change stream document emitted
-   */
-  watch<TLocal extends Document = TSchema, TChange extends Document = ChangeStreamDocument<TLocal>>(
-    pipeline: Document[] = [],
-    options: ChangeStreamOptions = {}
-  ): ChangeStream<TLocal, TChange> {
-    // Allow optionally not specifying a pipeline
-    if (!Array.isArray(pipeline)) {
-      options = pipeline;
-      pipeline = [];
-    }
-
-    return new ChangeStream<TLocal, TChange>(this, pipeline, resolveOptions(this, options));
-  }
-
-  /**
-   * Initiate an Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order.
-   *
-   * @throws MongoNotConnectedError
-   * @remarks
-   * **NOTE:** MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation.
-   * However, `collection.bulkWrite()` provides an equivalent API that does not require prior connecting.
-   */
-  initializeUnorderedBulkOp(options?: BulkWriteOptions): UnorderedBulkOperation {
-    return new UnorderedBulkOperation(this as TODO_NODE_3286, resolveOptions(this, options));
-  }
-
-  /**
-   * Initiate an In order bulk write operation. Operations will be serially executed in the order they are added, creating a new operation for each switch in types.
-   *
-   * @throws MongoNotConnectedError
-   * @remarks
-   * **NOTE:** MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation.
-   * However, `collection.bulkWrite()` provides an equivalent API that does not require prior connecting.
-   */
-  initializeOrderedBulkOp(options?: BulkWriteOptions): OrderedBulkOperation {
-    return new OrderedBulkOperation(this as TODO_NODE_3286, resolveOptions(this, options));
-  }
-
-  /**
-   * An estimated count of matching documents in the db to a filter.
-   *
-   * **NOTE:** This method has been deprecated, since it does not provide an accurate count of the documents
-   * in a collection. To obtain an accurate count of documents in the collection, use {@link Collection#countDocuments| countDocuments}.
-   * To obtain an estimated count of all documents in the collection, use {@link Collection#estimatedDocumentCount| estimatedDocumentCount}.
-   *
-   * @deprecated use {@link Collection#countDocuments| countDocuments} or {@link Collection#estimatedDocumentCount| estimatedDocumentCount} instead
-   *
-   * @param filter - The filter for the count.
-   * @param options - Optional settings for the command
-   */
-  async count(filter: Filter<TSchema> = {}, options: CountOptions = {}): Promise<number> {
-    return executeOperation(
-      this.client,
-      new CountOperation(this.fullNamespace, filter, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Returns all search indexes for the current collection.
-   *
-   * @param options - The options for the list indexes operation.
-   *
-   * @remarks Only available when used against a 7.0+ Atlas cluster.
-   */
-  listSearchIndexes(options?: ListSearchIndexesOptions): ListSearchIndexesCursor;
-  /**
-   * Returns all search indexes for the current collection.
-   *
-   * @param name - The name of the index to search for.  Only indexes with matching index names will be returned.
-   * @param options - The options for the list indexes operation.
-   *
-   * @remarks Only available when used against a 7.0+ Atlas cluster.
-   */
-  listSearchIndexes(name: string, options?: ListSearchIndexesOptions): ListSearchIndexesCursor;
-  listSearchIndexes(
-    indexNameOrOptions?: string | ListSearchIndexesOptions,
-    options?: ListSearchIndexesOptions
-  ): ListSearchIndexesCursor {
-    options =
-      typeof indexNameOrOptions === 'object' ? indexNameOrOptions : options == null ? {} : options;
-    const indexName =
-      indexNameOrOptions == null
-        ? null
-        : typeof indexNameOrOptions === 'object'
-        ? null
-        : indexNameOrOptions;
-
-    return new ListSearchIndexesCursor(this as TODO_NODE_3286, indexName, options);
-  }
-
-  /**
-   * Creates a single search index for the collection.
-   *
-   * @param description - The index description for the new search index.
-   * @returns A promise that resolves to the name of the new search index.
-   *
-   * @remarks Only available when used against a 7.0+ Atlas cluster.
-   */
-  async createSearchIndex(description: SearchIndexDescription): Promise<string> {
-    const [index] = await this.createSearchIndexes([description]);
-    return index;
-  }
-
-  /**
-   * Creates multiple search indexes for the current collection.
-   *
-   * @param descriptions - An array of `SearchIndexDescription`s for the new search indexes.
-   * @returns A promise that resolves to an array of the newly created search index names.
-   *
-   * @remarks Only available when used against a 7.0+ Atlas cluster.
-   * @returns
-   */
-  async createSearchIndexes(descriptions: SearchIndexDescription[]): Promise<string[]> {
-    return executeOperation(
-      this.client,
-      new CreateSearchIndexesOperation(this as TODO_NODE_3286, descriptions)
-    );
-  }
-
-  /**
-   * Deletes a search index by index name.
-   *
-   * @param name - The name of the search index to be deleted.
-   *
-   * @remarks Only available when used against a 7.0+ Atlas cluster.
-   */
-  async dropSearchIndex(name: string): Promise<void> {
-    return executeOperation(
-      this.client,
-      new DropSearchIndexOperation(this as TODO_NODE_3286, name)
-    );
-  }
-
-  /**
-   * Updates a search index by replacing the existing index definition with the provided definition.
-   *
-   * @param name - The name of the search index to update.
-   * @param definition - The new search index definition.
-   *
-   * @remarks Only available when used against a 7.0+ Atlas cluster.
-   */
-  async updateSearchIndex(name: string, definition: Document): Promise<void> {
-    return executeOperation(
-      this.client,
-      new UpdateSearchIndexOperation(this as TODO_NODE_3286, name, definition)
-    );
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/connection_string.ts b/server/data-import/node_modules/mongodb/src/connection_string.ts
deleted file mode 100644
index fb7890df5a56d44025989754b32a5cb1de605bc4..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/connection_string.ts
+++ /dev/null
@@ -1,1273 +0,0 @@
-import * as dns from 'dns';
-import ConnectionString from 'mongodb-connection-string-url';
-import { URLSearchParams } from 'url';
-
-import type { Document } from './bson';
-import { MongoCredentials } from './cmap/auth/mongo_credentials';
-import { AUTH_MECHS_AUTH_SRC_EXTERNAL, AuthMechanism } from './cmap/auth/providers';
-import { makeClientMetadata } from './cmap/handshake/client_metadata';
-import { Compressor, type CompressorName } from './cmap/wire_protocol/compression';
-import { Encrypter } from './encrypter';
-import {
-  MongoAPIError,
-  MongoInvalidArgumentError,
-  MongoMissingCredentialsError,
-  MongoParseError
-} from './error';
-import {
-  MongoClient,
-  type MongoClientOptions,
-  type MongoOptions,
-  type PkFactory,
-  type ServerApi,
-  ServerApiVersion
-} from './mongo_client';
-import {
-  MongoLogger,
-  type MongoLoggerEnvOptions,
-  type MongoLoggerMongoClientOptions
-} from './mongo_logger';
-import { ReadConcern, type ReadConcernLevel } from './read_concern';
-import { ReadPreference, type ReadPreferenceMode } from './read_preference';
-import { ServerMonitoringMode } from './sdam/monitor';
-import type { TagSet } from './sdam/server_description';
-import {
-  DEFAULT_PK_FACTORY,
-  emitWarning,
-  HostAddress,
-  isRecord,
-  matchesParentDomain,
-  parseInteger,
-  setDifference
-} from './utils';
-import { type W, WriteConcern } from './write_concern';
-
-const VALID_TXT_RECORDS = ['authSource', 'replicaSet', 'loadBalanced'];
-
-const LB_SINGLE_HOST_ERROR = 'loadBalanced option only supported with a single host in the URI';
-const LB_REPLICA_SET_ERROR = 'loadBalanced option not supported with a replicaSet option';
-const LB_DIRECT_CONNECTION_ERROR =
-  'loadBalanced option not supported when directConnection is provided';
-
-/**
- * Lookup a `mongodb+srv` connection string, combine the parts and reparse it as a normal
- * connection string.
- *
- * @param uri - The connection string to parse
- * @param options - Optional user provided connection string options
- */
-export async function resolveSRVRecord(options: MongoOptions): Promise<HostAddress[]> {
-  if (typeof options.srvHost !== 'string') {
-    throw new MongoAPIError('Option "srvHost" must not be empty');
-  }
-
-  if (options.srvHost.split('.').length < 3) {
-    // TODO(NODE-3484): Replace with MongoConnectionStringError
-    throw new MongoAPIError('URI must include hostname, domain name, and tld');
-  }
-
-  // Resolve the SRV record and use the result as the list of hosts to connect to.
-  const lookupAddress = options.srvHost;
-  const addresses = await dns.promises.resolveSrv(
-    `_${options.srvServiceName}._tcp.${lookupAddress}`
-  );
-
-  if (addresses.length === 0) {
-    throw new MongoAPIError('No addresses found at host');
-  }
-
-  for (const { name } of addresses) {
-    if (!matchesParentDomain(name, lookupAddress)) {
-      throw new MongoAPIError('Server record does not share hostname with parent URI');
-    }
-  }
-
-  const hostAddresses = addresses.map(r => HostAddress.fromString(`${r.name}:${r.port ?? 27017}`));
-
-  validateLoadBalancedOptions(hostAddresses, options, true);
-
-  // Resolve TXT record and add options from there if they exist.
-  let record;
-  try {
-    record = await dns.promises.resolveTxt(lookupAddress);
-  } catch (error) {
-    if (error.code !== 'ENODATA' && error.code !== 'ENOTFOUND') {
-      throw error;
-    }
-    return hostAddresses;
-  }
-
-  if (record.length > 1) {
-    throw new MongoParseError('Multiple text records not allowed');
-  }
-
-  const txtRecordOptions = new URLSearchParams(record[0].join(''));
-  const txtRecordOptionKeys = [...txtRecordOptions.keys()];
-  if (txtRecordOptionKeys.some(key => !VALID_TXT_RECORDS.includes(key))) {
-    throw new MongoParseError(`Text record may only set any of: ${VALID_TXT_RECORDS.join(', ')}`);
-  }
-
-  if (VALID_TXT_RECORDS.some(option => txtRecordOptions.get(option) === '')) {
-    throw new MongoParseError('Cannot have empty URI params in DNS TXT Record');
-  }
-
-  const source = txtRecordOptions.get('authSource') ?? undefined;
-  const replicaSet = txtRecordOptions.get('replicaSet') ?? undefined;
-  const loadBalanced = txtRecordOptions.get('loadBalanced') ?? undefined;
-
-  if (
-    !options.userSpecifiedAuthSource &&
-    source &&
-    options.credentials &&
-    !AUTH_MECHS_AUTH_SRC_EXTERNAL.has(options.credentials.mechanism)
-  ) {
-    options.credentials = MongoCredentials.merge(options.credentials, { source });
-  }
-
-  if (!options.userSpecifiedReplicaSet && replicaSet) {
-    options.replicaSet = replicaSet;
-  }
-
-  if (loadBalanced === 'true') {
-    options.loadBalanced = true;
-  }
-
-  if (options.replicaSet && options.srvMaxHosts > 0) {
-    throw new MongoParseError('Cannot combine replicaSet option with srvMaxHosts');
-  }
-
-  validateLoadBalancedOptions(hostAddresses, options, true);
-
-  return hostAddresses;
-}
-
-/**
- * Checks if TLS options are valid
- *
- * @param allOptions - All options provided by user or included in default options map
- * @throws MongoAPIError if TLS options are invalid
- */
-function checkTLSOptions(allOptions: CaseInsensitiveMap): void {
-  if (!allOptions) return;
-  const check = (a: string, b: string) => {
-    if (allOptions.has(a) && allOptions.has(b)) {
-      throw new MongoAPIError(`The '${a}' option cannot be used with the '${b}' option`);
-    }
-  };
-  check('tlsInsecure', 'tlsAllowInvalidCertificates');
-  check('tlsInsecure', 'tlsAllowInvalidHostnames');
-  check('tlsInsecure', 'tlsDisableCertificateRevocationCheck');
-  check('tlsInsecure', 'tlsDisableOCSPEndpointCheck');
-  check('tlsAllowInvalidCertificates', 'tlsDisableCertificateRevocationCheck');
-  check('tlsAllowInvalidCertificates', 'tlsDisableOCSPEndpointCheck');
-  check('tlsDisableCertificateRevocationCheck', 'tlsDisableOCSPEndpointCheck');
-}
-function getBoolean(name: string, value: unknown): boolean {
-  if (typeof value === 'boolean') return value;
-  switch (value) {
-    case 'true':
-      return true;
-    case 'false':
-      return false;
-    default:
-      throw new MongoParseError(`${name} must be either "true" or "false"`);
-  }
-}
-
-function getIntFromOptions(name: string, value: unknown): number {
-  const parsedInt = parseInteger(value);
-  if (parsedInt != null) {
-    return parsedInt;
-  }
-  throw new MongoParseError(`Expected ${name} to be stringified int value, got: ${value}`);
-}
-
-function getUIntFromOptions(name: string, value: unknown): number {
-  const parsedValue = getIntFromOptions(name, value);
-  if (parsedValue < 0) {
-    throw new MongoParseError(`${name} can only be a positive int value, got: ${value}`);
-  }
-  return parsedValue;
-}
-
-function* entriesFromString(value: string): Generator<[string, string]> {
-  if (value === '') {
-    return;
-  }
-  const keyValuePairs = value.split(',');
-  for (const keyValue of keyValuePairs) {
-    const [key, value] = keyValue.split(/:(.*)/);
-    if (value == null) {
-      throw new MongoParseError('Cannot have undefined values in key value pairs');
-    }
-
-    yield [key, value];
-  }
-}
-
-class CaseInsensitiveMap<Value = any> extends Map<string, Value> {
-  constructor(entries: Array<[string, any]> = []) {
-    super(entries.map(([k, v]) => [k.toLowerCase(), v]));
-  }
-  override has(k: string) {
-    return super.has(k.toLowerCase());
-  }
-  override get(k: string) {
-    return super.get(k.toLowerCase());
-  }
-  override set(k: string, v: any) {
-    return super.set(k.toLowerCase(), v);
-  }
-  override delete(k: string): boolean {
-    return super.delete(k.toLowerCase());
-  }
-}
-
-export function parseOptions(
-  uri: string,
-  mongoClient: MongoClient | MongoClientOptions | undefined = undefined,
-  options: MongoClientOptions = {}
-): MongoOptions {
-  if (mongoClient != null && !(mongoClient instanceof MongoClient)) {
-    options = mongoClient;
-    mongoClient = undefined;
-  }
-
-  // validate BSONOptions
-  if (options.useBigInt64 && typeof options.promoteLongs === 'boolean' && !options.promoteLongs) {
-    throw new MongoAPIError('Must request either bigint or Long for int64 deserialization');
-  }
-
-  if (options.useBigInt64 && typeof options.promoteValues === 'boolean' && !options.promoteValues) {
-    throw new MongoAPIError('Must request either bigint or Long for int64 deserialization');
-  }
-
-  const url = new ConnectionString(uri);
-  const { hosts, isSRV } = url;
-
-  const mongoOptions = Object.create(null);
-
-  // Feature flags
-  for (const flag of Object.getOwnPropertySymbols(options)) {
-    if (FEATURE_FLAGS.has(flag)) {
-      mongoOptions[flag] = options[flag];
-    }
-  }
-
-  mongoOptions.hosts = isSRV ? [] : hosts.map(HostAddress.fromString);
-
-  const urlOptions = new CaseInsensitiveMap<unknown[]>();
-
-  if (url.pathname !== '/' && url.pathname !== '') {
-    const dbName = decodeURIComponent(
-      url.pathname[0] === '/' ? url.pathname.slice(1) : url.pathname
-    );
-    if (dbName) {
-      urlOptions.set('dbName', [dbName]);
-    }
-  }
-
-  if (url.username !== '') {
-    const auth: Document = {
-      username: decodeURIComponent(url.username)
-    };
-
-    if (typeof url.password === 'string') {
-      auth.password = decodeURIComponent(url.password);
-    }
-
-    urlOptions.set('auth', [auth]);
-  }
-
-  for (const key of url.searchParams.keys()) {
-    const values = url.searchParams.getAll(key);
-
-    const isReadPreferenceTags = /readPreferenceTags/i.test(key);
-
-    if (!isReadPreferenceTags && values.length > 1) {
-      throw new MongoInvalidArgumentError(
-        `URI option "${key}" cannot appear more than once in the connection string`
-      );
-    }
-
-    if (!isReadPreferenceTags && values.includes('')) {
-      throw new MongoAPIError(`URI option "${key}" cannot be specified with no value`);
-    }
-
-    if (!urlOptions.has(key)) {
-      urlOptions.set(key, values);
-    }
-  }
-
-  const objectOptions = new CaseInsensitiveMap<unknown>(
-    Object.entries(options).filter(([, v]) => v != null)
-  );
-
-  // Validate options that can only be provided by one of uri or object
-
-  if (urlOptions.has('serverApi')) {
-    throw new MongoParseError(
-      'URI cannot contain `serverApi`, it can only be passed to the client'
-    );
-  }
-
-  const uriMechanismProperties = urlOptions.get('authMechanismProperties');
-  if (uriMechanismProperties) {
-    for (const property of uriMechanismProperties) {
-      if (/(^|,)ALLOWED_HOSTS:/.test(property as string)) {
-        throw new MongoParseError(
-          'Auth mechanism property ALLOWED_HOSTS is not allowed in the connection string.'
-        );
-      }
-    }
-  }
-
-  if (objectOptions.has('loadBalanced')) {
-    throw new MongoParseError('loadBalanced is only a valid option in the URI');
-  }
-
-  // All option collection
-
-  const allProvidedOptions = new CaseInsensitiveMap<unknown[]>();
-
-  const allProvidedKeys = new Set<string>([...urlOptions.keys(), ...objectOptions.keys()]);
-
-  for (const key of allProvidedKeys) {
-    const values = [];
-    const objectOptionValue = objectOptions.get(key);
-    if (objectOptionValue != null) {
-      values.push(objectOptionValue);
-    }
-
-    const urlValues = urlOptions.get(key) ?? [];
-    values.push(...urlValues);
-    allProvidedOptions.set(key, values);
-  }
-
-  if (allProvidedOptions.has('tls') || allProvidedOptions.has('ssl')) {
-    const tlsAndSslOpts = (allProvidedOptions.get('tls') || [])
-      .concat(allProvidedOptions.get('ssl') || [])
-      .map(getBoolean.bind(null, 'tls/ssl'));
-    if (new Set(tlsAndSslOpts).size !== 1) {
-      throw new MongoParseError('All values of tls/ssl must be the same.');
-    }
-  }
-
-  checkTLSOptions(allProvidedOptions);
-
-  const unsupportedOptions = setDifference(
-    allProvidedKeys,
-    Array.from(Object.keys(OPTIONS)).map(s => s.toLowerCase())
-  );
-  if (unsupportedOptions.size !== 0) {
-    const optionWord = unsupportedOptions.size > 1 ? 'options' : 'option';
-    const isOrAre = unsupportedOptions.size > 1 ? 'are' : 'is';
-    throw new MongoParseError(
-      `${optionWord} ${Array.from(unsupportedOptions).join(', ')} ${isOrAre} not supported`
-    );
-  }
-
-  // Option parsing and setting
-
-  for (const [key, descriptor] of Object.entries(OPTIONS)) {
-    const values = allProvidedOptions.get(key);
-    if (!values || values.length === 0) {
-      if (DEFAULT_OPTIONS.has(key)) {
-        setOption(mongoOptions, key, descriptor, [DEFAULT_OPTIONS.get(key)]);
-      }
-    } else {
-      const { deprecated } = descriptor;
-      if (deprecated) {
-        const deprecatedMsg = typeof deprecated === 'string' ? `: ${deprecated}` : '';
-        emitWarning(`${key} is a deprecated option${deprecatedMsg}`);
-      }
-
-      setOption(mongoOptions, key, descriptor, values);
-    }
-  }
-
-  if (mongoOptions.credentials) {
-    const isGssapi = mongoOptions.credentials.mechanism === AuthMechanism.MONGODB_GSSAPI;
-    const isX509 = mongoOptions.credentials.mechanism === AuthMechanism.MONGODB_X509;
-    const isAws = mongoOptions.credentials.mechanism === AuthMechanism.MONGODB_AWS;
-    const isOidc = mongoOptions.credentials.mechanism === AuthMechanism.MONGODB_OIDC;
-    if (
-      (isGssapi || isX509) &&
-      allProvidedOptions.has('authSource') &&
-      mongoOptions.credentials.source !== '$external'
-    ) {
-      // If authSource was explicitly given and its incorrect, we error
-      throw new MongoParseError(
-        `authMechanism ${mongoOptions.credentials.mechanism} requires an authSource of '$external'`
-      );
-    }
-
-    if (
-      !(isGssapi || isX509 || isAws || isOidc) &&
-      mongoOptions.dbName &&
-      !allProvidedOptions.has('authSource')
-    ) {
-      // inherit the dbName unless GSSAPI or X509, then silently ignore dbName
-      // and there was no specific authSource given
-      mongoOptions.credentials = MongoCredentials.merge(mongoOptions.credentials, {
-        source: mongoOptions.dbName
-      });
-    }
-
-    if (isAws && mongoOptions.credentials.username && !mongoOptions.credentials.password) {
-      throw new MongoMissingCredentialsError(
-        `When using ${mongoOptions.credentials.mechanism} password must be set when a username is specified`
-      );
-    }
-
-    mongoOptions.credentials.validate();
-
-    // Check if the only auth related option provided was authSource, if so we can remove credentials
-    if (
-      mongoOptions.credentials.password === '' &&
-      mongoOptions.credentials.username === '' &&
-      mongoOptions.credentials.mechanism === AuthMechanism.MONGODB_DEFAULT &&
-      Object.keys(mongoOptions.credentials.mechanismProperties).length === 0
-    ) {
-      delete mongoOptions.credentials;
-    }
-  }
-
-  if (!mongoOptions.dbName) {
-    // dbName default is applied here because of the credential validation above
-    mongoOptions.dbName = 'test';
-  }
-
-  validateLoadBalancedOptions(hosts, mongoOptions, isSRV);
-
-  if (mongoClient && mongoOptions.autoEncryption) {
-    Encrypter.checkForMongoCrypt();
-    mongoOptions.encrypter = new Encrypter(mongoClient, uri, options);
-    mongoOptions.autoEncrypter = mongoOptions.encrypter.autoEncrypter;
-  }
-
-  // Potential SRV Overrides and SRV connection string validations
-
-  mongoOptions.userSpecifiedAuthSource =
-    objectOptions.has('authSource') || urlOptions.has('authSource');
-  mongoOptions.userSpecifiedReplicaSet =
-    objectOptions.has('replicaSet') || urlOptions.has('replicaSet');
-
-  if (isSRV) {
-    // SRV Record is resolved upon connecting
-    mongoOptions.srvHost = hosts[0];
-
-    if (mongoOptions.directConnection) {
-      throw new MongoAPIError('SRV URI does not support directConnection');
-    }
-
-    if (mongoOptions.srvMaxHosts > 0 && typeof mongoOptions.replicaSet === 'string') {
-      throw new MongoParseError('Cannot use srvMaxHosts option with replicaSet');
-    }
-
-    // SRV turns on TLS by default, but users can override and turn it off
-    const noUserSpecifiedTLS = !objectOptions.has('tls') && !urlOptions.has('tls');
-    const noUserSpecifiedSSL = !objectOptions.has('ssl') && !urlOptions.has('ssl');
-    if (noUserSpecifiedTLS && noUserSpecifiedSSL) {
-      mongoOptions.tls = true;
-    }
-  } else {
-    const userSpecifiedSrvOptions =
-      urlOptions.has('srvMaxHosts') ||
-      objectOptions.has('srvMaxHosts') ||
-      urlOptions.has('srvServiceName') ||
-      objectOptions.has('srvServiceName');
-
-    if (userSpecifiedSrvOptions) {
-      throw new MongoParseError(
-        'Cannot use srvMaxHosts or srvServiceName with a non-srv connection string'
-      );
-    }
-  }
-
-  if (mongoOptions.directConnection && mongoOptions.hosts.length !== 1) {
-    throw new MongoParseError('directConnection option requires exactly one host');
-  }
-
-  if (
-    !mongoOptions.proxyHost &&
-    (mongoOptions.proxyPort || mongoOptions.proxyUsername || mongoOptions.proxyPassword)
-  ) {
-    throw new MongoParseError('Must specify proxyHost if other proxy options are passed');
-  }
-
-  if (
-    (mongoOptions.proxyUsername && !mongoOptions.proxyPassword) ||
-    (!mongoOptions.proxyUsername && mongoOptions.proxyPassword)
-  ) {
-    throw new MongoParseError('Can only specify both of proxy username/password or neither');
-  }
-
-  const proxyOptions = ['proxyHost', 'proxyPort', 'proxyUsername', 'proxyPassword'].map(
-    key => urlOptions.get(key) ?? []
-  );
-
-  if (proxyOptions.some(options => options.length > 1)) {
-    throw new MongoParseError(
-      'Proxy options cannot be specified multiple times in the connection string'
-    );
-  }
-
-  const loggerFeatureFlag = Symbol.for('@@mdb.enableMongoLogger');
-  mongoOptions[loggerFeatureFlag] = mongoOptions[loggerFeatureFlag] ?? false;
-
-  let loggerEnvOptions: MongoLoggerEnvOptions = {};
-  let loggerClientOptions: MongoLoggerMongoClientOptions = {};
-  if (mongoOptions[loggerFeatureFlag]) {
-    loggerEnvOptions = {
-      MONGODB_LOG_COMMAND: process.env.MONGODB_LOG_COMMAND,
-      MONGODB_LOG_TOPOLOGY: process.env.MONGODB_LOG_TOPOLOGY,
-      MONGODB_LOG_SERVER_SELECTION: process.env.MONGODB_LOG_SERVER_SELECTION,
-      MONGODB_LOG_CONNECTION: process.env.MONGODB_LOG_CONNECTION,
-      MONGODB_LOG_CLIENT: process.env.MONGODB_LOG_CLIENT,
-      MONGODB_LOG_ALL: process.env.MONGODB_LOG_ALL,
-      MONGODB_LOG_MAX_DOCUMENT_LENGTH: process.env.MONGODB_LOG_MAX_DOCUMENT_LENGTH,
-      MONGODB_LOG_PATH: process.env.MONGODB_LOG_PATH,
-      ...mongoOptions[Symbol.for('@@mdb.internalLoggerConfig')]
-    };
-    loggerClientOptions = {
-      mongodbLogPath: mongoOptions.mongodbLogPath,
-      mongodbLogComponentSeverities: mongoOptions.mongodbLogComponentSeverities,
-      mongodbLogMaxDocumentLength: mongoOptions.mongodbLogMaxDocumentLength
-    };
-  }
-  mongoOptions.mongoLoggerOptions = MongoLogger.resolveOptions(
-    loggerEnvOptions,
-    loggerClientOptions
-  );
-
-  mongoOptions.metadata = makeClientMetadata(mongoOptions);
-
-  return mongoOptions;
-}
-
-/**
- * #### Throws if LB mode is true:
- * - hosts contains more than one host
- * - there is a replicaSet name set
- * - directConnection is set
- * - if srvMaxHosts is used when an srv connection string is passed in
- *
- * @throws MongoParseError
- */
-function validateLoadBalancedOptions(
-  hosts: HostAddress[] | string[],
-  mongoOptions: MongoOptions,
-  isSrv: boolean
-): void {
-  if (mongoOptions.loadBalanced) {
-    if (hosts.length > 1) {
-      throw new MongoParseError(LB_SINGLE_HOST_ERROR);
-    }
-    if (mongoOptions.replicaSet) {
-      throw new MongoParseError(LB_REPLICA_SET_ERROR);
-    }
-    if (mongoOptions.directConnection) {
-      throw new MongoParseError(LB_DIRECT_CONNECTION_ERROR);
-    }
-
-    if (isSrv && mongoOptions.srvMaxHosts > 0) {
-      throw new MongoParseError('Cannot limit srv hosts with loadBalanced enabled');
-    }
-  }
-  return;
-}
-
-function setOption(
-  mongoOptions: any,
-  key: string,
-  descriptor: OptionDescriptor,
-  values: unknown[]
-) {
-  const { target, type, transform } = descriptor;
-  const name = target ?? key;
-
-  switch (type) {
-    case 'boolean':
-      mongoOptions[name] = getBoolean(name, values[0]);
-      break;
-    case 'int':
-      mongoOptions[name] = getIntFromOptions(name, values[0]);
-      break;
-    case 'uint':
-      mongoOptions[name] = getUIntFromOptions(name, values[0]);
-      break;
-    case 'string':
-      if (values[0] == null) {
-        break;
-      }
-      mongoOptions[name] = String(values[0]);
-      break;
-    case 'record':
-      if (!isRecord(values[0])) {
-        throw new MongoParseError(`${name} must be an object`);
-      }
-      mongoOptions[name] = values[0];
-      break;
-    case 'any':
-      mongoOptions[name] = values[0];
-      break;
-    default: {
-      if (!transform) {
-        throw new MongoParseError('Descriptors missing a type must define a transform');
-      }
-      const transformValue = transform({ name, options: mongoOptions, values });
-      mongoOptions[name] = transformValue;
-      break;
-    }
-  }
-}
-
-interface OptionDescriptor {
-  target?: string;
-  type?: 'boolean' | 'int' | 'uint' | 'record' | 'string' | 'any';
-  default?: any;
-
-  deprecated?: boolean | string;
-  /**
-   * @param name - the original option name
-   * @param options - the options so far for resolution
-   * @param values - the possible values in precedence order
-   */
-  transform?: (args: { name: string; options: MongoOptions; values: unknown[] }) => unknown;
-}
-
-export const OPTIONS = {
-  appName: {
-    type: 'string'
-  },
-  auth: {
-    target: 'credentials',
-    transform({ name, options, values: [value] }): MongoCredentials {
-      if (!isRecord(value, ['username', 'password'] as const)) {
-        throw new MongoParseError(
-          `${name} must be an object with 'username' and 'password' properties`
-        );
-      }
-      return MongoCredentials.merge(options.credentials, {
-        username: value.username,
-        password: value.password
-      });
-    }
-  },
-  authMechanism: {
-    target: 'credentials',
-    transform({ options, values: [value] }): MongoCredentials {
-      const mechanisms = Object.values(AuthMechanism);
-      const [mechanism] = mechanisms.filter(m => m.match(RegExp(String.raw`\b${value}\b`, 'i')));
-      if (!mechanism) {
-        throw new MongoParseError(`authMechanism one of ${mechanisms}, got ${value}`);
-      }
-      let source = options.credentials?.source;
-      if (
-        mechanism === AuthMechanism.MONGODB_PLAIN ||
-        AUTH_MECHS_AUTH_SRC_EXTERNAL.has(mechanism)
-      ) {
-        // some mechanisms have '$external' as the Auth Source
-        source = '$external';
-      }
-
-      let password = options.credentials?.password;
-      if (mechanism === AuthMechanism.MONGODB_X509 && password === '') {
-        password = undefined;
-      }
-      return MongoCredentials.merge(options.credentials, {
-        mechanism,
-        source,
-        password
-      });
-    }
-  },
-  authMechanismProperties: {
-    target: 'credentials',
-    transform({ options, values }): MongoCredentials {
-      // We can have a combination of options passed in the URI and options passed
-      // as an object to the MongoClient. So we must transform the string options
-      // as well as merge them together with a potentially provided object.
-      let mechanismProperties = Object.create(null);
-
-      for (const optionValue of values) {
-        if (typeof optionValue === 'string') {
-          for (const [key, value] of entriesFromString(optionValue)) {
-            try {
-              mechanismProperties[key] = getBoolean(key, value);
-            } catch {
-              mechanismProperties[key] = value;
-            }
-          }
-        } else {
-          if (!isRecord(optionValue)) {
-            throw new MongoParseError('AuthMechanismProperties must be an object');
-          }
-          mechanismProperties = { ...optionValue };
-        }
-      }
-      return MongoCredentials.merge(options.credentials, {
-        mechanismProperties
-      });
-    }
-  },
-  authSource: {
-    target: 'credentials',
-    transform({ options, values: [value] }): MongoCredentials {
-      const source = String(value);
-      return MongoCredentials.merge(options.credentials, { source });
-    }
-  },
-  autoEncryption: {
-    type: 'record'
-  },
-  bsonRegExp: {
-    type: 'boolean'
-  },
-  serverApi: {
-    target: 'serverApi',
-    transform({ values: [version] }): ServerApi {
-      const serverApiToValidate =
-        typeof version === 'string' ? ({ version } as ServerApi) : (version as ServerApi);
-      const versionToValidate = serverApiToValidate && serverApiToValidate.version;
-      if (!versionToValidate) {
-        throw new MongoParseError(
-          `Invalid \`serverApi\` property; must specify a version from the following enum: ["${Object.values(
-            ServerApiVersion
-          ).join('", "')}"]`
-        );
-      }
-      if (!Object.values(ServerApiVersion).some(v => v === versionToValidate)) {
-        throw new MongoParseError(
-          `Invalid server API version=${versionToValidate}; must be in the following enum: ["${Object.values(
-            ServerApiVersion
-          ).join('", "')}"]`
-        );
-      }
-      return serverApiToValidate;
-    }
-  },
-  checkKeys: {
-    type: 'boolean'
-  },
-  compressors: {
-    default: 'none',
-    target: 'compressors',
-    transform({ values }) {
-      const compressionList = new Set();
-      for (const compVal of values as (CompressorName[] | string)[]) {
-        const compValArray = typeof compVal === 'string' ? compVal.split(',') : compVal;
-        if (!Array.isArray(compValArray)) {
-          throw new MongoInvalidArgumentError(
-            'compressors must be an array or a comma-delimited list of strings'
-          );
-        }
-        for (const c of compValArray) {
-          if (Object.keys(Compressor).includes(String(c))) {
-            compressionList.add(String(c));
-          } else {
-            throw new MongoInvalidArgumentError(
-              `${c} is not a valid compression mechanism. Must be one of: ${Object.keys(
-                Compressor
-              )}.`
-            );
-          }
-        }
-      }
-      return [...compressionList];
-    }
-  },
-  connectTimeoutMS: {
-    default: 30000,
-    type: 'uint'
-  },
-  dbName: {
-    type: 'string'
-  },
-  directConnection: {
-    default: false,
-    type: 'boolean'
-  },
-  driverInfo: {
-    default: {},
-    type: 'record'
-  },
-  enableUtf8Validation: { type: 'boolean', default: true },
-  family: {
-    transform({ name, values: [value] }): 4 | 6 {
-      const transformValue = getIntFromOptions(name, value);
-      if (transformValue === 4 || transformValue === 6) {
-        return transformValue;
-      }
-      throw new MongoParseError(`Option 'family' must be 4 or 6 got ${transformValue}.`);
-    }
-  },
-  fieldsAsRaw: {
-    type: 'record'
-  },
-  forceServerObjectId: {
-    default: false,
-    type: 'boolean'
-  },
-  fsync: {
-    deprecated: 'Please use journal instead',
-    target: 'writeConcern',
-    transform({ name, options, values: [value] }): WriteConcern {
-      const wc = WriteConcern.fromOptions({
-        writeConcern: {
-          ...options.writeConcern,
-          fsync: getBoolean(name, value)
-        }
-      });
-      if (!wc) throw new MongoParseError(`Unable to make a writeConcern from fsync=${value}`);
-      return wc;
-    }
-  } as OptionDescriptor,
-  heartbeatFrequencyMS: {
-    default: 10000,
-    type: 'uint'
-  },
-  ignoreUndefined: {
-    type: 'boolean'
-  },
-  j: {
-    deprecated: 'Please use journal instead',
-    target: 'writeConcern',
-    transform({ name, options, values: [value] }): WriteConcern {
-      const wc = WriteConcern.fromOptions({
-        writeConcern: {
-          ...options.writeConcern,
-          journal: getBoolean(name, value)
-        }
-      });
-      if (!wc) throw new MongoParseError(`Unable to make a writeConcern from journal=${value}`);
-      return wc;
-    }
-  } as OptionDescriptor,
-  journal: {
-    target: 'writeConcern',
-    transform({ name, options, values: [value] }): WriteConcern {
-      const wc = WriteConcern.fromOptions({
-        writeConcern: {
-          ...options.writeConcern,
-          journal: getBoolean(name, value)
-        }
-      });
-      if (!wc) throw new MongoParseError(`Unable to make a writeConcern from journal=${value}`);
-      return wc;
-    }
-  },
-  loadBalanced: {
-    default: false,
-    type: 'boolean'
-  },
-  localThresholdMS: {
-    default: 15,
-    type: 'uint'
-  },
-  maxConnecting: {
-    default: 2,
-    transform({ name, values: [value] }): number {
-      const maxConnecting = getUIntFromOptions(name, value);
-      if (maxConnecting === 0) {
-        throw new MongoInvalidArgumentError('maxConnecting must be > 0 if specified');
-      }
-      return maxConnecting;
-    }
-  },
-  maxIdleTimeMS: {
-    default: 0,
-    type: 'uint'
-  },
-  maxPoolSize: {
-    default: 100,
-    type: 'uint'
-  },
-  maxStalenessSeconds: {
-    target: 'readPreference',
-    transform({ name, options, values: [value] }) {
-      const maxStalenessSeconds = getUIntFromOptions(name, value);
-      if (options.readPreference) {
-        return ReadPreference.fromOptions({
-          readPreference: { ...options.readPreference, maxStalenessSeconds }
-        });
-      } else {
-        return new ReadPreference('secondary', undefined, { maxStalenessSeconds });
-      }
-    }
-  },
-  minInternalBufferSize: {
-    type: 'uint'
-  },
-  minPoolSize: {
-    default: 0,
-    type: 'uint'
-  },
-  minHeartbeatFrequencyMS: {
-    default: 500,
-    type: 'uint'
-  },
-  monitorCommands: {
-    default: false,
-    type: 'boolean'
-  },
-  name: {
-    target: 'driverInfo',
-    transform({ values: [value], options }) {
-      return { ...options.driverInfo, name: String(value) };
-    }
-  } as OptionDescriptor,
-  noDelay: {
-    default: true,
-    type: 'boolean'
-  },
-  pkFactory: {
-    default: DEFAULT_PK_FACTORY,
-    transform({ values: [value] }): PkFactory {
-      if (isRecord(value, ['createPk'] as const) && typeof value.createPk === 'function') {
-        return value as PkFactory;
-      }
-      throw new MongoParseError(
-        `Option pkFactory must be an object with a createPk function, got ${value}`
-      );
-    }
-  },
-  promoteBuffers: {
-    type: 'boolean'
-  },
-  promoteLongs: {
-    type: 'boolean'
-  },
-  promoteValues: {
-    type: 'boolean'
-  },
-  useBigInt64: {
-    type: 'boolean'
-  },
-  proxyHost: {
-    type: 'string'
-  },
-  proxyPassword: {
-    type: 'string'
-  },
-  proxyPort: {
-    type: 'uint'
-  },
-  proxyUsername: {
-    type: 'string'
-  },
-  raw: {
-    default: false,
-    type: 'boolean'
-  },
-  readConcern: {
-    transform({ values: [value], options }) {
-      if (value instanceof ReadConcern || isRecord(value, ['level'] as const)) {
-        return ReadConcern.fromOptions({ ...options.readConcern, ...value } as any);
-      }
-      throw new MongoParseError(`ReadConcern must be an object, got ${JSON.stringify(value)}`);
-    }
-  },
-  readConcernLevel: {
-    target: 'readConcern',
-    transform({ values: [level], options }) {
-      return ReadConcern.fromOptions({
-        ...options.readConcern,
-        level: level as ReadConcernLevel
-      });
-    }
-  },
-  readPreference: {
-    default: ReadPreference.primary,
-    transform({ values: [value], options }) {
-      if (value instanceof ReadPreference) {
-        return ReadPreference.fromOptions({
-          readPreference: { ...options.readPreference, ...value },
-          ...value
-        } as any);
-      }
-      if (isRecord(value, ['mode'] as const)) {
-        const rp = ReadPreference.fromOptions({
-          readPreference: { ...options.readPreference, ...value },
-          ...value
-        } as any);
-        if (rp) return rp;
-        else throw new MongoParseError(`Cannot make read preference from ${JSON.stringify(value)}`);
-      }
-      if (typeof value === 'string') {
-        const rpOpts = {
-          hedge: options.readPreference?.hedge,
-          maxStalenessSeconds: options.readPreference?.maxStalenessSeconds
-        };
-        return new ReadPreference(
-          value as ReadPreferenceMode,
-          options.readPreference?.tags,
-          rpOpts
-        );
-      }
-      throw new MongoParseError(`Unknown ReadPreference value: ${value}`);
-    }
-  },
-  readPreferenceTags: {
-    target: 'readPreference',
-    transform({
-      values,
-      options
-    }: {
-      values: Array<string | Record<string, string>[]>;
-      options: MongoClientOptions;
-    }) {
-      const tags: Array<string | Record<string, string>> = Array.isArray(values[0])
-        ? values[0]
-        : (values as Array<string>);
-      const readPreferenceTags = [];
-      for (const tag of tags) {
-        const readPreferenceTag: TagSet = Object.create(null);
-        if (typeof tag === 'string') {
-          for (const [k, v] of entriesFromString(tag)) {
-            readPreferenceTag[k] = v;
-          }
-        }
-        if (isRecord(tag)) {
-          for (const [k, v] of Object.entries(tag)) {
-            readPreferenceTag[k] = v;
-          }
-        }
-        readPreferenceTags.push(readPreferenceTag);
-      }
-      return ReadPreference.fromOptions({
-        readPreference: options.readPreference,
-        readPreferenceTags
-      });
-    }
-  },
-  replicaSet: {
-    type: 'string'
-  },
-  retryReads: {
-    default: true,
-    type: 'boolean'
-  },
-  retryWrites: {
-    default: true,
-    type: 'boolean'
-  },
-  serializeFunctions: {
-    type: 'boolean'
-  },
-  serverMonitoringMode: {
-    default: 'auto',
-    transform({ values: [value] }) {
-      if (!Object.values(ServerMonitoringMode).includes(value as any)) {
-        throw new MongoParseError(
-          'serverMonitoringMode must be one of `auto`, `poll`, or `stream`'
-        );
-      }
-      return value;
-    }
-  },
-  serverSelectionTimeoutMS: {
-    default: 30000,
-    type: 'uint'
-  },
-  servername: {
-    type: 'string'
-  },
-  socketTimeoutMS: {
-    default: 0,
-    type: 'uint'
-  },
-  srvMaxHosts: {
-    type: 'uint',
-    default: 0
-  },
-  srvServiceName: {
-    type: 'string',
-    default: 'mongodb'
-  },
-  ssl: {
-    target: 'tls',
-    type: 'boolean'
-  },
-  tls: {
-    type: 'boolean'
-  },
-  tlsAllowInvalidCertificates: {
-    target: 'rejectUnauthorized',
-    transform({ name, values: [value] }) {
-      // allowInvalidCertificates is the inverse of rejectUnauthorized
-      return !getBoolean(name, value);
-    }
-  },
-  tlsAllowInvalidHostnames: {
-    target: 'checkServerIdentity',
-    transform({ name, values: [value] }) {
-      // tlsAllowInvalidHostnames means setting the checkServerIdentity function to a noop
-      return getBoolean(name, value) ? () => undefined : undefined;
-    }
-  },
-  tlsCAFile: {
-    type: 'string'
-  },
-  tlsCRLFile: {
-    type: 'string'
-  },
-  tlsCertificateKeyFile: {
-    type: 'string'
-  },
-  tlsCertificateKeyFilePassword: {
-    target: 'passphrase',
-    type: 'any'
-  },
-  tlsInsecure: {
-    transform({ name, options, values: [value] }) {
-      const tlsInsecure = getBoolean(name, value);
-      if (tlsInsecure) {
-        options.checkServerIdentity = () => undefined;
-        options.rejectUnauthorized = false;
-      } else {
-        options.checkServerIdentity = options.tlsAllowInvalidHostnames
-          ? () => undefined
-          : undefined;
-        options.rejectUnauthorized = options.tlsAllowInvalidCertificates ? false : true;
-      }
-      return tlsInsecure;
-    }
-  },
-  w: {
-    target: 'writeConcern',
-    transform({ values: [value], options }) {
-      return WriteConcern.fromOptions({ writeConcern: { ...options.writeConcern, w: value as W } });
-    }
-  },
-  waitQueueTimeoutMS: {
-    default: 0,
-    type: 'uint'
-  },
-  writeConcern: {
-    target: 'writeConcern',
-    transform({ values: [value], options }) {
-      if (isRecord(value) || value instanceof WriteConcern) {
-        return WriteConcern.fromOptions({
-          writeConcern: {
-            ...options.writeConcern,
-            ...value
-          }
-        });
-      } else if (value === 'majority' || typeof value === 'number') {
-        return WriteConcern.fromOptions({
-          writeConcern: {
-            ...options.writeConcern,
-            w: value
-          }
-        });
-      }
-
-      throw new MongoParseError(`Invalid WriteConcern cannot parse: ${JSON.stringify(value)}`);
-    }
-  },
-  wtimeout: {
-    deprecated: 'Please use wtimeoutMS instead',
-    target: 'writeConcern',
-    transform({ values: [value], options }) {
-      const wc = WriteConcern.fromOptions({
-        writeConcern: {
-          ...options.writeConcern,
-          wtimeout: getUIntFromOptions('wtimeout', value)
-        }
-      });
-      if (wc) return wc;
-      throw new MongoParseError(`Cannot make WriteConcern from wtimeout`);
-    }
-  } as OptionDescriptor,
-  wtimeoutMS: {
-    target: 'writeConcern',
-    transform({ values: [value], options }) {
-      const wc = WriteConcern.fromOptions({
-        writeConcern: {
-          ...options.writeConcern,
-          wtimeoutMS: getUIntFromOptions('wtimeoutMS', value)
-        }
-      });
-      if (wc) return wc;
-      throw new MongoParseError(`Cannot make WriteConcern from wtimeout`);
-    }
-  },
-  zlibCompressionLevel: {
-    default: 0,
-    type: 'int'
-  },
-  // Custom types for modifying core behavior
-  connectionType: { type: 'any' },
-  srvPoller: { type: 'any' },
-  // Accepted NodeJS Options
-  minDHSize: { type: 'any' },
-  pskCallback: { type: 'any' },
-  secureContext: { type: 'any' },
-  enableTrace: { type: 'any' },
-  requestCert: { type: 'any' },
-  rejectUnauthorized: { type: 'any' },
-  checkServerIdentity: { type: 'any' },
-  ALPNProtocols: { type: 'any' },
-  SNICallback: { type: 'any' },
-  session: { type: 'any' },
-  requestOCSP: { type: 'any' },
-  localAddress: { type: 'any' },
-  localPort: { type: 'any' },
-  hints: { type: 'any' },
-  lookup: { type: 'any' },
-  ca: { type: 'any' },
-  cert: { type: 'any' },
-  ciphers: { type: 'any' },
-  crl: { type: 'any' },
-  ecdhCurve: { type: 'any' },
-  key: { type: 'any' },
-  passphrase: { type: 'any' },
-  pfx: { type: 'any' },
-  secureProtocol: { type: 'any' },
-  index: { type: 'any' },
-  // Legacy options from v3 era
-  useNewUrlParser: {
-    type: 'boolean',
-    deprecated:
-      'useNewUrlParser has no effect since Node.js Driver version 4.0.0 and will be removed in the next major version'
-  } as OptionDescriptor,
-  useUnifiedTopology: {
-    type: 'boolean',
-    deprecated:
-      'useUnifiedTopology has no effect since Node.js Driver version 4.0.0 and will be removed in the next major version'
-  } as OptionDescriptor,
-  // MongoLogger
-  /**
-   * @internal
-   * TODO: NODE-5671 - remove internal flag
-   */
-  mongodbLogPath: { type: 'any' },
-  /**
-   * @internal
-   * TODO: NODE-5671 - remove internal flag
-   */
-  mongodbLogComponentSeverities: { type: 'any' },
-  /**
-   * @internal
-   * TODO: NODE-5671 - remove internal flag
-   */
-  mongodbLogMaxDocumentLength: { type: 'uint' }
-} as Record<keyof MongoClientOptions, OptionDescriptor>;
-
-export const DEFAULT_OPTIONS = new CaseInsensitiveMap(
-  Object.entries(OPTIONS)
-    .filter(([, descriptor]) => descriptor.default != null)
-    .map(([k, d]) => [k, d.default])
-);
-
-/**
- * Set of permitted feature flags
- * @internal
- */
-export const FEATURE_FLAGS = new Set([
-  Symbol.for('@@mdb.skipPingOnConnect'),
-  Symbol.for('@@mdb.enableMongoLogger'),
-  Symbol.for('@@mdb.internalLoggerConfig')
-]);
diff --git a/server/data-import/node_modules/mongodb/src/constants.ts b/server/data-import/node_modules/mongodb/src/constants.ts
deleted file mode 100644
index e3da4efaaee7bd61c309fef0f166044c404cab38..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/constants.ts
+++ /dev/null
@@ -1,147 +0,0 @@
-export const SYSTEM_NAMESPACE_COLLECTION = 'system.namespaces';
-export const SYSTEM_INDEX_COLLECTION = 'system.indexes';
-export const SYSTEM_PROFILE_COLLECTION = 'system.profile';
-export const SYSTEM_USER_COLLECTION = 'system.users';
-export const SYSTEM_COMMAND_COLLECTION = '$cmd';
-export const SYSTEM_JS_COLLECTION = 'system.js';
-
-// events
-export const ERROR = 'error' as const;
-export const TIMEOUT = 'timeout' as const;
-export const CLOSE = 'close' as const;
-export const OPEN = 'open' as const;
-export const CONNECT = 'connect' as const;
-export const CLOSED = 'closed' as const;
-export const ENDED = 'ended' as const;
-export const MESSAGE = 'message' as const;
-export const PINNED = 'pinned' as const;
-export const UNPINNED = 'unpinned' as const;
-export const DESCRIPTION_RECEIVED = 'descriptionReceived';
-export const SERVER_OPENING = 'serverOpening' as const;
-export const SERVER_CLOSED = 'serverClosed' as const;
-export const SERVER_DESCRIPTION_CHANGED = 'serverDescriptionChanged' as const;
-export const TOPOLOGY_OPENING = 'topologyOpening' as const;
-export const TOPOLOGY_CLOSED = 'topologyClosed' as const;
-export const TOPOLOGY_DESCRIPTION_CHANGED = 'topologyDescriptionChanged' as const;
-/** @internal */
-export const CONNECTION_POOL_CREATED = 'connectionPoolCreated' as const;
-/** @internal */
-export const CONNECTION_POOL_CLOSED = 'connectionPoolClosed' as const;
-/** @internal */
-export const CONNECTION_POOL_CLEARED = 'connectionPoolCleared' as const;
-/** @internal */
-export const CONNECTION_POOL_READY = 'connectionPoolReady' as const;
-/** @internal */
-export const CONNECTION_CREATED = 'connectionCreated' as const;
-/** @internal */
-export const CONNECTION_READY = 'connectionReady' as const;
-/** @internal */
-export const CONNECTION_CLOSED = 'connectionClosed' as const;
-/** @internal */
-export const CONNECTION_CHECK_OUT_STARTED = 'connectionCheckOutStarted' as const;
-/** @internal */
-export const CONNECTION_CHECK_OUT_FAILED = 'connectionCheckOutFailed' as const;
-/** @internal */
-export const CONNECTION_CHECKED_OUT = 'connectionCheckedOut' as const;
-/** @internal */
-export const CONNECTION_CHECKED_IN = 'connectionCheckedIn' as const;
-export const CLUSTER_TIME_RECEIVED = 'clusterTimeReceived' as const;
-export const COMMAND_STARTED = 'commandStarted' as const;
-export const COMMAND_SUCCEEDED = 'commandSucceeded' as const;
-export const COMMAND_FAILED = 'commandFailed' as const;
-export const SERVER_HEARTBEAT_STARTED = 'serverHeartbeatStarted' as const;
-export const SERVER_HEARTBEAT_SUCCEEDED = 'serverHeartbeatSucceeded' as const;
-export const SERVER_HEARTBEAT_FAILED = 'serverHeartbeatFailed' as const;
-export const RESPONSE = 'response' as const;
-export const MORE = 'more' as const;
-export const INIT = 'init' as const;
-export const CHANGE = 'change' as const;
-export const END = 'end' as const;
-export const RESUME_TOKEN_CHANGED = 'resumeTokenChanged' as const;
-
-/** @public */
-export const HEARTBEAT_EVENTS = Object.freeze([
-  SERVER_HEARTBEAT_STARTED,
-  SERVER_HEARTBEAT_SUCCEEDED,
-  SERVER_HEARTBEAT_FAILED
-] as const);
-
-/** @public */
-export const CMAP_EVENTS = Object.freeze([
-  CONNECTION_POOL_CREATED,
-  CONNECTION_POOL_READY,
-  CONNECTION_POOL_CLEARED,
-  CONNECTION_POOL_CLOSED,
-  CONNECTION_CREATED,
-  CONNECTION_READY,
-  CONNECTION_CLOSED,
-  CONNECTION_CHECK_OUT_STARTED,
-  CONNECTION_CHECK_OUT_FAILED,
-  CONNECTION_CHECKED_OUT,
-  CONNECTION_CHECKED_IN
-] as const);
-
-/** @public */
-export const TOPOLOGY_EVENTS = Object.freeze([
-  SERVER_OPENING,
-  SERVER_CLOSED,
-  SERVER_DESCRIPTION_CHANGED,
-  TOPOLOGY_OPENING,
-  TOPOLOGY_CLOSED,
-  TOPOLOGY_DESCRIPTION_CHANGED,
-  ERROR,
-  TIMEOUT,
-  CLOSE
-] as const);
-
-/** @public */
-export const APM_EVENTS = Object.freeze([
-  COMMAND_STARTED,
-  COMMAND_SUCCEEDED,
-  COMMAND_FAILED
-] as const);
-
-/**
- * All events that we relay to the `Topology`
- * @internal
- */
-export const SERVER_RELAY_EVENTS = Object.freeze([
-  SERVER_HEARTBEAT_STARTED,
-  SERVER_HEARTBEAT_SUCCEEDED,
-  SERVER_HEARTBEAT_FAILED,
-  COMMAND_STARTED,
-  COMMAND_SUCCEEDED,
-  COMMAND_FAILED,
-  ...CMAP_EVENTS
-] as const);
-
-/**
- * All events we listen to from `Server` instances, but do not forward to the client
- * @internal
- */
-export const LOCAL_SERVER_EVENTS = Object.freeze([
-  CONNECT,
-  DESCRIPTION_RECEIVED,
-  CLOSED,
-  ENDED
-] as const);
-
-/** @public */
-export const MONGO_CLIENT_EVENTS = Object.freeze([
-  ...CMAP_EVENTS,
-  ...APM_EVENTS,
-  ...TOPOLOGY_EVENTS,
-  ...HEARTBEAT_EVENTS
-] as const);
-
-/**
- * @internal
- * The legacy hello command that was deprecated in MongoDB 5.0.
- */
-export const LEGACY_HELLO_COMMAND = 'ismaster';
-
-/**
- * @internal
- * The legacy hello command that was deprecated in MongoDB 5.0.
- */
-export const LEGACY_HELLO_COMMAND_CAMEL_CASE = 'isMaster';
diff --git a/server/data-import/node_modules/mongodb/src/cursor/abstract_cursor.ts b/server/data-import/node_modules/mongodb/src/cursor/abstract_cursor.ts
deleted file mode 100644
index d528d9b5d8bf1bdfbba3d99ee195e42848c51b65..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cursor/abstract_cursor.ts
+++ /dev/null
@@ -1,941 +0,0 @@
-import { Readable, Transform } from 'stream';
-
-import { type BSONSerializeOptions, type Document, Long, pluckBSONSerializeOptions } from '../bson';
-import {
-  type AnyError,
-  MongoAPIError,
-  MongoCursorExhaustedError,
-  MongoCursorInUseError,
-  MongoInvalidArgumentError,
-  MongoNetworkError,
-  MongoRuntimeError,
-  MongoTailableCursorError
-} from '../error';
-import type { MongoClient } from '../mongo_client';
-import { type TODO_NODE_3286, TypedEventEmitter } from '../mongo_types';
-import { executeOperation, type ExecutionResult } from '../operations/execute_operation';
-import { GetMoreOperation } from '../operations/get_more';
-import { KillCursorsOperation } from '../operations/kill_cursors';
-import { ReadConcern, type ReadConcernLike } from '../read_concern';
-import { ReadPreference, type ReadPreferenceLike } from '../read_preference';
-import type { Server } from '../sdam/server';
-import { ClientSession, maybeClearPinnedConnection } from '../sessions';
-import { List, type MongoDBNamespace, ns } from '../utils';
-
-/** @internal */
-const kId = Symbol('id');
-/** @internal */
-const kDocuments = Symbol('documents');
-/** @internal */
-const kServer = Symbol('server');
-/** @internal */
-const kNamespace = Symbol('namespace');
-/** @internal */
-const kClient = Symbol('client');
-/** @internal */
-const kSession = Symbol('session');
-/** @internal */
-const kOptions = Symbol('options');
-/** @internal */
-const kTransform = Symbol('transform');
-/** @internal */
-const kInitialized = Symbol('initialized');
-/** @internal */
-const kClosed = Symbol('closed');
-/** @internal */
-const kKilled = Symbol('killed');
-/** @internal */
-const kInit = Symbol('kInit');
-
-/** @public */
-export const CURSOR_FLAGS = [
-  'tailable',
-  'oplogReplay',
-  'noCursorTimeout',
-  'awaitData',
-  'exhaust',
-  'partial'
-] as const;
-
-/** @public */
-export interface CursorStreamOptions {
-  /** A transformation method applied to each document emitted by the stream */
-  transform?(this: void, doc: Document): Document;
-}
-
-/** @public */
-export type CursorFlag = (typeof CURSOR_FLAGS)[number];
-
-/** @public */
-export interface AbstractCursorOptions extends BSONSerializeOptions {
-  session?: ClientSession;
-  readPreference?: ReadPreferenceLike;
-  readConcern?: ReadConcernLike;
-  /**
-   * Specifies the number of documents to return in each response from MongoDB
-   */
-  batchSize?: number;
-  /**
-   * When applicable `maxTimeMS` controls the amount of time the initial command
-   * that constructs a cursor should take. (ex. find, aggregate, listCollections)
-   */
-  maxTimeMS?: number;
-  /**
-   * When applicable `maxAwaitTimeMS` controls the amount of time subsequent getMores
-   * that a cursor uses to fetch more data should take. (ex. cursor.next())
-   */
-  maxAwaitTimeMS?: number;
-  /**
-   * Comment to apply to the operation.
-   *
-   * In server versions pre-4.4, 'comment' must be string.  A server
-   * error will be thrown if any other type is provided.
-   *
-   * In server versions 4.4 and above, 'comment' can be any valid BSON type.
-   */
-  comment?: unknown;
-  /**
-   * By default, MongoDB will automatically close a cursor when the
-   * client has exhausted all results in the cursor. However, for [capped collections](https://www.mongodb.com/docs/manual/core/capped-collections)
-   * you may use a Tailable Cursor that remains open after the client exhausts
-   * the results in the initial cursor.
-   */
-  tailable?: boolean;
-  /**
-   * If awaitData is set to true, when the cursor reaches the end of the capped collection,
-   * MongoDB blocks the query thread for a period of time waiting for new data to arrive.
-   * When new data is inserted into the capped collection, the blocked thread is signaled
-   * to wake up and return the next batch to the client.
-   */
-  awaitData?: boolean;
-  noCursorTimeout?: boolean;
-}
-
-/** @internal */
-export type InternalAbstractCursorOptions = Omit<AbstractCursorOptions, 'readPreference'> & {
-  // resolved
-  readPreference: ReadPreference;
-  readConcern?: ReadConcern;
-
-  // cursor flags, some are deprecated
-  oplogReplay?: boolean;
-  exhaust?: boolean;
-  partial?: boolean;
-};
-
-/** @public */
-export type AbstractCursorEvents = {
-  [AbstractCursor.CLOSE](): void;
-};
-
-/** @public */
-export abstract class AbstractCursor<
-  TSchema = any,
-  CursorEvents extends AbstractCursorEvents = AbstractCursorEvents
-> extends TypedEventEmitter<CursorEvents> {
-  /** @internal */
-  [kId]: Long | null;
-  /** @internal */
-  [kSession]: ClientSession;
-  /** @internal */
-  [kServer]?: Server;
-  /** @internal */
-  [kNamespace]: MongoDBNamespace;
-  /** @internal */
-  [kDocuments]: List<TSchema>;
-  /** @internal */
-  [kClient]: MongoClient;
-  /** @internal */
-  [kTransform]?: (doc: TSchema) => any;
-  /** @internal */
-  [kInitialized]: boolean;
-  /** @internal */
-  [kClosed]: boolean;
-  /** @internal */
-  [kKilled]: boolean;
-  /** @internal */
-  [kOptions]: InternalAbstractCursorOptions;
-
-  /** @event */
-  static readonly CLOSE = 'close' as const;
-
-  /** @internal */
-  constructor(
-    client: MongoClient,
-    namespace: MongoDBNamespace,
-    options: AbstractCursorOptions = {}
-  ) {
-    super();
-
-    if (!client.s.isMongoClient) {
-      throw new MongoRuntimeError('Cursor must be constructed with MongoClient');
-    }
-    this[kClient] = client;
-    this[kNamespace] = namespace;
-    this[kId] = null;
-    this[kDocuments] = new List();
-    this[kInitialized] = false;
-    this[kClosed] = false;
-    this[kKilled] = false;
-    this[kOptions] = {
-      readPreference:
-        options.readPreference && options.readPreference instanceof ReadPreference
-          ? options.readPreference
-          : ReadPreference.primary,
-      ...pluckBSONSerializeOptions(options)
-    };
-
-    const readConcern = ReadConcern.fromOptions(options);
-    if (readConcern) {
-      this[kOptions].readConcern = readConcern;
-    }
-
-    if (typeof options.batchSize === 'number') {
-      this[kOptions].batchSize = options.batchSize;
-    }
-
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (options.comment !== undefined) {
-      this[kOptions].comment = options.comment;
-    }
-
-    if (typeof options.maxTimeMS === 'number') {
-      this[kOptions].maxTimeMS = options.maxTimeMS;
-    }
-
-    if (typeof options.maxAwaitTimeMS === 'number') {
-      this[kOptions].maxAwaitTimeMS = options.maxAwaitTimeMS;
-    }
-
-    if (options.session instanceof ClientSession) {
-      this[kSession] = options.session;
-    } else {
-      this[kSession] = this[kClient].startSession({ owner: this, explicit: false });
-    }
-  }
-
-  get id(): Long | undefined {
-    return this[kId] ?? undefined;
-  }
-
-  /** @internal */
-  get isDead() {
-    return (this[kId]?.isZero() ?? false) || this[kClosed] || this[kKilled];
-  }
-
-  /** @internal */
-  get client(): MongoClient {
-    return this[kClient];
-  }
-
-  /** @internal */
-  get server(): Server | undefined {
-    return this[kServer];
-  }
-
-  get namespace(): MongoDBNamespace {
-    return this[kNamespace];
-  }
-
-  get readPreference(): ReadPreference {
-    return this[kOptions].readPreference;
-  }
-
-  get readConcern(): ReadConcern | undefined {
-    return this[kOptions].readConcern;
-  }
-
-  /** @internal */
-  get session(): ClientSession {
-    return this[kSession];
-  }
-
-  set session(clientSession: ClientSession) {
-    this[kSession] = clientSession;
-  }
-
-  /** @internal */
-  get cursorOptions(): InternalAbstractCursorOptions {
-    return this[kOptions];
-  }
-
-  get closed(): boolean {
-    return this[kClosed];
-  }
-
-  get killed(): boolean {
-    return this[kKilled];
-  }
-
-  get loadBalanced(): boolean {
-    return !!this[kClient].topology?.loadBalanced;
-  }
-
-  /** Returns current buffered documents length */
-  bufferedCount(): number {
-    return this[kDocuments].length;
-  }
-
-  /** Returns current buffered documents */
-  readBufferedDocuments(number?: number): TSchema[] {
-    const bufferedDocs: TSchema[] = [];
-    const documentsToRead = Math.min(number ?? this[kDocuments].length, this[kDocuments].length);
-
-    for (let count = 0; count < documentsToRead; count++) {
-      const document = this[kDocuments].shift();
-      if (document != null) {
-        bufferedDocs.push(document);
-      }
-    }
-
-    return bufferedDocs;
-  }
-
-  async *[Symbol.asyncIterator](): AsyncGenerator<TSchema, void, void> {
-    if (this.closed) {
-      return;
-    }
-
-    try {
-      while (true) {
-        const document = await this.next();
-
-        // Intentional strict null check, because users can map cursors to falsey values.
-        // We allow mapping to all values except for null.
-        // eslint-disable-next-line no-restricted-syntax
-        if (document === null) {
-          if (!this.closed) {
-            const message =
-              'Cursor returned a `null` document, but the cursor is not exhausted.  Mapping documents to `null` is not supported in the cursor transform.';
-
-            await cleanupCursor(this, { needsToEmitClosed: true }).catch(() => null);
-
-            throw new MongoAPIError(message);
-          }
-          break;
-        }
-
-        yield document;
-
-        if (this[kId] === Long.ZERO) {
-          // Cursor exhausted
-          break;
-        }
-      }
-    } finally {
-      // Only close the cursor if it has not already been closed. This finally clause handles
-      // the case when a user would break out of a for await of loop early.
-      if (!this.closed) {
-        await this.close().catch(() => null);
-      }
-    }
-  }
-
-  stream(options?: CursorStreamOptions): Readable & AsyncIterable<TSchema> {
-    if (options?.transform) {
-      const transform = options.transform;
-      const readable = new ReadableCursorStream(this);
-
-      return readable.pipe(
-        new Transform({
-          objectMode: true,
-          highWaterMark: 1,
-          transform(chunk, _, callback) {
-            try {
-              const transformed = transform(chunk);
-              callback(undefined, transformed);
-            } catch (err) {
-              callback(err);
-            }
-          }
-        })
-      );
-    }
-
-    return new ReadableCursorStream(this);
-  }
-
-  async hasNext(): Promise<boolean> {
-    if (this[kId] === Long.ZERO) {
-      return false;
-    }
-
-    if (this[kDocuments].length !== 0) {
-      return true;
-    }
-
-    const doc = await next<TSchema>(this, { blocking: true, transform: false });
-
-    if (doc) {
-      this[kDocuments].unshift(doc);
-      return true;
-    }
-
-    return false;
-  }
-
-  /** Get the next available document from the cursor, returns null if no more documents are available. */
-  async next(): Promise<TSchema | null> {
-    if (this[kId] === Long.ZERO) {
-      throw new MongoCursorExhaustedError();
-    }
-
-    return next(this, { blocking: true, transform: true });
-  }
-
-  /**
-   * Try to get the next available document from the cursor or `null` if an empty batch is returned
-   */
-  async tryNext(): Promise<TSchema | null> {
-    if (this[kId] === Long.ZERO) {
-      throw new MongoCursorExhaustedError();
-    }
-
-    return next(this, { blocking: false, transform: true });
-  }
-
-  /**
-   * Iterates over all the documents for this cursor using the iterator, callback pattern.
-   *
-   * If the iterator returns `false`, iteration will stop.
-   *
-   * @param iterator - The iteration callback.
-   * @deprecated - Will be removed in a future release. Use for await...of instead.
-   */
-  async forEach(iterator: (doc: TSchema) => boolean | void): Promise<void> {
-    if (typeof iterator !== 'function') {
-      throw new MongoInvalidArgumentError('Argument "iterator" must be a function');
-    }
-    for await (const document of this) {
-      const result = iterator(document);
-      if (result === false) {
-        break;
-      }
-    }
-  }
-
-  async close(): Promise<void> {
-    const needsToEmitClosed = !this[kClosed];
-    this[kClosed] = true;
-    await cleanupCursor(this, { needsToEmitClosed });
-  }
-
-  /**
-   * Returns an array of documents. The caller is responsible for making sure that there
-   * is enough memory to store the results. Note that the array only contains partial
-   * results when this cursor had been previously accessed. In that case,
-   * cursor.rewind() can be used to reset the cursor.
-   */
-  async toArray(): Promise<TSchema[]> {
-    const array = [];
-    for await (const document of this) {
-      array.push(document);
-    }
-    return array;
-  }
-
-  /**
-   * Add a cursor flag to the cursor
-   *
-   * @param flag - The flag to set, must be one of following ['tailable', 'oplogReplay', 'noCursorTimeout', 'awaitData', 'partial' -.
-   * @param value - The flag boolean value.
-   */
-  addCursorFlag(flag: CursorFlag, value: boolean): this {
-    assertUninitialized(this);
-    if (!CURSOR_FLAGS.includes(flag)) {
-      throw new MongoInvalidArgumentError(`Flag ${flag} is not one of ${CURSOR_FLAGS}`);
-    }
-
-    if (typeof value !== 'boolean') {
-      throw new MongoInvalidArgumentError(`Flag ${flag} must be a boolean value`);
-    }
-
-    this[kOptions][flag] = value;
-    return this;
-  }
-
-  /**
-   * Map all documents using the provided function
-   * If there is a transform set on the cursor, that will be called first and the result passed to
-   * this function's transform.
-   *
-   * @remarks
-   *
-   * **Note** Cursors use `null` internally to indicate that there are no more documents in the cursor. Providing a mapping
-   * function that maps values to `null` will result in the cursor closing itself before it has finished iterating
-   * all documents.  This will **not** result in a memory leak, just surprising behavior.  For example:
-   *
-   * ```typescript
-   * const cursor = collection.find({});
-   * cursor.map(() => null);
-   *
-   * const documents = await cursor.toArray();
-   * // documents is always [], regardless of how many documents are in the collection.
-   * ```
-   *
-   * Other falsey values are allowed:
-   *
-   * ```typescript
-   * const cursor = collection.find({});
-   * cursor.map(() => '');
-   *
-   * const documents = await cursor.toArray();
-   * // documents is now an array of empty strings
-   * ```
-   *
-   * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
-   * it **does not** return a new instance of a cursor. This means when calling map,
-   * you should always assign the result to a new variable in order to get a correctly typed cursor variable.
-   * Take note of the following example:
-   *
-   * @example
-   * ```typescript
-   * const cursor: FindCursor<Document> = coll.find();
-   * const mappedCursor: FindCursor<number> = cursor.map(doc => Object.keys(doc).length);
-   * const keyCounts: number[] = await mappedCursor.toArray(); // cursor.toArray() still returns Document[]
-   * ```
-   * @param transform - The mapping transformation method.
-   */
-  map<T = any>(transform: (doc: TSchema) => T): AbstractCursor<T> {
-    assertUninitialized(this);
-    const oldTransform = this[kTransform] as (doc: TSchema) => TSchema; // TODO(NODE-3283): Improve transform typing
-    if (oldTransform) {
-      this[kTransform] = doc => {
-        return transform(oldTransform(doc));
-      };
-    } else {
-      this[kTransform] = transform;
-    }
-
-    return this as unknown as AbstractCursor<T>;
-  }
-
-  /**
-   * Set the ReadPreference for the cursor.
-   *
-   * @param readPreference - The new read preference for the cursor.
-   */
-  withReadPreference(readPreference: ReadPreferenceLike): this {
-    assertUninitialized(this);
-    if (readPreference instanceof ReadPreference) {
-      this[kOptions].readPreference = readPreference;
-    } else if (typeof readPreference === 'string') {
-      this[kOptions].readPreference = ReadPreference.fromString(readPreference);
-    } else {
-      throw new MongoInvalidArgumentError(`Invalid read preference: ${readPreference}`);
-    }
-
-    return this;
-  }
-
-  /**
-   * Set the ReadPreference for the cursor.
-   *
-   * @param readPreference - The new read preference for the cursor.
-   */
-  withReadConcern(readConcern: ReadConcernLike): this {
-    assertUninitialized(this);
-    const resolvedReadConcern = ReadConcern.fromOptions({ readConcern });
-    if (resolvedReadConcern) {
-      this[kOptions].readConcern = resolvedReadConcern;
-    }
-
-    return this;
-  }
-
-  /**
-   * Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)
-   *
-   * @param value - Number of milliseconds to wait before aborting the query.
-   */
-  maxTimeMS(value: number): this {
-    assertUninitialized(this);
-    if (typeof value !== 'number') {
-      throw new MongoInvalidArgumentError('Argument for maxTimeMS must be a number');
-    }
-
-    this[kOptions].maxTimeMS = value;
-    return this;
-  }
-
-  /**
-   * Set the batch size for the cursor.
-   *
-   * @param value - The number of documents to return per batch. See {@link https://www.mongodb.com/docs/manual/reference/command/find/|find command documentation}.
-   */
-  batchSize(value: number): this {
-    assertUninitialized(this);
-    if (this[kOptions].tailable) {
-      throw new MongoTailableCursorError('Tailable cursor does not support batchSize');
-    }
-
-    if (typeof value !== 'number') {
-      throw new MongoInvalidArgumentError('Operation "batchSize" requires an integer');
-    }
-
-    this[kOptions].batchSize = value;
-    return this;
-  }
-
-  /**
-   * Rewind this cursor to its uninitialized state. Any options that are present on the cursor will
-   * remain in effect. Iterating this cursor will cause new queries to be sent to the server, even
-   * if the resultant data has already been retrieved by this cursor.
-   */
-  rewind(): void {
-    if (!this[kInitialized]) {
-      return;
-    }
-
-    this[kId] = null;
-    this[kDocuments].clear();
-    this[kClosed] = false;
-    this[kKilled] = false;
-    this[kInitialized] = false;
-
-    const session = this[kSession];
-    if (session) {
-      // We only want to end this session if we created it, and it hasn't ended yet
-      if (session.explicit === false) {
-        if (!session.hasEnded) {
-          session.endSession().catch(() => null);
-        }
-        this[kSession] = this.client.startSession({ owner: this, explicit: false });
-      }
-    }
-  }
-
-  /**
-   * Returns a new uninitialized copy of this cursor, with options matching those that have been set on the current instance
-   */
-  abstract clone(): AbstractCursor<TSchema>;
-
-  /** @internal */
-  protected abstract _initialize(session: ClientSession | undefined): Promise<ExecutionResult>;
-
-  /** @internal */
-  async getMore(batchSize: number): Promise<Document | null> {
-    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-    const getMoreOperation = new GetMoreOperation(this[kNamespace], this[kId]!, this[kServer]!, {
-      ...this[kOptions],
-      session: this[kSession],
-      batchSize
-    });
-
-    return executeOperation(this[kClient], getMoreOperation);
-  }
-
-  /**
-   * @internal
-   *
-   * This function is exposed for the unified test runner's createChangeStream
-   * operation.  We cannot refactor to use the abstract _initialize method without
-   * a significant refactor.
-   */
-  async [kInit](): Promise<void> {
-    try {
-      const state = await this._initialize(this[kSession]);
-      const response = state.response;
-      this[kServer] = state.server;
-      if (response.cursor) {
-        // TODO(NODE-2674): Preserve int64 sent from MongoDB
-        this[kId] =
-          typeof response.cursor.id === 'number'
-            ? Long.fromNumber(response.cursor.id)
-            : typeof response.cursor.id === 'bigint'
-            ? Long.fromBigInt(response.cursor.id)
-            : response.cursor.id;
-
-        if (response.cursor.ns) {
-          this[kNamespace] = ns(response.cursor.ns);
-        }
-
-        this[kDocuments].pushMany(response.cursor.firstBatch);
-      }
-
-      // When server responses return without a cursor document, we close this cursor
-      // and return the raw server response. This is often the case for explain commands
-      // for example
-      if (this[kId] == null) {
-        this[kId] = Long.ZERO;
-        // TODO(NODE-3286): ExecutionResult needs to accept a generic parameter
-        this[kDocuments].push(state.response as TODO_NODE_3286);
-      }
-
-      // the cursor is now initialized, even if it is dead
-      this[kInitialized] = true;
-    } catch (error) {
-      // the cursor is now initialized, even if an error occurred
-      this[kInitialized] = true;
-      await cleanupCursor(this, { error });
-      throw error;
-    }
-
-    if (this.isDead) {
-      await cleanupCursor(this, undefined);
-    }
-
-    return;
-  }
-}
-
-/**
- * @param cursor - the cursor on which to call `next`
- * @param blocking - a boolean indicating whether or not the cursor should `block` until data
- *     is available.  Generally, this flag is set to `false` because if the getMore returns no documents,
- *     the cursor has been exhausted.  In certain scenarios (ChangeStreams, tailable await cursors and
- *     `tryNext`, for example) blocking is necessary because a getMore returning no documents does
- *     not indicate the end of the cursor.
- * @param transform - if true, the cursor's transform function is applied to the result document (if the transform exists)
- * @returns the next document in the cursor, or `null`.  When `blocking` is `true`, a `null` document means
- * the cursor has been exhausted.  Otherwise, it means that there is no document available in the cursor's buffer.
- */
-async function next<T>(
-  cursor: AbstractCursor<T>,
-  {
-    blocking,
-    transform
-  }: {
-    blocking: boolean;
-    transform: boolean;
-  }
-): Promise<T | null> {
-  if (cursor.closed) {
-    return null;
-  }
-
-  do {
-    if (cursor[kId] == null) {
-      // All cursors must operate within a session, one must be made implicitly if not explicitly provided
-      await cursor[kInit]();
-    }
-
-    if (cursor[kDocuments].length !== 0) {
-      const doc = cursor[kDocuments].shift();
-
-      if (doc != null && transform && cursor[kTransform]) {
-        try {
-          return cursor[kTransform](doc);
-        } catch (error) {
-          // `cleanupCursorAsync` should never throw, but if it does we want to throw the original
-          // error instead.
-          await cleanupCursor(cursor, { error, needsToEmitClosed: true }).catch(() => null);
-          throw error;
-        }
-      }
-
-      return doc;
-    }
-
-    if (cursor.isDead) {
-      // if the cursor is dead, we clean it up
-      // cleanupCursorAsync should never throw, but if it does it indicates a bug in the driver
-      // and we should surface the error
-      await cleanupCursor(cursor, {});
-      return null;
-    }
-
-    // otherwise need to call getMore
-    const batchSize = cursor[kOptions].batchSize || 1000;
-
-    try {
-      const response = await cursor.getMore(batchSize);
-
-      if (response) {
-        const cursorId =
-          typeof response.cursor.id === 'number'
-            ? Long.fromNumber(response.cursor.id)
-            : typeof response.cursor.id === 'bigint'
-            ? Long.fromBigInt(response.cursor.id)
-            : response.cursor.id;
-
-        cursor[kDocuments].pushMany(response.cursor.nextBatch);
-        cursor[kId] = cursorId;
-      }
-    } catch (error) {
-      // `cleanupCursorAsync` should never throw, but if it does we want to throw the original
-      // error instead.
-      await cleanupCursor(cursor, { error }).catch(() => null);
-      throw error;
-    }
-
-    if (cursor.isDead) {
-      // If we successfully received a response from a cursor BUT the cursor indicates that it is exhausted,
-      // we intentionally clean up the cursor to release its session back into the pool before the cursor
-      // is iterated.  This prevents a cursor that is exhausted on the server from holding
-      // onto a session indefinitely until the AbstractCursor is iterated.
-      //
-      // cleanupCursorAsync should never throw, but if it does it indicates a bug in the driver
-      // and we should surface the error
-      await cleanupCursor(cursor, {});
-    }
-
-    if (cursor[kDocuments].length === 0 && blocking === false) {
-      return null;
-    }
-  } while (!cursor.isDead || cursor[kDocuments].length !== 0);
-
-  return null;
-}
-
-async function cleanupCursor(
-  cursor: AbstractCursor,
-  options: { error?: AnyError | undefined; needsToEmitClosed?: boolean } | undefined
-): Promise<void> {
-  const cursorId = cursor[kId];
-  const cursorNs = cursor[kNamespace];
-  const server = cursor[kServer];
-  const session = cursor[kSession];
-  const error = options?.error;
-
-  // Cursors only emit closed events once the client-side cursor has been exhausted fully or there
-  // was an error.  Notably, when the server returns a cursor id of 0 and a non-empty batch, we
-  // cleanup the cursor but don't emit a `close` event.
-  const needsToEmitClosed = options?.needsToEmitClosed ?? cursor[kDocuments].length === 0;
-
-  if (error) {
-    if (cursor.loadBalanced && error instanceof MongoNetworkError) {
-      return completeCleanup();
-    }
-  }
-
-  if (cursorId == null || server == null || cursorId.isZero() || cursorNs == null) {
-    if (needsToEmitClosed) {
-      cursor[kClosed] = true;
-      cursor[kId] = Long.ZERO;
-      cursor.emit(AbstractCursor.CLOSE);
-    }
-
-    if (session) {
-      if (session.owner === cursor) {
-        await session.endSession({ error });
-        return;
-      }
-
-      if (!session.inTransaction()) {
-        maybeClearPinnedConnection(session, { error });
-      }
-    }
-
-    return;
-  }
-
-  async function completeCleanup() {
-    if (session) {
-      if (session.owner === cursor) {
-        try {
-          await session.endSession({ error });
-        } finally {
-          cursor.emit(AbstractCursor.CLOSE);
-        }
-        return;
-      }
-
-      if (!session.inTransaction()) {
-        maybeClearPinnedConnection(session, { error });
-      }
-    }
-
-    cursor.emit(AbstractCursor.CLOSE);
-    return;
-  }
-
-  cursor[kKilled] = true;
-
-  if (session.hasEnded) {
-    return completeCleanup();
-  }
-
-  try {
-    await executeOperation(
-      cursor[kClient],
-      new KillCursorsOperation(cursorId, cursorNs, server, { session })
-    ).catch(() => null);
-  } finally {
-    await completeCleanup();
-  }
-}
-
-/** @internal */
-export function assertUninitialized(cursor: AbstractCursor): void {
-  if (cursor[kInitialized]) {
-    throw new MongoCursorInUseError();
-  }
-}
-
-class ReadableCursorStream extends Readable {
-  private _cursor: AbstractCursor;
-  private _readInProgress = false;
-
-  constructor(cursor: AbstractCursor) {
-    super({
-      objectMode: true,
-      autoDestroy: false,
-      highWaterMark: 1
-    });
-    this._cursor = cursor;
-  }
-
-  // eslint-disable-next-line @typescript-eslint/no-unused-vars
-  override _read(size: number): void {
-    if (!this._readInProgress) {
-      this._readInProgress = true;
-      this._readNext();
-    }
-  }
-
-  override _destroy(error: Error | null, callback: (error?: Error | null) => void): void {
-    this._cursor.close().then(
-      () => callback(error),
-      closeError => callback(closeError)
-    );
-  }
-
-  private _readNext() {
-    next(this._cursor, { blocking: true, transform: true }).then(
-      result => {
-        if (result == null) {
-          this.push(null);
-        } else if (this.destroyed) {
-          this._cursor.close().catch(() => null);
-        } else {
-          if (this.push(result)) {
-            return this._readNext();
-          }
-
-          this._readInProgress = false;
-        }
-      },
-      err => {
-        // NOTE: This is questionable, but we have a test backing the behavior. It seems the
-        //       desired behavior is that a stream ends cleanly when a user explicitly closes
-        //       a client during iteration. Alternatively, we could do the "right" thing and
-        //       propagate the error message by removing this special case.
-        if (err.message.match(/server is closed/)) {
-          this._cursor.close().catch(() => null);
-          return this.push(null);
-        }
-
-        // NOTE: This is also perhaps questionable. The rationale here is that these errors tend
-        //       to be "operation was interrupted", where a cursor has been closed but there is an
-        //       active getMore in-flight. This used to check if the cursor was killed but once
-        //       that changed to happen in cleanup legitimate errors would not destroy the
-        //       stream. There are change streams test specifically test these cases.
-        if (err.message.match(/operation was interrupted/)) {
-          return this.push(null);
-        }
-
-        // NOTE: The two above checks on the message of the error will cause a null to be pushed
-        //       to the stream, thus closing the stream before the destroy call happens. This means
-        //       that either of those error messages on a change stream will not get a proper
-        //       'error' event to be emitted (the error passed to destroy). Change stream resumability
-        //       relies on that error event to be emitted to create its new cursor and thus was not
-        //       working on 4.4 servers because the error emitted on failover was "interrupted at
-        //       shutdown" while on 5.0+ it is "The server is in quiesce mode and will shut down".
-        //       See NODE-4475.
-        return this.destroy(err);
-      }
-    );
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cursor/aggregation_cursor.ts b/server/data-import/node_modules/mongodb/src/cursor/aggregation_cursor.ts
deleted file mode 100644
index c2979199ef35bab594a8a12524c367f42849c3af..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cursor/aggregation_cursor.ts
+++ /dev/null
@@ -1,206 +0,0 @@
-import type { Document } from '../bson';
-import type { ExplainVerbosityLike } from '../explain';
-import type { MongoClient } from '../mongo_client';
-import { AggregateOperation, type AggregateOptions } from '../operations/aggregate';
-import { executeOperation, type ExecutionResult } from '../operations/execute_operation';
-import type { ClientSession } from '../sessions';
-import type { Sort } from '../sort';
-import type { MongoDBNamespace } from '../utils';
-import { mergeOptions } from '../utils';
-import type { AbstractCursorOptions } from './abstract_cursor';
-import { AbstractCursor, assertUninitialized } from './abstract_cursor';
-
-/** @public */
-export interface AggregationCursorOptions extends AbstractCursorOptions, AggregateOptions {}
-
-/** @internal */
-const kPipeline = Symbol('pipeline');
-/** @internal */
-const kOptions = Symbol('options');
-
-/**
- * The **AggregationCursor** class is an internal class that embodies an aggregation cursor on MongoDB
- * allowing for iteration over the results returned from the underlying query. It supports
- * one by one document iteration, conversion to an array or can be iterated as a Node 4.X
- * or higher stream
- * @public
- */
-export class AggregationCursor<TSchema = any> extends AbstractCursor<TSchema> {
-  /** @internal */
-  [kPipeline]: Document[];
-  /** @internal */
-  [kOptions]: AggregateOptions;
-
-  /** @internal */
-  constructor(
-    client: MongoClient,
-    namespace: MongoDBNamespace,
-    pipeline: Document[] = [],
-    options: AggregateOptions = {}
-  ) {
-    super(client, namespace, options);
-
-    this[kPipeline] = pipeline;
-    this[kOptions] = options;
-  }
-
-  get pipeline(): Document[] {
-    return this[kPipeline];
-  }
-
-  clone(): AggregationCursor<TSchema> {
-    const clonedOptions = mergeOptions({}, this[kOptions]);
-    delete clonedOptions.session;
-    return new AggregationCursor(this.client, this.namespace, this[kPipeline], {
-      ...clonedOptions
-    });
-  }
-
-  override map<T>(transform: (doc: TSchema) => T): AggregationCursor<T> {
-    return super.map(transform) as AggregationCursor<T>;
-  }
-
-  /** @internal */
-  async _initialize(session: ClientSession): Promise<ExecutionResult> {
-    const aggregateOperation = new AggregateOperation(this.namespace, this[kPipeline], {
-      ...this[kOptions],
-      ...this.cursorOptions,
-      session
-    });
-
-    const response = await executeOperation(this.client, aggregateOperation);
-
-    // TODO: NODE-2882
-    return { server: aggregateOperation.server, session, response };
-  }
-
-  /** Execute the explain for the cursor */
-  async explain(verbosity?: ExplainVerbosityLike): Promise<Document> {
-    return executeOperation(
-      this.client,
-      new AggregateOperation(this.namespace, this[kPipeline], {
-        ...this[kOptions], // NOTE: order matters here, we may need to refine this
-        ...this.cursorOptions,
-        explain: verbosity ?? true
-      })
-    );
-  }
-
-  /** Add a group stage to the aggregation pipeline */
-  group<T = TSchema>($group: Document): AggregationCursor<T>;
-  group($group: Document): this {
-    assertUninitialized(this);
-    this[kPipeline].push({ $group });
-    return this;
-  }
-
-  /** Add a limit stage to the aggregation pipeline */
-  limit($limit: number): this {
-    assertUninitialized(this);
-    this[kPipeline].push({ $limit });
-    return this;
-  }
-
-  /** Add a match stage to the aggregation pipeline */
-  match($match: Document): this {
-    assertUninitialized(this);
-    this[kPipeline].push({ $match });
-    return this;
-  }
-
-  /** Add an out stage to the aggregation pipeline */
-  out($out: { db: string; coll: string } | string): this {
-    assertUninitialized(this);
-    this[kPipeline].push({ $out });
-    return this;
-  }
-
-  /**
-   * Add a project stage to the aggregation pipeline
-   *
-   * @remarks
-   * In order to strictly type this function you must provide an interface
-   * that represents the effect of your projection on the result documents.
-   *
-   * By default chaining a projection to your cursor changes the returned type to the generic {@link Document} type.
-   * You should specify a parameterized type to have assertions on your final results.
-   *
-   * @example
-   * ```typescript
-   * // Best way
-   * const docs: AggregationCursor<{ a: number }> = cursor.project<{ a: number }>({ _id: 0, a: true });
-   * // Flexible way
-   * const docs: AggregationCursor<Document> = cursor.project({ _id: 0, a: true });
-   * ```
-   *
-   * @remarks
-   * In order to strictly type this function you must provide an interface
-   * that represents the effect of your projection on the result documents.
-   *
-   * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
-   * it **does not** return a new instance of a cursor. This means when calling project,
-   * you should always assign the result to a new variable in order to get a correctly typed cursor variable.
-   * Take note of the following example:
-   *
-   * @example
-   * ```typescript
-   * const cursor: AggregationCursor<{ a: number; b: string }> = coll.aggregate([]);
-   * const projectCursor = cursor.project<{ a: number }>({ _id: 0, a: true });
-   * const aPropOnlyArray: {a: number}[] = await projectCursor.toArray();
-   *
-   * // or always use chaining and save the final cursor
-   *
-   * const cursor = coll.aggregate().project<{ a: string }>({
-   *   _id: 0,
-   *   a: { $convert: { input: '$a', to: 'string' }
-   * }});
-   * ```
-   */
-  project<T extends Document = Document>($project: Document): AggregationCursor<T> {
-    assertUninitialized(this);
-    this[kPipeline].push({ $project });
-    return this as unknown as AggregationCursor<T>;
-  }
-
-  /** Add a lookup stage to the aggregation pipeline */
-  lookup($lookup: Document): this {
-    assertUninitialized(this);
-    this[kPipeline].push({ $lookup });
-    return this;
-  }
-
-  /** Add a redact stage to the aggregation pipeline */
-  redact($redact: Document): this {
-    assertUninitialized(this);
-    this[kPipeline].push({ $redact });
-    return this;
-  }
-
-  /** Add a skip stage to the aggregation pipeline */
-  skip($skip: number): this {
-    assertUninitialized(this);
-    this[kPipeline].push({ $skip });
-    return this;
-  }
-
-  /** Add a sort stage to the aggregation pipeline */
-  sort($sort: Sort): this {
-    assertUninitialized(this);
-    this[kPipeline].push({ $sort });
-    return this;
-  }
-
-  /** Add a unwind stage to the aggregation pipeline */
-  unwind($unwind: Document | string): this {
-    assertUninitialized(this);
-    this[kPipeline].push({ $unwind });
-    return this;
-  }
-
-  /** Add a geoNear stage to the aggregation pipeline */
-  geoNear($geoNear: Document): this {
-    assertUninitialized(this);
-    this[kPipeline].push({ $geoNear });
-    return this;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cursor/change_stream_cursor.ts b/server/data-import/node_modules/mongodb/src/cursor/change_stream_cursor.ts
deleted file mode 100644
index 31fda3308b4a653a934b6a359a7e5d006152516f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cursor/change_stream_cursor.ts
+++ /dev/null
@@ -1,185 +0,0 @@
-import type { Document, Long, Timestamp } from '../bson';
-import {
-  ChangeStream,
-  type ChangeStreamDocument,
-  type ChangeStreamEvents,
-  type OperationTime,
-  type ResumeToken
-} from '../change_stream';
-import { INIT, RESPONSE } from '../constants';
-import type { MongoClient } from '../mongo_client';
-import type { TODO_NODE_3286 } from '../mongo_types';
-import { AggregateOperation } from '../operations/aggregate';
-import type { CollationOptions } from '../operations/command';
-import { executeOperation, type ExecutionResult } from '../operations/execute_operation';
-import type { ClientSession } from '../sessions';
-import { maxWireVersion, type MongoDBNamespace } from '../utils';
-import { AbstractCursor, type AbstractCursorOptions } from './abstract_cursor';
-
-/** @internal */
-export interface ChangeStreamCursorOptions extends AbstractCursorOptions {
-  startAtOperationTime?: OperationTime;
-  resumeAfter?: ResumeToken;
-  startAfter?: ResumeToken;
-  maxAwaitTimeMS?: number;
-  collation?: CollationOptions;
-  fullDocument?: string;
-}
-
-/** @internal */
-export type ChangeStreamAggregateRawResult<TChange> = {
-  $clusterTime: { clusterTime: Timestamp };
-  cursor: {
-    postBatchResumeToken: ResumeToken;
-    ns: string;
-    id: number | Long;
-  } & ({ firstBatch: TChange[] } | { nextBatch: TChange[] });
-  ok: 1;
-  operationTime: Timestamp;
-};
-
-/** @internal */
-export class ChangeStreamCursor<
-  TSchema extends Document = Document,
-  TChange extends Document = ChangeStreamDocument<TSchema>
-> extends AbstractCursor<TChange, ChangeStreamEvents> {
-  _resumeToken: ResumeToken;
-  startAtOperationTime?: OperationTime;
-  hasReceived?: boolean;
-  resumeAfter: ResumeToken;
-  startAfter: ResumeToken;
-  options: ChangeStreamCursorOptions;
-
-  postBatchResumeToken?: ResumeToken;
-  pipeline: Document[];
-
-  /**
-   * @internal
-   *
-   * used to determine change stream resumability
-   */
-  maxWireVersion: number | undefined;
-
-  constructor(
-    client: MongoClient,
-    namespace: MongoDBNamespace,
-    pipeline: Document[] = [],
-    options: ChangeStreamCursorOptions = {}
-  ) {
-    super(client, namespace, options);
-
-    this.pipeline = pipeline;
-    this.options = options;
-    this._resumeToken = null;
-    this.startAtOperationTime = options.startAtOperationTime;
-
-    if (options.startAfter) {
-      this.resumeToken = options.startAfter;
-    } else if (options.resumeAfter) {
-      this.resumeToken = options.resumeAfter;
-    }
-  }
-
-  set resumeToken(token: ResumeToken) {
-    this._resumeToken = token;
-    this.emit(ChangeStream.RESUME_TOKEN_CHANGED, token);
-  }
-
-  get resumeToken(): ResumeToken {
-    return this._resumeToken;
-  }
-
-  get resumeOptions(): ChangeStreamCursorOptions {
-    const options: ChangeStreamCursorOptions = {
-      ...this.options
-    };
-
-    for (const key of ['resumeAfter', 'startAfter', 'startAtOperationTime'] as const) {
-      delete options[key];
-    }
-
-    if (this.resumeToken != null) {
-      if (this.options.startAfter && !this.hasReceived) {
-        options.startAfter = this.resumeToken;
-      } else {
-        options.resumeAfter = this.resumeToken;
-      }
-    } else if (this.startAtOperationTime != null && maxWireVersion(this.server) >= 7) {
-      options.startAtOperationTime = this.startAtOperationTime;
-    }
-
-    return options;
-  }
-
-  cacheResumeToken(resumeToken: ResumeToken): void {
-    if (this.bufferedCount() === 0 && this.postBatchResumeToken) {
-      this.resumeToken = this.postBatchResumeToken;
-    } else {
-      this.resumeToken = resumeToken;
-    }
-    this.hasReceived = true;
-  }
-
-  _processBatch(response: ChangeStreamAggregateRawResult<TChange>): void {
-    const cursor = response.cursor;
-    if (cursor.postBatchResumeToken) {
-      this.postBatchResumeToken = response.cursor.postBatchResumeToken;
-
-      const batch =
-        'firstBatch' in response.cursor ? response.cursor.firstBatch : response.cursor.nextBatch;
-      if (batch.length === 0) {
-        this.resumeToken = cursor.postBatchResumeToken;
-      }
-    }
-  }
-
-  clone(): AbstractCursor<TChange> {
-    return new ChangeStreamCursor(this.client, this.namespace, this.pipeline, {
-      ...this.cursorOptions
-    });
-  }
-
-  async _initialize(session: ClientSession): Promise<ExecutionResult> {
-    const aggregateOperation = new AggregateOperation(this.namespace, this.pipeline, {
-      ...this.cursorOptions,
-      ...this.options,
-      session
-    });
-
-    const response = await executeOperation<
-      TODO_NODE_3286,
-      ChangeStreamAggregateRawResult<TChange>
-    >(session.client, aggregateOperation);
-
-    const server = aggregateOperation.server;
-    this.maxWireVersion = maxWireVersion(server);
-
-    if (
-      this.startAtOperationTime == null &&
-      this.resumeAfter == null &&
-      this.startAfter == null &&
-      this.maxWireVersion >= 7
-    ) {
-      this.startAtOperationTime = response.operationTime;
-    }
-
-    this._processBatch(response);
-
-    this.emit(INIT, response);
-    this.emit(RESPONSE);
-
-    // TODO: NODE-2882
-    return { server, session, response };
-  }
-
-  override async getMore(batchSize: number): Promise<Document | null> {
-    const response = await super.getMore(batchSize);
-
-    this.maxWireVersion = maxWireVersion(this.server);
-    this._processBatch(response as ChangeStreamAggregateRawResult<TChange>);
-
-    this.emit(ChangeStream.MORE, response);
-    this.emit(ChangeStream.RESPONSE);
-    return response;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cursor/find_cursor.ts b/server/data-import/node_modules/mongodb/src/cursor/find_cursor.ts
deleted file mode 100644
index 8f829a6174698f16c2dd9f29a58e574d2cc19b67..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cursor/find_cursor.ts
+++ /dev/null
@@ -1,454 +0,0 @@
-import { type Document, Long } from '../bson';
-import { MongoInvalidArgumentError, MongoTailableCursorError } from '../error';
-import { type ExplainVerbosityLike } from '../explain';
-import type { MongoClient } from '../mongo_client';
-import type { CollationOptions } from '../operations/command';
-import { CountOperation, type CountOptions } from '../operations/count';
-import { executeOperation, type ExecutionResult } from '../operations/execute_operation';
-import { FindOperation, type FindOptions } from '../operations/find';
-import type { Hint } from '../operations/operation';
-import type { ClientSession } from '../sessions';
-import { formatSort, type Sort, type SortDirection } from '../sort';
-import { emitWarningOnce, mergeOptions, type MongoDBNamespace } from '../utils';
-import { AbstractCursor, assertUninitialized } from './abstract_cursor';
-
-/** @internal */
-const kFilter = Symbol('filter');
-/** @internal */
-const kNumReturned = Symbol('numReturned');
-/** @internal */
-const kBuiltOptions = Symbol('builtOptions');
-
-/** @public Flags allowed for cursor */
-export const FLAGS = [
-  'tailable',
-  'oplogReplay',
-  'noCursorTimeout',
-  'awaitData',
-  'exhaust',
-  'partial'
-] as const;
-
-/** @public */
-export class FindCursor<TSchema = any> extends AbstractCursor<TSchema> {
-  /** @internal */
-  [kFilter]: Document;
-  /** @internal */
-  [kNumReturned]?: number;
-  /** @internal */
-  [kBuiltOptions]: FindOptions;
-
-  /** @internal */
-  constructor(
-    client: MongoClient,
-    namespace: MongoDBNamespace,
-    filter: Document = {},
-    options: FindOptions = {}
-  ) {
-    super(client, namespace, options);
-
-    this[kFilter] = filter;
-    this[kBuiltOptions] = options;
-
-    if (options.sort != null) {
-      this[kBuiltOptions].sort = formatSort(options.sort);
-    }
-  }
-
-  clone(): FindCursor<TSchema> {
-    const clonedOptions = mergeOptions({}, this[kBuiltOptions]);
-    delete clonedOptions.session;
-    return new FindCursor(this.client, this.namespace, this[kFilter], {
-      ...clonedOptions
-    });
-  }
-
-  override map<T>(transform: (doc: TSchema) => T): FindCursor<T> {
-    return super.map(transform) as FindCursor<T>;
-  }
-
-  /** @internal */
-  async _initialize(session: ClientSession): Promise<ExecutionResult> {
-    const findOperation = new FindOperation(undefined, this.namespace, this[kFilter], {
-      ...this[kBuiltOptions], // NOTE: order matters here, we may need to refine this
-      ...this.cursorOptions,
-      session
-    });
-
-    const response = await executeOperation(this.client, findOperation);
-
-    // the response is not a cursor when `explain` is enabled
-    this[kNumReturned] = response.cursor?.firstBatch?.length;
-
-    // TODO: NODE-2882
-    return { server: findOperation.server, session, response };
-  }
-
-  /** @internal */
-  override async getMore(batchSize: number): Promise<Document | null> {
-    const numReturned = this[kNumReturned];
-    if (numReturned) {
-      // TODO(DRIVERS-1448): Remove logic to enforce `limit` in the driver
-      const limit = this[kBuiltOptions].limit;
-      batchSize =
-        limit && limit > 0 && numReturned + batchSize > limit ? limit - numReturned : batchSize;
-
-      if (batchSize <= 0) {
-        // this is an optimization for the special case of a limit for a find command to avoid an
-        // extra getMore when the limit has been reached and the limit is a multiple of the batchSize.
-        // This is a consequence of the new query engine in 5.0 having no knowledge of the limit as it
-        // produces results for the find command.  Once a batch is filled up, it is returned and only
-        // on the subsequent getMore will the query framework consider the limit, determine the cursor
-        // is exhausted and return a cursorId of zero.
-        // instead, if we determine there are no more documents to request from the server, we preemptively
-        // close the cursor
-        await this.close().catch(() => null);
-        return { cursor: { id: Long.ZERO, nextBatch: [] } };
-      }
-    }
-
-    const response = await super.getMore(batchSize);
-    // TODO: wrap this in some logic to prevent it from happening if we don't need this support
-    if (response) {
-      this[kNumReturned] = this[kNumReturned] + response.cursor.nextBatch.length;
-    }
-
-    return response;
-  }
-
-  /**
-   * Get the count of documents for this cursor
-   * @deprecated Use `collection.estimatedDocumentCount` or `collection.countDocuments` instead
-   */
-  async count(options?: CountOptions): Promise<number> {
-    emitWarningOnce(
-      'cursor.count is deprecated and will be removed in the next major version, please use `collection.estimatedDocumentCount` or `collection.countDocuments` instead '
-    );
-    if (typeof options === 'boolean') {
-      throw new MongoInvalidArgumentError('Invalid first parameter to count');
-    }
-    return executeOperation(
-      this.client,
-      new CountOperation(this.namespace, this[kFilter], {
-        ...this[kBuiltOptions], // NOTE: order matters here, we may need to refine this
-        ...this.cursorOptions,
-        ...options
-      })
-    );
-  }
-
-  /** Execute the explain for the cursor */
-  async explain(verbosity?: ExplainVerbosityLike): Promise<Document> {
-    return executeOperation(
-      this.client,
-      new FindOperation(undefined, this.namespace, this[kFilter], {
-        ...this[kBuiltOptions], // NOTE: order matters here, we may need to refine this
-        ...this.cursorOptions,
-        explain: verbosity ?? true
-      })
-    );
-  }
-
-  /** Set the cursor query */
-  filter(filter: Document): this {
-    assertUninitialized(this);
-    this[kFilter] = filter;
-    return this;
-  }
-
-  /**
-   * Set the cursor hint
-   *
-   * @param hint - If specified, then the query system will only consider plans using the hinted index.
-   */
-  hint(hint: Hint): this {
-    assertUninitialized(this);
-    this[kBuiltOptions].hint = hint;
-    return this;
-  }
-
-  /**
-   * Set the cursor min
-   *
-   * @param min - Specify a $min value to specify the inclusive lower bound for a specific index in order to constrain the results of find(). The $min specifies the lower bound for all keys of a specific index in order.
-   */
-  min(min: Document): this {
-    assertUninitialized(this);
-    this[kBuiltOptions].min = min;
-    return this;
-  }
-
-  /**
-   * Set the cursor max
-   *
-   * @param max - Specify a $max value to specify the exclusive upper bound for a specific index in order to constrain the results of find(). The $max specifies the upper bound for all keys of a specific index in order.
-   */
-  max(max: Document): this {
-    assertUninitialized(this);
-    this[kBuiltOptions].max = max;
-    return this;
-  }
-
-  /**
-   * Set the cursor returnKey.
-   * If set to true, modifies the cursor to only return the index field or fields for the results of the query, rather than documents.
-   * If set to true and the query does not use an index to perform the read operation, the returned documents will not contain any fields.
-   *
-   * @param value - the returnKey value.
-   */
-  returnKey(value: boolean): this {
-    assertUninitialized(this);
-    this[kBuiltOptions].returnKey = value;
-    return this;
-  }
-
-  /**
-   * Modifies the output of a query by adding a field $recordId to matching documents. $recordId is the internal key which uniquely identifies a document in a collection.
-   *
-   * @param value - The $showDiskLoc option has now been deprecated and replaced with the showRecordId field. $showDiskLoc will still be accepted for OP_QUERY stye find.
-   */
-  showRecordId(value: boolean): this {
-    assertUninitialized(this);
-    this[kBuiltOptions].showRecordId = value;
-    return this;
-  }
-
-  /**
-   * Add a query modifier to the cursor query
-   *
-   * @param name - The query modifier (must start with $, such as $orderby etc)
-   * @param value - The modifier value.
-   */
-  addQueryModifier(name: string, value: string | boolean | number | Document): this {
-    assertUninitialized(this);
-    if (name[0] !== '$') {
-      throw new MongoInvalidArgumentError(`${name} is not a valid query modifier`);
-    }
-
-    // Strip of the $
-    const field = name.substr(1);
-
-    // NOTE: consider some TS magic for this
-    switch (field) {
-      case 'comment':
-        this[kBuiltOptions].comment = value as string | Document;
-        break;
-
-      case 'explain':
-        this[kBuiltOptions].explain = value as boolean;
-        break;
-
-      case 'hint':
-        this[kBuiltOptions].hint = value as string | Document;
-        break;
-
-      case 'max':
-        this[kBuiltOptions].max = value as Document;
-        break;
-
-      case 'maxTimeMS':
-        this[kBuiltOptions].maxTimeMS = value as number;
-        break;
-
-      case 'min':
-        this[kBuiltOptions].min = value as Document;
-        break;
-
-      case 'orderby':
-        this[kBuiltOptions].sort = formatSort(value as string | Document);
-        break;
-
-      case 'query':
-        this[kFilter] = value as Document;
-        break;
-
-      case 'returnKey':
-        this[kBuiltOptions].returnKey = value as boolean;
-        break;
-
-      case 'showDiskLoc':
-        this[kBuiltOptions].showRecordId = value as boolean;
-        break;
-
-      default:
-        throw new MongoInvalidArgumentError(`Invalid query modifier: ${name}`);
-    }
-
-    return this;
-  }
-
-  /**
-   * Add a comment to the cursor query allowing for tracking the comment in the log.
-   *
-   * @param value - The comment attached to this query.
-   */
-  comment(value: string): this {
-    assertUninitialized(this);
-    this[kBuiltOptions].comment = value;
-    return this;
-  }
-
-  /**
-   * Set a maxAwaitTimeMS on a tailing cursor query to allow to customize the timeout value for the option awaitData (Only supported on MongoDB 3.2 or higher, ignored otherwise)
-   *
-   * @param value - Number of milliseconds to wait before aborting the tailed query.
-   */
-  maxAwaitTimeMS(value: number): this {
-    assertUninitialized(this);
-    if (typeof value !== 'number') {
-      throw new MongoInvalidArgumentError('Argument for maxAwaitTimeMS must be a number');
-    }
-
-    this[kBuiltOptions].maxAwaitTimeMS = value;
-    return this;
-  }
-
-  /**
-   * Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)
-   *
-   * @param value - Number of milliseconds to wait before aborting the query.
-   */
-  override maxTimeMS(value: number): this {
-    assertUninitialized(this);
-    if (typeof value !== 'number') {
-      throw new MongoInvalidArgumentError('Argument for maxTimeMS must be a number');
-    }
-
-    this[kBuiltOptions].maxTimeMS = value;
-    return this;
-  }
-
-  /**
-   * Add a project stage to the aggregation pipeline
-   *
-   * @remarks
-   * In order to strictly type this function you must provide an interface
-   * that represents the effect of your projection on the result documents.
-   *
-   * By default chaining a projection to your cursor changes the returned type to the generic
-   * {@link Document} type.
-   * You should specify a parameterized type to have assertions on your final results.
-   *
-   * @example
-   * ```typescript
-   * // Best way
-   * const docs: FindCursor<{ a: number }> = cursor.project<{ a: number }>({ _id: 0, a: true });
-   * // Flexible way
-   * const docs: FindCursor<Document> = cursor.project({ _id: 0, a: true });
-   * ```
-   *
-   * @remarks
-   *
-   * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
-   * it **does not** return a new instance of a cursor. This means when calling project,
-   * you should always assign the result to a new variable in order to get a correctly typed cursor variable.
-   * Take note of the following example:
-   *
-   * @example
-   * ```typescript
-   * const cursor: FindCursor<{ a: number; b: string }> = coll.find();
-   * const projectCursor = cursor.project<{ a: number }>({ _id: 0, a: true });
-   * const aPropOnlyArray: {a: number}[] = await projectCursor.toArray();
-   *
-   * // or always use chaining and save the final cursor
-   *
-   * const cursor = coll.find().project<{ a: string }>({
-   *   _id: 0,
-   *   a: { $convert: { input: '$a', to: 'string' }
-   * }});
-   * ```
-   */
-  project<T extends Document = Document>(value: Document): FindCursor<T> {
-    assertUninitialized(this);
-    this[kBuiltOptions].projection = value;
-    return this as unknown as FindCursor<T>;
-  }
-
-  /**
-   * Sets the sort order of the cursor query.
-   *
-   * @param sort - The key or keys set for the sort.
-   * @param direction - The direction of the sorting (1 or -1).
-   */
-  sort(sort: Sort | string, direction?: SortDirection): this {
-    assertUninitialized(this);
-    if (this[kBuiltOptions].tailable) {
-      throw new MongoTailableCursorError('Tailable cursor does not support sorting');
-    }
-
-    this[kBuiltOptions].sort = formatSort(sort, direction);
-    return this;
-  }
-
-  /**
-   * Allows disk use for blocking sort operations exceeding 100MB memory. (MongoDB 3.2 or higher)
-   *
-   * @remarks
-   * {@link https://www.mongodb.com/docs/manual/reference/command/find/#find-cmd-allowdiskuse | find command allowDiskUse documentation}
-   */
-  allowDiskUse(allow = true): this {
-    assertUninitialized(this);
-
-    if (!this[kBuiltOptions].sort) {
-      throw new MongoInvalidArgumentError('Option "allowDiskUse" requires a sort specification');
-    }
-
-    // As of 6.0 the default is true. This allows users to get back to the old behavior.
-    if (!allow) {
-      this[kBuiltOptions].allowDiskUse = false;
-      return this;
-    }
-
-    this[kBuiltOptions].allowDiskUse = true;
-    return this;
-  }
-
-  /**
-   * Set the collation options for the cursor.
-   *
-   * @param value - The cursor collation options (MongoDB 3.4 or higher) settings for update operation (see 3.4 documentation for available fields).
-   */
-  collation(value: CollationOptions): this {
-    assertUninitialized(this);
-    this[kBuiltOptions].collation = value;
-    return this;
-  }
-
-  /**
-   * Set the limit for the cursor.
-   *
-   * @param value - The limit for the cursor query.
-   */
-  limit(value: number): this {
-    assertUninitialized(this);
-    if (this[kBuiltOptions].tailable) {
-      throw new MongoTailableCursorError('Tailable cursor does not support limit');
-    }
-
-    if (typeof value !== 'number') {
-      throw new MongoInvalidArgumentError('Operation "limit" requires an integer');
-    }
-
-    this[kBuiltOptions].limit = value;
-    return this;
-  }
-
-  /**
-   * Set the skip for the cursor.
-   *
-   * @param value - The skip for the cursor query.
-   */
-  skip(value: number): this {
-    assertUninitialized(this);
-    if (this[kBuiltOptions].tailable) {
-      throw new MongoTailableCursorError('Tailable cursor does not support skip');
-    }
-
-    if (typeof value !== 'number') {
-      throw new MongoInvalidArgumentError('Operation "skip" requires an integer');
-    }
-
-    this[kBuiltOptions].skip = value;
-    return this;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cursor/list_collections_cursor.ts b/server/data-import/node_modules/mongodb/src/cursor/list_collections_cursor.ts
deleted file mode 100644
index 6cefbd0d03db74ac6f010c0666fb10f3b2bbe9f5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cursor/list_collections_cursor.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import type { Document } from '../bson';
-import type { Db } from '../db';
-import { executeOperation, type ExecutionResult } from '../operations/execute_operation';
-import {
-  type CollectionInfo,
-  ListCollectionsOperation,
-  type ListCollectionsOptions
-} from '../operations/list_collections';
-import type { ClientSession } from '../sessions';
-import { AbstractCursor } from './abstract_cursor';
-
-/** @public */
-export class ListCollectionsCursor<
-  T extends Pick<CollectionInfo, 'name' | 'type'> | CollectionInfo =
-    | Pick<CollectionInfo, 'name' | 'type'>
-    | CollectionInfo
-> extends AbstractCursor<T> {
-  parent: Db;
-  filter: Document;
-  options?: ListCollectionsOptions;
-
-  constructor(db: Db, filter: Document, options?: ListCollectionsOptions) {
-    super(db.client, db.s.namespace, options);
-    this.parent = db;
-    this.filter = filter;
-    this.options = options;
-  }
-
-  clone(): ListCollectionsCursor<T> {
-    return new ListCollectionsCursor(this.parent, this.filter, {
-      ...this.options,
-      ...this.cursorOptions
-    });
-  }
-
-  /** @internal */
-  async _initialize(session: ClientSession | undefined): Promise<ExecutionResult> {
-    const operation = new ListCollectionsOperation(this.parent, this.filter, {
-      ...this.cursorOptions,
-      ...this.options,
-      session
-    });
-
-    const response = await executeOperation(this.parent.client, operation);
-
-    // TODO: NODE-2882
-    return { server: operation.server, session, response };
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cursor/list_indexes_cursor.ts b/server/data-import/node_modules/mongodb/src/cursor/list_indexes_cursor.ts
deleted file mode 100644
index 7d75edb99908c34c1f99d5d9bc0eac7a5cb6c692..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cursor/list_indexes_cursor.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import type { Collection } from '../collection';
-import { executeOperation, type ExecutionResult } from '../operations/execute_operation';
-import { ListIndexesOperation, type ListIndexesOptions } from '../operations/indexes';
-import type { ClientSession } from '../sessions';
-import { AbstractCursor } from './abstract_cursor';
-
-/** @public */
-export class ListIndexesCursor extends AbstractCursor {
-  parent: Collection;
-  options?: ListIndexesOptions;
-
-  constructor(collection: Collection, options?: ListIndexesOptions) {
-    super(collection.client, collection.s.namespace, options);
-    this.parent = collection;
-    this.options = options;
-  }
-
-  clone(): ListIndexesCursor {
-    return new ListIndexesCursor(this.parent, {
-      ...this.options,
-      ...this.cursorOptions
-    });
-  }
-
-  /** @internal */
-  async _initialize(session: ClientSession | undefined): Promise<ExecutionResult> {
-    const operation = new ListIndexesOperation(this.parent, {
-      ...this.cursorOptions,
-      ...this.options,
-      session
-    });
-
-    const response = await executeOperation(this.parent.client, operation);
-
-    // TODO: NODE-2882
-    return { server: operation.server, session, response };
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cursor/list_search_indexes_cursor.ts b/server/data-import/node_modules/mongodb/src/cursor/list_search_indexes_cursor.ts
deleted file mode 100644
index bf5a0b56120317bb33e0caa2c6bf1915dc19f181..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cursor/list_search_indexes_cursor.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import type { Collection } from '../collection';
-import type { AggregateOptions } from '../operations/aggregate';
-import { AggregationCursor } from './aggregation_cursor';
-
-/** @public */
-export type ListSearchIndexesOptions = AggregateOptions;
-
-/** @public */
-export class ListSearchIndexesCursor extends AggregationCursor<{ name: string }> {
-  /** @internal */
-  constructor(
-    { fullNamespace: ns, client }: Collection,
-    name: string | null,
-    options: ListSearchIndexesOptions = {}
-  ) {
-    const pipeline =
-      name == null ? [{ $listSearchIndexes: {} }] : [{ $listSearchIndexes: { name } }];
-    super(client, ns, pipeline, options);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/cursor/run_command_cursor.ts b/server/data-import/node_modules/mongodb/src/cursor/run_command_cursor.ts
deleted file mode 100644
index f3fcedecb106f0388a45766572079843f11939ac..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/cursor/run_command_cursor.ts
+++ /dev/null
@@ -1,133 +0,0 @@
-import type { BSONSerializeOptions, Document, Long } from '../bson';
-import type { Db } from '../db';
-import { MongoAPIError, MongoUnexpectedServerResponseError } from '../error';
-import { executeOperation, type ExecutionResult } from '../operations/execute_operation';
-import { GetMoreOperation } from '../operations/get_more';
-import { RunCommandOperation } from '../operations/run_command';
-import type { ReadConcernLike } from '../read_concern';
-import type { ReadPreferenceLike } from '../read_preference';
-import type { ClientSession } from '../sessions';
-import { ns } from '../utils';
-import { AbstractCursor } from './abstract_cursor';
-
-/** @public */
-export type RunCursorCommandOptions = {
-  readPreference?: ReadPreferenceLike;
-  session?: ClientSession;
-} & BSONSerializeOptions;
-
-/** @internal */
-type RunCursorCommandResponse = {
-  cursor: { id: bigint | Long | number; ns: string; firstBatch: Document[] };
-  ok: 1;
-};
-
-/** @public */
-export class RunCommandCursor extends AbstractCursor {
-  public readonly command: Readonly<Record<string, any>>;
-  public readonly getMoreOptions: {
-    comment?: any;
-    maxAwaitTimeMS?: number;
-    batchSize?: number;
-  } = {};
-
-  /**
-   * Controls the `getMore.comment` field
-   * @param comment - any BSON value
-   */
-  public setComment(comment: any): this {
-    this.getMoreOptions.comment = comment;
-    return this;
-  }
-
-  /**
-   * Controls the `getMore.maxTimeMS` field. Only valid when cursor is tailable await
-   * @param maxTimeMS - the number of milliseconds to wait for new data
-   */
-  public setMaxTimeMS(maxTimeMS: number): this {
-    this.getMoreOptions.maxAwaitTimeMS = maxTimeMS;
-    return this;
-  }
-
-  /**
-   * Controls the `getMore.batchSize` field
-   * @param maxTimeMS - the number documents to return in the `nextBatch`
-   */
-  public setBatchSize(batchSize: number): this {
-    this.getMoreOptions.batchSize = batchSize;
-    return this;
-  }
-
-  /** Unsupported for RunCommandCursor */
-  public override clone(): never {
-    throw new MongoAPIError('Clone not supported, create a new cursor with db.runCursorCommand');
-  }
-
-  /** Unsupported for RunCommandCursor: readConcern must be configured directly on command document */
-  public override withReadConcern(_: ReadConcernLike): never {
-    throw new MongoAPIError(
-      'RunCommandCursor does not support readConcern it must be attached to the command being run'
-    );
-  }
-
-  /** Unsupported for RunCommandCursor: various cursor flags must be configured directly on command document */
-  public override addCursorFlag(_: string, __: boolean): never {
-    throw new MongoAPIError(
-      'RunCommandCursor does not support cursor flags, they must be attached to the command being run'
-    );
-  }
-
-  /** Unsupported for RunCommandCursor: maxTimeMS must be configured directly on command document */
-  public override maxTimeMS(_: number): never {
-    throw new MongoAPIError(
-      'maxTimeMS must be configured on the command document directly, to configure getMore.maxTimeMS use cursor.setMaxTimeMS()'
-    );
-  }
-
-  /** Unsupported for RunCommandCursor: batchSize must be configured directly on command document */
-  public override batchSize(_: number): never {
-    throw new MongoAPIError(
-      'batchSize must be configured on the command document directly, to configure getMore.batchSize use cursor.setBatchSize()'
-    );
-  }
-
-  /** @internal */
-  private db: Db;
-
-  /** @internal */
-  constructor(db: Db, command: Document, options: RunCursorCommandOptions = {}) {
-    super(db.client, ns(db.namespace), options);
-    this.db = db;
-    this.command = Object.freeze({ ...command });
-  }
-
-  /** @internal */
-  protected async _initialize(session: ClientSession): Promise<ExecutionResult> {
-    const operation = new RunCommandOperation<RunCursorCommandResponse>(this.db, this.command, {
-      ...this.cursorOptions,
-      session: session,
-      readPreference: this.cursorOptions.readPreference
-    });
-    const response = await executeOperation(this.client, operation);
-    if (response.cursor == null) {
-      throw new MongoUnexpectedServerResponseError('Expected server to respond with cursor');
-    }
-    return {
-      server: operation.server,
-      session,
-      response
-    };
-  }
-
-  /** @internal */
-  override async getMore(_batchSize: number): Promise<Document> {
-    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-    const getMoreOperation = new GetMoreOperation(this.namespace, this.id!, this.server!, {
-      ...this.cursorOptions,
-      session: this.session,
-      ...this.getMoreOptions
-    });
-
-    return executeOperation(this.client, getMoreOperation);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/db.ts b/server/data-import/node_modules/mongodb/src/db.ts
deleted file mode 100644
index c12c22c72438de7ec6b2f0118e3151a4e565e896..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/db.ts
+++ /dev/null
@@ -1,529 +0,0 @@
-import { Admin } from './admin';
-import { type BSONSerializeOptions, type Document, resolveBSONOptions } from './bson';
-import { ChangeStream, type ChangeStreamDocument, type ChangeStreamOptions } from './change_stream';
-import { Collection, type CollectionOptions } from './collection';
-import * as CONSTANTS from './constants';
-import { AggregationCursor } from './cursor/aggregation_cursor';
-import { ListCollectionsCursor } from './cursor/list_collections_cursor';
-import { RunCommandCursor, type RunCursorCommandOptions } from './cursor/run_command_cursor';
-import { MongoInvalidArgumentError } from './error';
-import type { MongoClient, PkFactory } from './mongo_client';
-import type { TODO_NODE_3286 } from './mongo_types';
-import type { AggregateOptions } from './operations/aggregate';
-import { CollectionsOperation } from './operations/collections';
-import type { IndexInformationOptions } from './operations/common_functions';
-import {
-  CreateCollectionOperation,
-  type CreateCollectionOptions
-} from './operations/create_collection';
-import {
-  DropCollectionOperation,
-  type DropCollectionOptions,
-  DropDatabaseOperation,
-  type DropDatabaseOptions
-} from './operations/drop';
-import { executeOperation } from './operations/execute_operation';
-import {
-  type CreateIndexesOptions,
-  CreateIndexOperation,
-  IndexInformationOperation,
-  type IndexSpecification
-} from './operations/indexes';
-import type { CollectionInfo, ListCollectionsOptions } from './operations/list_collections';
-import { ProfilingLevelOperation, type ProfilingLevelOptions } from './operations/profiling_level';
-import { RemoveUserOperation, type RemoveUserOptions } from './operations/remove_user';
-import { RenameOperation, type RenameOptions } from './operations/rename';
-import { RunCommandOperation, type RunCommandOptions } from './operations/run_command';
-import {
-  type ProfilingLevel,
-  SetProfilingLevelOperation,
-  type SetProfilingLevelOptions
-} from './operations/set_profiling_level';
-import { DbStatsOperation, type DbStatsOptions } from './operations/stats';
-import { ReadConcern } from './read_concern';
-import { ReadPreference, type ReadPreferenceLike } from './read_preference';
-import { DEFAULT_PK_FACTORY, filterOptions, MongoDBNamespace, resolveOptions } from './utils';
-import { WriteConcern, type WriteConcernOptions } from './write_concern';
-
-// Allowed parameters
-const DB_OPTIONS_ALLOW_LIST = [
-  'writeConcern',
-  'readPreference',
-  'readPreferenceTags',
-  'native_parser',
-  'forceServerObjectId',
-  'pkFactory',
-  'serializeFunctions',
-  'raw',
-  'authSource',
-  'ignoreUndefined',
-  'readConcern',
-  'retryMiliSeconds',
-  'numberOfRetries',
-  'useBigInt64',
-  'promoteBuffers',
-  'promoteLongs',
-  'bsonRegExp',
-  'enableUtf8Validation',
-  'promoteValues',
-  'compression',
-  'retryWrites'
-];
-
-/** @internal */
-export interface DbPrivate {
-  options?: DbOptions;
-  readPreference?: ReadPreference;
-  pkFactory: PkFactory;
-  readConcern?: ReadConcern;
-  bsonOptions: BSONSerializeOptions;
-  writeConcern?: WriteConcern;
-  namespace: MongoDBNamespace;
-}
-
-/** @public */
-export interface DbOptions extends BSONSerializeOptions, WriteConcernOptions {
-  /** If the database authentication is dependent on another databaseName. */
-  authSource?: string;
-  /** Force server to assign _id values instead of driver. */
-  forceServerObjectId?: boolean;
-  /** The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). */
-  readPreference?: ReadPreferenceLike;
-  /** A primary key factory object for generation of custom _id keys. */
-  pkFactory?: PkFactory;
-  /** Specify a read concern for the collection. (only MongoDB 3.2 or higher supported) */
-  readConcern?: ReadConcern;
-  /** Should retry failed writes */
-  retryWrites?: boolean;
-}
-
-/**
- * The **Db** class is a class that represents a MongoDB Database.
- * @public
- *
- * @example
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * interface Pet {
- *   name: string;
- *   kind: 'dog' | 'cat' | 'fish';
- * }
- *
- * const client = new MongoClient('mongodb://localhost:27017');
- * const db = client.db();
- *
- * // Create a collection that validates our union
- * await db.createCollection<Pet>('pets', {
- *   validator: { $expr: { $in: ['$kind', ['dog', 'cat', 'fish']] } }
- * })
- * ```
- */
-export class Db {
-  /** @internal */
-  s: DbPrivate;
-
-  /** @internal */
-  readonly client: MongoClient;
-
-  public static SYSTEM_NAMESPACE_COLLECTION = CONSTANTS.SYSTEM_NAMESPACE_COLLECTION;
-  public static SYSTEM_INDEX_COLLECTION = CONSTANTS.SYSTEM_INDEX_COLLECTION;
-  public static SYSTEM_PROFILE_COLLECTION = CONSTANTS.SYSTEM_PROFILE_COLLECTION;
-  public static SYSTEM_USER_COLLECTION = CONSTANTS.SYSTEM_USER_COLLECTION;
-  public static SYSTEM_COMMAND_COLLECTION = CONSTANTS.SYSTEM_COMMAND_COLLECTION;
-  public static SYSTEM_JS_COLLECTION = CONSTANTS.SYSTEM_JS_COLLECTION;
-
-  /**
-   * Creates a new Db instance.
-   *
-   * Db name cannot contain a dot, the server may apply more restrictions when an operation is run.
-   *
-   * @param client - The MongoClient for the database.
-   * @param databaseName - The name of the database this instance represents.
-   * @param options - Optional settings for Db construction.
-   */
-  constructor(client: MongoClient, databaseName: string, options?: DbOptions) {
-    options = options ?? {};
-
-    // Filter the options
-    options = filterOptions(options, DB_OPTIONS_ALLOW_LIST);
-
-    // Ensure there are no dots in database name
-    if (typeof databaseName === 'string' && databaseName.includes('.')) {
-      throw new MongoInvalidArgumentError(`Database names cannot contain the character '.'`);
-    }
-
-    // Internal state of the db object
-    this.s = {
-      // Options
-      options,
-      // Unpack read preference
-      readPreference: ReadPreference.fromOptions(options),
-      // Merge bson options
-      bsonOptions: resolveBSONOptions(options, client),
-      // Set up the primary key factory or fallback to ObjectId
-      pkFactory: options?.pkFactory ?? DEFAULT_PK_FACTORY,
-      // ReadConcern
-      readConcern: ReadConcern.fromOptions(options),
-      writeConcern: WriteConcern.fromOptions(options),
-      // Namespace
-      namespace: new MongoDBNamespace(databaseName)
-    };
-
-    this.client = client;
-  }
-
-  get databaseName(): string {
-    return this.s.namespace.db;
-  }
-
-  // Options
-  get options(): DbOptions | undefined {
-    return this.s.options;
-  }
-
-  /**
-   * Check if a secondary can be used (because the read preference is *not* set to primary)
-   */
-  get secondaryOk(): boolean {
-    return this.s.readPreference?.preference !== 'primary' || false;
-  }
-
-  get readConcern(): ReadConcern | undefined {
-    return this.s.readConcern;
-  }
-
-  /**
-   * The current readPreference of the Db. If not explicitly defined for
-   * this Db, will be inherited from the parent MongoClient
-   */
-  get readPreference(): ReadPreference {
-    if (this.s.readPreference == null) {
-      return this.client.readPreference;
-    }
-
-    return this.s.readPreference;
-  }
-
-  get bsonOptions(): BSONSerializeOptions {
-    return this.s.bsonOptions;
-  }
-
-  // get the write Concern
-  get writeConcern(): WriteConcern | undefined {
-    return this.s.writeConcern;
-  }
-
-  get namespace(): string {
-    return this.s.namespace.toString();
-  }
-
-  /**
-   * Create a new collection on a server with the specified options. Use this to create capped collections.
-   * More information about command options available at https://www.mongodb.com/docs/manual/reference/command/create/
-   *
-   * Collection namespace validation is performed server-side.
-   *
-   * @param name - The name of the collection to create
-   * @param options - Optional settings for the command
-   */
-  async createCollection<TSchema extends Document = Document>(
-    name: string,
-    options?: CreateCollectionOptions
-  ): Promise<Collection<TSchema>> {
-    return executeOperation(
-      this.client,
-      new CreateCollectionOperation(this, name, resolveOptions(this, options)) as TODO_NODE_3286
-    );
-  }
-
-  /**
-   * Execute a command
-   *
-   * @remarks
-   * This command does not inherit options from the MongoClient.
-   *
-   * The driver will ensure the following fields are attached to the command sent to the server:
-   * - `lsid` - sourced from an implicit session or options.session
-   * - `$readPreference` - defaults to primary or can be configured by options.readPreference
-   * - `$db` - sourced from the name of this database
-   *
-   * If the client has a serverApi setting:
-   * - `apiVersion`
-   * - `apiStrict`
-   * - `apiDeprecationErrors`
-   *
-   * When in a transaction:
-   * - `readConcern` - sourced from readConcern set on the TransactionOptions
-   * - `writeConcern` - sourced from writeConcern set on the TransactionOptions
-   *
-   * Attaching any of the above fields to the command will have no effect as the driver will overwrite the value.
-   *
-   * @param command - The command to run
-   * @param options - Optional settings for the command
-   */
-  async command(command: Document, options?: RunCommandOptions): Promise<Document> {
-    // Intentionally, we do not inherit options from parent for this operation.
-    return executeOperation(
-      this.client,
-      new RunCommandOperation(this, command, {
-        ...resolveBSONOptions(options),
-        session: options?.session,
-        readPreference: options?.readPreference
-      })
-    );
-  }
-
-  /**
-   * Execute an aggregation framework pipeline against the database, needs MongoDB \>= 3.6
-   *
-   * @param pipeline - An array of aggregation stages to be executed
-   * @param options - Optional settings for the command
-   */
-  aggregate<T extends Document = Document>(
-    pipeline: Document[] = [],
-    options?: AggregateOptions
-  ): AggregationCursor<T> {
-    return new AggregationCursor(
-      this.client,
-      this.s.namespace,
-      pipeline,
-      resolveOptions(this, options)
-    );
-  }
-
-  /** Return the Admin db instance */
-  admin(): Admin {
-    return new Admin(this);
-  }
-
-  /**
-   * Returns a reference to a MongoDB Collection. If it does not exist it will be created implicitly.
-   *
-   * Collection namespace validation is performed server-side.
-   *
-   * @param name - the collection name we wish to access.
-   * @returns return the new Collection instance
-   */
-  collection<TSchema extends Document = Document>(
-    name: string,
-    options: CollectionOptions = {}
-  ): Collection<TSchema> {
-    if (typeof options === 'function') {
-      throw new MongoInvalidArgumentError('The callback form of this helper has been removed.');
-    }
-    return new Collection<TSchema>(this, name, resolveOptions(this, options));
-  }
-
-  /**
-   * Get all the db statistics.
-   *
-   * @param options - Optional settings for the command
-   */
-  async stats(options?: DbStatsOptions): Promise<Document> {
-    return executeOperation(this.client, new DbStatsOperation(this, resolveOptions(this, options)));
-  }
-
-  /**
-   * List all collections of this database with optional filter
-   *
-   * @param filter - Query to filter collections by
-   * @param options - Optional settings for the command
-   */
-  listCollections(
-    filter: Document,
-    options: Exclude<ListCollectionsOptions, 'nameOnly'> & { nameOnly: true }
-  ): ListCollectionsCursor<Pick<CollectionInfo, 'name' | 'type'>>;
-  listCollections(
-    filter: Document,
-    options: Exclude<ListCollectionsOptions, 'nameOnly'> & { nameOnly: false }
-  ): ListCollectionsCursor<CollectionInfo>;
-  listCollections<
-    T extends Pick<CollectionInfo, 'name' | 'type'> | CollectionInfo =
-      | Pick<CollectionInfo, 'name' | 'type'>
-      | CollectionInfo
-  >(filter?: Document, options?: ListCollectionsOptions): ListCollectionsCursor<T>;
-  listCollections<
-    T extends Pick<CollectionInfo, 'name' | 'type'> | CollectionInfo =
-      | Pick<CollectionInfo, 'name' | 'type'>
-      | CollectionInfo
-  >(filter: Document = {}, options: ListCollectionsOptions = {}): ListCollectionsCursor<T> {
-    return new ListCollectionsCursor<T>(this, filter, resolveOptions(this, options));
-  }
-
-  /**
-   * Rename a collection.
-   *
-   * @remarks
-   * This operation does not inherit options from the MongoClient.
-   *
-   * @param fromCollection - Name of current collection to rename
-   * @param toCollection - New name of of the collection
-   * @param options - Optional settings for the command
-   */
-  async renameCollection<TSchema extends Document = Document>(
-    fromCollection: string,
-    toCollection: string,
-    options?: RenameOptions
-  ): Promise<Collection<TSchema>> {
-    // Intentionally, we do not inherit options from parent for this operation.
-    return executeOperation(
-      this.client,
-      new RenameOperation(
-        this.collection<TSchema>(fromCollection) as TODO_NODE_3286,
-        toCollection,
-        { ...options, new_collection: true, readPreference: ReadPreference.primary }
-      ) as TODO_NODE_3286
-    );
-  }
-
-  /**
-   * Drop a collection from the database, removing it permanently. New accesses will create a new collection.
-   *
-   * @param name - Name of collection to drop
-   * @param options - Optional settings for the command
-   */
-  async dropCollection(name: string, options?: DropCollectionOptions): Promise<boolean> {
-    return executeOperation(
-      this.client,
-      new DropCollectionOperation(this, name, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Drop a database, removing it permanently from the server.
-   *
-   * @param options - Optional settings for the command
-   */
-  async dropDatabase(options?: DropDatabaseOptions): Promise<boolean> {
-    return executeOperation(
-      this.client,
-      new DropDatabaseOperation(this, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Fetch all collections for the current db.
-   *
-   * @param options - Optional settings for the command
-   */
-  async collections(options?: ListCollectionsOptions): Promise<Collection[]> {
-    return executeOperation(
-      this.client,
-      new CollectionsOperation(this, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Creates an index on the db and collection.
-   *
-   * @param name - Name of the collection to create the index on.
-   * @param indexSpec - Specify the field to index, or an index specification
-   * @param options - Optional settings for the command
-   */
-  async createIndex(
-    name: string,
-    indexSpec: IndexSpecification,
-    options?: CreateIndexesOptions
-  ): Promise<string> {
-    return executeOperation(
-      this.client,
-      new CreateIndexOperation(this, name, indexSpec, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Remove a user from a database
-   *
-   * @param username - The username to remove
-   * @param options - Optional settings for the command
-   */
-  async removeUser(username: string, options?: RemoveUserOptions): Promise<boolean> {
-    return executeOperation(
-      this.client,
-      new RemoveUserOperation(this, username, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Set the current profiling level of MongoDB
-   *
-   * @param level - The new profiling level (off, slow_only, all).
-   * @param options - Optional settings for the command
-   */
-  async setProfilingLevel(
-    level: ProfilingLevel,
-    options?: SetProfilingLevelOptions
-  ): Promise<ProfilingLevel> {
-    return executeOperation(
-      this.client,
-      new SetProfilingLevelOperation(this, level, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Retrieve the current profiling Level for MongoDB
-   *
-   * @param options - Optional settings for the command
-   */
-  async profilingLevel(options?: ProfilingLevelOptions): Promise<string> {
-    return executeOperation(
-      this.client,
-      new ProfilingLevelOperation(this, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Retrieves this collections index info.
-   *
-   * @param name - The name of the collection.
-   * @param options - Optional settings for the command
-   */
-  async indexInformation(name: string, options?: IndexInformationOptions): Promise<Document> {
-    return executeOperation(
-      this.client,
-      new IndexInformationOperation(this, name, resolveOptions(this, options))
-    );
-  }
-
-  /**
-   * Create a new Change Stream, watching for new changes (insertions, updates,
-   * replacements, deletions, and invalidations) in this database. Will ignore all
-   * changes to system collections.
-   *
-   * @remarks
-   * watch() accepts two generic arguments for distinct use cases:
-   * - The first is to provide the schema that may be defined for all the collections within this database
-   * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument
-   *
-   * @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.
-   * @param options - Optional settings for the command
-   * @typeParam TSchema - Type of the data being detected by the change stream
-   * @typeParam TChange - Type of the whole change stream document emitted
-   */
-  watch<
-    TSchema extends Document = Document,
-    TChange extends Document = ChangeStreamDocument<TSchema>
-  >(pipeline: Document[] = [], options: ChangeStreamOptions = {}): ChangeStream<TSchema, TChange> {
-    // Allow optionally not specifying a pipeline
-    if (!Array.isArray(pipeline)) {
-      options = pipeline;
-      pipeline = [];
-    }
-
-    return new ChangeStream<TSchema, TChange>(this, pipeline, resolveOptions(this, options));
-  }
-
-  /**
-   * A low level cursor API providing basic driver functionality:
-   * - ClientSession management
-   * - ReadPreference for server selection
-   * - Running getMores automatically when a local batch is exhausted
-   *
-   * @param command - The command that will start a cursor on the server.
-   * @param options - Configurations for running the command, bson options will apply to getMores
-   */
-  runCursorCommand(command: Document, options?: RunCursorCommandOptions): RunCommandCursor {
-    return new RunCommandCursor(this, command, options);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/deps.ts b/server/data-import/node_modules/mongodb/src/deps.ts
deleted file mode 100644
index 7a3c121f6891d237169cf25cd6a67ea95312b9e9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/deps.ts
+++ /dev/null
@@ -1,268 +0,0 @@
-/* eslint-disable @typescript-eslint/no-var-requires */
-import { type Stream } from './cmap/connect';
-import { MongoMissingDependencyError } from './error';
-import type { Callback } from './utils';
-
-function makeErrorModule(error: any) {
-  const props = error ? { kModuleError: error } : {};
-  return new Proxy(props, {
-    get: (_: any, key: any) => {
-      if (key === 'kModuleError') {
-        return error;
-      }
-      throw error;
-    },
-    set: () => {
-      throw error;
-    }
-  });
-}
-
-export let Kerberos: typeof import('kerberos') | { kModuleError: MongoMissingDependencyError } =
-  makeErrorModule(
-    new MongoMissingDependencyError(
-      'Optional module `kerberos` not found. Please install it to enable kerberos authentication'
-    )
-  );
-
-export function getKerberos(): typeof Kerberos | { kModuleError: MongoMissingDependencyError } {
-  try {
-    // Ensure you always wrap an optional require in the try block NODE-3199
-    Kerberos = require('kerberos');
-    return Kerberos;
-  } catch {
-    return Kerberos;
-  }
-}
-
-export interface KerberosClient {
-  step(challenge: string): Promise<string>;
-  step(challenge: string, callback: Callback<string>): void;
-  wrap(challenge: string, options: { user: string }): Promise<string>;
-  wrap(challenge: string, options: { user: string }, callback: Callback<string>): void;
-  unwrap(challenge: string): Promise<string>;
-  unwrap(challenge: string, callback: Callback<string>): void;
-}
-
-type ZStandardLib = {
-  /**
-   * Compress using zstd.
-   * @param buf - Buffer to be compressed.
-   */
-  compress(buf: Buffer, level?: number): Promise<Buffer>;
-
-  /**
-   * Decompress using zstd.
-   */
-  decompress(buf: Buffer): Promise<Buffer>;
-};
-
-export let ZStandard: ZStandardLib | { kModuleError: MongoMissingDependencyError } =
-  makeErrorModule(
-    new MongoMissingDependencyError(
-      'Optional module `@mongodb-js/zstd` not found. Please install it to enable zstd compression'
-    )
-  );
-
-export function getZstdLibrary(): typeof ZStandard | { kModuleError: MongoMissingDependencyError } {
-  try {
-    ZStandard = require('@mongodb-js/zstd');
-    return ZStandard;
-  } catch {
-    return ZStandard;
-  }
-}
-
-/**
- * @internal
- * Copy of the AwsCredentialIdentityProvider interface from [`smithy/types`](https://socket.dev/npm/package/\@smithy/types/files/1.1.1/dist-types/identity/awsCredentialIdentity.d.ts),
- * the return type of the aws-sdk's `fromNodeProviderChain().provider()`.
- */
-export interface AWSCredentials {
-  accessKeyId: string;
-  secretAccessKey: string;
-  sessionToken: string;
-  expiration?: Date;
-}
-
-type CredentialProvider = {
-  fromNodeProviderChain(
-    this: void,
-    options: { clientConfig: { region: string } }
-  ): () => Promise<AWSCredentials>;
-  fromNodeProviderChain(this: void): () => Promise<AWSCredentials>;
-};
-
-export function getAwsCredentialProvider():
-  | CredentialProvider
-  | { kModuleError: MongoMissingDependencyError } {
-  try {
-    // Ensure you always wrap an optional require in the try block NODE-3199
-    const credentialProvider = require('@aws-sdk/credential-providers');
-    return credentialProvider;
-  } catch {
-    return makeErrorModule(
-      new MongoMissingDependencyError(
-        'Optional module `@aws-sdk/credential-providers` not found.' +
-          ' Please install it to enable getting aws credentials via the official sdk.'
-      )
-    );
-  }
-}
-
-/** @internal */
-export type GcpMetadata =
-  | typeof import('gcp-metadata')
-  | { kModuleError: MongoMissingDependencyError };
-
-export function getGcpMetadata(): GcpMetadata {
-  try {
-    // Ensure you always wrap an optional require in the try block NODE-3199
-    const credentialProvider = require('gcp-metadata');
-    return credentialProvider;
-  } catch {
-    return makeErrorModule(
-      new MongoMissingDependencyError(
-        'Optional module `gcp-metadata` not found.' +
-          ' Please install it to enable getting gcp credentials via the official sdk.'
-      )
-    );
-  }
-}
-
-/** @internal */
-export type SnappyLib = {
-  /**
-   * In order to support both we must check the return value of the function
-   * @param buf - Buffer to be compressed
-   */
-  compress(buf: Buffer): Promise<Buffer>;
-
-  /**
-   * In order to support both we must check the return value of the function
-   * @param buf - Buffer to be compressed
-   */
-  uncompress(buf: Buffer, opt: { asBuffer: true }): Promise<Buffer>;
-};
-
-export function getSnappy(): SnappyLib | { kModuleError: MongoMissingDependencyError } {
-  try {
-    // Ensure you always wrap an optional require in the try block NODE-3199
-    const value = require('snappy');
-    return value;
-  } catch (cause) {
-    const kModuleError = new MongoMissingDependencyError(
-      'Optional module `snappy` not found. Please install it to enable snappy compression',
-      { cause }
-    );
-    return { kModuleError };
-  }
-}
-
-export type SocksLib = {
-  SocksClient: {
-    createConnection(options: {
-      command: 'connect';
-      destination: { host: string; port: number };
-      proxy: {
-        /** host and port are ignored because we pass existing_socket */
-        host: 'iLoveJavaScript';
-        port: 0;
-        type: 5;
-        userId?: string;
-        password?: string;
-      };
-      timeout?: number;
-      /** We always create our own socket, and pass it to this API for proxy negotiation */
-      existing_socket: Stream;
-    }): Promise<{ socket: Stream }>;
-  };
-};
-
-export function getSocks(): SocksLib | { kModuleError: MongoMissingDependencyError } {
-  try {
-    // Ensure you always wrap an optional require in the try block NODE-3199
-    const value = require('socks');
-    return value;
-  } catch (cause) {
-    const kModuleError = new MongoMissingDependencyError(
-      'Optional module `socks` not found. Please install it to connections over a SOCKS5 proxy',
-      { cause }
-    );
-    return { kModuleError };
-  }
-}
-
-interface AWS4 {
-  /**
-   * Created these inline types to better assert future usage of this API
-   * @param options - options for request
-   * @param credentials - AWS credential details, sessionToken should be omitted entirely if its false-y
-   */
-  sign(
-    this: void,
-    options: {
-      path: '/';
-      body: string;
-      host: string;
-      method: 'POST';
-      headers: {
-        'Content-Type': 'application/x-www-form-urlencoded';
-        'Content-Length': number;
-        'X-MongoDB-Server-Nonce': string;
-        'X-MongoDB-GS2-CB-Flag': 'n';
-      };
-      service: string;
-      region: string;
-    },
-    credentials:
-      | {
-          accessKeyId: string;
-          secretAccessKey: string;
-          sessionToken: string;
-        }
-      | {
-          accessKeyId: string;
-          secretAccessKey: string;
-        }
-      | undefined
-  ): {
-    headers: {
-      Authorization: string;
-      'X-Amz-Date': string;
-    };
-  };
-}
-
-export let aws4: AWS4 | { kModuleError: MongoMissingDependencyError } = makeErrorModule(
-  new MongoMissingDependencyError(
-    'Optional module `aws4` not found. Please install it to enable AWS authentication'
-  )
-);
-
-try {
-  // Ensure you always wrap an optional require in the try block NODE-3199
-  aws4 = require('aws4');
-} catch {} // eslint-disable-line
-
-/** A utility function to get the instance of mongodb-client-encryption, if it exists. */
-export function getMongoDBClientEncryption():
-  | typeof import('mongodb-client-encryption')
-  | { kModuleError: MongoMissingDependencyError } {
-  let mongodbClientEncryption = null;
-
-  try {
-    // NOTE(NODE-3199): Ensure you always wrap an optional require literally in the try block
-    // Cannot be moved to helper utility function, bundlers search and replace the actual require call
-    // in a way that makes this line throw at bundle time, not runtime, catching here will make bundling succeed
-    mongodbClientEncryption = require('mongodb-client-encryption');
-  } catch (cause) {
-    const kModuleError = new MongoMissingDependencyError(
-      'Optional module `mongodb-client-encryption` not found. Please install it to use auto encryption or ClientEncryption.',
-      { cause }
-    );
-    return { kModuleError };
-  }
-
-  return mongodbClientEncryption;
-}
diff --git a/server/data-import/node_modules/mongodb/src/encrypter.ts b/server/data-import/node_modules/mongodb/src/encrypter.ts
deleted file mode 100644
index db3413bae7081f38582fe60b9ef974f526e7586c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/encrypter.ts
+++ /dev/null
@@ -1,130 +0,0 @@
-import { callbackify } from 'util';
-
-import { AutoEncrypter, type AutoEncryptionOptions } from './client-side-encryption/auto_encrypter';
-import { MONGO_CLIENT_EVENTS } from './constants';
-import { getMongoDBClientEncryption } from './deps';
-import { MongoInvalidArgumentError, MongoMissingDependencyError } from './error';
-import { MongoClient, type MongoClientOptions } from './mongo_client';
-import { type Callback } from './utils';
-
-/** @internal */
-const kInternalClient = Symbol('internalClient');
-
-/** @internal */
-export interface EncrypterOptions {
-  autoEncryption: AutoEncryptionOptions;
-  maxPoolSize?: number;
-}
-
-/** @internal */
-export class Encrypter {
-  [kInternalClient]: MongoClient | null;
-  bypassAutoEncryption: boolean;
-  needsConnecting: boolean;
-  autoEncrypter: AutoEncrypter;
-
-  constructor(client: MongoClient, uri: string, options: MongoClientOptions) {
-    if (typeof options.autoEncryption !== 'object') {
-      throw new MongoInvalidArgumentError('Option "autoEncryption" must be specified');
-    }
-    // initialize to null, if we call getInternalClient, we may set this it is important to not overwrite those function calls.
-    this[kInternalClient] = null;
-
-    this.bypassAutoEncryption = !!options.autoEncryption.bypassAutoEncryption;
-    this.needsConnecting = false;
-
-    if (options.maxPoolSize === 0 && options.autoEncryption.keyVaultClient == null) {
-      options.autoEncryption.keyVaultClient = client;
-    } else if (options.autoEncryption.keyVaultClient == null) {
-      options.autoEncryption.keyVaultClient = this.getInternalClient(client, uri, options);
-    }
-
-    if (this.bypassAutoEncryption) {
-      options.autoEncryption.metadataClient = undefined;
-    } else if (options.maxPoolSize === 0) {
-      options.autoEncryption.metadataClient = client;
-    } else {
-      options.autoEncryption.metadataClient = this.getInternalClient(client, uri, options);
-    }
-
-    if (options.proxyHost) {
-      options.autoEncryption.proxyOptions = {
-        proxyHost: options.proxyHost,
-        proxyPort: options.proxyPort,
-        proxyUsername: options.proxyUsername,
-        proxyPassword: options.proxyPassword
-      };
-    }
-
-    this.autoEncrypter = new AutoEncrypter(client, options.autoEncryption);
-  }
-
-  getInternalClient(client: MongoClient, uri: string, options: MongoClientOptions): MongoClient {
-    // TODO(NODE-4144): Remove new variable for type narrowing
-    let internalClient = this[kInternalClient];
-    if (internalClient == null) {
-      const clonedOptions: MongoClientOptions = {};
-
-      for (const key of [
-        ...Object.getOwnPropertyNames(options),
-        ...Object.getOwnPropertySymbols(options)
-      ] as string[]) {
-        if (['autoEncryption', 'minPoolSize', 'servers', 'caseTranslate', 'dbName'].includes(key))
-          continue;
-        Reflect.set(clonedOptions, key, Reflect.get(options, key));
-      }
-
-      clonedOptions.minPoolSize = 0;
-
-      internalClient = new MongoClient(uri, clonedOptions);
-      this[kInternalClient] = internalClient;
-
-      for (const eventName of MONGO_CLIENT_EVENTS) {
-        for (const listener of client.listeners(eventName)) {
-          internalClient.on(eventName, listener);
-        }
-      }
-
-      client.on('newListener', (eventName, listener) => {
-        internalClient?.on(eventName, listener);
-      });
-
-      this.needsConnecting = true;
-    }
-    return internalClient;
-  }
-
-  async connectInternalClient(): Promise<void> {
-    // TODO(NODE-4144): Remove new variable for type narrowing
-    const internalClient = this[kInternalClient];
-    if (this.needsConnecting && internalClient != null) {
-      this.needsConnecting = false;
-      await internalClient.connect();
-    }
-  }
-
-  closeCallback(client: MongoClient, force: boolean, callback: Callback<void>) {
-    callbackify(this.close.bind(this))(client, force, callback);
-  }
-
-  async close(client: MongoClient, force: boolean): Promise<void> {
-    const maybeError: Error | void = await this.autoEncrypter.teardown(!!force).catch(e => e);
-    const internalClient = this[kInternalClient];
-    if (internalClient != null && client !== internalClient) {
-      return internalClient.close(force);
-    }
-    if (maybeError) {
-      throw maybeError;
-    }
-  }
-
-  static checkForMongoCrypt(): void {
-    const mongodbClientEncryption = getMongoDBClientEncryption();
-    if ('kModuleError' in mongodbClientEncryption) {
-      throw new MongoMissingDependencyError(
-        'Auto-encryption requested, but the module is not installed. ' +
-          'Please add `mongodb-client-encryption` as a dependency of your project'
-      );
-    }
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/error.ts b/server/data-import/node_modules/mongodb/src/error.ts
deleted file mode 100644
index f53b15b0d7d6d2a54936cb9f021129621dea47db..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/error.ts
+++ /dev/null
@@ -1,1320 +0,0 @@
-import type { Document } from './bson';
-import type { TopologyVersion } from './sdam/server_description';
-import type { TopologyDescription } from './sdam/topology_description';
-
-/** @public */
-export type AnyError = MongoError | Error;
-
-/** @internal */
-const kErrorLabels = Symbol('errorLabels');
-
-/**
- * @internal
- * The legacy error message from the server that indicates the node is not a writable primary
- * https://github.com/mongodb/specifications/blob/b07c26dc40d04ac20349f989db531c9845fdd755/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#not-writable-primary-and-node-is-recovering
- */
-export const LEGACY_NOT_WRITABLE_PRIMARY_ERROR_MESSAGE = new RegExp('not master', 'i');
-
-/**
- * @internal
- * The legacy error message from the server that indicates the node is not a primary or secondary
- * https://github.com/mongodb/specifications/blob/b07c26dc40d04ac20349f989db531c9845fdd755/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#not-writable-primary-and-node-is-recovering
- */
-export const LEGACY_NOT_PRIMARY_OR_SECONDARY_ERROR_MESSAGE = new RegExp(
-  'not master or secondary',
-  'i'
-);
-
-/**
- * @internal
- * The error message from the server that indicates the node is recovering
- * https://github.com/mongodb/specifications/blob/b07c26dc40d04ac20349f989db531c9845fdd755/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#not-writable-primary-and-node-is-recovering
- */
-export const NODE_IS_RECOVERING_ERROR_MESSAGE = new RegExp('node is recovering', 'i');
-
-/** @internal MongoDB Error Codes */
-export const MONGODB_ERROR_CODES = Object.freeze({
-  HostUnreachable: 6,
-  HostNotFound: 7,
-  NetworkTimeout: 89,
-  ShutdownInProgress: 91,
-  PrimarySteppedDown: 189,
-  ExceededTimeLimit: 262,
-  SocketException: 9001,
-  NotWritablePrimary: 10107,
-  InterruptedAtShutdown: 11600,
-  InterruptedDueToReplStateChange: 11602,
-  NotPrimaryNoSecondaryOk: 13435,
-  NotPrimaryOrSecondary: 13436,
-  StaleShardVersion: 63,
-  StaleEpoch: 150,
-  StaleConfig: 13388,
-  RetryChangeStream: 234,
-  FailedToSatisfyReadPreference: 133,
-  CursorNotFound: 43,
-  LegacyNotPrimary: 10058,
-  WriteConcernFailed: 64,
-  NamespaceNotFound: 26,
-  IllegalOperation: 20,
-  MaxTimeMSExpired: 50,
-  UnknownReplWriteConcern: 79,
-  UnsatisfiableWriteConcern: 100,
-  Reauthenticate: 391
-} as const);
-
-// From spec@https://github.com/mongodb/specifications/blob/f93d78191f3db2898a59013a7ed5650352ef6da8/source/change-streams/change-streams.rst#resumable-error
-export const GET_MORE_RESUMABLE_CODES = new Set<number>([
-  MONGODB_ERROR_CODES.HostUnreachable,
-  MONGODB_ERROR_CODES.HostNotFound,
-  MONGODB_ERROR_CODES.NetworkTimeout,
-  MONGODB_ERROR_CODES.ShutdownInProgress,
-  MONGODB_ERROR_CODES.PrimarySteppedDown,
-  MONGODB_ERROR_CODES.ExceededTimeLimit,
-  MONGODB_ERROR_CODES.SocketException,
-  MONGODB_ERROR_CODES.NotWritablePrimary,
-  MONGODB_ERROR_CODES.InterruptedAtShutdown,
-  MONGODB_ERROR_CODES.InterruptedDueToReplStateChange,
-  MONGODB_ERROR_CODES.NotPrimaryNoSecondaryOk,
-  MONGODB_ERROR_CODES.NotPrimaryOrSecondary,
-  MONGODB_ERROR_CODES.StaleShardVersion,
-  MONGODB_ERROR_CODES.StaleEpoch,
-  MONGODB_ERROR_CODES.StaleConfig,
-  MONGODB_ERROR_CODES.RetryChangeStream,
-  MONGODB_ERROR_CODES.FailedToSatisfyReadPreference,
-  MONGODB_ERROR_CODES.CursorNotFound
-]);
-
-/** @public */
-export const MongoErrorLabel = Object.freeze({
-  RetryableWriteError: 'RetryableWriteError',
-  TransientTransactionError: 'TransientTransactionError',
-  UnknownTransactionCommitResult: 'UnknownTransactionCommitResult',
-  ResumableChangeStreamError: 'ResumableChangeStreamError',
-  HandshakeError: 'HandshakeError',
-  ResetPool: 'ResetPool',
-  PoolRequstedRetry: 'PoolRequstedRetry',
-  InterruptInUseConnections: 'InterruptInUseConnections',
-  NoWritesPerformed: 'NoWritesPerformed'
-} as const);
-
-/** @public */
-export type MongoErrorLabel = (typeof MongoErrorLabel)[keyof typeof MongoErrorLabel];
-
-/** @public */
-export interface ErrorDescription extends Document {
-  message?: string;
-  errmsg?: string;
-  $err?: string;
-  errorLabels?: string[];
-  errInfo?: Document;
-}
-
-function isAggregateError(e: Error): e is Error & { errors: Error[] } {
-  return 'errors' in e && Array.isArray(e.errors);
-}
-
-/**
- * @public
- * @category Error
- *
- * @privateRemarks
- * mongodb-client-encryption has a dependency on this error, it uses the constructor with a string argument
- */
-export class MongoError extends Error {
-  /** @internal */
-  [kErrorLabels]: Set<string>;
-  /**
-   * This is a number in MongoServerError and a string in MongoDriverError
-   * @privateRemarks
-   * Define the type override on the subclasses when we can use the override keyword
-   */
-  code?: number | string;
-  topologyVersion?: TopologyVersion;
-  connectionGeneration?: number;
-  override cause?: Error;
-
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string, options?: { cause?: Error }) {
-    super(message, options);
-    this[kErrorLabels] = new Set();
-  }
-
-  /** @internal */
-  static buildErrorMessage(e: Error | string): string {
-    if (typeof e === 'string') {
-      return e;
-    }
-    if (isAggregateError(e) && e.message.length === 0) {
-      return e.errors.length === 0
-        ? 'AggregateError has an empty errors array. Please check the `cause` property for more information.'
-        : e.errors.map(({ message }) => message).join(', ');
-    }
-
-    return e.message;
-  }
-
-  override get name(): string {
-    return 'MongoError';
-  }
-
-  /** Legacy name for server error responses */
-  get errmsg(): string {
-    return this.message;
-  }
-
-  /**
-   * Checks the error to see if it has an error label
-   *
-   * @param label - The error label to check for
-   * @returns returns true if the error has the provided error label
-   */
-  hasErrorLabel(label: string): boolean {
-    return this[kErrorLabels].has(label);
-  }
-
-  addErrorLabel(label: string): void {
-    this[kErrorLabels].add(label);
-  }
-
-  get errorLabels(): string[] {
-    return Array.from(this[kErrorLabels]);
-  }
-}
-
-/**
- * An error coming from the mongo server
- *
- * @public
- * @category Error
- */
-export class MongoServerError extends MongoError {
-  codeName?: string;
-  writeConcernError?: Document;
-  errInfo?: Document;
-  ok?: number;
-  [key: string]: any;
-
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: ErrorDescription) {
-    super(message.message || message.errmsg || message.$err || 'n/a');
-    if (message.errorLabels) {
-      this[kErrorLabels] = new Set(message.errorLabels);
-    }
-
-    for (const name in message) {
-      if (name !== 'errorLabels' && name !== 'errmsg' && name !== 'message')
-        this[name] = message[name];
-    }
-  }
-
-  override get name(): string {
-    return 'MongoServerError';
-  }
-}
-
-/**
- * An error generated by the driver
- *
- * @public
- * @category Error
- */
-export class MongoDriverError extends MongoError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string, options?: { cause?: Error }) {
-    super(message, options);
-  }
-
-  override get name(): string {
-    return 'MongoDriverError';
-  }
-}
-
-/**
- * An error generated when the driver API is used incorrectly
- *
- * @privateRemarks
- * Should **never** be directly instantiated
- *
- * @public
- * @category Error
- */
-
-export class MongoAPIError extends MongoDriverError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string, options?: { cause?: Error }) {
-    super(message, options);
-  }
-
-  override get name(): string {
-    return 'MongoAPIError';
-  }
-}
-
-/**
- * An error generated when the driver encounters unexpected input
- * or reaches an unexpected/invalid internal state
- *
- * @privateRemarks
- * Should **never** be directly instantiated.
- *
- * @public
- * @category Error
- */
-export class MongoRuntimeError extends MongoDriverError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string, options?: { cause?: Error }) {
-    super(message, options);
-  }
-
-  override get name(): string {
-    return 'MongoRuntimeError';
-  }
-}
-
-/**
- * An error generated when a batch command is re-executed after one of the commands in the batch
- * has failed
- *
- * @public
- * @category Error
- */
-export class MongoBatchReExecutionError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message = 'This batch has already been executed, create new batch to execute') {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoBatchReExecutionError';
-  }
-}
-
-/**
- * An error generated when the driver fails to decompress
- * data received from the server.
- *
- * @public
- * @category Error
- */
-export class MongoDecompressionError extends MongoRuntimeError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoDecompressionError';
-  }
-}
-
-/**
- * An error thrown when the user attempts to operate on a database or collection through a MongoClient
- * that has not yet successfully called the "connect" method
- *
- * @public
- * @category Error
- */
-export class MongoNotConnectedError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoNotConnectedError';
-  }
-}
-
-/**
- * An error generated when the user makes a mistake in the usage of transactions.
- * (e.g. attempting to commit a transaction with a readPreference other than primary)
- *
- * @public
- * @category Error
- */
-export class MongoTransactionError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoTransactionError';
-  }
-}
-
-/**
- * An error generated when the user attempts to operate
- * on a session that has expired or has been closed.
- *
- * @public
- * @category Error
- */
-export class MongoExpiredSessionError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message = 'Cannot use a session that has ended') {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoExpiredSessionError';
-  }
-}
-
-/**
- * A error generated when the user attempts to authenticate
- * via Kerberos, but fails to connect to the Kerberos client.
- *
- * @public
- * @category Error
- */
-export class MongoKerberosError extends MongoRuntimeError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoKerberosError';
-  }
-}
-
-/**
- * A error generated when the user attempts to authenticate
- * via AWS, but fails
- *
- * @public
- * @category Error
- */
-export class MongoAWSError extends MongoRuntimeError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoAWSError';
-  }
-}
-
-/**
- * A error generated when the user attempts to authenticate
- * via Azure, but fails.
- *
- * @public
- * @category Error
- */
-export class MongoAzureError extends MongoRuntimeError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoAzureError';
-  }
-}
-
-/**
- * An error generated when a ChangeStream operation fails to execute.
- *
- * @public
- * @category Error
- */
-export class MongoChangeStreamError extends MongoRuntimeError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoChangeStreamError';
-  }
-}
-
-/**
- * An error thrown when the user calls a function or method not supported on a tailable cursor
- *
- * @public
- * @category Error
- */
-export class MongoTailableCursorError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message = 'Tailable cursor does not support this operation') {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoTailableCursorError';
-  }
-}
-
-/** An error generated when a GridFSStream operation fails to execute.
- *
- * @public
- * @category Error
- */
-export class MongoGridFSStreamError extends MongoRuntimeError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoGridFSStreamError';
-  }
-}
-
-/**
- * An error generated when a malformed or invalid chunk is
- * encountered when reading from a GridFSStream.
- *
- * @public
- * @category Error
- */
-export class MongoGridFSChunkError extends MongoRuntimeError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoGridFSChunkError';
-  }
-}
-
-/**
- * An error generated when a **parsable** unexpected response comes from the server.
- * This is generally an error where the driver in a state expecting a certain behavior to occur in
- * the next message from MongoDB but it receives something else.
- * This error **does not** represent an issue with wire message formatting.
- *
- * #### Example
- * When an operation fails, it is the driver's job to retry it. It must perform serverSelection
- * again to make sure that it attempts the operation against a server in a good state. If server
- * selection returns a server that does not support retryable operations, this error is used.
- * This scenario is unlikely as retryable support would also have been determined on the first attempt
- * but it is possible the state change could report a selectable server that does not support retries.
- *
- * @public
- * @category Error
- */
-export class MongoUnexpectedServerResponseError extends MongoRuntimeError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoUnexpectedServerResponseError';
-  }
-}
-
-/**
- * An error thrown when the user attempts to add options to a cursor that has already been
- * initialized
- *
- * @public
- * @category Error
- */
-export class MongoCursorInUseError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message = 'Cursor is already initialized') {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoCursorInUseError';
-  }
-}
-
-/**
- * An error generated when an attempt is made to operate
- * on a closed/closing server.
- *
- * @public
- * @category Error
- */
-export class MongoServerClosedError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message = 'Server is closed') {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoServerClosedError';
-  }
-}
-
-/**
- * An error thrown when an attempt is made to read from a cursor that has been exhausted
- *
- * @public
- * @category Error
- */
-export class MongoCursorExhaustedError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message?: string) {
-    super(message || 'Cursor is exhausted');
-  }
-
-  override get name(): string {
-    return 'MongoCursorExhaustedError';
-  }
-}
-
-/**
- * An error generated when an attempt is made to operate on a
- * dropped, or otherwise unavailable, database.
- *
- * @public
- * @category Error
- */
-export class MongoTopologyClosedError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message = 'Topology is closed') {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoTopologyClosedError';
-  }
-}
-
-/** @internal */
-const kBeforeHandshake = Symbol('beforeHandshake');
-export function isNetworkErrorBeforeHandshake(err: MongoNetworkError): boolean {
-  return err[kBeforeHandshake] === true;
-}
-
-/** @public */
-export interface MongoNetworkErrorOptions {
-  /** Indicates the timeout happened before a connection handshake completed */
-  beforeHandshake?: boolean;
-  cause?: Error;
-}
-
-/**
- * An error indicating an issue with the network, including TCP errors and timeouts.
- * @public
- * @category Error
- */
-export class MongoNetworkError extends MongoError {
-  /** @internal */
-  [kBeforeHandshake]?: boolean;
-
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string, options?: MongoNetworkErrorOptions) {
-    super(message, { cause: options?.cause });
-
-    if (options && typeof options.beforeHandshake === 'boolean') {
-      this[kBeforeHandshake] = options.beforeHandshake;
-    }
-  }
-
-  override get name(): string {
-    return 'MongoNetworkError';
-  }
-}
-
-/**
- * An error indicating a network timeout occurred
- * @public
- * @category Error
- *
- * @privateRemarks
- * mongodb-client-encryption has a dependency on this error with an instanceof check
- */
-export class MongoNetworkTimeoutError extends MongoNetworkError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string, options?: MongoNetworkErrorOptions) {
-    super(message, options);
-  }
-
-  override get name(): string {
-    return 'MongoNetworkTimeoutError';
-  }
-}
-
-/**
- * An error used when attempting to parse a value (like a connection string)
- * @public
- * @category Error
- */
-export class MongoParseError extends MongoDriverError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoParseError';
-  }
-}
-
-/**
- * An error generated when the user supplies malformed or unexpected arguments
- * or when a required argument or field is not provided.
- *
- *
- * @public
- * @category Error
- */
-export class MongoInvalidArgumentError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoInvalidArgumentError';
-  }
-}
-
-/**
- * An error generated when a feature that is not enabled or allowed for the current server
- * configuration is used
- *
- *
- * @public
- * @category Error
- */
-export class MongoCompatibilityError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoCompatibilityError';
-  }
-}
-
-/**
- * An error generated when the user fails to provide authentication credentials before attempting
- * to connect to a mongo server instance.
- *
- *
- * @public
- * @category Error
- */
-export class MongoMissingCredentialsError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string) {
-    super(message);
-  }
-
-  override get name(): string {
-    return 'MongoMissingCredentialsError';
-  }
-}
-
-/**
- * An error generated when a required module or dependency is not present in the local environment
- *
- * @public
- * @category Error
- */
-export class MongoMissingDependencyError extends MongoAPIError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string, options: { cause?: Error } = {}) {
-    super(message, options);
-  }
-
-  override get name(): string {
-    return 'MongoMissingDependencyError';
-  }
-}
-/**
- * An error signifying a general system issue
- * @public
- * @category Error
- */
-export class MongoSystemError extends MongoError {
-  /** An optional reason context, such as an error saved during flow of monitoring and selecting servers */
-  reason?: TopologyDescription;
-
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string, reason: TopologyDescription) {
-    if (reason && reason.error) {
-      super(MongoError.buildErrorMessage(reason.error.message || reason.error), {
-        cause: reason.error
-      });
-    } else {
-      super(message);
-    }
-
-    if (reason) {
-      this.reason = reason;
-    }
-
-    this.code = reason.error?.code;
-  }
-
-  override get name(): string {
-    return 'MongoSystemError';
-  }
-}
-
-/**
- * An error signifying a client-side server selection error
- * @public
- * @category Error
- */
-export class MongoServerSelectionError extends MongoSystemError {
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: string, reason: TopologyDescription) {
-    super(message, reason);
-  }
-
-  override get name(): string {
-    return 'MongoServerSelectionError';
-  }
-}
-
-function makeWriteConcernResultObject(input: any) {
-  const output = Object.assign({}, input);
-
-  if (output.ok === 0) {
-    output.ok = 1;
-    delete output.errmsg;
-    delete output.code;
-    delete output.codeName;
-  }
-
-  return output;
-}
-
-/**
- * An error thrown when the server reports a writeConcernError
- * @public
- * @category Error
- */
-export class MongoWriteConcernError extends MongoServerError {
-  /** The result document (provided if ok: 1) */
-  result?: Document;
-
-  /**
-   * **Do not use this constructor!**
-   *
-   * Meant for internal use only.
-   *
-   * @remarks
-   * This class is only meant to be constructed within the driver. This constructor is
-   * not subject to semantic versioning compatibility guarantees and may change at any time.
-   *
-   * @public
-   **/
-  constructor(message: ErrorDescription, result?: Document) {
-    if (result && Array.isArray(result.errorLabels)) {
-      message.errorLabels = result.errorLabels;
-    }
-
-    super(message);
-    this.errInfo = message.errInfo;
-
-    if (result != null) {
-      this.result = makeWriteConcernResultObject(result);
-    }
-  }
-
-  override get name(): string {
-    return 'MongoWriteConcernError';
-  }
-}
-
-// https://github.com/mongodb/specifications/blob/master/source/retryable-reads/retryable-reads.rst#retryable-error
-const RETRYABLE_READ_ERROR_CODES = new Set<number>([
-  MONGODB_ERROR_CODES.HostUnreachable,
-  MONGODB_ERROR_CODES.HostNotFound,
-  MONGODB_ERROR_CODES.NetworkTimeout,
-  MONGODB_ERROR_CODES.ShutdownInProgress,
-  MONGODB_ERROR_CODES.PrimarySteppedDown,
-  MONGODB_ERROR_CODES.SocketException,
-  MONGODB_ERROR_CODES.NotWritablePrimary,
-  MONGODB_ERROR_CODES.InterruptedAtShutdown,
-  MONGODB_ERROR_CODES.InterruptedDueToReplStateChange,
-  MONGODB_ERROR_CODES.NotPrimaryNoSecondaryOk,
-  MONGODB_ERROR_CODES.NotPrimaryOrSecondary
-]);
-
-// see: https://github.com/mongodb/specifications/blob/master/source/retryable-writes/retryable-writes.rst#terms
-const RETRYABLE_WRITE_ERROR_CODES = new Set<number>([
-  ...RETRYABLE_READ_ERROR_CODES,
-  MONGODB_ERROR_CODES.ExceededTimeLimit
-]);
-
-export function needsRetryableWriteLabel(error: Error, maxWireVersion: number): boolean {
-  // pre-4.4 server, then the driver adds an error label for every valid case
-  // execute operation will only inspect the label, code/message logic is handled here
-  if (error instanceof MongoNetworkError) {
-    return true;
-  }
-
-  if (error instanceof MongoError) {
-    if (
-      (maxWireVersion >= 9 || isRetryableWriteError(error)) &&
-      !error.hasErrorLabel(MongoErrorLabel.HandshakeError)
-    ) {
-      // If we already have the error label no need to add it again. 4.4+ servers add the label.
-      // In the case where we have a handshake error, need to fall down to the logic checking
-      // the codes.
-      return false;
-    }
-  }
-
-  if (error instanceof MongoWriteConcernError) {
-    return RETRYABLE_WRITE_ERROR_CODES.has(error.result?.code ?? error.code ?? 0);
-  }
-
-  if (error instanceof MongoError && typeof error.code === 'number') {
-    return RETRYABLE_WRITE_ERROR_CODES.has(error.code);
-  }
-
-  const isNotWritablePrimaryError = LEGACY_NOT_WRITABLE_PRIMARY_ERROR_MESSAGE.test(error.message);
-  if (isNotWritablePrimaryError) {
-    return true;
-  }
-
-  const isNodeIsRecoveringError = NODE_IS_RECOVERING_ERROR_MESSAGE.test(error.message);
-  if (isNodeIsRecoveringError) {
-    return true;
-  }
-
-  return false;
-}
-
-export function isRetryableWriteError(error: MongoError): boolean {
-  return (
-    error.hasErrorLabel(MongoErrorLabel.RetryableWriteError) ||
-    error.hasErrorLabel(MongoErrorLabel.PoolRequstedRetry)
-  );
-}
-
-/** Determines whether an error is something the driver should attempt to retry */
-export function isRetryableReadError(error: MongoError): boolean {
-  const hasRetryableErrorCode =
-    typeof error.code === 'number' ? RETRYABLE_READ_ERROR_CODES.has(error.code) : false;
-  if (hasRetryableErrorCode) {
-    return true;
-  }
-
-  if (error instanceof MongoNetworkError) {
-    return true;
-  }
-
-  const isNotWritablePrimaryError = LEGACY_NOT_WRITABLE_PRIMARY_ERROR_MESSAGE.test(error.message);
-  if (isNotWritablePrimaryError) {
-    return true;
-  }
-
-  const isNodeIsRecoveringError = NODE_IS_RECOVERING_ERROR_MESSAGE.test(error.message);
-  if (isNodeIsRecoveringError) {
-    return true;
-  }
-
-  return false;
-}
-
-const SDAM_RECOVERING_CODES = new Set<number>([
-  MONGODB_ERROR_CODES.ShutdownInProgress,
-  MONGODB_ERROR_CODES.PrimarySteppedDown,
-  MONGODB_ERROR_CODES.InterruptedAtShutdown,
-  MONGODB_ERROR_CODES.InterruptedDueToReplStateChange,
-  MONGODB_ERROR_CODES.NotPrimaryOrSecondary
-]);
-
-const SDAM_NOT_PRIMARY_CODES = new Set<number>([
-  MONGODB_ERROR_CODES.NotWritablePrimary,
-  MONGODB_ERROR_CODES.NotPrimaryNoSecondaryOk,
-  MONGODB_ERROR_CODES.LegacyNotPrimary
-]);
-
-const SDAM_NODE_SHUTTING_DOWN_ERROR_CODES = new Set<number>([
-  MONGODB_ERROR_CODES.InterruptedAtShutdown,
-  MONGODB_ERROR_CODES.ShutdownInProgress
-]);
-
-function isRecoveringError(err: MongoError) {
-  if (typeof err.code === 'number') {
-    // If any error code exists, we ignore the error.message
-    return SDAM_RECOVERING_CODES.has(err.code);
-  }
-
-  return (
-    LEGACY_NOT_PRIMARY_OR_SECONDARY_ERROR_MESSAGE.test(err.message) ||
-    NODE_IS_RECOVERING_ERROR_MESSAGE.test(err.message)
-  );
-}
-
-function isNotWritablePrimaryError(err: MongoError) {
-  if (typeof err.code === 'number') {
-    // If any error code exists, we ignore the error.message
-    return SDAM_NOT_PRIMARY_CODES.has(err.code);
-  }
-
-  if (isRecoveringError(err)) {
-    return false;
-  }
-
-  return LEGACY_NOT_WRITABLE_PRIMARY_ERROR_MESSAGE.test(err.message);
-}
-
-export function isNodeShuttingDownError(err: MongoError): boolean {
-  return !!(typeof err.code === 'number' && SDAM_NODE_SHUTTING_DOWN_ERROR_CODES.has(err.code));
-}
-
-/**
- * Determines whether SDAM can recover from a given error. If it cannot
- * then the pool will be cleared, and server state will completely reset
- * locally.
- *
- * @see https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#not-master-and-node-is-recovering
- */
-export function isSDAMUnrecoverableError(error: MongoError): boolean {
-  // NOTE: null check is here for a strictly pre-CMAP world, a timeout or
-  //       close event are considered unrecoverable
-  if (error instanceof MongoParseError || error == null) {
-    return true;
-  }
-
-  return isRecoveringError(error) || isNotWritablePrimaryError(error);
-}
-
-export function isNetworkTimeoutError(err: MongoError): err is MongoNetworkError {
-  return !!(err instanceof MongoNetworkError && err.message.match(/timed out/));
-}
-
-export function isResumableError(error?: Error, wireVersion?: number): boolean {
-  if (error == null || !(error instanceof MongoError)) {
-    return false;
-  }
-
-  if (error instanceof MongoNetworkError) {
-    return true;
-  }
-
-  if (wireVersion != null && wireVersion >= 9) {
-    // DRIVERS-1308: For 4.4 drivers running against 4.4 servers, drivers will add a special case to treat the CursorNotFound error code as resumable
-    if (error.code === MONGODB_ERROR_CODES.CursorNotFound) {
-      return true;
-    }
-    return error.hasErrorLabel(MongoErrorLabel.ResumableChangeStreamError);
-  }
-
-  if (typeof error.code === 'number') {
-    return GET_MORE_RESUMABLE_CODES.has(error.code);
-  }
-
-  return false;
-}
diff --git a/server/data-import/node_modules/mongodb/src/explain.ts b/server/data-import/node_modules/mongodb/src/explain.ts
deleted file mode 100644
index 0d08e694a63518be200134752da6dadeb4841061..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/explain.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import { MongoInvalidArgumentError } from './error';
-
-/** @public */
-export const ExplainVerbosity = Object.freeze({
-  queryPlanner: 'queryPlanner',
-  queryPlannerExtended: 'queryPlannerExtended',
-  executionStats: 'executionStats',
-  allPlansExecution: 'allPlansExecution'
-} as const);
-
-/** @public */
-export type ExplainVerbosity = string;
-
-/**
- * For backwards compatibility, true is interpreted as "allPlansExecution"
- * and false as "queryPlanner". Prior to server version 3.6, aggregate()
- * ignores the verbosity parameter and executes in "queryPlanner".
- * @public
- */
-export type ExplainVerbosityLike = ExplainVerbosity | boolean;
-
-/** @public */
-export interface ExplainOptions {
-  /** Specifies the verbosity mode for the explain output. */
-  explain?: ExplainVerbosityLike;
-}
-
-/** @internal */
-export class Explain {
-  verbosity: ExplainVerbosity;
-
-  constructor(verbosity: ExplainVerbosityLike) {
-    if (typeof verbosity === 'boolean') {
-      this.verbosity = verbosity
-        ? ExplainVerbosity.allPlansExecution
-        : ExplainVerbosity.queryPlanner;
-    } else {
-      this.verbosity = verbosity;
-    }
-  }
-
-  static fromOptions(options?: ExplainOptions): Explain | undefined {
-    if (options?.explain == null) return;
-
-    const explain = options.explain;
-    if (typeof explain === 'boolean' || typeof explain === 'string') {
-      return new Explain(explain);
-    }
-
-    throw new MongoInvalidArgumentError('Field "explain" must be a string or a boolean');
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/gridfs/download.ts b/server/data-import/node_modules/mongodb/src/gridfs/download.ts
deleted file mode 100644
index dc2cbfd90ff41449e787d1c24644f83e1d6cf2ff..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/gridfs/download.ts
+++ /dev/null
@@ -1,436 +0,0 @@
-import { Readable } from 'stream';
-
-import type { Document, ObjectId } from '../bson';
-import type { Collection } from '../collection';
-import type { FindCursor } from '../cursor/find_cursor';
-import {
-  MongoGridFSChunkError,
-  MongoGridFSStreamError,
-  MongoInvalidArgumentError,
-  MongoRuntimeError
-} from '../error';
-import type { FindOptions } from '../operations/find';
-import type { ReadPreference } from '../read_preference';
-import type { Sort } from '../sort';
-import type { Callback } from '../utils';
-import type { GridFSChunk } from './upload';
-
-/** @public */
-export interface GridFSBucketReadStreamOptions {
-  sort?: Sort;
-  skip?: number;
-  /**
-   * 0-indexed non-negative byte offset from the beginning of the file
-   */
-  start?: number;
-  /**
-   * 0-indexed non-negative byte offset to the end of the file contents
-   * to be returned by the stream. `end` is non-inclusive
-   */
-  end?: number;
-}
-
-/** @public */
-export interface GridFSBucketReadStreamOptionsWithRevision extends GridFSBucketReadStreamOptions {
-  /** The revision number relative to the oldest file with the given filename. 0
-   * gets you the oldest file, 1 gets you the 2nd oldest, -1 gets you the
-   * newest. */
-  revision?: number;
-}
-
-/** @public */
-export interface GridFSFile {
-  _id: ObjectId;
-  length: number;
-  chunkSize: number;
-  filename: string;
-  metadata?: Document;
-  uploadDate: Date;
-  /** @deprecated Will be removed in the next major version. */
-  contentType?: string;
-  /** @deprecated Will be removed in the next major version. */
-  aliases?: string[];
-}
-
-/** @internal */
-export interface GridFSBucketReadStreamPrivate {
-  bytesRead: number;
-  bytesToTrim: number;
-  bytesToSkip: number;
-  chunks: Collection<GridFSChunk>;
-  cursor?: FindCursor<GridFSChunk>;
-  expected: number;
-  files: Collection<GridFSFile>;
-  filter: Document;
-  init: boolean;
-  expectedEnd: number;
-  file?: GridFSFile;
-  options: {
-    sort?: Sort;
-    skip?: number;
-    start: number;
-    end: number;
-  };
-  readPreference?: ReadPreference;
-}
-
-/**
- * A readable stream that enables you to read buffers from GridFS.
- *
- * Do not instantiate this class directly. Use `openDownloadStream()` instead.
- * @public
- */
-export class GridFSBucketReadStream extends Readable {
-  /** @internal */
-  s: GridFSBucketReadStreamPrivate;
-
-  /**
-   * Fires when the stream loaded the file document corresponding to the provided id.
-   * @event
-   */
-  static readonly FILE = 'file' as const;
-
-  /**
-   * @param chunks - Handle for chunks collection
-   * @param files - Handle for files collection
-   * @param readPreference - The read preference to use
-   * @param filter - The filter to use to find the file document
-   * @internal
-   */
-  constructor(
-    chunks: Collection<GridFSChunk>,
-    files: Collection<GridFSFile>,
-    readPreference: ReadPreference | undefined,
-    filter: Document,
-    options?: GridFSBucketReadStreamOptions
-  ) {
-    super({ emitClose: true });
-    this.s = {
-      bytesToTrim: 0,
-      bytesToSkip: 0,
-      bytesRead: 0,
-      chunks,
-      expected: 0,
-      files,
-      filter,
-      init: false,
-      expectedEnd: 0,
-      options: {
-        start: 0,
-        end: 0,
-        ...options
-      },
-      readPreference
-    };
-  }
-
-  /**
-   * Reads from the cursor and pushes to the stream.
-   * Private Impl, do not call directly
-   * @internal
-   */
-  override _read(): void {
-    if (this.destroyed) return;
-    waitForFile(this, () => doRead(this));
-  }
-
-  /**
-   * Sets the 0-based offset in bytes to start streaming from. Throws
-   * an error if this stream has entered flowing mode
-   * (e.g. if you've already called `on('data')`)
-   *
-   * @param start - 0-based offset in bytes to start streaming from
-   */
-  start(start = 0): this {
-    throwIfInitialized(this);
-    this.s.options.start = start;
-    return this;
-  }
-
-  /**
-   * Sets the 0-based offset in bytes to start streaming from. Throws
-   * an error if this stream has entered flowing mode
-   * (e.g. if you've already called `on('data')`)
-   *
-   * @param end - Offset in bytes to stop reading at
-   */
-  end(end = 0): this {
-    throwIfInitialized(this);
-    this.s.options.end = end;
-    return this;
-  }
-
-  /**
-   * Marks this stream as aborted (will never push another `data` event)
-   * and kills the underlying cursor. Will emit the 'end' event, and then
-   * the 'close' event once the cursor is successfully killed.
-   */
-  async abort(): Promise<void> {
-    this.push(null);
-    this.destroy();
-    await this.s.cursor?.close();
-  }
-}
-
-function throwIfInitialized(stream: GridFSBucketReadStream): void {
-  if (stream.s.init) {
-    throw new MongoGridFSStreamError('Options cannot be changed after the stream is initialized');
-  }
-}
-
-function doRead(stream: GridFSBucketReadStream): void {
-  if (stream.destroyed) return;
-  if (!stream.s.cursor) return;
-  if (!stream.s.file) return;
-
-  const handleReadResult = ({
-    error,
-    doc
-  }: { error: Error; doc: null } | { error: null; doc: any }) => {
-    if (stream.destroyed) {
-      return;
-    }
-    if (error) {
-      stream.destroy(error);
-      return;
-    }
-    if (!doc) {
-      stream.push(null);
-
-      stream.s.cursor?.close().then(
-        () => null,
-        error => stream.destroy(error)
-      );
-      return;
-    }
-
-    if (!stream.s.file) return;
-
-    const bytesRemaining = stream.s.file.length - stream.s.bytesRead;
-    const expectedN = stream.s.expected++;
-    const expectedLength = Math.min(stream.s.file.chunkSize, bytesRemaining);
-    if (doc.n > expectedN) {
-      return stream.destroy(
-        new MongoGridFSChunkError(
-          `ChunkIsMissing: Got unexpected n: ${doc.n}, expected: ${expectedN}`
-        )
-      );
-    }
-
-    if (doc.n < expectedN) {
-      return stream.destroy(
-        new MongoGridFSChunkError(`ExtraChunk: Got unexpected n: ${doc.n}, expected: ${expectedN}`)
-      );
-    }
-
-    let buf = Buffer.isBuffer(doc.data) ? doc.data : doc.data.buffer;
-
-    if (buf.byteLength !== expectedLength) {
-      if (bytesRemaining <= 0) {
-        return stream.destroy(
-          new MongoGridFSChunkError(
-            `ExtraChunk: Got unexpected n: ${doc.n}, expected file length ${stream.s.file.length} bytes but already read ${stream.s.bytesRead} bytes`
-          )
-        );
-      }
-
-      return stream.destroy(
-        new MongoGridFSChunkError(
-          `ChunkIsWrongSize: Got unexpected length: ${buf.byteLength}, expected: ${expectedLength}`
-        )
-      );
-    }
-
-    stream.s.bytesRead += buf.byteLength;
-
-    if (buf.byteLength === 0) {
-      return stream.push(null);
-    }
-
-    let sliceStart = null;
-    let sliceEnd = null;
-
-    if (stream.s.bytesToSkip != null) {
-      sliceStart = stream.s.bytesToSkip;
-      stream.s.bytesToSkip = 0;
-    }
-
-    const atEndOfStream = expectedN === stream.s.expectedEnd - 1;
-    const bytesLeftToRead = stream.s.options.end - stream.s.bytesToSkip;
-    if (atEndOfStream && stream.s.bytesToTrim != null) {
-      sliceEnd = stream.s.file.chunkSize - stream.s.bytesToTrim;
-    } else if (stream.s.options.end && bytesLeftToRead < doc.data.byteLength) {
-      sliceEnd = bytesLeftToRead;
-    }
-
-    if (sliceStart != null || sliceEnd != null) {
-      buf = buf.slice(sliceStart || 0, sliceEnd || buf.byteLength);
-    }
-
-    stream.push(buf);
-    return;
-  };
-
-  stream.s.cursor.next().then(
-    doc => handleReadResult({ error: null, doc }),
-    error => handleReadResult({ error, doc: null })
-  );
-}
-
-function init(stream: GridFSBucketReadStream): void {
-  const findOneOptions: FindOptions = {};
-  if (stream.s.readPreference) {
-    findOneOptions.readPreference = stream.s.readPreference;
-  }
-  if (stream.s.options && stream.s.options.sort) {
-    findOneOptions.sort = stream.s.options.sort;
-  }
-  if (stream.s.options && stream.s.options.skip) {
-    findOneOptions.skip = stream.s.options.skip;
-  }
-
-  const handleReadResult = ({
-    error,
-    doc
-  }: { error: Error; doc: null } | { error: null; doc: any }) => {
-    if (error) {
-      return stream.destroy(error);
-    }
-
-    if (!doc) {
-      const identifier = stream.s.filter._id
-        ? stream.s.filter._id.toString()
-        : stream.s.filter.filename;
-      const errmsg = `FileNotFound: file ${identifier} was not found`;
-      // TODO(NODE-3483)
-      const err = new MongoRuntimeError(errmsg);
-      err.code = 'ENOENT'; // TODO: NODE-3338 set property as part of constructor
-      return stream.destroy(err);
-    }
-
-    // If document is empty, kill the stream immediately and don't
-    // execute any reads
-    if (doc.length <= 0) {
-      stream.push(null);
-      return;
-    }
-
-    if (stream.destroyed) {
-      // If user destroys the stream before we have a cursor, wait
-      // until the query is done to say we're 'closed' because we can't
-      // cancel a query.
-      stream.destroy();
-      return;
-    }
-
-    try {
-      stream.s.bytesToSkip = handleStartOption(stream, doc, stream.s.options);
-    } catch (error) {
-      return stream.destroy(error);
-    }
-
-    const filter: Document = { files_id: doc._id };
-
-    // Currently (MongoDB 3.4.4) skip function does not support the index,
-    // it needs to retrieve all the documents first and then skip them. (CS-25811)
-    // As work around we use $gte on the "n" field.
-    if (stream.s.options && stream.s.options.start != null) {
-      const skip = Math.floor(stream.s.options.start / doc.chunkSize);
-      if (skip > 0) {
-        filter['n'] = { $gte: skip };
-      }
-    }
-    stream.s.cursor = stream.s.chunks.find(filter).sort({ n: 1 });
-
-    if (stream.s.readPreference) {
-      stream.s.cursor.withReadPreference(stream.s.readPreference);
-    }
-
-    stream.s.expectedEnd = Math.ceil(doc.length / doc.chunkSize);
-    stream.s.file = doc as GridFSFile;
-
-    try {
-      stream.s.bytesToTrim = handleEndOption(stream, doc, stream.s.cursor, stream.s.options);
-    } catch (error) {
-      return stream.destroy(error);
-    }
-
-    stream.emit(GridFSBucketReadStream.FILE, doc);
-    return;
-  };
-
-  stream.s.files.findOne(stream.s.filter, findOneOptions).then(
-    doc => handleReadResult({ error: null, doc }),
-    error => handleReadResult({ error, doc: null })
-  );
-}
-
-function waitForFile(stream: GridFSBucketReadStream, callback: Callback): void {
-  if (stream.s.file) {
-    return callback();
-  }
-
-  if (!stream.s.init) {
-    init(stream);
-    stream.s.init = true;
-  }
-
-  stream.once('file', () => {
-    callback();
-  });
-}
-
-function handleStartOption(
-  stream: GridFSBucketReadStream,
-  doc: Document,
-  options: GridFSBucketReadStreamOptions
-): number {
-  if (options && options.start != null) {
-    if (options.start > doc.length) {
-      throw new MongoInvalidArgumentError(
-        `Stream start (${options.start}) must not be more than the length of the file (${doc.length})`
-      );
-    }
-    if (options.start < 0) {
-      throw new MongoInvalidArgumentError(`Stream start (${options.start}) must not be negative`);
-    }
-    if (options.end != null && options.end < options.start) {
-      throw new MongoInvalidArgumentError(
-        `Stream start (${options.start}) must not be greater than stream end (${options.end})`
-      );
-    }
-
-    stream.s.bytesRead = Math.floor(options.start / doc.chunkSize) * doc.chunkSize;
-    stream.s.expected = Math.floor(options.start / doc.chunkSize);
-
-    return options.start - stream.s.bytesRead;
-  }
-  throw new MongoInvalidArgumentError('Start option must be defined');
-}
-
-function handleEndOption(
-  stream: GridFSBucketReadStream,
-  doc: Document,
-  cursor: FindCursor<GridFSChunk>,
-  options: GridFSBucketReadStreamOptions
-) {
-  if (options && options.end != null) {
-    if (options.end > doc.length) {
-      throw new MongoInvalidArgumentError(
-        `Stream end (${options.end}) must not be more than the length of the file (${doc.length})`
-      );
-    }
-    if (options.start == null || options.start < 0) {
-      throw new MongoInvalidArgumentError(`Stream end (${options.end}) must not be negative`);
-    }
-
-    const start = options.start != null ? Math.floor(options.start / doc.chunkSize) : 0;
-
-    cursor.limit(Math.ceil(options.end / doc.chunkSize) - start);
-
-    stream.s.expectedEnd = Math.ceil(options.end / doc.chunkSize);
-
-    return Math.ceil(options.end / doc.chunkSize) * doc.chunkSize - options.end;
-  }
-  throw new MongoInvalidArgumentError('End option must be defined');
-}
diff --git a/server/data-import/node_modules/mongodb/src/gridfs/index.ts b/server/data-import/node_modules/mongodb/src/gridfs/index.ts
deleted file mode 100644
index c7611c852b3cdbbea5893dff9861aae43467af2c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/gridfs/index.ts
+++ /dev/null
@@ -1,213 +0,0 @@
-import type { ObjectId } from '../bson';
-import type { Collection } from '../collection';
-import type { FindCursor } from '../cursor/find_cursor';
-import type { Db } from '../db';
-import { MongoRuntimeError } from '../error';
-import { type Filter, TypedEventEmitter } from '../mongo_types';
-import type { ReadPreference } from '../read_preference';
-import type { Sort } from '../sort';
-import { WriteConcern, type WriteConcernOptions } from '../write_concern';
-import type { FindOptions } from './../operations/find';
-import {
-  GridFSBucketReadStream,
-  type GridFSBucketReadStreamOptions,
-  type GridFSBucketReadStreamOptionsWithRevision,
-  type GridFSFile
-} from './download';
-import {
-  GridFSBucketWriteStream,
-  type GridFSBucketWriteStreamOptions,
-  type GridFSChunk
-} from './upload';
-
-const DEFAULT_GRIDFS_BUCKET_OPTIONS: {
-  bucketName: string;
-  chunkSizeBytes: number;
-} = {
-  bucketName: 'fs',
-  chunkSizeBytes: 255 * 1024
-};
-
-/** @public */
-export interface GridFSBucketOptions extends WriteConcernOptions {
-  /** The 'files' and 'chunks' collections will be prefixed with the bucket name followed by a dot. */
-  bucketName?: string;
-  /** Number of bytes stored in each chunk. Defaults to 255KB */
-  chunkSizeBytes?: number;
-  /** Read preference to be passed to read operations */
-  readPreference?: ReadPreference;
-}
-
-/** @internal */
-export interface GridFSBucketPrivate {
-  db: Db;
-  options: {
-    bucketName: string;
-    chunkSizeBytes: number;
-    readPreference?: ReadPreference;
-    writeConcern: WriteConcern | undefined;
-  };
-  _chunksCollection: Collection<GridFSChunk>;
-  _filesCollection: Collection<GridFSFile>;
-  checkedIndexes: boolean;
-  calledOpenUploadStream: boolean;
-}
-
-/** @public */
-export type GridFSBucketEvents = {
-  index(): void;
-};
-
-/**
- * Constructor for a streaming GridFS interface
- * @public
- */
-export class GridFSBucket extends TypedEventEmitter<GridFSBucketEvents> {
-  /** @internal */
-  s: GridFSBucketPrivate;
-
-  /**
-   * When the first call to openUploadStream is made, the upload stream will
-   * check to see if it needs to create the proper indexes on the chunks and
-   * files collections. This event is fired either when 1) it determines that
-   * no index creation is necessary, 2) when it successfully creates the
-   * necessary indexes.
-   * @event
-   */
-  static readonly INDEX = 'index' as const;
-
-  constructor(db: Db, options?: GridFSBucketOptions) {
-    super();
-    this.setMaxListeners(0);
-    const privateOptions = {
-      ...DEFAULT_GRIDFS_BUCKET_OPTIONS,
-      ...options,
-      writeConcern: WriteConcern.fromOptions(options)
-    };
-    this.s = {
-      db,
-      options: privateOptions,
-      _chunksCollection: db.collection<GridFSChunk>(privateOptions.bucketName + '.chunks'),
-      _filesCollection: db.collection<GridFSFile>(privateOptions.bucketName + '.files'),
-      checkedIndexes: false,
-      calledOpenUploadStream: false
-    };
-  }
-
-  /**
-   * Returns a writable stream (GridFSBucketWriteStream) for writing
-   * buffers to GridFS. The stream's 'id' property contains the resulting
-   * file's id.
-   *
-   * @param filename - The value of the 'filename' key in the files doc
-   * @param options - Optional settings.
-   */
-
-  openUploadStream(
-    filename: string,
-    options?: GridFSBucketWriteStreamOptions
-  ): GridFSBucketWriteStream {
-    return new GridFSBucketWriteStream(this, filename, options);
-  }
-
-  /**
-   * Returns a writable stream (GridFSBucketWriteStream) for writing
-   * buffers to GridFS for a custom file id. The stream's 'id' property contains the resulting
-   * file's id.
-   */
-  openUploadStreamWithId(
-    id: ObjectId,
-    filename: string,
-    options?: GridFSBucketWriteStreamOptions
-  ): GridFSBucketWriteStream {
-    return new GridFSBucketWriteStream(this, filename, { ...options, id });
-  }
-
-  /** Returns a readable stream (GridFSBucketReadStream) for streaming file data from GridFS. */
-  openDownloadStream(
-    id: ObjectId,
-    options?: GridFSBucketReadStreamOptions
-  ): GridFSBucketReadStream {
-    return new GridFSBucketReadStream(
-      this.s._chunksCollection,
-      this.s._filesCollection,
-      this.s.options.readPreference,
-      { _id: id },
-      options
-    );
-  }
-
-  /**
-   * Deletes a file with the given id
-   *
-   * @param id - The id of the file doc
-   */
-  async delete(id: ObjectId): Promise<void> {
-    const { deletedCount } = await this.s._filesCollection.deleteOne({ _id: id });
-
-    // Delete orphaned chunks before returning FileNotFound
-    await this.s._chunksCollection.deleteMany({ files_id: id });
-
-    if (deletedCount === 0) {
-      // TODO(NODE-3483): Replace with more appropriate error
-      // Consider creating new error MongoGridFSFileNotFoundError
-      throw new MongoRuntimeError(`File not found for id ${id}`);
-    }
-  }
-
-  /** Convenience wrapper around find on the files collection */
-  find(filter: Filter<GridFSFile> = {}, options: FindOptions = {}): FindCursor<GridFSFile> {
-    return this.s._filesCollection.find(filter, options);
-  }
-
-  /**
-   * Returns a readable stream (GridFSBucketReadStream) for streaming the
-   * file with the given name from GridFS. If there are multiple files with
-   * the same name, this will stream the most recent file with the given name
-   * (as determined by the `uploadDate` field). You can set the `revision`
-   * option to change this behavior.
-   */
-  openDownloadStreamByName(
-    filename: string,
-    options?: GridFSBucketReadStreamOptionsWithRevision
-  ): GridFSBucketReadStream {
-    let sort: Sort = { uploadDate: -1 };
-    let skip = undefined;
-    if (options && options.revision != null) {
-      if (options.revision >= 0) {
-        sort = { uploadDate: 1 };
-        skip = options.revision;
-      } else {
-        skip = -options.revision - 1;
-      }
-    }
-    return new GridFSBucketReadStream(
-      this.s._chunksCollection,
-      this.s._filesCollection,
-      this.s.options.readPreference,
-      { filename },
-      { ...options, sort, skip }
-    );
-  }
-
-  /**
-   * Renames the file with the given _id to the given string
-   *
-   * @param id - the id of the file to rename
-   * @param filename - new name for the file
-   */
-  async rename(id: ObjectId, filename: string): Promise<void> {
-    const filter = { _id: id };
-    const update = { $set: { filename } };
-    const { matchedCount } = await this.s._filesCollection.updateOne(filter, update);
-    if (matchedCount === 0) {
-      throw new MongoRuntimeError(`File with id ${id} not found`);
-    }
-  }
-
-  /** Removes this bucket's files collection, followed by its chunks collection. */
-  async drop(): Promise<void> {
-    await this.s._filesCollection.drop();
-    await this.s._chunksCollection.drop();
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/gridfs/upload.ts b/server/data-import/node_modules/mongodb/src/gridfs/upload.ts
deleted file mode 100644
index 2f3ad9c177fdecf2b6ea0fe5800669ef23c6365f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/gridfs/upload.ts
+++ /dev/null
@@ -1,453 +0,0 @@
-import { Writable } from 'stream';
-
-import type { Document } from '../bson';
-import { ObjectId } from '../bson';
-import type { Collection } from '../collection';
-import { MongoAPIError, MONGODB_ERROR_CODES, MongoError } from '../error';
-import type { Callback } from '../utils';
-import type { WriteConcernOptions } from '../write_concern';
-import { WriteConcern } from './../write_concern';
-import type { GridFSFile } from './download';
-import type { GridFSBucket } from './index';
-
-/** @public */
-export interface GridFSChunk {
-  _id: ObjectId;
-  files_id: ObjectId;
-  n: number;
-  data: Buffer | Uint8Array;
-}
-
-/** @public */
-export interface GridFSBucketWriteStreamOptions extends WriteConcernOptions {
-  /** Overwrite this bucket's chunkSizeBytes for this file */
-  chunkSizeBytes?: number;
-  /** Custom file id for the GridFS file. */
-  id?: ObjectId;
-  /** Object to store in the file document's `metadata` field */
-  metadata?: Document;
-  /**
-   * String to store in the file document's `contentType` field.
-   * @deprecated Will be removed in the next major version. Add a contentType field to the metadata document instead.
-   */
-  contentType?: string;
-  /**
-   * Array of strings to store in the file document's `aliases` field.
-   * @deprecated Will be removed in the next major version. Add an aliases field to the metadata document instead.
-   */
-  aliases?: string[];
-}
-
-/**
- * A writable stream that enables you to write buffers to GridFS.
- *
- * Do not instantiate this class directly. Use `openUploadStream()` instead.
- * @public
- */
-export class GridFSBucketWriteStream extends Writable {
-  bucket: GridFSBucket;
-  /** A Collection instance where the file's chunks are stored */
-  chunks: Collection<GridFSChunk>;
-  /** A Collection instance where the file's GridFSFile document is stored */
-  files: Collection<GridFSFile>;
-  /** The name of the file */
-  filename: string;
-  /** Options controlling the metadata inserted along with the file */
-  options: GridFSBucketWriteStreamOptions;
-  /** Indicates the stream is finished uploading */
-  done: boolean;
-  /** The ObjectId used for the `_id` field on the GridFSFile document */
-  id: ObjectId;
-  /** The number of bytes that each chunk will be limited to */
-  chunkSizeBytes: number;
-  /** Space used to store a chunk currently being inserted */
-  bufToStore: Buffer;
-  /** Accumulates the number of bytes inserted as the stream uploads chunks */
-  length: number;
-  /** Accumulates the number of chunks inserted as the stream uploads file contents */
-  n: number;
-  /** Tracks the current offset into the buffered bytes being uploaded */
-  pos: number;
-  /** Contains a number of properties indicating the current state of the stream */
-  state: {
-    /** If set the stream has ended */
-    streamEnd: boolean;
-    /** Indicates the number of chunks that still need to be inserted to exhaust the current buffered data */
-    outstandingRequests: number;
-    /** If set an error occurred during insertion */
-    errored: boolean;
-    /** If set the stream was intentionally aborted */
-    aborted: boolean;
-  };
-  /** The write concern setting to be used with every insert operation */
-  writeConcern?: WriteConcern;
-  /**
-   * The document containing information about the inserted file.
-   * This property is defined _after_ the finish event has been emitted.
-   * It will remain `null` if an error occurs.
-   *
-   * @example
-   * ```ts
-   * fs.createReadStream('file.txt')
-   *   .pipe(bucket.openUploadStream('file.txt'))
-   *   .on('finish', function () {
-   *     console.log(this.gridFSFile)
-   *   })
-   * ```
-   */
-  gridFSFile: GridFSFile | null = null;
-
-  /**
-   * @param bucket - Handle for this stream's corresponding bucket
-   * @param filename - The value of the 'filename' key in the files doc
-   * @param options - Optional settings.
-   * @internal
-   */
-  constructor(bucket: GridFSBucket, filename: string, options?: GridFSBucketWriteStreamOptions) {
-    super();
-
-    options = options ?? {};
-    this.bucket = bucket;
-    this.chunks = bucket.s._chunksCollection;
-    this.filename = filename;
-    this.files = bucket.s._filesCollection;
-    this.options = options;
-    this.writeConcern = WriteConcern.fromOptions(options) || bucket.s.options.writeConcern;
-    // Signals the write is all done
-    this.done = false;
-
-    this.id = options.id ? options.id : new ObjectId();
-    // properly inherit the default chunksize from parent
-    this.chunkSizeBytes = options.chunkSizeBytes || this.bucket.s.options.chunkSizeBytes;
-    this.bufToStore = Buffer.alloc(this.chunkSizeBytes);
-    this.length = 0;
-    this.n = 0;
-    this.pos = 0;
-    this.state = {
-      streamEnd: false,
-      outstandingRequests: 0,
-      errored: false,
-      aborted: false
-    };
-
-    if (!this.bucket.s.calledOpenUploadStream) {
-      this.bucket.s.calledOpenUploadStream = true;
-
-      checkIndexes(this).then(
-        () => {
-          this.bucket.s.checkedIndexes = true;
-          this.bucket.emit('index');
-        },
-        () => null
-      );
-    }
-  }
-
-  /**
-   * @internal
-   *
-   * The stream is considered constructed when the indexes are done being created
-   */
-  override _construct(callback: (error?: Error | null) => void): void {
-    if (this.bucket.s.checkedIndexes) {
-      return process.nextTick(callback);
-    }
-    this.bucket.once('index', callback);
-  }
-
-  /**
-   * @internal
-   * Write a buffer to the stream.
-   *
-   * @param chunk - Buffer to write
-   * @param encoding - Optional encoding for the buffer
-   * @param callback - Function to call when the chunk was added to the buffer, or if the entire chunk was persisted to MongoDB if this chunk caused a flush.
-   */
-  override _write(
-    chunk: Buffer | string,
-    encoding: BufferEncoding,
-    callback: Callback<void>
-  ): void {
-    doWrite(this, chunk, encoding, callback);
-  }
-
-  /** @internal */
-  override _final(callback: (error?: Error | null) => void): void {
-    if (this.state.streamEnd) {
-      return process.nextTick(callback);
-    }
-    this.state.streamEnd = true;
-    writeRemnant(this, callback);
-  }
-
-  /**
-   * Places this write stream into an aborted state (all future writes fail)
-   * and deletes all chunks that have already been written.
-   */
-  async abort(): Promise<void> {
-    if (this.state.streamEnd) {
-      // TODO(NODE-3485): Replace with MongoGridFSStreamClosed
-      throw new MongoAPIError('Cannot abort a stream that has already completed');
-    }
-
-    if (this.state.aborted) {
-      // TODO(NODE-3485): Replace with MongoGridFSStreamClosed
-      throw new MongoAPIError('Cannot call abort() on a stream twice');
-    }
-
-    this.state.aborted = true;
-    await this.chunks.deleteMany({ files_id: this.id });
-  }
-}
-
-function handleError(stream: GridFSBucketWriteStream, error: Error, callback: Callback): void {
-  if (stream.state.errored) {
-    process.nextTick(callback);
-    return;
-  }
-  stream.state.errored = true;
-  process.nextTick(callback, error);
-}
-
-function createChunkDoc(filesId: ObjectId, n: number, data: Buffer): GridFSChunk {
-  return {
-    _id: new ObjectId(),
-    files_id: filesId,
-    n,
-    data
-  };
-}
-
-async function checkChunksIndex(stream: GridFSBucketWriteStream): Promise<void> {
-  const index = { files_id: 1, n: 1 };
-
-  let indexes;
-  try {
-    indexes = await stream.chunks.listIndexes().toArray();
-  } catch (error) {
-    if (error instanceof MongoError && error.code === MONGODB_ERROR_CODES.NamespaceNotFound) {
-      indexes = [];
-    } else {
-      throw error;
-    }
-  }
-
-  const hasChunksIndex = !!indexes.find(index => {
-    const keys = Object.keys(index.key);
-    if (keys.length === 2 && index.key.files_id === 1 && index.key.n === 1) {
-      return true;
-    }
-    return false;
-  });
-
-  if (!hasChunksIndex) {
-    await stream.chunks.createIndex(index, {
-      ...stream.writeConcern,
-      background: true,
-      unique: true
-    });
-  }
-}
-
-function checkDone(stream: GridFSBucketWriteStream, callback: Callback): void {
-  if (stream.done) {
-    return process.nextTick(callback);
-  }
-
-  if (stream.state.streamEnd && stream.state.outstandingRequests === 0 && !stream.state.errored) {
-    // Set done so we do not trigger duplicate createFilesDoc
-    stream.done = true;
-    // Create a new files doc
-    const gridFSFile = createFilesDoc(
-      stream.id,
-      stream.length,
-      stream.chunkSizeBytes,
-      stream.filename,
-      stream.options.contentType,
-      stream.options.aliases,
-      stream.options.metadata
-    );
-
-    if (isAborted(stream, callback)) {
-      return;
-    }
-
-    stream.files.insertOne(gridFSFile, { writeConcern: stream.writeConcern }).then(
-      () => {
-        stream.gridFSFile = gridFSFile;
-        callback();
-      },
-      error => handleError(stream, error, callback)
-    );
-    return;
-  }
-
-  process.nextTick(callback);
-}
-
-async function checkIndexes(stream: GridFSBucketWriteStream): Promise<void> {
-  const doc = await stream.files.findOne({}, { projection: { _id: 1 } });
-  if (doc != null) {
-    // If at least one document exists assume the collection has the required index
-    return;
-  }
-
-  const index = { filename: 1, uploadDate: 1 };
-
-  let indexes;
-  try {
-    indexes = await stream.files.listIndexes().toArray();
-  } catch (error) {
-    if (error instanceof MongoError && error.code === MONGODB_ERROR_CODES.NamespaceNotFound) {
-      indexes = [];
-    } else {
-      throw error;
-    }
-  }
-
-  const hasFileIndex = !!indexes.find(index => {
-    const keys = Object.keys(index.key);
-    if (keys.length === 2 && index.key.filename === 1 && index.key.uploadDate === 1) {
-      return true;
-    }
-    return false;
-  });
-
-  if (!hasFileIndex) {
-    await stream.files.createIndex(index, { background: false });
-  }
-
-  await checkChunksIndex(stream);
-}
-
-function createFilesDoc(
-  _id: ObjectId,
-  length: number,
-  chunkSize: number,
-  filename: string,
-  contentType?: string,
-  aliases?: string[],
-  metadata?: Document
-): GridFSFile {
-  const ret: GridFSFile = {
-    _id,
-    length,
-    chunkSize,
-    uploadDate: new Date(),
-    filename
-  };
-
-  if (contentType) {
-    ret.contentType = contentType;
-  }
-
-  if (aliases) {
-    ret.aliases = aliases;
-  }
-
-  if (metadata) {
-    ret.metadata = metadata;
-  }
-
-  return ret;
-}
-
-function doWrite(
-  stream: GridFSBucketWriteStream,
-  chunk: Buffer | string,
-  encoding: BufferEncoding,
-  callback: Callback<void>
-): void {
-  if (isAborted(stream, callback)) {
-    return;
-  }
-
-  const inputBuf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, encoding);
-
-  stream.length += inputBuf.length;
-
-  // Input is small enough to fit in our buffer
-  if (stream.pos + inputBuf.length < stream.chunkSizeBytes) {
-    inputBuf.copy(stream.bufToStore, stream.pos);
-    stream.pos += inputBuf.length;
-    process.nextTick(callback);
-    return;
-  }
-
-  // Otherwise, buffer is too big for current chunk, so we need to flush
-  // to MongoDB.
-  let inputBufRemaining = inputBuf.length;
-  let spaceRemaining: number = stream.chunkSizeBytes - stream.pos;
-  let numToCopy = Math.min(spaceRemaining, inputBuf.length);
-  let outstandingRequests = 0;
-  while (inputBufRemaining > 0) {
-    const inputBufPos = inputBuf.length - inputBufRemaining;
-    inputBuf.copy(stream.bufToStore, stream.pos, inputBufPos, inputBufPos + numToCopy);
-    stream.pos += numToCopy;
-    spaceRemaining -= numToCopy;
-    let doc: GridFSChunk;
-    if (spaceRemaining === 0) {
-      doc = createChunkDoc(stream.id, stream.n, Buffer.from(stream.bufToStore));
-      ++stream.state.outstandingRequests;
-      ++outstandingRequests;
-
-      if (isAborted(stream, callback)) {
-        return;
-      }
-
-      stream.chunks.insertOne(doc, { writeConcern: stream.writeConcern }).then(
-        () => {
-          --stream.state.outstandingRequests;
-          --outstandingRequests;
-
-          if (!outstandingRequests) {
-            checkDone(stream, callback);
-          }
-        },
-        error => handleError(stream, error, callback)
-      );
-
-      spaceRemaining = stream.chunkSizeBytes;
-      stream.pos = 0;
-      ++stream.n;
-    }
-    inputBufRemaining -= numToCopy;
-    numToCopy = Math.min(spaceRemaining, inputBufRemaining);
-  }
-}
-
-function writeRemnant(stream: GridFSBucketWriteStream, callback: Callback): void {
-  // Buffer is empty, so don't bother to insert
-  if (stream.pos === 0) {
-    return checkDone(stream, callback);
-  }
-
-  ++stream.state.outstandingRequests;
-
-  // Create a new buffer to make sure the buffer isn't bigger than it needs
-  // to be.
-  const remnant = Buffer.alloc(stream.pos);
-  stream.bufToStore.copy(remnant, 0, 0, stream.pos);
-  const doc = createChunkDoc(stream.id, stream.n, remnant);
-
-  // If the stream was aborted, do not write remnant
-  if (isAborted(stream, callback)) {
-    return;
-  }
-
-  stream.chunks.insertOne(doc, { writeConcern: stream.writeConcern }).then(
-    () => {
-      --stream.state.outstandingRequests;
-      checkDone(stream, callback);
-    },
-    error => handleError(stream, error, callback)
-  );
-}
-
-function isAborted(stream: GridFSBucketWriteStream, callback: Callback<void>): boolean {
-  if (stream.state.aborted) {
-    process.nextTick(callback, new MongoAPIError('Stream has been aborted'));
-    return true;
-  }
-  return false;
-}
diff --git a/server/data-import/node_modules/mongodb/src/index.ts b/server/data-import/node_modules/mongodb/src/index.ts
deleted file mode 100644
index 0fa133483e9606d156056959244595c5cc6ded95..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/index.ts
+++ /dev/null
@@ -1,537 +0,0 @@
-import { Admin } from './admin';
-import { OrderedBulkOperation } from './bulk/ordered';
-import { UnorderedBulkOperation } from './bulk/unordered';
-import { ChangeStream } from './change_stream';
-import { Collection } from './collection';
-import { AbstractCursor } from './cursor/abstract_cursor';
-import { AggregationCursor } from './cursor/aggregation_cursor';
-import { FindCursor } from './cursor/find_cursor';
-import { ListCollectionsCursor } from './cursor/list_collections_cursor';
-import { ListIndexesCursor } from './cursor/list_indexes_cursor';
-import type { RunCommandCursor } from './cursor/run_command_cursor';
-import { Db } from './db';
-import { GridFSBucket } from './gridfs';
-import { GridFSBucketReadStream } from './gridfs/download';
-import { GridFSBucketWriteStream } from './gridfs/upload';
-import { MongoClient } from './mongo_client';
-import { CancellationToken } from './mongo_types';
-import { ClientSession } from './sessions';
-
-/** @public */
-export { BSON } from './bson';
-export {
-  Binary,
-  BSONRegExp,
-  BSONSymbol,
-  BSONType,
-  Code,
-  DBRef,
-  Decimal128,
-  Double,
-  Int32,
-  Long,
-  MaxKey,
-  MinKey,
-  ObjectId,
-  Timestamp,
-  UUID
-} from './bson';
-export { AnyBulkWriteOperation, BulkWriteOptions, MongoBulkWriteError } from './bulk/common';
-export { ClientEncryption } from './client-side-encryption/client_encryption';
-export { ChangeStreamCursor } from './cursor/change_stream_cursor';
-export {
-  MongoAPIError,
-  MongoAWSError,
-  MongoAzureError,
-  MongoBatchReExecutionError,
-  MongoChangeStreamError,
-  MongoCompatibilityError,
-  MongoCursorExhaustedError,
-  MongoCursorInUseError,
-  MongoDecompressionError,
-  MongoDriverError,
-  MongoError,
-  MongoExpiredSessionError,
-  MongoGridFSChunkError,
-  MongoGridFSStreamError,
-  MongoInvalidArgumentError,
-  MongoKerberosError,
-  MongoMissingCredentialsError,
-  MongoMissingDependencyError,
-  MongoNetworkError,
-  MongoNetworkTimeoutError,
-  MongoNotConnectedError,
-  MongoParseError,
-  MongoRuntimeError,
-  MongoServerClosedError,
-  MongoServerError,
-  MongoServerSelectionError,
-  MongoSystemError,
-  MongoTailableCursorError,
-  MongoTopologyClosedError,
-  MongoTransactionError,
-  MongoUnexpectedServerResponseError,
-  MongoWriteConcernError
-} from './error';
-export {
-  AbstractCursor,
-  // Actual driver classes exported
-  Admin,
-  AggregationCursor,
-  CancellationToken,
-  ChangeStream,
-  ClientSession,
-  Collection,
-  Db,
-  FindCursor,
-  GridFSBucket,
-  GridFSBucketReadStream,
-  GridFSBucketWriteStream,
-  ListCollectionsCursor,
-  ListIndexesCursor,
-  MongoClient,
-  OrderedBulkOperation,
-  RunCommandCursor,
-  UnorderedBulkOperation
-};
-
-// enums
-export { BatchType } from './bulk/common';
-export { AutoEncryptionLoggerLevel } from './client-side-encryption/auto_encrypter';
-export { GSSAPICanonicalizationValue } from './cmap/auth/gssapi';
-export { AuthMechanism } from './cmap/auth/providers';
-export { Compressor } from './cmap/wire_protocol/compression';
-export { CURSOR_FLAGS } from './cursor/abstract_cursor';
-export { MongoErrorLabel } from './error';
-export { ExplainVerbosity } from './explain';
-export { ServerApiVersion } from './mongo_client';
-export { ReturnDocument } from './operations/find_and_modify';
-export { ProfilingLevel } from './operations/set_profiling_level';
-export { ReadConcernLevel } from './read_concern';
-export { ReadPreferenceMode } from './read_preference';
-export { ServerType, TopologyType } from './sdam/common';
-
-// Helper classes
-export { ReadConcern } from './read_concern';
-export { ReadPreference } from './read_preference';
-export { WriteConcern } from './write_concern';
-
-// events
-export {
-  CommandFailedEvent,
-  CommandStartedEvent,
-  CommandSucceededEvent
-} from './cmap/command_monitoring_events';
-export {
-  ConnectionCheckedInEvent,
-  ConnectionCheckedOutEvent,
-  ConnectionCheckOutFailedEvent,
-  ConnectionCheckOutStartedEvent,
-  ConnectionClosedEvent,
-  ConnectionCreatedEvent,
-  ConnectionPoolClearedEvent,
-  ConnectionPoolClosedEvent,
-  ConnectionPoolCreatedEvent,
-  ConnectionPoolMonitoringEvent,
-  ConnectionPoolReadyEvent,
-  ConnectionReadyEvent
-} from './cmap/connection_pool_events';
-export {
-  ServerClosedEvent,
-  ServerDescriptionChangedEvent,
-  ServerHeartbeatFailedEvent,
-  ServerHeartbeatStartedEvent,
-  ServerHeartbeatSucceededEvent,
-  ServerOpeningEvent,
-  TopologyClosedEvent,
-  TopologyDescriptionChangedEvent,
-  TopologyOpeningEvent
-} from './sdam/events';
-export { SrvPollingEvent } from './sdam/srv_polling';
-
-// type only exports below, these are removed from emitted JS
-export type { AdminPrivate } from './admin';
-export type { BSONSerializeOptions, Document } from './bson';
-export type { deserialize, serialize } from './bson';
-export type {
-  BulkResult,
-  BulkWriteOperationError,
-  BulkWriteResult,
-  DeleteManyModel,
-  DeleteOneModel,
-  InsertOneModel,
-  ReplaceOneModel,
-  UpdateManyModel,
-  UpdateOneModel,
-  WriteConcernError,
-  WriteError
-} from './bulk/common';
-export type {
-  Batch,
-  BulkOperationBase,
-  BulkOperationPrivate,
-  FindOperators,
-  WriteConcernErrorData
-} from './bulk/common';
-export type {
-  ChangeStreamCollModDocument,
-  ChangeStreamCreateDocument,
-  ChangeStreamCreateIndexDocument,
-  ChangeStreamDeleteDocument,
-  ChangeStreamDocument,
-  ChangeStreamDocumentCollectionUUID,
-  ChangeStreamDocumentCommon,
-  ChangeStreamDocumentKey,
-  ChangeStreamDocumentOperationDescription,
-  ChangeStreamDropDatabaseDocument,
-  ChangeStreamDropDocument,
-  ChangeStreamDropIndexDocument,
-  ChangeStreamEvents,
-  ChangeStreamInsertDocument,
-  ChangeStreamInvalidateDocument,
-  ChangeStreamNameSpace,
-  ChangeStreamOptions,
-  ChangeStreamRefineCollectionShardKeyDocument,
-  ChangeStreamRenameDocument,
-  ChangeStreamReplaceDocument,
-  ChangeStreamReshardCollectionDocument,
-  ChangeStreamShardCollectionDocument,
-  ChangeStreamSplitEvent,
-  ChangeStreamUpdateDocument,
-  OperationTime,
-  ResumeOptions,
-  ResumeToken,
-  UpdateDescription
-} from './change_stream';
-export type { AutoEncrypter } from './client-side-encryption/auto_encrypter';
-export type { AutoEncryptionOptions } from './client-side-encryption/auto_encrypter';
-export type { AutoEncryptionExtraOptions } from './client-side-encryption/auto_encrypter';
-export type {
-  AWSEncryptionKeyOptions,
-  AzureEncryptionKeyOptions,
-  ClientEncryptionCreateDataKeyProviderOptions,
-  ClientEncryptionEncryptOptions,
-  ClientEncryptionOptions,
-  ClientEncryptionRewrapManyDataKeyProviderOptions,
-  ClientEncryptionRewrapManyDataKeyResult,
-  DataKey,
-  GCPEncryptionKeyOptions,
-  RangeOptions
-} from './client-side-encryption/client_encryption';
-export {
-  MongoCryptAzureKMSRequestError,
-  MongoCryptCreateDataKeyError,
-  MongoCryptCreateEncryptedCollectionError,
-  MongoCryptError,
-  MongoCryptInvalidArgumentError,
-  MongoCryptKMSRequestNetworkTimeoutError
-} from './client-side-encryption/errors';
-export type { MongocryptdManager } from './client-side-encryption/mongocryptd_manager';
-export type {
-  ClientEncryptionDataKeyProvider,
-  KMSProviders
-} from './client-side-encryption/providers/index';
-export type {
-  ClientEncryptionTlsOptions,
-  CSFLEKMSTlsOptions,
-  StateMachineExecutable
-} from './client-side-encryption/state_machine';
-export type { AuthContext } from './cmap/auth/auth_provider';
-export type {
-  AuthMechanismProperties,
-  MongoCredentials,
-  MongoCredentialsOptions
-} from './cmap/auth/mongo_credentials';
-export type {
-  IdPServerInfo,
-  IdPServerResponse,
-  OIDCCallbackContext,
-  OIDCRefreshFunction,
-  OIDCRequestFunction
-} from './cmap/auth/mongodb_oidc';
-export type {
-  MessageHeader,
-  OpCompressedRequest,
-  OpMsgOptions,
-  OpMsgRequest,
-  OpMsgResponse,
-  OpQueryOptions,
-  OpQueryRequest,
-  OpQueryResponse,
-  OpResponseOptions,
-  WriteProtocolMessageType
-} from './cmap/commands';
-export type { LEGAL_TCP_SOCKET_OPTIONS, LEGAL_TLS_SOCKET_OPTIONS, Stream } from './cmap/connect';
-export type {
-  CommandOptions,
-  Connection,
-  ConnectionEvents,
-  ConnectionOptions,
-  DestroyOptions,
-  ModernConnection,
-  ProxyOptions,
-  read,
-  readMany,
-  writeCommand
-} from './cmap/connection';
-export type {
-  CloseOptions,
-  ConnectionPool,
-  ConnectionPoolEvents,
-  ConnectionPoolOptions,
-  PoolState,
-  WaitQueueMember,
-  WithConnectionCallback
-} from './cmap/connection_pool';
-export type { ClientMetadata, ClientMetadataOptions } from './cmap/handshake/client_metadata';
-export type {
-  MessageStream,
-  MessageStreamOptions,
-  OperationDescription
-} from './cmap/message_stream';
-export type { ConnectionPoolMetrics } from './cmap/metrics';
-export type { StreamDescription, StreamDescriptionOptions } from './cmap/stream_description';
-export type { CompressorName } from './cmap/wire_protocol/compression';
-export type { CollectionOptions, CollectionPrivate, ModifyResult } from './collection';
-export type {
-  CONNECTION_CHECK_OUT_FAILED,
-  CONNECTION_CHECK_OUT_STARTED,
-  CONNECTION_CHECKED_IN,
-  CONNECTION_CHECKED_OUT,
-  CONNECTION_CLOSED,
-  CONNECTION_CREATED,
-  CONNECTION_POOL_CLEARED,
-  CONNECTION_POOL_CLOSED,
-  CONNECTION_POOL_CREATED,
-  CONNECTION_POOL_READY,
-  CONNECTION_READY,
-  MONGO_CLIENT_EVENTS
-} from './constants';
-export type {
-  AbstractCursorEvents,
-  AbstractCursorOptions,
-  CursorFlag,
-  CursorStreamOptions
-} from './cursor/abstract_cursor';
-export type { InternalAbstractCursorOptions } from './cursor/abstract_cursor';
-export type { AggregationCursorOptions } from './cursor/aggregation_cursor';
-export type {
-  ChangeStreamAggregateRawResult,
-  ChangeStreamCursorOptions
-} from './cursor/change_stream_cursor';
-export type {
-  ListSearchIndexesCursor,
-  ListSearchIndexesOptions
-} from './cursor/list_search_indexes_cursor';
-export type { RunCursorCommandOptions } from './cursor/run_command_cursor';
-export type { DbOptions, DbPrivate } from './db';
-export type { Encrypter, EncrypterOptions } from './encrypter';
-export type { AnyError, ErrorDescription, MongoNetworkErrorOptions } from './error';
-export type { Explain, ExplainOptions, ExplainVerbosityLike } from './explain';
-export type {
-  GridFSBucketReadStreamOptions,
-  GridFSBucketReadStreamOptionsWithRevision,
-  GridFSBucketReadStreamPrivate,
-  GridFSFile
-} from './gridfs/download';
-export type { GridFSBucketEvents, GridFSBucketOptions, GridFSBucketPrivate } from './gridfs/index';
-export type { GridFSBucketWriteStreamOptions, GridFSChunk } from './gridfs/upload';
-export type {
-  Auth,
-  DriverInfo,
-  MongoClientEvents,
-  MongoClientOptions,
-  MongoClientPrivate,
-  MongoOptions,
-  PkFactory,
-  ServerApi,
-  SupportedNodeConnectionOptions,
-  SupportedSocketOptions,
-  SupportedTLSConnectionOptions,
-  SupportedTLSSocketOptions,
-  WithSessionCallback
-} from './mongo_client';
-export type {
-  Log,
-  LogComponentSeveritiesClientOptions,
-  LogConvertible,
-  Loggable,
-  LoggableEvent,
-  MongoDBLogWritable,
-  MongoLoggableComponent,
-  MongoLogger,
-  MongoLoggerEnvOptions,
-  MongoLoggerMongoClientOptions,
-  MongoLoggerOptions,
-  SeverityLevel
-} from './mongo_logger';
-export type {
-  CommonEvents,
-  EventsDescription,
-  GenericListener,
-  TypedEventEmitter
-} from './mongo_types';
-export type {
-  AcceptedFields,
-  AddToSetOperators,
-  AlternativeType,
-  ArrayElement,
-  ArrayOperator,
-  BitwiseFilter,
-  BSONTypeAlias,
-  Condition,
-  EnhancedOmit,
-  Filter,
-  FilterOperations,
-  FilterOperators,
-  Flatten,
-  InferIdType,
-  IntegerType,
-  IsAny,
-  Join,
-  KeysOfAType,
-  KeysOfOtherType,
-  MatchKeysAndValues,
-  NestedPaths,
-  NestedPathsOfType,
-  NonObjectIdLikeDocument,
-  NotAcceptedFields,
-  NumericType,
-  OneOrMore,
-  OnlyFieldsOfType,
-  OptionalId,
-  OptionalUnlessRequiredId,
-  PropertyType,
-  PullAllOperator,
-  PullOperator,
-  PushOperator,
-  RegExpOrString,
-  RootFilterOperators,
-  SchemaMember,
-  SetFields,
-  StrictFilter,
-  StrictMatchKeysAndValues,
-  StrictUpdateFilter,
-  UpdateFilter,
-  WithId,
-  WithoutId
-} from './mongo_types';
-export type {
-  AggregateOperation,
-  AggregateOptions,
-  DB_AGGREGATE_COLLECTION
-} from './operations/aggregate';
-export type {
-  CollationOptions,
-  CommandOperation,
-  CommandOperationOptions,
-  OperationParent
-} from './operations/command';
-export type { IndexInformationOptions } from './operations/common_functions';
-export type { CountOptions } from './operations/count';
-export type { CountDocumentsOptions } from './operations/count_documents';
-export type {
-  ClusteredCollectionOptions,
-  CreateCollectionOptions,
-  TimeSeriesCollectionOptions
-} from './operations/create_collection';
-export type { DeleteOptions, DeleteResult, DeleteStatement } from './operations/delete';
-export type { DistinctOptions } from './operations/distinct';
-export type { DropCollectionOptions, DropDatabaseOptions } from './operations/drop';
-export type { EstimatedDocumentCountOptions } from './operations/estimated_document_count';
-export type { ExecutionResult } from './operations/execute_operation';
-export type { FindOptions } from './operations/find';
-export type {
-  FindOneAndDeleteOptions,
-  FindOneAndReplaceOptions,
-  FindOneAndUpdateOptions
-} from './operations/find_and_modify';
-export type {
-  CreateIndexesOptions,
-  DropIndexesOptions,
-  IndexDescription,
-  IndexDirection,
-  IndexSpecification,
-  ListIndexesOptions
-} from './operations/indexes';
-export type { InsertManyResult, InsertOneOptions, InsertOneResult } from './operations/insert';
-export type { CollectionInfo, ListCollectionsOptions } from './operations/list_collections';
-export type { ListDatabasesOptions, ListDatabasesResult } from './operations/list_databases';
-export type { AbstractOperation, Hint, OperationOptions } from './operations/operation';
-export type { ProfilingLevelOptions } from './operations/profiling_level';
-export type { RemoveUserOptions } from './operations/remove_user';
-export type { RenameOptions } from './operations/rename';
-export type { RunCommandOptions } from './operations/run_command';
-export type { SearchIndexDescription } from './operations/search_indexes/create';
-export type { SetProfilingLevelOptions } from './operations/set_profiling_level';
-export type { DbStatsOptions } from './operations/stats';
-export type {
-  ReplaceOptions,
-  UpdateOptions,
-  UpdateResult,
-  UpdateStatement
-} from './operations/update';
-export type { ValidateCollectionOptions } from './operations/validate_collection';
-export type { ReadConcernLike } from './read_concern';
-export type {
-  HedgeOptions,
-  ReadPreferenceFromOptions,
-  ReadPreferenceLike,
-  ReadPreferenceLikeOptions,
-  ReadPreferenceOptions
-} from './read_preference';
-export type { ClusterTime, TimerQueue } from './sdam/common';
-export type {
-  Monitor,
-  MonitorEvents,
-  MonitorInterval,
-  MonitorIntervalOptions,
-  MonitorOptions,
-  MonitorPrivate,
-  RTTPinger,
-  RTTPingerOptions,
-  ServerMonitoringMode
-} from './sdam/monitor';
-export type { Server, ServerEvents, ServerOptions, ServerPrivate } from './sdam/server';
-export type {
-  ServerDescription,
-  ServerDescriptionOptions,
-  TagSet,
-  TopologyVersion
-} from './sdam/server_description';
-export type { ServerSelector } from './sdam/server_selection';
-export type { SrvPoller, SrvPollerEvents, SrvPollerOptions } from './sdam/srv_polling';
-export type {
-  ConnectOptions,
-  SelectServerOptions,
-  ServerCapabilities,
-  ServerSelectionCallback,
-  ServerSelectionRequest,
-  Topology,
-  TopologyEvents,
-  TopologyOptions,
-  TopologyPrivate
-} from './sdam/topology';
-export type { TopologyDescription, TopologyDescriptionOptions } from './sdam/topology_description';
-export type {
-  ClientSessionEvents,
-  ClientSessionOptions,
-  EndSessionOptions,
-  ServerSession,
-  ServerSessionId,
-  ServerSessionPool,
-  WithTransactionCallback
-} from './sessions';
-export type { Sort, SortDirection, SortDirectionForCmd, SortForCmd } from './sort';
-export type { Transaction, TransactionOptions, TxnState } from './transactions';
-export type {
-  BufferPool,
-  Callback,
-  EventEmitterWithState,
-  HostAddress,
-  List,
-  MongoDBCollectionNamespace,
-  MongoDBNamespace,
-  TimeoutController
-} from './utils';
-export type { W, WriteConcernOptions, WriteConcernSettings } from './write_concern';
diff --git a/server/data-import/node_modules/mongodb/src/mongo_client.ts b/server/data-import/node_modules/mongodb/src/mongo_client.ts
deleted file mode 100644
index a1e92f93f8032dcffb0e51bf844cce5d5a0b66ec..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/mongo_client.ts
+++ /dev/null
@@ -1,887 +0,0 @@
-import { promises as fs } from 'fs';
-import type { TcpNetConnectOpts } from 'net';
-import type { ConnectionOptions as TLSConnectionOptions, TLSSocketOptions } from 'tls';
-import { promisify } from 'util';
-
-import { type BSONSerializeOptions, type Document, resolveBSONOptions } from './bson';
-import { ChangeStream, type ChangeStreamDocument, type ChangeStreamOptions } from './change_stream';
-import type { AutoEncrypter, AutoEncryptionOptions } from './client-side-encryption/auto_encrypter';
-import {
-  type AuthMechanismProperties,
-  DEFAULT_ALLOWED_HOSTS,
-  type MongoCredentials
-} from './cmap/auth/mongo_credentials';
-import { AuthMechanism } from './cmap/auth/providers';
-import type { LEGAL_TCP_SOCKET_OPTIONS, LEGAL_TLS_SOCKET_OPTIONS } from './cmap/connect';
-import type { Connection } from './cmap/connection';
-import type { ClientMetadata } from './cmap/handshake/client_metadata';
-import type { CompressorName } from './cmap/wire_protocol/compression';
-import { parseOptions, resolveSRVRecord } from './connection_string';
-import { MONGO_CLIENT_EVENTS } from './constants';
-import { Db, type DbOptions } from './db';
-import type { Encrypter } from './encrypter';
-import { MongoInvalidArgumentError } from './error';
-import {
-  type LogComponentSeveritiesClientOptions,
-  type MongoDBLogWritable,
-  MongoLogger,
-  type MongoLoggerOptions
-} from './mongo_logger';
-import { TypedEventEmitter } from './mongo_types';
-import { executeOperation } from './operations/execute_operation';
-import { RunAdminCommandOperation } from './operations/run_command';
-import type { ReadConcern, ReadConcernLevel, ReadConcernLike } from './read_concern';
-import { ReadPreference, type ReadPreferenceMode } from './read_preference';
-import type { ServerMonitoringMode } from './sdam/monitor';
-import type { TagSet } from './sdam/server_description';
-import { readPreferenceServerSelector } from './sdam/server_selection';
-import type { SrvPoller } from './sdam/srv_polling';
-import { Topology, type TopologyEvents } from './sdam/topology';
-import { ClientSession, type ClientSessionOptions, ServerSessionPool } from './sessions';
-import {
-  COSMOS_DB_CHECK,
-  COSMOS_DB_MSG,
-  DOCUMENT_DB_CHECK,
-  DOCUMENT_DB_MSG,
-  type HostAddress,
-  hostMatchesWildcards,
-  isHostMatch,
-  type MongoDBNamespace,
-  ns,
-  resolveOptions
-} from './utils';
-import type { W, WriteConcern, WriteConcernSettings } from './write_concern';
-
-/** @public */
-export const ServerApiVersion = Object.freeze({
-  v1: '1'
-} as const);
-
-/** @public */
-export type ServerApiVersion = (typeof ServerApiVersion)[keyof typeof ServerApiVersion];
-
-/** @public */
-export interface ServerApi {
-  version: ServerApiVersion;
-  strict?: boolean;
-  deprecationErrors?: boolean;
-}
-
-/** @public */
-export interface DriverInfo {
-  name?: string;
-  version?: string;
-  platform?: string;
-}
-
-/** @public */
-export interface Auth {
-  /** The username for auth */
-  username?: string;
-  /** The password for auth */
-  password?: string;
-}
-
-/** @public */
-export interface PkFactory {
-  createPk(): any; // TODO: when js-bson is typed, function should return some BSON type
-}
-
-/** @public */
-export type SupportedTLSConnectionOptions = Pick<
-  TLSConnectionOptions,
-  Extract<keyof TLSConnectionOptions, (typeof LEGAL_TLS_SOCKET_OPTIONS)[number]>
->;
-
-/** @public */
-export type SupportedTLSSocketOptions = Pick<
-  TLSSocketOptions,
-  Extract<keyof TLSSocketOptions, (typeof LEGAL_TLS_SOCKET_OPTIONS)[number]>
->;
-
-/** @public */
-export type SupportedSocketOptions = Pick<
-  TcpNetConnectOpts,
-  (typeof LEGAL_TCP_SOCKET_OPTIONS)[number]
->;
-
-/** @public */
-export type SupportedNodeConnectionOptions = SupportedTLSConnectionOptions &
-  SupportedTLSSocketOptions &
-  SupportedSocketOptions;
-
-/**
- * Describes all possible URI query options for the mongo client
- * @public
- * @see https://www.mongodb.com/docs/manual/reference/connection-string
- */
-export interface MongoClientOptions extends BSONSerializeOptions, SupportedNodeConnectionOptions {
-  /** Specifies the name of the replica set, if the mongod is a member of a replica set. */
-  replicaSet?: string;
-  /** Enables or disables TLS/SSL for the connection. */
-  tls?: boolean;
-  /** A boolean to enable or disables TLS/SSL for the connection. (The ssl option is equivalent to the tls option.) */
-  ssl?: boolean;
-  /** Specifies the location of a local .pem file that contains either the client's TLS/SSL certificate and key. */
-  tlsCertificateKeyFile?: string;
-  /** Specifies the password to de-crypt the tlsCertificateKeyFile. */
-  tlsCertificateKeyFilePassword?: string;
-  /** Specifies the location of a local .pem file that contains the root certificate chain from the Certificate Authority. This file is used to validate the certificate presented by the mongod/mongos instance. */
-  tlsCAFile?: string;
-  /** Specifies the location of a local CRL .pem file that contains the client revokation list. */
-  tlsCRLFile?: string;
-  /** Bypasses validation of the certificates presented by the mongod/mongos instance */
-  tlsAllowInvalidCertificates?: boolean;
-  /** Disables hostname validation of the certificate presented by the mongod/mongos instance. */
-  tlsAllowInvalidHostnames?: boolean;
-  /** Disables various certificate validations. */
-  tlsInsecure?: boolean;
-  /** The time in milliseconds to attempt a connection before timing out. */
-  connectTimeoutMS?: number;
-  /** The time in milliseconds to attempt a send or receive on a socket before the attempt times out. */
-  socketTimeoutMS?: number;
-  /** An array or comma-delimited string of compressors to enable network compression for communication between this client and a mongod/mongos instance. */
-  compressors?: CompressorName[] | string;
-  /** An integer that specifies the compression level if using zlib for network compression. */
-  zlibCompressionLevel?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | undefined;
-  /** The maximum number of hosts to connect to when using an srv connection string, a setting of `0` means unlimited hosts */
-  srvMaxHosts?: number;
-  /**
-   * Modifies the srv URI to look like:
-   *
-   * `_{srvServiceName}._tcp.{hostname}.{domainname}`
-   *
-   * Querying this DNS URI is expected to respond with SRV records
-   */
-  srvServiceName?: string;
-  /** The maximum number of connections in the connection pool. */
-  maxPoolSize?: number;
-  /** The minimum number of connections in the connection pool. */
-  minPoolSize?: number;
-  /** The maximum number of connections that may be in the process of being established concurrently by the connection pool. */
-  maxConnecting?: number;
-  /** The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed. */
-  maxIdleTimeMS?: number;
-  /** The maximum time in milliseconds that a thread can wait for a connection to become available. */
-  waitQueueTimeoutMS?: number;
-  /** Specify a read concern for the collection (only MongoDB 3.2 or higher supported) */
-  readConcern?: ReadConcernLike;
-  /** The level of isolation */
-  readConcernLevel?: ReadConcernLevel;
-  /** Specifies the read preferences for this connection */
-  readPreference?: ReadPreferenceMode | ReadPreference;
-  /** Specifies, in seconds, how stale a secondary can be before the client stops using it for read operations. */
-  maxStalenessSeconds?: number;
-  /** Specifies the tags document as a comma-separated list of colon-separated key-value pairs.  */
-  readPreferenceTags?: TagSet[];
-  /** The auth settings for when connection to server. */
-  auth?: Auth;
-  /** Specify the database name associated with the user’s credentials. */
-  authSource?: string;
-  /** Specify the authentication mechanism that MongoDB will use to authenticate the connection. */
-  authMechanism?: AuthMechanism;
-  /** Specify properties for the specified authMechanism as a comma-separated list of colon-separated key-value pairs. */
-  authMechanismProperties?: AuthMechanismProperties;
-  /** The size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances. */
-  localThresholdMS?: number;
-  /** Specifies how long (in milliseconds) to block for server selection before throwing an exception.  */
-  serverSelectionTimeoutMS?: number;
-  /** heartbeatFrequencyMS controls when the driver checks the state of the MongoDB deployment. Specify the interval (in milliseconds) between checks, counted from the end of the previous check until the beginning of the next one. */
-  heartbeatFrequencyMS?: number;
-  /** Sets the minimum heartbeat frequency. In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort. */
-  minHeartbeatFrequencyMS?: number;
-  /** The name of the application that created this MongoClient instance. MongoDB 3.4 and newer will print this value in the server log upon establishing each connection. It is also recorded in the slow query log and profile collections */
-  appName?: string;
-  /** Enables retryable reads. */
-  retryReads?: boolean;
-  /** Enable retryable writes. */
-  retryWrites?: boolean;
-  /** Allow a driver to force a Single topology type with a connection string containing one host */
-  directConnection?: boolean;
-  /** Instruct the driver it is connecting to a load balancer fronting a mongos like service */
-  loadBalanced?: boolean;
-  /**
-   * The write concern w value
-   * @deprecated Please use the `writeConcern` option instead
-   */
-  w?: W;
-  /**
-   * The write concern timeout
-   * @deprecated Please use the `writeConcern` option instead
-   */
-  wtimeoutMS?: number;
-  /**
-   * The journal write concern
-   * @deprecated Please use the `writeConcern` option instead
-   */
-  journal?: boolean;
-  /**
-   * A MongoDB WriteConcern, which describes the level of acknowledgement
-   * requested from MongoDB for write operations.
-   *
-   * @see https://www.mongodb.com/docs/manual/reference/write-concern/
-   */
-  writeConcern?: WriteConcern | WriteConcernSettings;
-  /** TCP Connection no delay */
-  noDelay?: boolean;
-  /** Force server to assign `_id` values instead of driver */
-  forceServerObjectId?: boolean;
-  /** A primary key factory function for generation of custom `_id` keys */
-  pkFactory?: PkFactory;
-  /** Enable command monitoring for this client */
-  monitorCommands?: boolean;
-  /** Server API version */
-  serverApi?: ServerApi | ServerApiVersion;
-  /**
-   * Optionally enable in-use auto encryption
-   *
-   * @remarks
-   *  Automatic encryption is an enterprise only feature that only applies to operations on a collection. Automatic encryption is not supported for operations on a database or view, and operations that are not bypassed will result in error
-   *  (see [libmongocrypt: Auto Encryption Allow-List](https://github.com/mongodb/specifications/blob/master/source/client-side-encryption/client-side-encryption.rst#libmongocrypt-auto-encryption-allow-list)). To bypass automatic encryption for all operations, set bypassAutoEncryption=true in AutoEncryptionOpts.
-   *
-   *  Automatic encryption requires the authenticated user to have the [listCollections privilege action](https://www.mongodb.com/docs/manual/reference/command/listCollections/#dbcmd.listCollections).
-   *
-   *  If a MongoClient with a limited connection pool size (i.e a non-zero maxPoolSize) is configured with AutoEncryptionOptions, a separate internal MongoClient is created if any of the following are true:
-   *  - AutoEncryptionOptions.keyVaultClient is not passed.
-   *  - AutoEncryptionOptions.bypassAutomaticEncryption is false.
-   *
-   * If an internal MongoClient is created, it is configured with the same options as the parent MongoClient except minPoolSize is set to 0 and AutoEncryptionOptions is omitted.
-   */
-  autoEncryption?: AutoEncryptionOptions;
-  /** Allows a wrapping driver to amend the client metadata generated by the driver to include information about the wrapping driver */
-  driverInfo?: DriverInfo;
-  /** Configures a Socks5 proxy host used for creating TCP connections. */
-  proxyHost?: string;
-  /** Configures a Socks5 proxy port used for creating TCP connections. */
-  proxyPort?: number;
-  /** Configures a Socks5 proxy username when the proxy in proxyHost requires username/password authentication. */
-  proxyUsername?: string;
-  /** Configures a Socks5 proxy password when the proxy in proxyHost requires username/password authentication. */
-  proxyPassword?: string;
-  /** Instructs the driver monitors to use a specific monitoring mode */
-  serverMonitoringMode?: ServerMonitoringMode;
-
-  /** @internal */
-  srvPoller?: SrvPoller;
-  /** @internal */
-  connectionType?: typeof Connection;
-  /**
-   * @internal
-   * TODO: NODE-5671 - remove internal flag
-   */
-  mongodbLogPath?: 'stderr' | 'stdout' | MongoDBLogWritable;
-  /**
-   * @internal
-   * TODO: NODE-5671 - remove internal flag
-   */
-  mongodbLogComponentSeverities?: LogComponentSeveritiesClientOptions;
-  /**
-   * @internal
-   * TODO: NODE-5671 - remove internal flag
-   */
-  mongodbLogMaxDocumentLength?: number;
-
-  /** @internal */
-  [featureFlag: symbol]: any;
-}
-
-/** @public */
-export type WithSessionCallback<T = unknown> = (session: ClientSession) => Promise<T>;
-
-/** @internal */
-export interface MongoClientPrivate {
-  url: string;
-  bsonOptions: BSONSerializeOptions;
-  namespace: MongoDBNamespace;
-  hasBeenClosed: boolean;
-  /**
-   * We keep a reference to the sessions that are acquired from the pool.
-   * - used to track and close all sessions in client.close() (which is non-standard behavior)
-   * - used to notify the leak checker in our tests if test author forgot to clean up explicit sessions
-   */
-  readonly activeSessions: Set<ClientSession>;
-  readonly sessionPool: ServerSessionPool;
-  readonly options: MongoOptions;
-  readonly readConcern?: ReadConcern;
-  readonly writeConcern?: WriteConcern;
-  readonly readPreference: ReadPreference;
-  readonly isMongoClient: true;
-}
-
-/** @public */
-export type MongoClientEvents = Pick<TopologyEvents, (typeof MONGO_CLIENT_EVENTS)[number]> & {
-  // In previous versions the open event emitted a topology, in an effort to no longer
-  // expose internals but continue to expose this useful event API, it now emits a mongoClient
-  open(mongoClient: MongoClient): void;
-};
-
-/** @internal */
-const kOptions = Symbol('options');
-
-/**
- * The **MongoClient** class is a class that allows for making Connections to MongoDB.
- * @public
- *
- * @remarks
- * The programmatically provided options take precedence over the URI options.
- *
- * @example
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * // Enable command monitoring for debugging
- * const client = new MongoClient('mongodb://localhost:27017', { monitorCommands: true });
- *
- * client.on('commandStarted', started => console.log(started));
- * client.db().collection('pets');
- * await client.insertOne({ name: 'spot', kind: 'dog' });
- * ```
- */
-export class MongoClient extends TypedEventEmitter<MongoClientEvents> {
-  /** @internal */
-  s: MongoClientPrivate;
-  /** @internal */
-  topology?: Topology;
-  /** @internal */
-  override readonly mongoLogger: MongoLogger;
-  /** @internal */
-  private connectionLock?: Promise<this>;
-
-  /**
-   * The consolidate, parsed, transformed and merged options.
-   * @internal
-   */
-  [kOptions]: MongoOptions;
-
-  constructor(url: string, options?: MongoClientOptions) {
-    super();
-
-    this[kOptions] = parseOptions(url, this, options);
-    this.mongoLogger = new MongoLogger(this[kOptions].mongoLoggerOptions);
-
-    // eslint-disable-next-line @typescript-eslint/no-this-alias
-    const client = this;
-
-    // The internal state
-    this.s = {
-      url,
-      bsonOptions: resolveBSONOptions(this[kOptions]),
-      namespace: ns('admin'),
-      hasBeenClosed: false,
-      sessionPool: new ServerSessionPool(this),
-      activeSessions: new Set(),
-
-      get options() {
-        return client[kOptions];
-      },
-      get readConcern() {
-        return client[kOptions].readConcern;
-      },
-      get writeConcern() {
-        return client[kOptions].writeConcern;
-      },
-      get readPreference() {
-        return client[kOptions].readPreference;
-      },
-      get isMongoClient(): true {
-        return true;
-      }
-    };
-    this.checkForNonGenuineHosts();
-  }
-
-  /** @internal */
-  private checkForNonGenuineHosts() {
-    const documentDBHostnames = this[kOptions].hosts.filter((hostAddress: HostAddress) =>
-      isHostMatch(DOCUMENT_DB_CHECK, hostAddress.host)
-    );
-    const srvHostIsDocumentDB = isHostMatch(DOCUMENT_DB_CHECK, this[kOptions].srvHost);
-
-    const cosmosDBHostnames = this[kOptions].hosts.filter((hostAddress: HostAddress) =>
-      isHostMatch(COSMOS_DB_CHECK, hostAddress.host)
-    );
-    const srvHostIsCosmosDB = isHostMatch(COSMOS_DB_CHECK, this[kOptions].srvHost);
-
-    if (documentDBHostnames.length !== 0 || srvHostIsDocumentDB) {
-      this.mongoLogger.info('client', DOCUMENT_DB_MSG);
-    } else if (cosmosDBHostnames.length !== 0 || srvHostIsCosmosDB) {
-      this.mongoLogger.info('client', COSMOS_DB_MSG);
-    }
-  }
-
-  /** @see MongoOptions */
-  get options(): Readonly<MongoOptions> {
-    return Object.freeze({ ...this[kOptions] });
-  }
-
-  get serverApi(): Readonly<ServerApi | undefined> {
-    return this[kOptions].serverApi && Object.freeze({ ...this[kOptions].serverApi });
-  }
-  /**
-   * Intended for APM use only
-   * @internal
-   */
-  get monitorCommands(): boolean {
-    return this[kOptions].monitorCommands;
-  }
-  set monitorCommands(value: boolean) {
-    this[kOptions].monitorCommands = value;
-  }
-
-  /** @internal */
-  get autoEncrypter(): AutoEncrypter | undefined {
-    return this[kOptions].autoEncrypter;
-  }
-
-  get readConcern(): ReadConcern | undefined {
-    return this.s.readConcern;
-  }
-
-  get writeConcern(): WriteConcern | undefined {
-    return this.s.writeConcern;
-  }
-
-  get readPreference(): ReadPreference {
-    return this.s.readPreference;
-  }
-
-  get bsonOptions(): BSONSerializeOptions {
-    return this.s.bsonOptions;
-  }
-
-  /**
-   * Connect to MongoDB using a url
-   *
-   * @see docs.mongodb.org/manual/reference/connection-string/
-   */
-  async connect(): Promise<this> {
-    if (this.connectionLock) {
-      return this.connectionLock;
-    }
-
-    try {
-      this.connectionLock = this._connect();
-      await this.connectionLock;
-    } finally {
-      // release
-      this.connectionLock = undefined;
-    }
-
-    return this;
-  }
-
-  /**
-   * Create a topology to open the connection, must be locked to avoid topology leaks in concurrency scenario.
-   * Locking is enforced by the connect method.
-   *
-   * @internal
-   */
-  private async _connect(): Promise<this> {
-    if (this.topology && this.topology.isConnected()) {
-      return this;
-    }
-
-    const options = this[kOptions];
-
-    if (options.tls) {
-      if (typeof options.tlsCAFile === 'string') {
-        options.ca ??= await fs.readFile(options.tlsCAFile);
-      }
-      if (typeof options.tlsCRLFile === 'string') {
-        options.crl ??= await fs.readFile(options.tlsCRLFile);
-      }
-      if (typeof options.tlsCertificateKeyFile === 'string') {
-        if (!options.key || !options.cert) {
-          const contents = await fs.readFile(options.tlsCertificateKeyFile);
-          options.key ??= contents;
-          options.cert ??= contents;
-        }
-      }
-    }
-    if (typeof options.srvHost === 'string') {
-      const hosts = await resolveSRVRecord(options);
-
-      for (const [index, host] of hosts.entries()) {
-        options.hosts[index] = host;
-      }
-    }
-
-    // It is important to perform validation of hosts AFTER SRV resolution, to check the real hostname,
-    // but BEFORE we even attempt connecting with a potentially not allowed hostname
-    if (options.credentials?.mechanism === AuthMechanism.MONGODB_OIDC) {
-      const allowedHosts =
-        options.credentials?.mechanismProperties?.ALLOWED_HOSTS || DEFAULT_ALLOWED_HOSTS;
-      const isServiceAuth = !!options.credentials?.mechanismProperties?.PROVIDER_NAME;
-      if (!isServiceAuth) {
-        for (const host of options.hosts) {
-          if (!hostMatchesWildcards(host.toHostPort().host, allowedHosts)) {
-            throw new MongoInvalidArgumentError(
-              `Host '${host}' is not valid for OIDC authentication with ALLOWED_HOSTS of '${allowedHosts.join(
-                ','
-              )}'`
-            );
-          }
-        }
-      }
-    }
-
-    this.topology = new Topology(this, options.hosts, options);
-    // Events can be emitted before initialization is complete so we have to
-    // save the reference to the topology on the client ASAP if the event handlers need to access it
-
-    this.topology.once(Topology.OPEN, () => this.emit('open', this));
-
-    for (const event of MONGO_CLIENT_EVENTS) {
-      this.topology.on(event, (...args: any[]) => this.emit(event, ...(args as any)));
-    }
-
-    const topologyConnect = async () => {
-      try {
-        await promisify(callback => this.topology?.connect(options, callback))();
-      } catch (error) {
-        this.topology?.close({ force: true });
-        throw error;
-      }
-    };
-
-    if (this.autoEncrypter) {
-      await this.autoEncrypter?.init();
-      await topologyConnect();
-      await options.encrypter.connectInternalClient();
-    } else {
-      await topologyConnect();
-    }
-
-    return this;
-  }
-
-  /**
-   * Close the client and its underlying connections
-   *
-   * @param force - Force close, emitting no events
-   */
-  async close(force = false): Promise<void> {
-    // There's no way to set hasBeenClosed back to false
-    Object.defineProperty(this.s, 'hasBeenClosed', {
-      value: true,
-      enumerable: true,
-      configurable: false,
-      writable: false
-    });
-
-    const activeSessionEnds = Array.from(this.s.activeSessions, session => session.endSession());
-    this.s.activeSessions.clear();
-
-    await Promise.all(activeSessionEnds);
-
-    if (this.topology == null) {
-      return;
-    }
-
-    // If we would attempt to select a server and get nothing back we short circuit
-    // to avoid the server selection timeout.
-    const selector = readPreferenceServerSelector(ReadPreference.primaryPreferred);
-    const topologyDescription = this.topology.description;
-    const serverDescriptions = Array.from(topologyDescription.servers.values());
-    const servers = selector(topologyDescription, serverDescriptions);
-    if (servers.length !== 0) {
-      const endSessions = Array.from(this.s.sessionPool.sessions, ({ id }) => id);
-      if (endSessions.length !== 0) {
-        await executeOperation(
-          this,
-          new RunAdminCommandOperation(
-            { endSessions },
-            { readPreference: ReadPreference.primaryPreferred, noResponse: true }
-          )
-        ).catch(() => null); // outcome does not matter;
-      }
-    }
-
-    // clear out references to old topology
-    const topology = this.topology;
-    this.topology = undefined;
-
-    await new Promise<void>((resolve, reject) => {
-      topology.close({ force }, error => {
-        if (error) return reject(error);
-        const { encrypter } = this[kOptions];
-        if (encrypter) {
-          return encrypter.closeCallback(this, force, error => {
-            if (error) return reject(error);
-            resolve();
-          });
-        }
-        resolve();
-      });
-    });
-  }
-
-  /**
-   * Create a new Db instance sharing the current socket connections.
-   *
-   * @param dbName - The name of the database we want to use. If not provided, use database name from connection string.
-   * @param options - Optional settings for Db construction
-   */
-  db(dbName?: string, options?: DbOptions): Db {
-    options = options ?? {};
-
-    // Default to db from connection string if not provided
-    if (!dbName) {
-      dbName = this.options.dbName;
-    }
-
-    // Copy the options and add out internal override of the not shared flag
-    const finalOptions = Object.assign({}, this[kOptions], options);
-
-    // Return the db object
-    const db = new Db(this, dbName, finalOptions);
-
-    // Return the database
-    return db;
-  }
-
-  /**
-   * Connect to MongoDB using a url
-   *
-   * @remarks
-   * The programmatically provided options take precedence over the URI options.
-   *
-   * @see https://www.mongodb.com/docs/manual/reference/connection-string/
-   */
-  static async connect(url: string, options?: MongoClientOptions): Promise<MongoClient> {
-    const client = new this(url, options);
-    return client.connect();
-  }
-
-  /**
-   * Creates a new ClientSession. When using the returned session in an operation
-   * a corresponding ServerSession will be created.
-   *
-   * @remarks
-   * A ClientSession instance may only be passed to operations being performed on the same
-   * MongoClient it was started from.
-   */
-  startSession(options?: ClientSessionOptions): ClientSession {
-    const session = new ClientSession(
-      this,
-      this.s.sessionPool,
-      { explicit: true, ...options },
-      this[kOptions]
-    );
-    this.s.activeSessions.add(session);
-    session.once('ended', () => {
-      this.s.activeSessions.delete(session);
-    });
-    return session;
-  }
-
-  /**
-   * A convenience method for creating and handling the clean up of a ClientSession.
-   * The session will always be ended when the executor finishes.
-   *
-   * @param executor - An executor function that all operations using the provided session must be invoked in
-   * @param options - optional settings for the session
-   */
-  async withSession<T = any>(executor: WithSessionCallback<T>): Promise<T>;
-  async withSession<T = any>(
-    options: ClientSessionOptions,
-    executor: WithSessionCallback<T>
-  ): Promise<T>;
-  async withSession<T = any>(
-    optionsOrExecutor: ClientSessionOptions | WithSessionCallback<T>,
-    executor?: WithSessionCallback<T>
-  ): Promise<T> {
-    const options = {
-      // Always define an owner
-      owner: Symbol(),
-      // If it's an object inherit the options
-      ...(typeof optionsOrExecutor === 'object' ? optionsOrExecutor : {})
-    };
-
-    const withSessionCallback =
-      typeof optionsOrExecutor === 'function' ? optionsOrExecutor : executor;
-
-    if (withSessionCallback == null) {
-      throw new MongoInvalidArgumentError('Missing required callback parameter');
-    }
-
-    const session = this.startSession(options);
-
-    try {
-      return await withSessionCallback(session);
-    } finally {
-      try {
-        await session.endSession();
-      } catch {
-        // We are not concerned with errors from endSession()
-      }
-    }
-  }
-
-  /**
-   * Create a new Change Stream, watching for new changes (insertions, updates,
-   * replacements, deletions, and invalidations) in this cluster. Will ignore all
-   * changes to system collections, as well as the local, admin, and config databases.
-   *
-   * @remarks
-   * watch() accepts two generic arguments for distinct use cases:
-   * - The first is to provide the schema that may be defined for all the data within the current cluster
-   * - The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument
-   *
-   * @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.
-   * @param options - Optional settings for the command
-   * @typeParam TSchema - Type of the data being detected by the change stream
-   * @typeParam TChange - Type of the whole change stream document emitted
-   */
-  watch<
-    TSchema extends Document = Document,
-    TChange extends Document = ChangeStreamDocument<TSchema>
-  >(pipeline: Document[] = [], options: ChangeStreamOptions = {}): ChangeStream<TSchema, TChange> {
-    // Allow optionally not specifying a pipeline
-    if (!Array.isArray(pipeline)) {
-      options = pipeline;
-      pipeline = [];
-    }
-
-    return new ChangeStream<TSchema, TChange>(this, pipeline, resolveOptions(this, options));
-  }
-}
-
-/**
- * Parsed Mongo Client Options.
- *
- * User supplied options are documented by `MongoClientOptions`.
- *
- * **NOTE:** The client's options parsing is subject to change to support new features.
- * This type is provided to aid with inspection of options after parsing, it should not be relied upon programmatically.
- *
- * Options are sourced from:
- * - connection string
- * - options object passed to the MongoClient constructor
- * - file system (ex. tls settings)
- * - environment variables
- * - DNS SRV records and TXT records
- *
- * Not all options may be present after client construction as some are obtained from asynchronous operations.
- *
- * @public
- */
-export interface MongoOptions
-  extends Required<
-      Pick<
-        MongoClientOptions,
-        | 'autoEncryption'
-        | 'connectTimeoutMS'
-        | 'directConnection'
-        | 'driverInfo'
-        | 'forceServerObjectId'
-        | 'minHeartbeatFrequencyMS'
-        | 'heartbeatFrequencyMS'
-        | 'localThresholdMS'
-        | 'maxConnecting'
-        | 'maxIdleTimeMS'
-        | 'maxPoolSize'
-        | 'minPoolSize'
-        | 'monitorCommands'
-        | 'noDelay'
-        | 'pkFactory'
-        | 'raw'
-        | 'replicaSet'
-        | 'retryReads'
-        | 'retryWrites'
-        | 'serverSelectionTimeoutMS'
-        | 'socketTimeoutMS'
-        | 'srvMaxHosts'
-        | 'srvServiceName'
-        | 'tlsAllowInvalidCertificates'
-        | 'tlsAllowInvalidHostnames'
-        | 'tlsInsecure'
-        | 'waitQueueTimeoutMS'
-        | 'zlibCompressionLevel'
-      >
-    >,
-    SupportedNodeConnectionOptions {
-  appName?: string;
-  hosts: HostAddress[];
-  srvHost?: string;
-  credentials?: MongoCredentials;
-  readPreference: ReadPreference;
-  readConcern: ReadConcern;
-  loadBalanced: boolean;
-  serverApi: ServerApi;
-  compressors: CompressorName[];
-  writeConcern: WriteConcern;
-  dbName: string;
-  metadata: ClientMetadata;
-  /** @internal */
-  autoEncrypter?: AutoEncrypter;
-  proxyHost?: string;
-  proxyPort?: number;
-  proxyUsername?: string;
-  proxyPassword?: string;
-  serverMonitoringMode: ServerMonitoringMode;
-
-  /** @internal */
-  connectionType?: typeof Connection;
-
-  /** @internal */
-  encrypter: Encrypter;
-  /** @internal */
-  userSpecifiedAuthSource: boolean;
-  /** @internal */
-  userSpecifiedReplicaSet: boolean;
-
-  /**
-   * # NOTE ABOUT TLS Options
-   *
-   * If `tls` is provided as an option, it is equivalent to setting the `ssl` option.
-   *
-   * NodeJS native TLS options are passed through to the socket and retain their original types.
-   *
-   * ### Additional options:
-   *
-   * | nodejs native option  | driver spec equivalent option name            | driver option type |
-   * |:----------------------|:----------------------------------------------|:-------------------|
-   * | `ca`                  | `tlsCAFile`                                   | `string`           |
-   * | `crl`                 | `tlsCRLFile`                                  | `string`           |
-   * | `cert`                | `tlsCertificateKeyFile`                       | `string`           |
-   * | `key`                 | `tlsCertificateKeyFile`                       | `string`           |
-   * | `passphrase`          | `tlsCertificateKeyFilePassword`               | `string`           |
-   * | `rejectUnauthorized`  | `tlsAllowInvalidCertificates`                 | `boolean`          |
-   * | `checkServerIdentity` | `tlsAllowInvalidHostnames`                    | `boolean`          |
-   * | see note below        | `tlsInsecure`                                 | `boolean`          |
-   *
-   * If `tlsInsecure` is set to `true`, then it will set the node native options `checkServerIdentity`
-   * to a no-op and `rejectUnauthorized` to `false`.
-   *
-   * If `tlsInsecure` is set to `false`, then it will set the node native options `checkServerIdentity`
-   * to a no-op and `rejectUnauthorized` to the inverse value of `tlsAllowInvalidCertificates`. If
-   * `tlsAllowInvalidCertificates` is not set, then `rejectUnauthorized` will be set to `true`.
-   *
-   * ### Note on `tlsCAFile`, `tlsCertificateKeyFile` and `tlsCRLFile`
-   *
-   * The files specified by the paths passed in to the `tlsCAFile`, `tlsCertificateKeyFile` and `tlsCRLFile`
-   * fields are read lazily on the first call to `MongoClient.connect`. Once these files have been read and
-   * the `ca`, `cert`, `crl` and `key` fields are populated, they will not be read again on subsequent calls to
-   * `MongoClient.connect`. As a result, until the first call to `MongoClient.connect`, the `ca`,
-   * `cert`, `crl` and `key` fields will be undefined.
-   */
-  tls: boolean;
-  tlsCAFile?: string;
-  tlsCRLFile?: string;
-  tlsCertificateKeyFile?: string;
-
-  /** @internal */
-  [featureFlag: symbol]: any;
-
-  /**
-   * @internal
-   * TODO: NODE-5671 - remove internal flag
-   */
-  mongoLoggerOptions: MongoLoggerOptions;
-  /**
-   * @internal
-   * TODO: NODE-5671 - remove internal flag
-   */
-  mongodbLogPath?: 'stderr' | 'stdout' | MongoDBLogWritable;
-}
diff --git a/server/data-import/node_modules/mongodb/src/mongo_logger.ts b/server/data-import/node_modules/mongodb/src/mongo_logger.ts
deleted file mode 100644
index 27560ac0d6ea75b7ae8e88fb2334f8a3f372ce9e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/mongo_logger.ts
+++ /dev/null
@@ -1,598 +0,0 @@
-import { EJSON } from 'bson';
-import type { Writable } from 'stream';
-import { inspect } from 'util';
-
-import type {
-  CommandFailedEvent,
-  CommandStartedEvent,
-  CommandSucceededEvent
-} from './cmap/command_monitoring_events';
-import type {
-  ConnectionCheckedInEvent,
-  ConnectionCheckedOutEvent,
-  ConnectionCheckOutFailedEvent,
-  ConnectionCheckOutStartedEvent,
-  ConnectionClosedEvent,
-  ConnectionCreatedEvent,
-  ConnectionPoolClearedEvent,
-  ConnectionPoolClosedEvent,
-  ConnectionPoolCreatedEvent,
-  ConnectionPoolMonitoringEvent,
-  ConnectionPoolReadyEvent,
-  ConnectionReadyEvent
-} from './cmap/connection_pool_events';
-import {
-  COMMAND_FAILED,
-  COMMAND_STARTED,
-  COMMAND_SUCCEEDED,
-  CONNECTION_CHECK_OUT_FAILED,
-  CONNECTION_CHECK_OUT_STARTED,
-  CONNECTION_CHECKED_IN,
-  CONNECTION_CHECKED_OUT,
-  CONNECTION_CLOSED,
-  CONNECTION_CREATED,
-  CONNECTION_POOL_CLEARED,
-  CONNECTION_POOL_CLOSED,
-  CONNECTION_POOL_CREATED,
-  CONNECTION_POOL_READY,
-  CONNECTION_READY
-} from './constants';
-import { HostAddress, parseUnsignedInteger } from './utils';
-
-/** @internal */
-export const SeverityLevel = Object.freeze({
-  EMERGENCY: 'emergency',
-  ALERT: 'alert',
-  CRITICAL: 'critical',
-  ERROR: 'error',
-  WARNING: 'warn',
-  NOTICE: 'notice',
-  INFORMATIONAL: 'info',
-  DEBUG: 'debug',
-  TRACE: 'trace',
-  OFF: 'off'
-} as const);
-
-/** @internal */
-export const DEFAULT_MAX_DOCUMENT_LENGTH = 1000;
-/** @internal */
-export type SeverityLevel = (typeof SeverityLevel)[keyof typeof SeverityLevel];
-
-/** @internal */
-class SeverityLevelMap extends Map<SeverityLevel | number, SeverityLevel | number> {
-  constructor(entries: [SeverityLevel | number, SeverityLevel | number][]) {
-    const newEntries: [number | SeverityLevel, SeverityLevel | number][] = [];
-    for (const [level, value] of entries) {
-      newEntries.push([value, level]);
-    }
-
-    newEntries.push(...entries);
-    super(newEntries);
-  }
-
-  getNumericSeverityLevel(severity: SeverityLevel): number {
-    return this.get(severity) as number;
-  }
-
-  getSeverityLevelName(level: number): SeverityLevel | undefined {
-    return this.get(level) as SeverityLevel | undefined;
-  }
-}
-
-/** @internal */
-export const SEVERITY_LEVEL_MAP = new SeverityLevelMap([
-  [SeverityLevel.OFF, -Infinity],
-  [SeverityLevel.EMERGENCY, 0],
-  [SeverityLevel.ALERT, 1],
-  [SeverityLevel.CRITICAL, 2],
-  [SeverityLevel.ERROR, 3],
-  [SeverityLevel.WARNING, 4],
-  [SeverityLevel.NOTICE, 5],
-  [SeverityLevel.INFORMATIONAL, 6],
-  [SeverityLevel.DEBUG, 7],
-  [SeverityLevel.TRACE, 8]
-]);
-
-/** @internal */
-export const MongoLoggableComponent = Object.freeze({
-  COMMAND: 'command',
-  TOPOLOGY: 'topology',
-  SERVER_SELECTION: 'serverSelection',
-  CONNECTION: 'connection',
-  CLIENT: 'client'
-} as const);
-
-/** @internal */
-export type MongoLoggableComponent =
-  (typeof MongoLoggableComponent)[keyof typeof MongoLoggableComponent];
-
-/** @internal */
-export interface MongoLoggerEnvOptions {
-  /** Severity level for command component */
-  MONGODB_LOG_COMMAND?: string;
-  /** Severity level for topology component */
-  MONGODB_LOG_TOPOLOGY?: string;
-  /** Severity level for server selection component */
-  MONGODB_LOG_SERVER_SELECTION?: string;
-  /** Severity level for CMAP */
-  MONGODB_LOG_CONNECTION?: string;
-  /** Severity level for client */
-  MONGODB_LOG_CLIENT?: string;
-  /** Default severity level to be if any of the above are unset */
-  MONGODB_LOG_ALL?: string;
-  /** Max length of embedded EJSON docs. Setting to 0 disables truncation. Defaults to 1000. */
-  MONGODB_LOG_MAX_DOCUMENT_LENGTH?: string;
-  /** Destination for log messages. Must be 'stderr', 'stdout'. Defaults to 'stderr'. */
-  MONGODB_LOG_PATH?: string;
-}
-
-/** @internal */
-export interface LogComponentSeveritiesClientOptions {
-  /** Optional severity level for command component */
-  command?: SeverityLevel;
-  /** Optional severity level for topology component */
-  topology?: SeverityLevel;
-  /** Optionsl severity level for server selection component */
-  serverSelection?: SeverityLevel;
-  /** Optional severity level for connection component */
-  connection?: SeverityLevel;
-  /** Optional severity level for client component */
-  client?: SeverityLevel;
-  /** Optional default severity level to be used if any of the above are unset */
-  default?: SeverityLevel;
-}
-
-/** @internal */
-export interface MongoLoggerMongoClientOptions {
-  /** Destination for log messages */
-  mongodbLogPath?: 'stdout' | 'stderr' | MongoDBLogWritable;
-  /** Severity levels for logger components */
-  mongodbLogComponentSeverities?: LogComponentSeveritiesClientOptions;
-  /** Max length of embedded EJSON docs. Setting to 0 disables truncation. Defaults to 1000. */
-  mongodbLogMaxDocumentLength?: number;
-}
-
-/** @internal */
-export interface MongoLoggerOptions {
-  componentSeverities: {
-    /** Severity level for command component */
-    command: SeverityLevel;
-    /** Severity level for topology component */
-    topology: SeverityLevel;
-    /** Severity level for server selection component */
-    serverSelection: SeverityLevel;
-    /** Severity level for connection component */
-    connection: SeverityLevel;
-    /** Severity level for client component */
-    client: SeverityLevel;
-    /** Default severity level to be used if any of the above are unset */
-    default: SeverityLevel;
-  };
-  /** Max length of embedded EJSON docs. Setting to 0 disables truncation. Defaults to 1000. */
-  maxDocumentLength: number;
-  /** Destination for log messages. */
-  logDestination: Writable | MongoDBLogWritable;
-}
-
-/**
- * Parses a string as one of SeverityLevel
- *
- * @param s - the value to be parsed
- * @returns one of SeverityLevel if value can be parsed as such, otherwise null
- */
-function parseSeverityFromString(s?: string): SeverityLevel | null {
-  const validSeverities: string[] = Object.values(SeverityLevel);
-  const lowerSeverity = s?.toLowerCase();
-
-  if (lowerSeverity != null && validSeverities.includes(lowerSeverity)) {
-    return lowerSeverity as SeverityLevel;
-  }
-
-  return null;
-}
-
-/** @internal */
-export function createStdioLogger(stream: {
-  write: NodeJS.WriteStream['write'];
-}): MongoDBLogWritable {
-  return {
-    write: (log: Log): unknown => {
-      stream.write(inspect(log, { compact: true, breakLength: Infinity }), 'utf-8');
-      return;
-    }
-  };
-}
-
-/**
- * resolves the MONGODB_LOG_PATH and mongodbLogPath options from the environment and the
- * mongo client options respectively. The mongodbLogPath can be either 'stdout', 'stderr', a NodeJS
- * Writable or an object which has a `write` method with the signature:
- * ```ts
- * write(log: Log): void
- * ```
- *
- * @returns the MongoDBLogWritable object to write logs to
- */
-function resolveLogPath(
-  { MONGODB_LOG_PATH }: MongoLoggerEnvOptions,
-  { mongodbLogPath }: MongoLoggerMongoClientOptions
-): MongoDBLogWritable {
-  if (typeof mongodbLogPath === 'string' && /^stderr$/i.test(mongodbLogPath)) {
-    return createStdioLogger(process.stderr);
-  }
-  if (typeof mongodbLogPath === 'string' && /^stdout$/i.test(mongodbLogPath)) {
-    return createStdioLogger(process.stdout);
-  }
-
-  if (typeof mongodbLogPath === 'object' && typeof mongodbLogPath?.write === 'function') {
-    return mongodbLogPath;
-  }
-
-  if (MONGODB_LOG_PATH && /^stderr$/i.test(MONGODB_LOG_PATH)) {
-    return createStdioLogger(process.stderr);
-  }
-  if (MONGODB_LOG_PATH && /^stdout$/i.test(MONGODB_LOG_PATH)) {
-    return createStdioLogger(process.stdout);
-  }
-
-  return createStdioLogger(process.stderr);
-}
-
-function resolveSeverityConfiguration(
-  clientOption: string | undefined,
-  environmentOption: string | undefined,
-  defaultSeverity: SeverityLevel
-): SeverityLevel {
-  return (
-    parseSeverityFromString(clientOption) ??
-    parseSeverityFromString(environmentOption) ??
-    defaultSeverity
-  );
-}
-
-/** @internal */
-export interface Log extends Record<string, any> {
-  t: Date;
-  c: MongoLoggableComponent;
-  s: SeverityLevel;
-  message?: string;
-}
-
-/** @internal */
-export interface MongoDBLogWritable {
-  write(log: Log): void;
-}
-
-function compareSeverity(s0: SeverityLevel, s1: SeverityLevel): 1 | 0 | -1 {
-  const s0Num = SEVERITY_LEVEL_MAP.getNumericSeverityLevel(s0);
-  const s1Num = SEVERITY_LEVEL_MAP.getNumericSeverityLevel(s1);
-
-  return s0Num < s1Num ? -1 : s0Num > s1Num ? 1 : 0;
-}
-
-/** @internal */
-export type LoggableEvent =
-  | CommandStartedEvent
-  | CommandSucceededEvent
-  | CommandFailedEvent
-  | ConnectionPoolCreatedEvent
-  | ConnectionPoolReadyEvent
-  | ConnectionPoolClosedEvent
-  | ConnectionPoolClearedEvent
-  | ConnectionCreatedEvent
-  | ConnectionReadyEvent
-  | ConnectionClosedEvent
-  | ConnectionCheckedInEvent
-  | ConnectionCheckedOutEvent
-  | ConnectionCheckOutStartedEvent
-  | ConnectionCheckOutFailedEvent;
-
-/** @internal */
-export interface LogConvertible extends Record<string, any> {
-  toLog(): Record<string, any>;
-}
-
-/** @internal */
-export function stringifyWithMaxLen(value: any, maxDocumentLength: number): string {
-  const ejson = EJSON.stringify(value);
-
-  return maxDocumentLength !== 0 && ejson.length > maxDocumentLength
-    ? `${ejson.slice(0, maxDocumentLength)}...`
-    : ejson;
-}
-
-/** @internal */
-export type Loggable = LoggableEvent | LogConvertible;
-
-function isLogConvertible(obj: Loggable): obj is LogConvertible {
-  const objAsLogConvertible = obj as LogConvertible;
-  // eslint-disable-next-line no-restricted-syntax
-  return objAsLogConvertible.toLog !== undefined && typeof objAsLogConvertible.toLog === 'function';
-}
-
-function attachCommandFields(
-  log: Record<string, any>,
-  commandEvent: CommandStartedEvent | CommandSucceededEvent | CommandFailedEvent
-) {
-  log.commandName = commandEvent.commandName;
-  log.requestId = commandEvent.requestId;
-  log.driverConnectionId = commandEvent?.connectionId;
-  const { host, port } = HostAddress.fromString(commandEvent.address).toHostPort();
-  log.serverHost = host;
-  log.serverPort = port;
-  if (commandEvent?.serviceId) {
-    log.serviceId = commandEvent.serviceId.toHexString();
-  }
-
-  return log;
-}
-
-function attachConnectionFields(
-  log: Record<string, any>,
-  connectionPoolEvent: ConnectionPoolMonitoringEvent
-) {
-  const { host, port } = HostAddress.fromString(connectionPoolEvent.address).toHostPort();
-  log.serverHost = host;
-  log.serverPort = port;
-
-  return log;
-}
-
-function defaultLogTransform(
-  logObject: LoggableEvent | Record<string, any>,
-  maxDocumentLength: number = DEFAULT_MAX_DOCUMENT_LENGTH
-): Omit<Log, 's' | 't' | 'c'> {
-  let log: Omit<Log, 's' | 't' | 'c'> = Object.create(null);
-
-  switch (logObject.name) {
-    case COMMAND_STARTED:
-      log = attachCommandFields(log, logObject);
-      log.message = 'Command started';
-      log.command = stringifyWithMaxLen(logObject.command, maxDocumentLength);
-      log.databaseName = logObject.databaseName;
-      return log;
-    case COMMAND_SUCCEEDED:
-      log = attachCommandFields(log, logObject);
-      log.message = 'Command succeeded';
-      log.durationMS = logObject.duration;
-      log.reply = stringifyWithMaxLen(logObject.reply, maxDocumentLength);
-      return log;
-    case COMMAND_FAILED:
-      log = attachCommandFields(log, logObject);
-      log.message = 'Command failed';
-      log.durationMS = logObject.duration;
-      log.failure = logObject.failure;
-      return log;
-    case CONNECTION_POOL_CREATED:
-      log = attachConnectionFields(log, logObject);
-      log.message = 'Connection pool created';
-      if (logObject.options) {
-        const { maxIdleTimeMS, minPoolSize, maxPoolSize, maxConnecting, waitQueueTimeoutMS } =
-          logObject.options;
-        log = {
-          ...log,
-          maxIdleTimeMS,
-          minPoolSize,
-          maxPoolSize,
-          maxConnecting,
-          waitQueueTimeoutMS
-        };
-      }
-      return log;
-    case CONNECTION_POOL_READY:
-      log = attachConnectionFields(log, logObject);
-      log.message = 'Connection pool ready';
-      return log;
-    case CONNECTION_POOL_CLEARED:
-      log = attachConnectionFields(log, logObject);
-      log.message = 'Connection pool cleared';
-      if (logObject.serviceId?._bsontype === 'ObjectId') {
-        log.serviceId = logObject.serviceId.toHexString();
-      }
-      return log;
-    case CONNECTION_POOL_CLOSED:
-      log = attachConnectionFields(log, logObject);
-      log.message = 'Connection pool closed';
-      return log;
-    case CONNECTION_CREATED:
-      log = attachConnectionFields(log, logObject);
-      log.message = 'Connection created';
-      log.driverConnectionId = logObject.connectionId;
-      return log;
-    case CONNECTION_READY:
-      log = attachConnectionFields(log, logObject);
-      log.message = 'Connection ready';
-      log.driverConnectionId = logObject.connectionId;
-      return log;
-    case CONNECTION_CLOSED:
-      log = attachConnectionFields(log, logObject);
-      log.message = 'Connection closed';
-      log.driverConnectionId = logObject.connectionId;
-      switch (logObject.reason) {
-        case 'stale':
-          log.reason = 'Connection became stale because the pool was cleared';
-          break;
-        case 'idle':
-          log.reason =
-            'Connection has been available but unused for longer than the configured max idle time';
-          break;
-        case 'error':
-          log.reason = 'An error occurred while using the connection';
-          if (logObject.error) {
-            log.error = logObject.error;
-          }
-          break;
-        case 'poolClosed':
-          log.reason = 'Connection pool was closed';
-          break;
-        default:
-          log.reason = `Unknown close reason: ${logObject.reason}`;
-      }
-      return log;
-    case CONNECTION_CHECK_OUT_STARTED:
-      log = attachConnectionFields(log, logObject);
-      log.message = 'Connection checkout started';
-      return log;
-    case CONNECTION_CHECK_OUT_FAILED:
-      log = attachConnectionFields(log, logObject);
-      log.message = 'Connection checkout failed';
-      switch (logObject.reason) {
-        case 'poolClosed':
-          log.reason = 'Connection pool was closed';
-          break;
-        case 'timeout':
-          log.reason = 'Wait queue timeout elapsed without a connection becoming available';
-          break;
-        case 'connectionError':
-          log.reason = 'An error occurred while trying to establish a new connection';
-          if (logObject.error) {
-            log.error = logObject.error;
-          }
-          break;
-        default:
-          log.reason = `Unknown close reason: ${logObject.reason}`;
-      }
-      return log;
-    case CONNECTION_CHECKED_OUT:
-      log = attachConnectionFields(log, logObject);
-      log.message = 'Connection checked out';
-
-      log.driverConnectionId = logObject.connectionId;
-      return log;
-    case CONNECTION_CHECKED_IN:
-      log = attachConnectionFields(log, logObject);
-      log.message = 'Connection checked in';
-      log.driverConnectionId = logObject.connectionId;
-      return log;
-    default:
-      for (const [key, value] of Object.entries(logObject)) {
-        if (value != null) log[key] = value;
-      }
-  }
-  return log;
-}
-
-/** @internal */
-export class MongoLogger {
-  componentSeverities: Record<MongoLoggableComponent, SeverityLevel>;
-  maxDocumentLength: number;
-  logDestination: MongoDBLogWritable | Writable;
-
-  /**
-   * This method should be used when logging errors that do not have a public driver API for
-   * reporting errors.
-   */
-  error = this.log.bind(this, 'error');
-  /**
-   * This method should be used to log situations where undesirable application behaviour might
-   * occur. For example, failing to end sessions on `MongoClient.close`.
-   */
-  warn = this.log.bind(this, 'warn');
-  /**
-   * This method should be used to report high-level information about normal driver behaviour.
-   * For example, the creation of a `MongoClient`.
-   */
-  info = this.log.bind(this, 'info');
-  /**
-   * This method should be used to report information that would be helpful when debugging an
-   * application. For example, a command starting, succeeding or failing.
-   */
-  debug = this.log.bind(this, 'debug');
-  /**
-   * This method should be used to report fine-grained details related to logic flow. For example,
-   * entering and exiting a function body.
-   */
-  trace = this.log.bind(this, 'trace');
-
-  constructor(options: MongoLoggerOptions) {
-    this.componentSeverities = options.componentSeverities;
-    this.maxDocumentLength = options.maxDocumentLength;
-    this.logDestination = options.logDestination;
-  }
-
-  private log(
-    severity: SeverityLevel,
-    component: MongoLoggableComponent,
-    message: Loggable | string
-  ): void {
-    if (compareSeverity(severity, this.componentSeverities[component]) > 0) return;
-
-    let logMessage: Log = { t: new Date(), c: component, s: severity };
-    if (typeof message === 'string') {
-      logMessage.message = message;
-    } else if (typeof message === 'object') {
-      if (isLogConvertible(message)) {
-        logMessage = { ...logMessage, ...message.toLog() };
-      } else {
-        logMessage = { ...logMessage, ...defaultLogTransform(message, this.maxDocumentLength) };
-      }
-    }
-    this.logDestination.write(logMessage);
-  }
-
-  /**
-   * Merges options set through environment variables and the MongoClient, preferring environment
-   * variables when both are set, and substituting defaults for values not set. Options set in
-   * constructor take precedence over both environment variables and MongoClient options.
-   *
-   * @remarks
-   * When parsing component severity levels, invalid values are treated as unset and replaced with
-   * the default severity.
-   *
-   * @param envOptions - options set for the logger from the environment
-   * @param clientOptions - options set for the logger in the MongoClient options
-   * @returns a MongoLoggerOptions object to be used when instantiating a new MongoLogger
-   */
-  static resolveOptions(
-    envOptions: MongoLoggerEnvOptions,
-    clientOptions: MongoLoggerMongoClientOptions
-  ): MongoLoggerOptions {
-    // client options take precedence over env options
-    const combinedOptions = {
-      ...envOptions,
-      ...clientOptions,
-      mongodbLogPath: resolveLogPath(envOptions, clientOptions)
-    };
-    const defaultSeverity = resolveSeverityConfiguration(
-      combinedOptions.mongodbLogComponentSeverities?.default,
-      combinedOptions.MONGODB_LOG_ALL,
-      SeverityLevel.OFF
-    );
-
-    return {
-      componentSeverities: {
-        command: resolveSeverityConfiguration(
-          combinedOptions.mongodbLogComponentSeverities?.command,
-          combinedOptions.MONGODB_LOG_COMMAND,
-          defaultSeverity
-        ),
-        topology: resolveSeverityConfiguration(
-          combinedOptions.mongodbLogComponentSeverities?.topology,
-          combinedOptions.MONGODB_LOG_TOPOLOGY,
-          defaultSeverity
-        ),
-        serverSelection: resolveSeverityConfiguration(
-          combinedOptions.mongodbLogComponentSeverities?.serverSelection,
-          combinedOptions.MONGODB_LOG_SERVER_SELECTION,
-          defaultSeverity
-        ),
-        connection: resolveSeverityConfiguration(
-          combinedOptions.mongodbLogComponentSeverities?.connection,
-          combinedOptions.MONGODB_LOG_CONNECTION,
-          defaultSeverity
-        ),
-        client: resolveSeverityConfiguration(
-          combinedOptions.mongodbLogComponentSeverities?.client,
-          combinedOptions.MONGODB_LOG_CLIENT,
-          defaultSeverity
-        ),
-        default: defaultSeverity
-      },
-      maxDocumentLength:
-        combinedOptions.mongodbLogMaxDocumentLength ??
-        parseUnsignedInteger(combinedOptions.MONGODB_LOG_MAX_DOCUMENT_LENGTH) ??
-        1000,
-      logDestination: combinedOptions.mongodbLogPath
-    };
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/mongo_types.ts b/server/data-import/node_modules/mongodb/src/mongo_types.ts
deleted file mode 100644
index adfec0af67de311c1657c7af92547a995645364b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/mongo_types.ts
+++ /dev/null
@@ -1,575 +0,0 @@
-import type { BSONType, ObjectIdLike } from 'bson';
-import { EventEmitter } from 'events';
-
-import type {
-  Binary,
-  BSONRegExp,
-  Decimal128,
-  Document,
-  Double,
-  Int32,
-  Long,
-  ObjectId,
-  Timestamp
-} from './bson';
-import type { MongoLoggableComponent, MongoLogger } from './mongo_logger';
-import type { Sort } from './sort';
-
-/** @internal */
-export type TODO_NODE_3286 = any;
-
-/** Given an object shaped type, return the type of the _id field or default to ObjectId @public */
-export type InferIdType<TSchema> = TSchema extends { _id: infer IdType }
-  ? // user has defined a type for _id
-    Record<any, never> extends IdType
-    ? never // explicitly forbid empty objects as the type of _id
-    : IdType
-  : TSchema extends { _id?: infer IdType }
-  ? // optional _id defined - return ObjectId | IdType
-    unknown extends IdType
-    ? ObjectId // infer the _id type as ObjectId if the type of _id is unknown
-    : IdType
-  : ObjectId; // user has not defined _id on schema
-
-/** Add an _id field to an object shaped type @public */
-export type WithId<TSchema> = EnhancedOmit<TSchema, '_id'> & { _id: InferIdType<TSchema> };
-
-/**
- * Add an optional _id field to an object shaped type
- * @public
- */
-export type OptionalId<TSchema> = EnhancedOmit<TSchema, '_id'> & { _id?: InferIdType<TSchema> };
-
-/**
- * Adds an optional _id field to an object shaped type, unless the _id field is required on that type.
- * In the case _id is required, this method continues to require_id.
- *
- * @public
- *
- * @privateRemarks
- * `ObjectId extends TSchema['_id']` is a confusing ordering at first glance. Rather than ask
- * `TSchema['_id'] extends ObjectId` which translated to "Is the _id property ObjectId?"
- * we instead ask "Does ObjectId look like (have the same shape) as the _id?"
- */
-export type OptionalUnlessRequiredId<TSchema> = TSchema extends { _id: any }
-  ? TSchema
-  : OptionalId<TSchema>;
-
-/** TypeScript Omit (Exclude to be specific) does not work for objects with an "any" indexed type, and breaks discriminated unions @public */
-export type EnhancedOmit<TRecordOrUnion, KeyUnion> = string extends keyof TRecordOrUnion
-  ? TRecordOrUnion // TRecordOrUnion has indexed type e.g. { _id: string; [k: string]: any; } or it is "any"
-  : TRecordOrUnion extends any
-  ? Pick<TRecordOrUnion, Exclude<keyof TRecordOrUnion, KeyUnion>> // discriminated unions
-  : never;
-
-/** Remove the _id field from an object shaped type @public */
-export type WithoutId<TSchema> = Omit<TSchema, '_id'>;
-
-/** A MongoDB filter can be some portion of the schema or a set of operators @public */
-export type Filter<TSchema> = {
-  [P in keyof WithId<TSchema>]?: Condition<WithId<TSchema>[P]>;
-} & RootFilterOperators<WithId<TSchema>>;
-
-/** @public */
-export type Condition<T> = AlternativeType<T> | FilterOperators<AlternativeType<T>>;
-
-/**
- * It is possible to search using alternative types in mongodb e.g.
- * string types can be searched using a regex in mongo
- * array types can be searched using their element type
- * @public
- */
-export type AlternativeType<T> = T extends ReadonlyArray<infer U>
-  ? T | RegExpOrString<U>
-  : RegExpOrString<T>;
-
-/** @public */
-export type RegExpOrString<T> = T extends string ? BSONRegExp | RegExp | T : T;
-
-/** @public */
-export interface RootFilterOperators<TSchema> extends Document {
-  $and?: Filter<TSchema>[];
-  $nor?: Filter<TSchema>[];
-  $or?: Filter<TSchema>[];
-  $text?: {
-    $search: string;
-    $language?: string;
-    $caseSensitive?: boolean;
-    $diacriticSensitive?: boolean;
-  };
-  $where?: string | ((this: TSchema) => boolean);
-  $comment?: string | Document;
-}
-
-/**
- * @public
- * A type that extends Document but forbids anything that "looks like" an object id.
- */
-export type NonObjectIdLikeDocument = {
-  [key in keyof ObjectIdLike]?: never;
-} & Document;
-
-/** @public */
-export interface FilterOperators<TValue> extends NonObjectIdLikeDocument {
-  // Comparison
-  $eq?: TValue;
-  $gt?: TValue;
-  $gte?: TValue;
-  $in?: ReadonlyArray<TValue>;
-  $lt?: TValue;
-  $lte?: TValue;
-  $ne?: TValue;
-  $nin?: ReadonlyArray<TValue>;
-  // Logical
-  $not?: TValue extends string ? FilterOperators<TValue> | RegExp : FilterOperators<TValue>;
-  // Element
-  /**
-   * When `true`, `$exists` matches the documents that contain the field,
-   * including documents where the field value is null.
-   */
-  $exists?: boolean;
-  $type?: BSONType | BSONTypeAlias;
-  // Evaluation
-  $expr?: Record<string, any>;
-  $jsonSchema?: Record<string, any>;
-  $mod?: TValue extends number ? [number, number] : never;
-  $regex?: TValue extends string ? RegExp | BSONRegExp | string : never;
-  $options?: TValue extends string ? string : never;
-  // Geospatial
-  $geoIntersects?: { $geometry: Document };
-  $geoWithin?: Document;
-  $near?: Document;
-  $nearSphere?: Document;
-  $maxDistance?: number;
-  // Array
-  $all?: ReadonlyArray<any>;
-  $elemMatch?: Document;
-  $size?: TValue extends ReadonlyArray<any> ? number : never;
-  // Bitwise
-  $bitsAllClear?: BitwiseFilter;
-  $bitsAllSet?: BitwiseFilter;
-  $bitsAnyClear?: BitwiseFilter;
-  $bitsAnySet?: BitwiseFilter;
-  $rand?: Record<string, never>;
-}
-
-/** @public */
-export type BitwiseFilter =
-  | number /** numeric bit mask */
-  | Binary /** BinData bit mask */
-  | ReadonlyArray<number>; /** `[ <position1>, <position2>, ... ]` */
-
-/** @public */
-export type BSONTypeAlias = keyof typeof BSONType;
-
-/** @public */
-export type IsAny<Type, ResultIfAny, ResultIfNotAny> = true extends false & Type
-  ? ResultIfAny
-  : ResultIfNotAny;
-
-/** @public */
-export type Flatten<Type> = Type extends ReadonlyArray<infer Item> ? Item : Type;
-
-/** @public */
-export type ArrayElement<Type> = Type extends ReadonlyArray<infer Item> ? Item : never;
-
-/** @public */
-export type SchemaMember<T, V> = { [P in keyof T]?: V } | { [key: string]: V };
-
-/** @public */
-export type IntegerType = number | Int32 | Long | bigint;
-
-/** @public */
-export type NumericType = IntegerType | Decimal128 | Double;
-
-/** @public */
-export type FilterOperations<T> = T extends Record<string, any>
-  ? { [key in keyof T]?: FilterOperators<T[key]> }
-  : FilterOperators<T>;
-
-/** @public */
-export type KeysOfAType<TSchema, Type> = {
-  [key in keyof TSchema]: NonNullable<TSchema[key]> extends Type ? key : never;
-}[keyof TSchema];
-
-/** @public */
-export type KeysOfOtherType<TSchema, Type> = {
-  [key in keyof TSchema]: NonNullable<TSchema[key]> extends Type ? never : key;
-}[keyof TSchema];
-
-/** @public */
-export type AcceptedFields<TSchema, FieldType, AssignableType> = {
-  readonly [key in KeysOfAType<TSchema, FieldType>]?: AssignableType;
-};
-
-/** It avoids using fields with not acceptable types @public */
-export type NotAcceptedFields<TSchema, FieldType> = {
-  readonly [key in KeysOfOtherType<TSchema, FieldType>]?: never;
-};
-
-/** @public */
-export type OnlyFieldsOfType<TSchema, FieldType = any, AssignableType = FieldType> = IsAny<
-  TSchema[keyof TSchema],
-  Record<string, FieldType>,
-  AcceptedFields<TSchema, FieldType, AssignableType> &
-    NotAcceptedFields<TSchema, FieldType> &
-    Record<string, AssignableType>
->;
-
-/** @public */
-export type MatchKeysAndValues<TSchema> = Readonly<Partial<TSchema>> & Record<string, any>;
-
-/** @public */
-export type AddToSetOperators<Type> = {
-  $each?: Array<Flatten<Type>>;
-};
-
-/** @public */
-export type ArrayOperator<Type> = {
-  $each?: Array<Flatten<Type>>;
-  $slice?: number;
-  $position?: number;
-  $sort?: Sort;
-};
-
-/** @public */
-export type SetFields<TSchema> = ({
-  readonly [key in KeysOfAType<TSchema, ReadonlyArray<any> | undefined>]?:
-    | OptionalId<Flatten<TSchema[key]>>
-    | AddToSetOperators<Array<OptionalId<Flatten<TSchema[key]>>>>;
-} & NotAcceptedFields<TSchema, ReadonlyArray<any> | undefined>) & {
-  readonly [key: string]: AddToSetOperators<any> | any;
-};
-
-/** @public */
-export type PushOperator<TSchema> = ({
-  readonly [key in KeysOfAType<TSchema, ReadonlyArray<any>>]?:
-    | Flatten<TSchema[key]>
-    | ArrayOperator<Array<Flatten<TSchema[key]>>>;
-} & NotAcceptedFields<TSchema, ReadonlyArray<any>>) & {
-  readonly [key: string]: ArrayOperator<any> | any;
-};
-
-/** @public */
-export type PullOperator<TSchema> = ({
-  readonly [key in KeysOfAType<TSchema, ReadonlyArray<any>>]?:
-    | Partial<Flatten<TSchema[key]>>
-    | FilterOperations<Flatten<TSchema[key]>>;
-} & NotAcceptedFields<TSchema, ReadonlyArray<any>>) & {
-  readonly [key: string]: FilterOperators<any> | any;
-};
-
-/** @public */
-export type PullAllOperator<TSchema> = ({
-  readonly [key in KeysOfAType<TSchema, ReadonlyArray<any>>]?: TSchema[key];
-} & NotAcceptedFields<TSchema, ReadonlyArray<any>>) & {
-  readonly [key: string]: ReadonlyArray<any>;
-};
-
-/** @public */
-export type UpdateFilter<TSchema> = {
-  $currentDate?: OnlyFieldsOfType<
-    TSchema,
-    Date | Timestamp,
-    true | { $type: 'date' | 'timestamp' }
-  >;
-  $inc?: OnlyFieldsOfType<TSchema, NumericType | undefined>;
-  $min?: MatchKeysAndValues<TSchema>;
-  $max?: MatchKeysAndValues<TSchema>;
-  $mul?: OnlyFieldsOfType<TSchema, NumericType | undefined>;
-  $rename?: Record<string, string>;
-  $set?: MatchKeysAndValues<TSchema>;
-  $setOnInsert?: MatchKeysAndValues<TSchema>;
-  $unset?: OnlyFieldsOfType<TSchema, any, '' | true | 1>;
-  $addToSet?: SetFields<TSchema>;
-  $pop?: OnlyFieldsOfType<TSchema, ReadonlyArray<any>, 1 | -1>;
-  $pull?: PullOperator<TSchema>;
-  $push?: PushOperator<TSchema>;
-  $pullAll?: PullAllOperator<TSchema>;
-  $bit?: OnlyFieldsOfType<
-    TSchema,
-    NumericType | undefined,
-    { and: IntegerType } | { or: IntegerType } | { xor: IntegerType }
-  >;
-} & Document;
-
-/** @public */
-export type Nullable<AnyType> = AnyType | null | undefined;
-
-/** @public */
-export type OneOrMore<T> = T | ReadonlyArray<T>;
-
-/** @public */
-export type GenericListener = (...args: any[]) => void;
-
-/**
- * Event description type
- * @public
- */
-export type EventsDescription = Record<string, GenericListener>;
-
-/** @public */
-export type CommonEvents = 'newListener' | 'removeListener';
-
-/**
- * Typescript type safe event emitter
- * @public
- */
-export declare interface TypedEventEmitter<Events extends EventsDescription> extends EventEmitter {
-  addListener<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-  addListener(
-    event: CommonEvents,
-    listener: (eventName: string | symbol, listener: GenericListener) => void
-  ): this;
-  addListener(event: string | symbol, listener: GenericListener): this;
-
-  on<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-  on(
-    event: CommonEvents,
-    listener: (eventName: string | symbol, listener: GenericListener) => void
-  ): this;
-  on(event: string | symbol, listener: GenericListener): this;
-
-  once<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-  once(
-    event: CommonEvents,
-    listener: (eventName: string | symbol, listener: GenericListener) => void
-  ): this;
-  once(event: string | symbol, listener: GenericListener): this;
-
-  removeListener<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-  removeListener(
-    event: CommonEvents,
-    listener: (eventName: string | symbol, listener: GenericListener) => void
-  ): this;
-  removeListener(event: string | symbol, listener: GenericListener): this;
-
-  off<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-  off(
-    event: CommonEvents,
-    listener: (eventName: string | symbol, listener: GenericListener) => void
-  ): this;
-  off(event: string | symbol, listener: GenericListener): this;
-
-  removeAllListeners<EventKey extends keyof Events>(
-    event?: EventKey | CommonEvents | symbol | string
-  ): this;
-
-  listeners<EventKey extends keyof Events>(
-    event: EventKey | CommonEvents | symbol | string
-  ): Events[EventKey][];
-
-  rawListeners<EventKey extends keyof Events>(
-    event: EventKey | CommonEvents | symbol | string
-  ): Events[EventKey][];
-
-  emit<EventKey extends keyof Events>(
-    event: EventKey | symbol,
-    ...args: Parameters<Events[EventKey]>
-  ): boolean;
-
-  listenerCount<EventKey extends keyof Events>(
-    type: EventKey | CommonEvents | symbol | string
-  ): number;
-
-  prependListener<EventKey extends keyof Events>(event: EventKey, listener: Events[EventKey]): this;
-  prependListener(
-    event: CommonEvents,
-    listener: (eventName: string | symbol, listener: GenericListener) => void
-  ): this;
-  prependListener(event: string | symbol, listener: GenericListener): this;
-
-  prependOnceListener<EventKey extends keyof Events>(
-    event: EventKey,
-    listener: Events[EventKey]
-  ): this;
-  prependOnceListener(
-    event: CommonEvents,
-    listener: (eventName: string | symbol, listener: GenericListener) => void
-  ): this;
-  prependOnceListener(event: string | symbol, listener: GenericListener): this;
-
-  eventNames(): string[];
-  getMaxListeners(): number;
-  setMaxListeners(n: number): this;
-}
-
-/**
- * Typescript type safe event emitter
- * @public
- */
-
-export class TypedEventEmitter<Events extends EventsDescription> extends EventEmitter {
-  /** @internal */
-  protected mongoLogger?: MongoLogger;
-  /** @internal */
-  protected component?: MongoLoggableComponent;
-  /** @internal */
-  protected emitAndLog<EventKey extends keyof Events>(
-    event: EventKey | symbol,
-    ...args: Parameters<Events[EventKey]>
-  ): void {
-    this.emit(event, ...args);
-    if (this.component) this.mongoLogger?.debug(this.component, args[0]);
-  }
-}
-
-/** @public */
-export class CancellationToken extends TypedEventEmitter<{ cancel(): void }> {}
-
-/**
- * Helper types for dot-notation filter attributes
- */
-
-/** @public */
-export type Join<T extends unknown[], D extends string> = T extends []
-  ? ''
-  : T extends [string | number]
-  ? `${T[0]}`
-  : T extends [string | number, ...infer R]
-  ? `${T[0]}${D}${Join<R, D>}`
-  : string;
-
-/** @public */
-export type PropertyType<Type, Property extends string> = string extends Property
-  ? unknown
-  : Property extends keyof Type
-  ? Type[Property]
-  : Property extends `${number}`
-  ? Type extends ReadonlyArray<infer ArrayType>
-    ? ArrayType
-    : unknown
-  : Property extends `${infer Key}.${infer Rest}`
-  ? Key extends `${number}`
-    ? Type extends ReadonlyArray<infer ArrayType>
-      ? PropertyType<ArrayType, Rest>
-      : unknown
-    : Key extends keyof Type
-    ? Type[Key] extends Map<string, infer MapType>
-      ? MapType
-      : PropertyType<Type[Key], Rest>
-    : unknown
-  : unknown;
-
-/**
- * @public
- * returns tuple of strings (keys to be joined on '.') that represent every path into a schema
- * https://www.mongodb.com/docs/manual/tutorial/query-embedded-documents/
- *
- * @remarks
- * Through testing we determined that a depth of 8 is safe for the typescript compiler
- * and provides reasonable compilation times. This number is otherwise not special and
- * should be changed if issues are found with this level of checking. Beyond this
- * depth any helpers that make use of NestedPaths should devolve to not asserting any
- * type safety on the input.
- */
-export type NestedPaths<Type, Depth extends number[]> = Depth['length'] extends 8
-  ? []
-  : Type extends
-      | string
-      | number
-      | bigint
-      | boolean
-      | Date
-      | RegExp
-      | Buffer
-      | Uint8Array
-      | ((...args: any[]) => any)
-      | { _bsontype: string }
-  ? []
-  : Type extends ReadonlyArray<infer ArrayType>
-  ? [] | [number, ...NestedPaths<ArrayType, [...Depth, 1]>]
-  : Type extends Map<string, any>
-  ? [string]
-  : Type extends object
-  ? {
-      [Key in Extract<keyof Type, string>]: Type[Key] extends Type // type of value extends the parent
-        ? [Key]
-        : // for a recursive union type, the child will never extend the parent type.
-        // but the parent will still extend the child
-        Type extends Type[Key]
-        ? [Key]
-        : Type[Key] extends ReadonlyArray<infer ArrayType> // handling recursive types with arrays
-        ? Type extends ArrayType // is the type of the parent the same as the type of the array?
-          ? [Key] // yes, it's a recursive array type
-          : // for unions, the child type extends the parent
-          ArrayType extends Type
-          ? [Key] // we have a recursive array union
-          : // child is an array, but it's not a recursive array
-            [Key, ...NestedPaths<Type[Key], [...Depth, 1]>]
-        : // child is not structured the same as the parent
-          [Key, ...NestedPaths<Type[Key], [...Depth, 1]>] | [Key];
-    }[Extract<keyof Type, string>]
-  : [];
-
-/**
- * @public
- * returns keys (strings) for every path into a schema with a value of type
- * https://www.mongodb.com/docs/manual/tutorial/query-embedded-documents/
- */
-export type NestedPathsOfType<TSchema, Type> = KeysOfAType<
-  {
-    [Property in Join<NestedPaths<TSchema, []>, '.'>]: PropertyType<TSchema, Property>;
-  },
-  Type
->;
-
-/**
- * @public
- * @experimental
- */
-export type StrictFilter<TSchema> =
-  | Partial<TSchema>
-  | ({
-      [Property in Join<NestedPaths<WithId<TSchema>, []>, '.'>]?: Condition<
-        PropertyType<WithId<TSchema>, Property>
-      >;
-    } & RootFilterOperators<WithId<TSchema>>);
-
-/**
- * @public
- * @experimental
- */
-export type StrictUpdateFilter<TSchema> = {
-  $currentDate?: OnlyFieldsOfType<
-    TSchema,
-    Date | Timestamp,
-    true | { $type: 'date' | 'timestamp' }
-  >;
-  $inc?: OnlyFieldsOfType<TSchema, NumericType | undefined>;
-  $min?: StrictMatchKeysAndValues<TSchema>;
-  $max?: StrictMatchKeysAndValues<TSchema>;
-  $mul?: OnlyFieldsOfType<TSchema, NumericType | undefined>;
-  $rename?: Record<string, string>;
-  $set?: StrictMatchKeysAndValues<TSchema>;
-  $setOnInsert?: StrictMatchKeysAndValues<TSchema>;
-  $unset?: OnlyFieldsOfType<TSchema, any, '' | true | 1>;
-  $addToSet?: SetFields<TSchema>;
-  $pop?: OnlyFieldsOfType<TSchema, ReadonlyArray<any>, 1 | -1>;
-  $pull?: PullOperator<TSchema>;
-  $push?: PushOperator<TSchema>;
-  $pullAll?: PullAllOperator<TSchema>;
-  $bit?: OnlyFieldsOfType<
-    TSchema,
-    NumericType | undefined,
-    { and: IntegerType } | { or: IntegerType } | { xor: IntegerType }
-  >;
-} & Document;
-
-/**
- * @public
- * @experimental
- */
-export type StrictMatchKeysAndValues<TSchema> = Readonly<
-  {
-    [Property in Join<NestedPaths<TSchema, []>, '.'>]?: PropertyType<TSchema, Property>;
-  } & {
-    [Property in `${NestedPathsOfType<TSchema, any[]>}.$${`[${string}]` | ''}`]?: ArrayElement<
-      PropertyType<TSchema, Property extends `${infer Key}.$${string}` ? Key : never>
-    >;
-  } & {
-    [Property in `${NestedPathsOfType<TSchema, Record<string, any>[]>}.$${
-      | `[${string}]`
-      | ''}.${string}`]?: any; // Could be further narrowed
-  } & Document
->;
diff --git a/server/data-import/node_modules/mongodb/src/operations/aggregate.ts b/server/data-import/node_modules/mongodb/src/operations/aggregate.ts
deleted file mode 100644
index 313bd37f39e55ba987a522b5296575de60536efe..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/aggregate.ts
+++ /dev/null
@@ -1,142 +0,0 @@
-import type { Document } from '../bson';
-import { MongoInvalidArgumentError } from '../error';
-import { type TODO_NODE_3286 } from '../mongo_types';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { maxWireVersion, type MongoDBNamespace } from '../utils';
-import { WriteConcern } from '../write_concern';
-import { type CollationOptions, CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects, type Hint } from './operation';
-
-/** @internal */
-export const DB_AGGREGATE_COLLECTION = 1 as const;
-const MIN_WIRE_VERSION_$OUT_READ_CONCERN_SUPPORT = 8 as const;
-
-/** @public */
-export interface AggregateOptions extends CommandOperationOptions {
-  /** allowDiskUse lets the server know if it can use disk to store temporary results for the aggregation (requires mongodb 2.6 \>). */
-  allowDiskUse?: boolean;
-  /** The number of documents to return per batch. See [aggregation documentation](https://www.mongodb.com/docs/manual/reference/command/aggregate). */
-  batchSize?: number;
-  /** Allow driver to bypass schema validation. */
-  bypassDocumentValidation?: boolean;
-  /** Return the query as cursor, on 2.6 \> it returns as a real cursor on pre 2.6 it returns as an emulated cursor. */
-  cursor?: Document;
-  /** specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point. */
-  maxTimeMS?: number;
-  /** The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query. */
-  maxAwaitTimeMS?: number;
-  /** Specify collation. */
-  collation?: CollationOptions;
-  /** Add an index selection hint to an aggregation command */
-  hint?: Hint;
-  /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-  let?: Document;
-
-  out?: string;
-}
-
-/** @internal */
-export class AggregateOperation<T = Document> extends CommandOperation<T> {
-  override options: AggregateOptions;
-  target: string | typeof DB_AGGREGATE_COLLECTION;
-  pipeline: Document[];
-  hasWriteStage: boolean;
-
-  constructor(ns: MongoDBNamespace, pipeline: Document[], options?: AggregateOptions) {
-    super(undefined, { ...options, dbName: ns.db });
-
-    this.options = { ...options };
-
-    // Covers when ns.collection is null, undefined or the empty string, use DB_AGGREGATE_COLLECTION
-    this.target = ns.collection || DB_AGGREGATE_COLLECTION;
-
-    this.pipeline = pipeline;
-
-    // determine if we have a write stage, override read preference if so
-    this.hasWriteStage = false;
-    if (typeof options?.out === 'string') {
-      this.pipeline = this.pipeline.concat({ $out: options.out });
-      this.hasWriteStage = true;
-    } else if (pipeline.length > 0) {
-      const finalStage = pipeline[pipeline.length - 1];
-      if (finalStage.$out || finalStage.$merge) {
-        this.hasWriteStage = true;
-      }
-    }
-
-    if (this.hasWriteStage) {
-      this.trySecondaryWrite = true;
-    } else {
-      delete this.options.writeConcern;
-    }
-
-    if (this.explain && this.writeConcern) {
-      throw new MongoInvalidArgumentError(
-        'Option "explain" cannot be used on an aggregate call with writeConcern'
-      );
-    }
-
-    if (options?.cursor != null && typeof options.cursor !== 'object') {
-      throw new MongoInvalidArgumentError('Cursor options must be an object');
-    }
-  }
-
-  override get canRetryRead(): boolean {
-    return !this.hasWriteStage;
-  }
-
-  addToPipeline(stage: Document): void {
-    this.pipeline.push(stage);
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<T> {
-    const options: AggregateOptions = this.options;
-    const serverWireVersion = maxWireVersion(server);
-    const command: Document = { aggregate: this.target, pipeline: this.pipeline };
-
-    if (this.hasWriteStage && serverWireVersion < MIN_WIRE_VERSION_$OUT_READ_CONCERN_SUPPORT) {
-      this.readConcern = undefined;
-    }
-
-    if (this.hasWriteStage && this.writeConcern) {
-      WriteConcern.apply(command, this.writeConcern);
-    }
-
-    if (options.bypassDocumentValidation === true) {
-      command.bypassDocumentValidation = options.bypassDocumentValidation;
-    }
-
-    if (typeof options.allowDiskUse === 'boolean') {
-      command.allowDiskUse = options.allowDiskUse;
-    }
-
-    if (options.hint) {
-      command.hint = options.hint;
-    }
-
-    if (options.let) {
-      command.let = options.let;
-    }
-
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (options.comment !== undefined) {
-      command.comment = options.comment;
-    }
-
-    command.cursor = options.cursor || {};
-    if (options.batchSize && !this.hasWriteStage) {
-      command.cursor.batchSize = options.batchSize;
-    }
-
-    return super.executeCommand(server, session, command) as TODO_NODE_3286;
-  }
-}
-
-defineAspects(AggregateOperation, [
-  Aspect.READ_OPERATION,
-  Aspect.RETRYABLE,
-  Aspect.EXPLAINABLE,
-  Aspect.CURSOR_CREATING
-]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/bulk_write.ts b/server/data-import/node_modules/mongodb/src/operations/bulk_write.ts
deleted file mode 100644
index 88771c3c4b4a52637afb4b006f7585aa066e9302..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/bulk_write.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import type {
-  AnyBulkWriteOperation,
-  BulkOperationBase,
-  BulkWriteOptions,
-  BulkWriteResult
-} from '../bulk/common';
-import type { Collection } from '../collection';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { AbstractOperation, Aspect, defineAspects } from './operation';
-
-/** @internal */
-export class BulkWriteOperation extends AbstractOperation<BulkWriteResult> {
-  override options: BulkWriteOptions;
-  collection: Collection;
-  operations: AnyBulkWriteOperation[];
-
-  constructor(
-    collection: Collection,
-    operations: AnyBulkWriteOperation[],
-    options: BulkWriteOptions
-  ) {
-    super(options);
-    this.options = options;
-    this.collection = collection;
-    this.operations = operations;
-  }
-
-  override async execute(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<BulkWriteResult> {
-    const coll = this.collection;
-    const operations = this.operations;
-    const options = { ...this.options, ...this.bsonOptions, readPreference: this.readPreference };
-
-    // Create the bulk operation
-    const bulk: BulkOperationBase =
-      options.ordered === false
-        ? coll.initializeUnorderedBulkOp(options)
-        : coll.initializeOrderedBulkOp(options);
-
-    // for each op go through and add to the bulk
-    for (let i = 0; i < operations.length; i++) {
-      bulk.raw(operations[i]);
-    }
-
-    // Execute the bulk
-    const result = await bulk.execute({ ...options, session });
-    return result;
-  }
-}
-
-defineAspects(BulkWriteOperation, [Aspect.WRITE_OPERATION]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/collections.ts b/server/data-import/node_modules/mongodb/src/operations/collections.ts
deleted file mode 100644
index 9a8cdf0e58ae2be486ee8ffb5b6e6669578a2327..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/collections.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { Collection } from '../collection';
-import type { Db } from '../db';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { AbstractOperation, type OperationOptions } from './operation';
-
-export interface CollectionsOptions extends OperationOptions {
-  nameOnly?: boolean;
-}
-
-/** @internal */
-export class CollectionsOperation extends AbstractOperation<Collection[]> {
-  override options: CollectionsOptions;
-  db: Db;
-
-  constructor(db: Db, options: CollectionsOptions) {
-    super(options);
-    this.options = options;
-    this.db = db;
-  }
-
-  override async execute(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<Collection[]> {
-    // Let's get the collection names
-    const documents = await this.db
-      .listCollections(
-        {},
-        { ...this.options, nameOnly: true, readPreference: this.readPreference, session }
-      )
-      .toArray();
-    const collections: Collection[] = [];
-    for (const { name } of documents) {
-      if (!name.includes('$')) {
-        // Filter collections removing any illegal ones
-        collections.push(new Collection(this.db, name, this.db.s.options));
-      }
-    }
-    // Return the collection objects
-    return collections;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/command.ts b/server/data-import/node_modules/mongodb/src/operations/command.ts
deleted file mode 100644
index 4cff77eb17442fffe360db5a694ade4c7815df32..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/command.ts
+++ /dev/null
@@ -1,157 +0,0 @@
-import type { BSONSerializeOptions, Document } from '../bson';
-import { MongoInvalidArgumentError } from '../error';
-import { Explain, type ExplainOptions } from '../explain';
-import { ReadConcern } from '../read_concern';
-import type { ReadPreference } from '../read_preference';
-import type { Server } from '../sdam/server';
-import { MIN_SECONDARY_WRITE_WIRE_VERSION } from '../sdam/server_selection';
-import type { ClientSession } from '../sessions';
-import {
-  commandSupportsReadConcern,
-  decorateWithExplain,
-  maxWireVersion,
-  MongoDBNamespace
-} from '../utils';
-import { WriteConcern, type WriteConcernOptions } from '../write_concern';
-import type { ReadConcernLike } from './../read_concern';
-import { AbstractOperation, Aspect, type OperationOptions } from './operation';
-
-/** @public */
-export interface CollationOptions {
-  locale: string;
-  caseLevel?: boolean;
-  caseFirst?: string;
-  strength?: number;
-  numericOrdering?: boolean;
-  alternate?: string;
-  maxVariable?: string;
-  backwards?: boolean;
-  normalization?: boolean;
-}
-
-/** @public */
-export interface CommandOperationOptions
-  extends OperationOptions,
-    WriteConcernOptions,
-    ExplainOptions {
-  /** Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported) */
-  readConcern?: ReadConcernLike;
-  /** Collation */
-  collation?: CollationOptions;
-  maxTimeMS?: number;
-  /**
-   * Comment to apply to the operation.
-   *
-   * In server versions pre-4.4, 'comment' must be string.  A server
-   * error will be thrown if any other type is provided.
-   *
-   * In server versions 4.4 and above, 'comment' can be any valid BSON type.
-   */
-  comment?: unknown;
-  /** Should retry failed writes */
-  retryWrites?: boolean;
-
-  // Admin command overrides.
-  dbName?: string;
-  authdb?: string;
-  noResponse?: boolean;
-}
-
-/** @internal */
-export interface OperationParent {
-  s: { namespace: MongoDBNamespace };
-  readConcern?: ReadConcern;
-  writeConcern?: WriteConcern;
-  readPreference?: ReadPreference;
-  bsonOptions?: BSONSerializeOptions;
-}
-
-/** @internal */
-export abstract class CommandOperation<T> extends AbstractOperation<T> {
-  override options: CommandOperationOptions;
-  readConcern?: ReadConcern;
-  writeConcern?: WriteConcern;
-  explain?: Explain;
-
-  constructor(parent?: OperationParent, options?: CommandOperationOptions) {
-    super(options);
-    this.options = options ?? {};
-
-    // NOTE: this was explicitly added for the add/remove user operations, it's likely
-    //       something we'd want to reconsider. Perhaps those commands can use `Admin`
-    //       as a parent?
-    const dbNameOverride = options?.dbName || options?.authdb;
-    if (dbNameOverride) {
-      this.ns = new MongoDBNamespace(dbNameOverride, '$cmd');
-    } else {
-      this.ns = parent
-        ? parent.s.namespace.withCollection('$cmd')
-        : new MongoDBNamespace('admin', '$cmd');
-    }
-
-    this.readConcern = ReadConcern.fromOptions(options);
-    this.writeConcern = WriteConcern.fromOptions(options);
-
-    if (this.hasAspect(Aspect.EXPLAINABLE)) {
-      this.explain = Explain.fromOptions(options);
-    } else if (options?.explain != null) {
-      throw new MongoInvalidArgumentError(`Option "explain" is not supported on this command`);
-    }
-  }
-
-  override get canRetryWrite(): boolean {
-    if (this.hasAspect(Aspect.EXPLAINABLE)) {
-      return this.explain == null;
-    }
-    return true;
-  }
-
-  async executeCommand(
-    server: Server,
-    session: ClientSession | undefined,
-    cmd: Document
-  ): Promise<Document> {
-    // TODO: consider making this a non-enumerable property
-    this.server = server;
-
-    const options = {
-      ...this.options,
-      ...this.bsonOptions,
-      readPreference: this.readPreference,
-      session
-    };
-
-    const serverWireVersion = maxWireVersion(server);
-    const inTransaction = this.session && this.session.inTransaction();
-
-    if (this.readConcern && commandSupportsReadConcern(cmd) && !inTransaction) {
-      Object.assign(cmd, { readConcern: this.readConcern });
-    }
-
-    if (this.trySecondaryWrite && serverWireVersion < MIN_SECONDARY_WRITE_WIRE_VERSION) {
-      options.omitReadPreference = true;
-    }
-
-    if (this.writeConcern && this.hasAspect(Aspect.WRITE_OPERATION) && !inTransaction) {
-      WriteConcern.apply(cmd, this.writeConcern);
-    }
-
-    if (
-      options.collation &&
-      typeof options.collation === 'object' &&
-      !this.hasAspect(Aspect.SKIP_COLLATION)
-    ) {
-      Object.assign(cmd, { collation: options.collation });
-    }
-
-    if (typeof options.maxTimeMS === 'number') {
-      cmd.maxTimeMS = options.maxTimeMS;
-    }
-
-    if (this.hasAspect(Aspect.EXPLAINABLE) && this.explain) {
-      cmd = decorateWithExplain(cmd, this.explain);
-    }
-
-    return server.commandAsync(this.ns, cmd, options);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/common_functions.ts b/server/data-import/node_modules/mongodb/src/operations/common_functions.ts
deleted file mode 100644
index 6f79db71d318656d45ce626df7fb829678fa8a0b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/common_functions.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-import type { Document } from '../bson';
-import type { Collection } from '../collection';
-import type { Db } from '../db';
-import type { ReadPreference } from '../read_preference';
-import type { ClientSession } from '../sessions';
-
-/** @public */
-export interface IndexInformationOptions {
-  full?: boolean;
-  readPreference?: ReadPreference;
-  session?: ClientSession;
-}
-/**
- * Retrieves this collections index info.
- *
- * @param db - The Db instance on which to retrieve the index info.
- * @param name - The name of the collection.
- */
-export async function indexInformation(db: Db, name: string): Promise<any>;
-export async function indexInformation(
-  db: Db,
-  name: string,
-  options?: IndexInformationOptions
-): Promise<any>;
-export async function indexInformation(
-  db: Db,
-  name: string,
-  options?: IndexInformationOptions
-): Promise<any> {
-  if (options == null) {
-    options = {};
-  }
-  // If we specified full information
-  const full = options.full == null ? false : options.full;
-  // Get the list of indexes of the specified collection
-  const indexes = await db.collection(name).listIndexes(options).toArray();
-  if (full) return indexes;
-
-  const info: Record<string, Array<[string, unknown]>> = {};
-  for (const index of indexes) {
-    info[index.name] = Object.entries(index.key);
-  }
-  return info;
-}
-
-export function prepareDocs(
-  coll: Collection,
-  docs: Document[],
-  options: { forceServerObjectId?: boolean }
-): Document[] {
-  const forceServerObjectId =
-    typeof options.forceServerObjectId === 'boolean'
-      ? options.forceServerObjectId
-      : coll.s.db.options?.forceServerObjectId;
-
-  // no need to modify the docs if server sets the ObjectId
-  if (forceServerObjectId === true) {
-    return docs;
-  }
-
-  return docs.map(doc => {
-    if (doc._id == null) {
-      doc._id = coll.s.pkFactory.createPk();
-    }
-
-    return doc;
-  });
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/count.ts b/server/data-import/node_modules/mongodb/src/operations/count.ts
deleted file mode 100644
index f9ad49f0dcc4fbe5d4b26fa944d0375c71bf4c6b..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/count.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import type { Document } from '../bson';
-import type { Collection } from '../collection';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import type { MongoDBNamespace } from '../utils';
-import { CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects } from './operation';
-
-/** @public */
-export interface CountOptions extends CommandOperationOptions {
-  /** The number of documents to skip. */
-  skip?: number;
-  /** The maximum amounts to count before aborting. */
-  limit?: number;
-  /** Number of milliseconds to wait before aborting the query. */
-  maxTimeMS?: number;
-  /** An index name hint for the query. */
-  hint?: string | Document;
-}
-
-/** @internal */
-export class CountOperation extends CommandOperation<number> {
-  override options: CountOptions;
-  collectionName?: string;
-  query: Document;
-
-  constructor(namespace: MongoDBNamespace, filter: Document, options: CountOptions) {
-    super({ s: { namespace: namespace } } as unknown as Collection, options);
-
-    this.options = options;
-    this.collectionName = namespace.collection;
-    this.query = filter;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<number> {
-    const options = this.options;
-    const cmd: Document = {
-      count: this.collectionName,
-      query: this.query
-    };
-
-    if (typeof options.limit === 'number') {
-      cmd.limit = options.limit;
-    }
-
-    if (typeof options.skip === 'number') {
-      cmd.skip = options.skip;
-    }
-
-    if (options.hint != null) {
-      cmd.hint = options.hint;
-    }
-
-    if (typeof options.maxTimeMS === 'number') {
-      cmd.maxTimeMS = options.maxTimeMS;
-    }
-
-    const result = await super.executeCommand(server, session, cmd);
-    return result ? result.n : 0;
-  }
-}
-
-defineAspects(CountOperation, [Aspect.READ_OPERATION, Aspect.RETRYABLE]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/count_documents.ts b/server/data-import/node_modules/mongodb/src/operations/count_documents.ts
deleted file mode 100644
index 11fb0c3db692c3e56a409b59e2d9b9287a6f5a26..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/count_documents.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import type { Document } from '../bson';
-import type { Collection } from '../collection';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { AggregateOperation, type AggregateOptions } from './aggregate';
-
-/** @public */
-export interface CountDocumentsOptions extends AggregateOptions {
-  /** The number of documents to skip. */
-  skip?: number;
-  /** The maximum amounts to count before aborting. */
-  limit?: number;
-}
-
-/** @internal */
-export class CountDocumentsOperation extends AggregateOperation<number> {
-  constructor(collection: Collection, query: Document, options: CountDocumentsOptions) {
-    const pipeline = [];
-    pipeline.push({ $match: query });
-
-    if (typeof options.skip === 'number') {
-      pipeline.push({ $skip: options.skip });
-    }
-
-    if (typeof options.limit === 'number') {
-      pipeline.push({ $limit: options.limit });
-    }
-
-    pipeline.push({ $group: { _id: 1, n: { $sum: 1 } } });
-
-    super(collection.s.namespace, pipeline, options);
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<number> {
-    const result = await super.execute(server, session);
-
-    // NOTE: We're avoiding creating a cursor here to reduce the callstack.
-    const response = result as unknown as Document;
-    if (response.cursor == null || response.cursor.firstBatch == null) {
-      return 0;
-    }
-
-    const docs = response.cursor.firstBatch;
-    return docs.length ? docs[0].n : 0;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/create_collection.ts b/server/data-import/node_modules/mongodb/src/operations/create_collection.ts
deleted file mode 100644
index 6ea988b8f9a2621ebf5206153cd7c4e9b33cb266..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/create_collection.ts
+++ /dev/null
@@ -1,197 +0,0 @@
-import type { Document } from '../bson';
-import {
-  MIN_SUPPORTED_QE_SERVER_VERSION,
-  MIN_SUPPORTED_QE_WIRE_VERSION
-} from '../cmap/wire_protocol/constants';
-import { Collection } from '../collection';
-import type { Db } from '../db';
-import { MongoCompatibilityError } from '../error';
-import type { PkFactory } from '../mongo_client';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { CommandOperation, type CommandOperationOptions } from './command';
-import { CreateIndexOperation } from './indexes';
-import { Aspect, defineAspects } from './operation';
-
-const ILLEGAL_COMMAND_FIELDS = new Set([
-  'w',
-  'wtimeout',
-  'j',
-  'fsync',
-  'autoIndexId',
-  'pkFactory',
-  'raw',
-  'readPreference',
-  'session',
-  'readConcern',
-  'writeConcern',
-  'raw',
-  'fieldsAsRaw',
-  'useBigInt64',
-  'promoteLongs',
-  'promoteValues',
-  'promoteBuffers',
-  'bsonRegExp',
-  'serializeFunctions',
-  'ignoreUndefined',
-  'enableUtf8Validation'
-]);
-
-/** @public
- * Configuration options for timeseries collections
- * @see https://www.mongodb.com/docs/manual/core/timeseries-collections/
- */
-export interface TimeSeriesCollectionOptions extends Document {
-  timeField: string;
-  metaField?: string;
-  granularity?: 'seconds' | 'minutes' | 'hours' | string;
-  bucketMaxSpanSeconds?: number;
-  bucketRoundingSeconds?: number;
-}
-
-/** @public
- * Configuration options for clustered collections
- * @see https://www.mongodb.com/docs/manual/core/clustered-collections/
- */
-export interface ClusteredCollectionOptions extends Document {
-  name?: string;
-  key: Document;
-  unique: boolean;
-}
-
-/** @public */
-export interface CreateCollectionOptions extends CommandOperationOptions {
-  /** Create a capped collection */
-  capped?: boolean;
-  /** @deprecated Create an index on the _id field of the document. This option is deprecated in MongoDB 3.2+ and will be removed once no longer supported by the server. */
-  autoIndexId?: boolean;
-  /** The size of the capped collection in bytes */
-  size?: number;
-  /** The maximum number of documents in the capped collection */
-  max?: number;
-  /** Available for the MMAPv1 storage engine only to set the usePowerOf2Sizes and the noPadding flag */
-  flags?: number;
-  /** Allows users to specify configuration to the storage engine on a per-collection basis when creating a collection */
-  storageEngine?: Document;
-  /** Allows users to specify validation rules or expressions for the collection. For more information, see Document Validation */
-  validator?: Document;
-  /** Determines how strictly MongoDB applies the validation rules to existing documents during an update */
-  validationLevel?: string;
-  /** Determines whether to error on invalid documents or just warn about the violations but allow invalid documents to be inserted */
-  validationAction?: string;
-  /** Allows users to specify a default configuration for indexes when creating a collection */
-  indexOptionDefaults?: Document;
-  /** The name of the source collection or view from which to create the view. The name is not the full namespace of the collection or view (i.e., does not include the database name and implies the same database as the view to create) */
-  viewOn?: string;
-  /** An array that consists of the aggregation pipeline stage. Creates the view by applying the specified pipeline to the viewOn collection or view */
-  pipeline?: Document[];
-  /** A primary key factory function for generation of custom _id keys. */
-  pkFactory?: PkFactory;
-  /** A document specifying configuration options for timeseries collections. */
-  timeseries?: TimeSeriesCollectionOptions;
-  /** A document specifying configuration options for clustered collections. For MongoDB 5.3 and above. */
-  clusteredIndex?: ClusteredCollectionOptions;
-  /** The number of seconds after which a document in a timeseries or clustered collection expires. */
-  expireAfterSeconds?: number;
-  /** @experimental */
-  encryptedFields?: Document;
-  /**
-   * If set, enables pre-update and post-update document events to be included for any
-   * change streams that listen on this collection.
-   */
-  changeStreamPreAndPostImages?: { enabled: boolean };
-}
-
-/* @internal */
-const INVALID_QE_VERSION =
-  'Driver support of Queryable Encryption is incompatible with server. Upgrade server to use Queryable Encryption.';
-
-/** @internal */
-export class CreateCollectionOperation extends CommandOperation<Collection> {
-  override options: CreateCollectionOptions;
-  db: Db;
-  name: string;
-
-  constructor(db: Db, name: string, options: CreateCollectionOptions = {}) {
-    super(db, options);
-
-    this.options = options;
-    this.db = db;
-    this.name = name;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Collection> {
-    const db = this.db;
-    const name = this.name;
-    const options = this.options;
-
-    const encryptedFields: Document | undefined =
-      options.encryptedFields ??
-      db.client.options.autoEncryption?.encryptedFieldsMap?.[`${db.databaseName}.${name}`];
-
-    if (encryptedFields) {
-      // Creating a QE collection required min server of 7.0.0
-      // TODO(NODE-5353): Get wire version information from connection.
-      if (
-        !server.loadBalanced &&
-        server.description.maxWireVersion < MIN_SUPPORTED_QE_WIRE_VERSION
-      ) {
-        throw new MongoCompatibilityError(
-          `${INVALID_QE_VERSION} The minimum server version required is ${MIN_SUPPORTED_QE_SERVER_VERSION}`
-        );
-      }
-      // Create auxilliary collections for queryable encryption support.
-      const escCollection = encryptedFields.escCollection ?? `enxcol_.${name}.esc`;
-      const ecocCollection = encryptedFields.ecocCollection ?? `enxcol_.${name}.ecoc`;
-
-      for (const collectionName of [escCollection, ecocCollection]) {
-        const createOp = new CreateCollectionOperation(db, collectionName, {
-          clusteredIndex: {
-            key: { _id: 1 },
-            unique: true
-          }
-        });
-        await createOp.executeWithoutEncryptedFieldsCheck(server, session);
-      }
-
-      if (!options.encryptedFields) {
-        this.options = { ...this.options, encryptedFields };
-      }
-    }
-
-    const coll = await this.executeWithoutEncryptedFieldsCheck(server, session);
-
-    if (encryptedFields) {
-      // Create the required index for queryable encryption support.
-      const createIndexOp = new CreateIndexOperation(db, name, { __safeContent__: 1 }, {});
-      await createIndexOp.execute(server, session);
-    }
-
-    return coll;
-  }
-
-  private async executeWithoutEncryptedFieldsCheck(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<Collection> {
-    const db = this.db;
-    const name = this.name;
-    const options = this.options;
-
-    const cmd: Document = { create: name };
-    for (const n in options) {
-      if (
-        (options as any)[n] != null &&
-        typeof (options as any)[n] !== 'function' &&
-        !ILLEGAL_COMMAND_FIELDS.has(n)
-      ) {
-        cmd[n] = (options as any)[n];
-      }
-    }
-    // otherwise just execute the command
-    await super.executeCommand(server, session, cmd);
-    return new Collection(db, name, options);
-  }
-}
-
-defineAspects(CreateCollectionOperation, [Aspect.WRITE_OPERATION]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/delete.ts b/server/data-import/node_modules/mongodb/src/operations/delete.ts
deleted file mode 100644
index dc4d0bc13ebbdd630ce1bbbda572e077a05d5185..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/delete.ts
+++ /dev/null
@@ -1,170 +0,0 @@
-import type { Document } from '../bson';
-import type { Collection } from '../collection';
-import { MongoCompatibilityError, MongoServerError } from '../error';
-import { type TODO_NODE_3286 } from '../mongo_types';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import type { MongoDBNamespace } from '../utils';
-import type { WriteConcernOptions } from '../write_concern';
-import { type CollationOptions, CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects, type Hint } from './operation';
-
-/** @public */
-export interface DeleteOptions extends CommandOperationOptions, WriteConcernOptions {
-  /** If true, when an insert fails, don't execute the remaining writes. If false, continue with remaining inserts when one fails. */
-  ordered?: boolean;
-  /** Specifies the collation to use for the operation */
-  collation?: CollationOptions;
-  /** Specify that the update query should only consider plans using the hinted index */
-  hint?: string | Document;
-  /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-  let?: Document;
-}
-
-/** @public */
-export interface DeleteResult {
-  /** Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined. */
-  acknowledged: boolean;
-  /** The number of documents that were deleted */
-  deletedCount: number;
-}
-
-/** @public */
-export interface DeleteStatement {
-  /** The query that matches documents to delete. */
-  q: Document;
-  /** The number of matching documents to delete. */
-  limit: number;
-  /** Specifies the collation to use for the operation. */
-  collation?: CollationOptions;
-  /** A document or string that specifies the index to use to support the query predicate. */
-  hint?: Hint;
-}
-
-/** @internal */
-export class DeleteOperation extends CommandOperation<DeleteResult> {
-  override options: DeleteOptions;
-  statements: DeleteStatement[];
-
-  constructor(ns: MongoDBNamespace, statements: DeleteStatement[], options: DeleteOptions) {
-    super(undefined, options);
-    this.options = options;
-    this.ns = ns;
-    this.statements = statements;
-  }
-
-  override get canRetryWrite(): boolean {
-    if (super.canRetryWrite === false) {
-      return false;
-    }
-
-    return this.statements.every(op => (op.limit != null ? op.limit > 0 : true));
-  }
-
-  override async execute(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<DeleteResult> {
-    const options = this.options ?? {};
-    const ordered = typeof options.ordered === 'boolean' ? options.ordered : true;
-    const command: Document = {
-      delete: this.ns.collection,
-      deletes: this.statements,
-      ordered
-    };
-
-    if (options.let) {
-      command.let = options.let;
-    }
-
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (options.comment !== undefined) {
-      command.comment = options.comment;
-    }
-
-    const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0;
-    if (unacknowledgedWrite) {
-      if (this.statements.find((o: Document) => o.hint)) {
-        // TODO(NODE-3541): fix error for hint with unacknowledged writes
-        throw new MongoCompatibilityError(`hint is not supported with unacknowledged writes`);
-      }
-    }
-
-    return super.executeCommand(server, session, command) as TODO_NODE_3286;
-  }
-}
-
-export class DeleteOneOperation extends DeleteOperation {
-  constructor(collection: Collection, filter: Document, options: DeleteOptions) {
-    super(collection.s.namespace, [makeDeleteStatement(filter, { ...options, limit: 1 })], options);
-  }
-
-  override async execute(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<DeleteResult> {
-    const res = (await super.execute(server, session)) as TODO_NODE_3286;
-    if (this.explain) return res;
-    if (res.code) throw new MongoServerError(res);
-    if (res.writeErrors) throw new MongoServerError(res.writeErrors[0]);
-
-    return {
-      acknowledged: this.writeConcern?.w !== 0,
-      deletedCount: res.n
-    };
-  }
-}
-export class DeleteManyOperation extends DeleteOperation {
-  constructor(collection: Collection, filter: Document, options: DeleteOptions) {
-    super(collection.s.namespace, [makeDeleteStatement(filter, options)], options);
-  }
-
-  override async execute(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<DeleteResult> {
-    const res = (await super.execute(server, session)) as TODO_NODE_3286;
-    if (this.explain) return res;
-    if (res.code) throw new MongoServerError(res);
-    if (res.writeErrors) throw new MongoServerError(res.writeErrors[0]);
-
-    return {
-      acknowledged: this.writeConcern?.w !== 0,
-      deletedCount: res.n
-    };
-  }
-}
-
-export function makeDeleteStatement(
-  filter: Document,
-  options: DeleteOptions & { limit?: number }
-): DeleteStatement {
-  const op: DeleteStatement = {
-    q: filter,
-    limit: typeof options.limit === 'number' ? options.limit : 0
-  };
-
-  if (options.collation) {
-    op.collation = options.collation;
-  }
-
-  if (options.hint) {
-    op.hint = options.hint;
-  }
-
-  return op;
-}
-
-defineAspects(DeleteOperation, [Aspect.RETRYABLE, Aspect.WRITE_OPERATION]);
-defineAspects(DeleteOneOperation, [
-  Aspect.RETRYABLE,
-  Aspect.WRITE_OPERATION,
-  Aspect.EXPLAINABLE,
-  Aspect.SKIP_COLLATION
-]);
-defineAspects(DeleteManyOperation, [
-  Aspect.WRITE_OPERATION,
-  Aspect.EXPLAINABLE,
-  Aspect.SKIP_COLLATION
-]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/distinct.ts b/server/data-import/node_modules/mongodb/src/operations/distinct.ts
deleted file mode 100644
index 900abd6afa2a3c5dbf48b1e059b690cbeed50833..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/distinct.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import type { Document } from '../bson';
-import type { Collection } from '../collection';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { decorateWithCollation, decorateWithReadConcern } from '../utils';
-import { CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects } from './operation';
-
-/** @public */
-export type DistinctOptions = CommandOperationOptions;
-
-/**
- * Return a list of distinct values for the given key across a collection.
- * @internal
- */
-export class DistinctOperation extends CommandOperation<any[]> {
-  override options: DistinctOptions;
-  collection: Collection;
-  /** Field of the document to find distinct values for. */
-  key: string;
-  /** The query for filtering the set of documents to which we apply the distinct filter. */
-  query: Document;
-
-  /**
-   * Construct a Distinct operation.
-   *
-   * @param collection - Collection instance.
-   * @param key - Field of the document to find distinct values for.
-   * @param query - The query for filtering the set of documents to which we apply the distinct filter.
-   * @param options - Optional settings. See Collection.prototype.distinct for a list of options.
-   */
-  constructor(collection: Collection, key: string, query: Document, options?: DistinctOptions) {
-    super(collection, options);
-
-    this.options = options ?? {};
-    this.collection = collection;
-    this.key = key;
-    this.query = query;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<any[]> {
-    const coll = this.collection;
-    const key = this.key;
-    const query = this.query;
-    const options = this.options;
-
-    // Distinct command
-    const cmd: Document = {
-      distinct: coll.collectionName,
-      key: key,
-      query: query
-    };
-
-    // Add maxTimeMS if defined
-    if (typeof options.maxTimeMS === 'number') {
-      cmd.maxTimeMS = options.maxTimeMS;
-    }
-
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (typeof options.comment !== 'undefined') {
-      cmd.comment = options.comment;
-    }
-
-    // Do we have a readConcern specified
-    decorateWithReadConcern(cmd, coll, options);
-
-    // Have we specified collation
-    decorateWithCollation(cmd, coll, options);
-
-    const result = await super.executeCommand(server, session, cmd);
-
-    return this.explain ? result : result.values;
-  }
-}
-
-defineAspects(DistinctOperation, [Aspect.READ_OPERATION, Aspect.RETRYABLE, Aspect.EXPLAINABLE]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/drop.ts b/server/data-import/node_modules/mongodb/src/operations/drop.ts
deleted file mode 100644
index dbbfa7fea043386e74259c90705af257509fc2ec..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/drop.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-import type { Document } from '../bson';
-import type { Db } from '../db';
-import { MONGODB_ERROR_CODES, MongoServerError } from '../error';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects } from './operation';
-
-/** @public */
-export interface DropCollectionOptions extends CommandOperationOptions {
-  /** @experimental */
-  encryptedFields?: Document;
-}
-
-/** @internal */
-export class DropCollectionOperation extends CommandOperation<boolean> {
-  override options: DropCollectionOptions;
-  db: Db;
-  name: string;
-
-  constructor(db: Db, name: string, options: DropCollectionOptions = {}) {
-    super(db, options);
-    this.db = db;
-    this.options = options;
-    this.name = name;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<boolean> {
-    const db = this.db;
-    const options = this.options;
-    const name = this.name;
-
-    const encryptedFieldsMap = db.client.options.autoEncryption?.encryptedFieldsMap;
-    let encryptedFields: Document | undefined =
-      options.encryptedFields ?? encryptedFieldsMap?.[`${db.databaseName}.${name}`];
-
-    if (!encryptedFields && encryptedFieldsMap) {
-      // If the MongoClient was configured with an encryptedFieldsMap,
-      // and no encryptedFields config was available in it or explicitly
-      // passed as an argument, the spec tells us to look one up using
-      // listCollections().
-      const listCollectionsResult = await db
-        .listCollections({ name }, { nameOnly: false })
-        .toArray();
-      encryptedFields = listCollectionsResult?.[0]?.options?.encryptedFields;
-    }
-
-    if (encryptedFields) {
-      const escCollection = encryptedFields.escCollection || `enxcol_.${name}.esc`;
-      const ecocCollection = encryptedFields.ecocCollection || `enxcol_.${name}.ecoc`;
-
-      for (const collectionName of [escCollection, ecocCollection]) {
-        // Drop auxilliary collections, ignoring potential NamespaceNotFound errors.
-        const dropOp = new DropCollectionOperation(db, collectionName);
-        try {
-          await dropOp.executeWithoutEncryptedFieldsCheck(server, session);
-        } catch (err) {
-          if (
-            !(err instanceof MongoServerError) ||
-            err.code !== MONGODB_ERROR_CODES.NamespaceNotFound
-          ) {
-            throw err;
-          }
-        }
-      }
-    }
-
-    return this.executeWithoutEncryptedFieldsCheck(server, session);
-  }
-
-  private async executeWithoutEncryptedFieldsCheck(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<boolean> {
-    await super.executeCommand(server, session, { drop: this.name });
-    return true;
-  }
-}
-
-/** @public */
-export type DropDatabaseOptions = CommandOperationOptions;
-
-/** @internal */
-export class DropDatabaseOperation extends CommandOperation<boolean> {
-  override options: DropDatabaseOptions;
-
-  constructor(db: Db, options: DropDatabaseOptions) {
-    super(db, options);
-    this.options = options;
-  }
-  override async execute(server: Server, session: ClientSession | undefined): Promise<boolean> {
-    await super.executeCommand(server, session, { dropDatabase: 1 });
-    return true;
-  }
-}
-
-defineAspects(DropCollectionOperation, [Aspect.WRITE_OPERATION]);
-defineAspects(DropDatabaseOperation, [Aspect.WRITE_OPERATION]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/estimated_document_count.ts b/server/data-import/node_modules/mongodb/src/operations/estimated_document_count.ts
deleted file mode 100644
index 44e70bbaef0b8b83b01ae6546e944f959c7da012..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/estimated_document_count.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import type { Document } from '../bson';
-import type { Collection } from '../collection';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects } from './operation';
-
-/** @public */
-export interface EstimatedDocumentCountOptions extends CommandOperationOptions {
-  /**
-   * The maximum amount of time to allow the operation to run.
-   *
-   * This option is sent only if the caller explicitly provides a value. The default is to not send a value.
-   */
-  maxTimeMS?: number;
-}
-
-/** @internal */
-export class EstimatedDocumentCountOperation extends CommandOperation<number> {
-  override options: EstimatedDocumentCountOptions;
-  collectionName: string;
-
-  constructor(collection: Collection, options: EstimatedDocumentCountOptions = {}) {
-    super(collection, options);
-    this.options = options;
-    this.collectionName = collection.collectionName;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<number> {
-    const cmd: Document = { count: this.collectionName };
-
-    if (typeof this.options.maxTimeMS === 'number') {
-      cmd.maxTimeMS = this.options.maxTimeMS;
-    }
-
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (this.options.comment !== undefined) {
-      cmd.comment = this.options.comment;
-    }
-
-    const response = await super.executeCommand(server, session, cmd);
-
-    return response?.n || 0;
-  }
-}
-
-defineAspects(EstimatedDocumentCountOperation, [
-  Aspect.READ_OPERATION,
-  Aspect.RETRYABLE,
-  Aspect.CURSOR_CREATING
-]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/execute_operation.ts b/server/data-import/node_modules/mongodb/src/operations/execute_operation.ts
deleted file mode 100644
index e815f091a8bd5e75e8fac16d5b9b5f9115185354..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/execute_operation.ts
+++ /dev/null
@@ -1,273 +0,0 @@
-import type { Document } from '../bson';
-import {
-  isRetryableReadError,
-  isRetryableWriteError,
-  MongoCompatibilityError,
-  MONGODB_ERROR_CODES,
-  MongoError,
-  MongoErrorLabel,
-  MongoExpiredSessionError,
-  MongoInvalidArgumentError,
-  MongoNetworkError,
-  MongoNotConnectedError,
-  MongoRuntimeError,
-  MongoServerError,
-  MongoTransactionError,
-  MongoUnexpectedServerResponseError
-} from '../error';
-import type { MongoClient } from '../mongo_client';
-import { ReadPreference } from '../read_preference';
-import type { Server } from '../sdam/server';
-import {
-  sameServerSelector,
-  secondaryWritableServerSelector,
-  type ServerSelector
-} from '../sdam/server_selection';
-import type { Topology } from '../sdam/topology';
-import type { ClientSession } from '../sessions';
-import { type Callback, maybeCallback, supportsRetryableWrites } from '../utils';
-import { AbstractOperation, Aspect } from './operation';
-
-const MMAPv1_RETRY_WRITES_ERROR_CODE = MONGODB_ERROR_CODES.IllegalOperation;
-const MMAPv1_RETRY_WRITES_ERROR_MESSAGE =
-  'This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string.';
-
-type ResultTypeFromOperation<TOperation> = TOperation extends AbstractOperation<infer K>
-  ? K
-  : never;
-
-/** @internal */
-export interface ExecutionResult {
-  /** The server selected for the operation */
-  server: Server;
-  /** The session used for this operation, may be implicitly created */
-  session?: ClientSession;
-  /** The raw server response for the operation */
-  response: Document;
-}
-
-/**
- * Executes the given operation with provided arguments.
- * @internal
- *
- * @remarks
- * This method reduces large amounts of duplication in the entire codebase by providing
- * a single point for determining whether callbacks or promises should be used. Additionally
- * it allows for a single point of entry to provide features such as implicit sessions, which
- * are required by the Driver Sessions specification in the event that a ClientSession is
- * not provided
- *
- * @param topology - The topology to execute this operation on
- * @param operation - The operation to execute
- * @param callback - The command result callback
- */
-export function executeOperation<
-  T extends AbstractOperation<TResult>,
-  TResult = ResultTypeFromOperation<T>
->(client: MongoClient, operation: T): Promise<TResult>;
-export function executeOperation<
-  T extends AbstractOperation<TResult>,
-  TResult = ResultTypeFromOperation<T>
->(client: MongoClient, operation: T, callback: Callback<TResult>): void;
-export function executeOperation<
-  T extends AbstractOperation<TResult>,
-  TResult = ResultTypeFromOperation<T>
->(client: MongoClient, operation: T, callback?: Callback<TResult>): Promise<TResult> | void;
-export function executeOperation<
-  T extends AbstractOperation<TResult>,
-  TResult = ResultTypeFromOperation<T>
->(client: MongoClient, operation: T, callback?: Callback<TResult>): Promise<TResult> | void {
-  return maybeCallback(() => executeOperationAsync(client, operation), callback);
-}
-
-async function executeOperationAsync<
-  T extends AbstractOperation<TResult>,
-  TResult = ResultTypeFromOperation<T>
->(client: MongoClient, operation: T): Promise<TResult> {
-  if (!(operation instanceof AbstractOperation)) {
-    // TODO(NODE-3483): Extend MongoRuntimeError
-    throw new MongoRuntimeError('This method requires a valid operation instance');
-  }
-
-  if (client.topology == null) {
-    // Auto connect on operation
-    if (client.s.hasBeenClosed) {
-      throw new MongoNotConnectedError('Client must be connected before running operations');
-    }
-    client.s.options[Symbol.for('@@mdb.skipPingOnConnect')] = true;
-    try {
-      await client.connect();
-    } finally {
-      delete client.s.options[Symbol.for('@@mdb.skipPingOnConnect')];
-    }
-  }
-
-  const { topology } = client;
-  if (topology == null) {
-    throw new MongoRuntimeError('client.connect did not create a topology but also did not throw');
-  }
-
-  // The driver sessions spec mandates that we implicitly create sessions for operations
-  // that are not explicitly provided with a session.
-  let session = operation.session;
-  let owner: symbol | undefined;
-
-  if (session == null) {
-    owner = Symbol();
-    session = client.startSession({ owner, explicit: false });
-  } else if (session.hasEnded) {
-    throw new MongoExpiredSessionError('Use of expired sessions is not permitted');
-  } else if (session.snapshotEnabled && !topology.capabilities.supportsSnapshotReads) {
-    throw new MongoCompatibilityError('Snapshot reads require MongoDB 5.0 or later');
-  } else if (session.client !== client) {
-    throw new MongoInvalidArgumentError('ClientSession must be from the same MongoClient');
-  }
-
-  const readPreference = operation.readPreference ?? ReadPreference.primary;
-  const inTransaction = !!session?.inTransaction();
-
-  if (inTransaction && !readPreference.equals(ReadPreference.primary)) {
-    throw new MongoTransactionError(
-      `Read preference in a transaction must be primary, not: ${readPreference.mode}`
-    );
-  }
-
-  if (session?.isPinned && session.transaction.isCommitted && !operation.bypassPinningCheck) {
-    session.unpin();
-  }
-
-  let selector: ReadPreference | ServerSelector;
-
-  if (operation.hasAspect(Aspect.MUST_SELECT_SAME_SERVER)) {
-    // GetMore and KillCursor operations must always select the same server, but run through
-    // server selection to potentially force monitor checks if the server is
-    // in an unknown state.
-    selector = sameServerSelector(operation.server?.description);
-  } else if (operation.trySecondaryWrite) {
-    // If operation should try to write to secondary use the custom server selector
-    // otherwise provide the read preference.
-    selector = secondaryWritableServerSelector(topology.commonWireVersion, readPreference);
-  } else {
-    selector = readPreference;
-  }
-
-  const server = await topology.selectServerAsync(selector, { session });
-
-  if (session == null) {
-    // No session also means it is not retryable, early exit
-    return operation.execute(server, undefined);
-  }
-
-  if (!operation.hasAspect(Aspect.RETRYABLE)) {
-    // non-retryable operation, early exit
-    try {
-      return await operation.execute(server, session);
-    } finally {
-      if (session?.owner != null && session.owner === owner) {
-        await session.endSession().catch(() => null);
-      }
-    }
-  }
-
-  const willRetryRead = topology.s.options.retryReads && !inTransaction && operation.canRetryRead;
-
-  const willRetryWrite =
-    topology.s.options.retryWrites &&
-    !inTransaction &&
-    supportsRetryableWrites(server) &&
-    operation.canRetryWrite;
-
-  const hasReadAspect = operation.hasAspect(Aspect.READ_OPERATION);
-  const hasWriteAspect = operation.hasAspect(Aspect.WRITE_OPERATION);
-  const willRetry = (hasReadAspect && willRetryRead) || (hasWriteAspect && willRetryWrite);
-
-  if (hasWriteAspect && willRetryWrite) {
-    operation.options.willRetryWrite = true;
-    session.incrementTransactionNumber();
-  }
-
-  try {
-    return await operation.execute(server, session);
-  } catch (operationError) {
-    if (willRetry && operationError instanceof MongoError) {
-      return await retryOperation(operation, operationError, {
-        session,
-        topology,
-        selector
-      });
-    }
-    throw operationError;
-  } finally {
-    if (session?.owner != null && session.owner === owner) {
-      await session.endSession().catch(() => null);
-    }
-  }
-}
-
-/** @internal */
-type RetryOptions = {
-  session: ClientSession;
-  topology: Topology;
-  selector: ReadPreference | ServerSelector;
-};
-
-async function retryOperation<
-  T extends AbstractOperation<TResult>,
-  TResult = ResultTypeFromOperation<T>
->(
-  operation: T,
-  originalError: MongoError,
-  { session, topology, selector }: RetryOptions
-): Promise<TResult> {
-  const isWriteOperation = operation.hasAspect(Aspect.WRITE_OPERATION);
-  const isReadOperation = operation.hasAspect(Aspect.READ_OPERATION);
-
-  if (isWriteOperation && originalError.code === MMAPv1_RETRY_WRITES_ERROR_CODE) {
-    throw new MongoServerError({
-      message: MMAPv1_RETRY_WRITES_ERROR_MESSAGE,
-      errmsg: MMAPv1_RETRY_WRITES_ERROR_MESSAGE,
-      originalError
-    });
-  }
-
-  if (isWriteOperation && !isRetryableWriteError(originalError)) {
-    throw originalError;
-  }
-
-  if (isReadOperation && !isRetryableReadError(originalError)) {
-    throw originalError;
-  }
-
-  if (
-    originalError instanceof MongoNetworkError &&
-    session.isPinned &&
-    !session.inTransaction() &&
-    operation.hasAspect(Aspect.CURSOR_CREATING)
-  ) {
-    // If we have a cursor and the initial command fails with a network error,
-    // we can retry it on another connection. So we need to check it back in, clear the
-    // pool for the service id, and retry again.
-    session.unpin({ force: true, forceClear: true });
-  }
-
-  // select a new server, and attempt to retry the operation
-  const server = await topology.selectServerAsync(selector, { session });
-
-  if (isWriteOperation && !supportsRetryableWrites(server)) {
-    throw new MongoUnexpectedServerResponseError(
-      'Selected server does not support retryable writes'
-    );
-  }
-
-  try {
-    return await operation.execute(server, session);
-  } catch (retryError) {
-    if (
-      retryError instanceof MongoError &&
-      retryError.hasErrorLabel(MongoErrorLabel.NoWritesPerformed)
-    ) {
-      throw originalError;
-    }
-    throw retryError;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/find.ts b/server/data-import/node_modules/mongodb/src/operations/find.ts
deleted file mode 100644
index 278cead138c0e7479b869f92de395989c1ed8e87..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/find.ts
+++ /dev/null
@@ -1,253 +0,0 @@
-import type { Document } from '../bson';
-import type { Collection } from '../collection';
-import { MongoInvalidArgumentError } from '../error';
-import { ReadConcern } from '../read_concern';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { formatSort, type Sort } from '../sort';
-import { decorateWithExplain, type MongoDBNamespace, normalizeHintField } from '../utils';
-import { type CollationOptions, CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects, type Hint } from './operation';
-
-/**
- * @public
- * @typeParam TSchema - Unused schema definition, deprecated usage, only specify `FindOptions` with no generic
- */
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
-export interface FindOptions<TSchema extends Document = Document>
-  extends Omit<CommandOperationOptions, 'writeConcern'> {
-  /** Sets the limit of documents returned in the query. */
-  limit?: number;
-  /** Set to sort the documents coming back from the query. Array of indexes, `[['a', 1]]` etc. */
-  sort?: Sort;
-  /** The fields to return in the query. Object of fields to either include or exclude (one of, not both), `{'a':1, 'b': 1}` **or** `{'a': 0, 'b': 0}` */
-  projection?: Document;
-  /** Set to skip N documents ahead in your query (useful for pagination). */
-  skip?: number;
-  /** Tell the query to use specific indexes in the query. Object of indexes to use, `{'_id':1}` */
-  hint?: Hint;
-  /** Specify if the cursor can timeout. */
-  timeout?: boolean;
-  /** Specify if the cursor is tailable. */
-  tailable?: boolean;
-  /** Specify if the cursor is a tailable-await cursor. Requires `tailable` to be true */
-  awaitData?: boolean;
-  /** Set the batchSize for the getMoreCommand when iterating over the query results. */
-  batchSize?: number;
-  /** If true, returns only the index keys in the resulting documents. */
-  returnKey?: boolean;
-  /** The inclusive lower bound for a specific index */
-  min?: Document;
-  /** The exclusive upper bound for a specific index */
-  max?: Document;
-  /** Number of milliseconds to wait before aborting the query. */
-  maxTimeMS?: number;
-  /** The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query. Requires `tailable` and `awaitData` to be true */
-  maxAwaitTimeMS?: number;
-  /** The server normally times out idle cursors after an inactivity period (10 minutes) to prevent excess memory use. Set this option to prevent that. */
-  noCursorTimeout?: boolean;
-  /** Specify collation (MongoDB 3.4 or higher) settings for update operation (see 3.4 documentation for available fields). */
-  collation?: CollationOptions;
-  /** Allows disk use for blocking sort operations exceeding 100MB memory. (MongoDB 3.2 or higher) */
-  allowDiskUse?: boolean;
-  /** Determines whether to close the cursor after the first batch. Defaults to false. */
-  singleBatch?: boolean;
-  /** For queries against a sharded collection, allows the command (or subsequent getMore commands) to return partial results, rather than an error, if one or more queried shards are unavailable. */
-  allowPartialResults?: boolean;
-  /** Determines whether to return the record identifier for each document. If true, adds a field $recordId to the returned documents. */
-  showRecordId?: boolean;
-  /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-  let?: Document;
-  /**
-   * Option to enable an optimized code path for queries looking for a particular range of `ts` values in the oplog. Requires `tailable` to be true.
-   * @deprecated Starting from MongoDB 4.4 this flag is not needed and will be ignored.
-   */
-  oplogReplay?: boolean;
-}
-
-/** @internal */
-export class FindOperation extends CommandOperation<Document> {
-  /**
-   * @remarks WriteConcern can still be present on the options because
-   * we inherit options from the client/db/collection.  The
-   * key must be present on the options in order to delete it.
-   * This allows typescript to delete the key but will
-   * not allow a writeConcern to be assigned as a property on options.
-   */
-  override options: FindOptions & { writeConcern?: never };
-  filter: Document;
-
-  constructor(
-    collection: Collection | undefined,
-    ns: MongoDBNamespace,
-    filter: Document = {},
-    options: FindOptions = {}
-  ) {
-    super(collection, options);
-
-    this.options = { ...options };
-    delete this.options.writeConcern;
-    this.ns = ns;
-
-    if (typeof filter !== 'object' || Array.isArray(filter)) {
-      throw new MongoInvalidArgumentError('Query filter must be a plain object or ObjectId');
-    }
-
-    // special case passing in an ObjectId as a filter
-    this.filter = filter != null && filter._bsontype === 'ObjectId' ? { _id: filter } : filter;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Document> {
-    this.server = server;
-
-    const options = this.options;
-
-    let findCommand = makeFindCommand(this.ns, this.filter, options);
-    if (this.explain) {
-      findCommand = decorateWithExplain(findCommand, this.explain);
-    }
-
-    return server.commandAsync(this.ns, findCommand, {
-      ...this.options,
-      ...this.bsonOptions,
-      documentsReturnedIn: 'firstBatch',
-      session
-    });
-  }
-}
-
-function makeFindCommand(ns: MongoDBNamespace, filter: Document, options: FindOptions): Document {
-  const findCommand: Document = {
-    find: ns.collection,
-    filter
-  };
-
-  if (options.sort) {
-    findCommand.sort = formatSort(options.sort);
-  }
-
-  if (options.projection) {
-    let projection = options.projection;
-    if (projection && Array.isArray(projection)) {
-      projection = projection.length
-        ? projection.reduce((result, field) => {
-            result[field] = 1;
-            return result;
-          }, {})
-        : { _id: 1 };
-    }
-
-    findCommand.projection = projection;
-  }
-
-  if (options.hint) {
-    findCommand.hint = normalizeHintField(options.hint);
-  }
-
-  if (typeof options.skip === 'number') {
-    findCommand.skip = options.skip;
-  }
-
-  if (typeof options.limit === 'number') {
-    if (options.limit < 0) {
-      findCommand.limit = -options.limit;
-      findCommand.singleBatch = true;
-    } else {
-      findCommand.limit = options.limit;
-    }
-  }
-
-  if (typeof options.batchSize === 'number') {
-    if (options.batchSize < 0) {
-      if (
-        options.limit &&
-        options.limit !== 0 &&
-        Math.abs(options.batchSize) < Math.abs(options.limit)
-      ) {
-        findCommand.limit = -options.batchSize;
-      }
-
-      findCommand.singleBatch = true;
-    } else {
-      findCommand.batchSize = options.batchSize;
-    }
-  }
-
-  if (typeof options.singleBatch === 'boolean') {
-    findCommand.singleBatch = options.singleBatch;
-  }
-
-  // we check for undefined specifically here to allow falsy values
-  // eslint-disable-next-line no-restricted-syntax
-  if (options.comment !== undefined) {
-    findCommand.comment = options.comment;
-  }
-
-  if (typeof options.maxTimeMS === 'number') {
-    findCommand.maxTimeMS = options.maxTimeMS;
-  }
-
-  const readConcern = ReadConcern.fromOptions(options);
-  if (readConcern) {
-    findCommand.readConcern = readConcern.toJSON();
-  }
-
-  if (options.max) {
-    findCommand.max = options.max;
-  }
-
-  if (options.min) {
-    findCommand.min = options.min;
-  }
-
-  if (typeof options.returnKey === 'boolean') {
-    findCommand.returnKey = options.returnKey;
-  }
-
-  if (typeof options.showRecordId === 'boolean') {
-    findCommand.showRecordId = options.showRecordId;
-  }
-
-  if (typeof options.tailable === 'boolean') {
-    findCommand.tailable = options.tailable;
-  }
-
-  if (typeof options.oplogReplay === 'boolean') {
-    findCommand.oplogReplay = options.oplogReplay;
-  }
-
-  if (typeof options.timeout === 'boolean') {
-    findCommand.noCursorTimeout = !options.timeout;
-  } else if (typeof options.noCursorTimeout === 'boolean') {
-    findCommand.noCursorTimeout = options.noCursorTimeout;
-  }
-
-  if (typeof options.awaitData === 'boolean') {
-    findCommand.awaitData = options.awaitData;
-  }
-
-  if (typeof options.allowPartialResults === 'boolean') {
-    findCommand.allowPartialResults = options.allowPartialResults;
-  }
-
-  if (options.collation) {
-    findCommand.collation = options.collation;
-  }
-
-  if (typeof options.allowDiskUse === 'boolean') {
-    findCommand.allowDiskUse = options.allowDiskUse;
-  }
-
-  if (options.let) {
-    findCommand.let = options.let;
-  }
-
-  return findCommand;
-}
-
-defineAspects(FindOperation, [
-  Aspect.READ_OPERATION,
-  Aspect.RETRYABLE,
-  Aspect.EXPLAINABLE,
-  Aspect.CURSOR_CREATING
-]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/find_and_modify.ts b/server/data-import/node_modules/mongodb/src/operations/find_and_modify.ts
deleted file mode 100644
index 0e0d786be3d570714ab58f457ceb1bc9f74495d9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/find_and_modify.ts
+++ /dev/null
@@ -1,292 +0,0 @@
-import type { Document } from '../bson';
-import type { Collection } from '../collection';
-import { MongoCompatibilityError, MongoInvalidArgumentError } from '../error';
-import { ReadPreference } from '../read_preference';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { formatSort, type Sort, type SortForCmd } from '../sort';
-import { decorateWithCollation, hasAtomicOperators, maxWireVersion } from '../utils';
-import type { WriteConcern, WriteConcernSettings } from '../write_concern';
-import { CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects } from './operation';
-
-/** @public */
-export const ReturnDocument = Object.freeze({
-  BEFORE: 'before',
-  AFTER: 'after'
-} as const);
-
-/** @public */
-export type ReturnDocument = (typeof ReturnDocument)[keyof typeof ReturnDocument];
-
-/** @public */
-export interface FindOneAndDeleteOptions extends CommandOperationOptions {
-  /** An optional hint for query optimization. See the {@link https://www.mongodb.com/docs/manual/reference/command/update/#update-command-hint|update command} reference for more information.*/
-  hint?: Document;
-  /** Limits the fields to return for all matching documents. */
-  projection?: Document;
-  /** Determines which document the operation modifies if the query selects multiple documents. */
-  sort?: Sort;
-  /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-  let?: Document;
-  /**
-   * Return the ModifyResult instead of the modified document. Defaults to false
-   */
-  includeResultMetadata?: boolean;
-}
-
-/** @public */
-export interface FindOneAndReplaceOptions extends CommandOperationOptions {
-  /** Allow driver to bypass schema validation. */
-  bypassDocumentValidation?: boolean;
-  /** An optional hint for query optimization. See the {@link https://www.mongodb.com/docs/manual/reference/command/update/#update-command-hint|update command} reference for more information.*/
-  hint?: Document;
-  /** Limits the fields to return for all matching documents. */
-  projection?: Document;
-  /** When set to 'after', returns the updated document rather than the original. The default is 'before'.  */
-  returnDocument?: ReturnDocument;
-  /** Determines which document the operation modifies if the query selects multiple documents. */
-  sort?: Sort;
-  /** Upsert the document if it does not exist. */
-  upsert?: boolean;
-  /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-  let?: Document;
-  /**
-   * Return the ModifyResult instead of the modified document. Defaults to true
-   * but will default to false in the next major version.
-   */
-  includeResultMetadata?: boolean;
-}
-
-/** @public */
-export interface FindOneAndUpdateOptions extends CommandOperationOptions {
-  /** Optional list of array filters referenced in filtered positional operators */
-  arrayFilters?: Document[];
-  /** Allow driver to bypass schema validation. */
-  bypassDocumentValidation?: boolean;
-  /** An optional hint for query optimization. See the {@link https://www.mongodb.com/docs/manual/reference/command/update/#update-command-hint|update command} reference for more information.*/
-  hint?: Document;
-  /** Limits the fields to return for all matching documents. */
-  projection?: Document;
-  /** When set to 'after', returns the updated document rather than the original. The default is 'before'.  */
-  returnDocument?: ReturnDocument;
-  /** Determines which document the operation modifies if the query selects multiple documents. */
-  sort?: Sort;
-  /** Upsert the document if it does not exist. */
-  upsert?: boolean;
-  /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-  let?: Document;
-  /**
-   * Return the ModifyResult instead of the modified document. Defaults to true
-   * but will default to false in the next major version.
-   */
-  includeResultMetadata?: boolean;
-}
-
-/** @internal */
-interface FindAndModifyCmdBase {
-  remove: boolean;
-  new: boolean;
-  upsert: boolean;
-  update?: Document;
-  sort?: SortForCmd;
-  fields?: Document;
-  bypassDocumentValidation?: boolean;
-  arrayFilters?: Document[];
-  maxTimeMS?: number;
-  let?: Document;
-  writeConcern?: WriteConcern | WriteConcernSettings;
-  /**
-   * Comment to apply to the operation.
-   *
-   * In server versions pre-4.4, 'comment' must be string.  A server
-   * error will be thrown if any other type is provided.
-   *
-   * In server versions 4.4 and above, 'comment' can be any valid BSON type.
-   */
-  comment?: unknown;
-}
-
-function configureFindAndModifyCmdBaseUpdateOpts(
-  cmdBase: FindAndModifyCmdBase,
-  options: FindOneAndReplaceOptions | FindOneAndUpdateOptions
-): FindAndModifyCmdBase {
-  cmdBase.new = options.returnDocument === ReturnDocument.AFTER;
-  cmdBase.upsert = options.upsert === true;
-
-  if (options.bypassDocumentValidation === true) {
-    cmdBase.bypassDocumentValidation = options.bypassDocumentValidation;
-  }
-  return cmdBase;
-}
-
-/** @internal */
-class FindAndModifyOperation extends CommandOperation<Document> {
-  override options: FindOneAndReplaceOptions | FindOneAndUpdateOptions | FindOneAndDeleteOptions;
-  cmdBase: FindAndModifyCmdBase;
-  collection: Collection;
-  query: Document;
-  doc?: Document;
-
-  constructor(
-    collection: Collection,
-    query: Document,
-    options: FindOneAndReplaceOptions | FindOneAndUpdateOptions | FindOneAndDeleteOptions
-  ) {
-    super(collection, options);
-    this.options = options ?? {};
-    this.cmdBase = {
-      remove: false,
-      new: false,
-      upsert: false
-    };
-
-    options.includeResultMetadata ??= false;
-
-    const sort = formatSort(options.sort);
-    if (sort) {
-      this.cmdBase.sort = sort;
-    }
-
-    if (options.projection) {
-      this.cmdBase.fields = options.projection;
-    }
-
-    if (options.maxTimeMS) {
-      this.cmdBase.maxTimeMS = options.maxTimeMS;
-    }
-
-    // Decorate the findAndModify command with the write Concern
-    if (options.writeConcern) {
-      this.cmdBase.writeConcern = options.writeConcern;
-    }
-
-    if (options.let) {
-      this.cmdBase.let = options.let;
-    }
-
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (options.comment !== undefined) {
-      this.cmdBase.comment = options.comment;
-    }
-
-    // force primary read preference
-    this.readPreference = ReadPreference.primary;
-
-    this.collection = collection;
-    this.query = query;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Document> {
-    const coll = this.collection;
-    const query = this.query;
-    const options = { ...this.options, ...this.bsonOptions };
-
-    // Create findAndModify command object
-    const cmd: Document = {
-      findAndModify: coll.collectionName,
-      query: query,
-      ...this.cmdBase
-    };
-
-    // Have we specified collation
-    try {
-      decorateWithCollation(cmd, coll, options);
-    } catch (err) {
-      return err;
-    }
-
-    if (options.hint) {
-      // TODO: once this method becomes a CommandOperation we will have the server
-      // in place to check.
-      const unacknowledgedWrite = this.writeConcern?.w === 0;
-      if (unacknowledgedWrite || maxWireVersion(server) < 8) {
-        throw new MongoCompatibilityError(
-          'The current topology does not support a hint on findAndModify commands'
-        );
-      }
-
-      cmd.hint = options.hint;
-    }
-
-    // Execute the command
-    const result = await super.executeCommand(server, session, cmd);
-    return options.includeResultMetadata ? result : result.value ?? null;
-  }
-}
-
-/** @internal */
-export class FindOneAndDeleteOperation extends FindAndModifyOperation {
-  constructor(collection: Collection, filter: Document, options: FindOneAndDeleteOptions) {
-    // Basic validation
-    if (filter == null || typeof filter !== 'object') {
-      throw new MongoInvalidArgumentError('Argument "filter" must be an object');
-    }
-
-    super(collection, filter, options);
-    this.cmdBase.remove = true;
-  }
-}
-
-/** @internal */
-export class FindOneAndReplaceOperation extends FindAndModifyOperation {
-  constructor(
-    collection: Collection,
-    filter: Document,
-    replacement: Document,
-    options: FindOneAndReplaceOptions
-  ) {
-    if (filter == null || typeof filter !== 'object') {
-      throw new MongoInvalidArgumentError('Argument "filter" must be an object');
-    }
-
-    if (replacement == null || typeof replacement !== 'object') {
-      throw new MongoInvalidArgumentError('Argument "replacement" must be an object');
-    }
-
-    if (hasAtomicOperators(replacement)) {
-      throw new MongoInvalidArgumentError('Replacement document must not contain atomic operators');
-    }
-
-    super(collection, filter, options);
-    this.cmdBase.update = replacement;
-    configureFindAndModifyCmdBaseUpdateOpts(this.cmdBase, options);
-  }
-}
-
-/** @internal */
-export class FindOneAndUpdateOperation extends FindAndModifyOperation {
-  constructor(
-    collection: Collection,
-    filter: Document,
-    update: Document,
-    options: FindOneAndUpdateOptions
-  ) {
-    if (filter == null || typeof filter !== 'object') {
-      throw new MongoInvalidArgumentError('Argument "filter" must be an object');
-    }
-
-    if (update == null || typeof update !== 'object') {
-      throw new MongoInvalidArgumentError('Argument "update" must be an object');
-    }
-
-    if (!hasAtomicOperators(update)) {
-      throw new MongoInvalidArgumentError('Update document requires atomic operators');
-    }
-
-    super(collection, filter, options);
-    this.cmdBase.update = update;
-    configureFindAndModifyCmdBaseUpdateOpts(this.cmdBase, options);
-
-    if (options.arrayFilters) {
-      this.cmdBase.arrayFilters = options.arrayFilters;
-    }
-  }
-}
-
-defineAspects(FindAndModifyOperation, [
-  Aspect.WRITE_OPERATION,
-  Aspect.RETRYABLE,
-  Aspect.EXPLAINABLE
-]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/get_more.ts b/server/data-import/node_modules/mongodb/src/operations/get_more.ts
deleted file mode 100644
index 0a3693d57b93726efdc15baee153acdb11fed7d6..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/get_more.ts
+++ /dev/null
@@ -1,100 +0,0 @@
-import type { Document, Long } from '../bson';
-import { MongoRuntimeError } from '../error';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { maxWireVersion, type MongoDBNamespace } from '../utils';
-import { AbstractOperation, Aspect, defineAspects, type OperationOptions } from './operation';
-
-/** @internal */
-export interface GetMoreOptions extends OperationOptions {
-  /** Set the batchSize for the getMoreCommand when iterating over the query results. */
-  batchSize?: number;
-  /**
-   * Comment to apply to the operation.
-   *
-   * getMore only supports 'comment' in server versions 4.4 and above.
-   */
-  comment?: unknown;
-  /** Number of milliseconds to wait before aborting the query. */
-  maxTimeMS?: number;
-  /** TODO(NODE-4413): Address bug with maxAwaitTimeMS not being passed in from the cursor correctly */
-  maxAwaitTimeMS?: number;
-}
-
-/**
- * GetMore command: https://www.mongodb.com/docs/manual/reference/command/getMore/
- * @internal
- */
-export interface GetMoreCommand {
-  getMore: Long;
-  collection: string;
-  batchSize?: number;
-  maxTimeMS?: number;
-  /** Only supported on wire versions 10 or greater */
-  comment?: unknown;
-}
-
-/** @internal */
-export class GetMoreOperation extends AbstractOperation {
-  cursorId: Long;
-  override options: GetMoreOptions;
-
-  constructor(ns: MongoDBNamespace, cursorId: Long, server: Server, options: GetMoreOptions) {
-    super(options);
-
-    this.options = options;
-    this.ns = ns;
-    this.cursorId = cursorId;
-    this.server = server;
-  }
-
-  /**
-   * Although there is a server already associated with the get more operation, the signature
-   * for execute passes a server so we will just use that one.
-   */
-  override async execute(server: Server, _session: ClientSession | undefined): Promise<Document> {
-    if (server !== this.server) {
-      throw new MongoRuntimeError('Getmore must run on the same server operation began on');
-    }
-
-    if (this.cursorId == null || this.cursorId.isZero()) {
-      throw new MongoRuntimeError('Unable to iterate cursor with no id');
-    }
-
-    const collection = this.ns.collection;
-    if (collection == null) {
-      // Cursors should have adopted the namespace returned by MongoDB
-      // which should always defined a collection name (even a pseudo one, ex. db.aggregate())
-      throw new MongoRuntimeError('A collection name must be determined before getMore');
-    }
-
-    const getMoreCmd: GetMoreCommand = {
-      getMore: this.cursorId,
-      collection
-    };
-
-    if (typeof this.options.batchSize === 'number') {
-      getMoreCmd.batchSize = Math.abs(this.options.batchSize);
-    }
-
-    if (typeof this.options.maxAwaitTimeMS === 'number') {
-      getMoreCmd.maxTimeMS = this.options.maxAwaitTimeMS;
-    }
-
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (this.options.comment !== undefined && maxWireVersion(server) >= 9) {
-      getMoreCmd.comment = this.options.comment;
-    }
-
-    const commandOptions = {
-      returnFieldSelector: null,
-      documentsReturnedIn: 'nextBatch',
-      ...this.options
-    };
-
-    return server.commandAsync(this.ns, getMoreCmd, commandOptions);
-  }
-}
-
-defineAspects(GetMoreOperation, [Aspect.READ_OPERATION, Aspect.MUST_SELECT_SAME_SERVER]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/indexes.ts b/server/data-import/node_modules/mongodb/src/operations/indexes.ts
deleted file mode 100644
index b147b67cbed71eeda4e632ba9d43db0ebb75ba50..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/indexes.ts
+++ /dev/null
@@ -1,446 +0,0 @@
-import type { Document } from '../bson';
-import type { Collection } from '../collection';
-import type { Db } from '../db';
-import { MongoCompatibilityError, MONGODB_ERROR_CODES, MongoError } from '../error';
-import { type OneOrMore } from '../mongo_types';
-import { ReadPreference } from '../read_preference';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { isObject, maxWireVersion, type MongoDBNamespace } from '../utils';
-import {
-  type CollationOptions,
-  CommandOperation,
-  type CommandOperationOptions,
-  type OperationParent
-} from './command';
-import { indexInformation, type IndexInformationOptions } from './common_functions';
-import { AbstractOperation, Aspect, defineAspects } from './operation';
-
-const VALID_INDEX_OPTIONS = new Set([
-  'background',
-  'unique',
-  'name',
-  'partialFilterExpression',
-  'sparse',
-  'hidden',
-  'expireAfterSeconds',
-  'storageEngine',
-  'collation',
-  'version',
-
-  // text indexes
-  'weights',
-  'default_language',
-  'language_override',
-  'textIndexVersion',
-
-  // 2d-sphere indexes
-  '2dsphereIndexVersion',
-
-  // 2d indexes
-  'bits',
-  'min',
-  'max',
-
-  // geoHaystack Indexes
-  'bucketSize',
-
-  // wildcard indexes
-  'wildcardProjection'
-]);
-
-/** @public */
-export type IndexDirection =
-  | -1
-  | 1
-  | '2d'
-  | '2dsphere'
-  | 'text'
-  | 'geoHaystack'
-  | 'hashed'
-  | number;
-
-function isIndexDirection(x: unknown): x is IndexDirection {
-  return (
-    typeof x === 'number' || x === '2d' || x === '2dsphere' || x === 'text' || x === 'geoHaystack'
-  );
-}
-/** @public */
-export type IndexSpecification = OneOrMore<
-  | string
-  | [string, IndexDirection]
-  | { [key: string]: IndexDirection }
-  | Map<string, IndexDirection>
->;
-
-/** @public */
-export interface IndexDescription
-  extends Pick<
-    CreateIndexesOptions,
-    | 'background'
-    | 'unique'
-    | 'partialFilterExpression'
-    | 'sparse'
-    | 'hidden'
-    | 'expireAfterSeconds'
-    | 'storageEngine'
-    | 'version'
-    | 'weights'
-    | 'default_language'
-    | 'language_override'
-    | 'textIndexVersion'
-    | '2dsphereIndexVersion'
-    | 'bits'
-    | 'min'
-    | 'max'
-    | 'bucketSize'
-    | 'wildcardProjection'
-  > {
-  collation?: CollationOptions;
-  name?: string;
-  key: { [key: string]: IndexDirection } | Map<string, IndexDirection>;
-}
-
-/** @public */
-export interface CreateIndexesOptions extends Omit<CommandOperationOptions, 'writeConcern'> {
-  /** Creates the index in the background, yielding whenever possible. */
-  background?: boolean;
-  /** Creates an unique index. */
-  unique?: boolean;
-  /** Override the autogenerated index name (useful if the resulting name is larger than 128 bytes) */
-  name?: string;
-  /** Creates a partial index based on the given filter object (MongoDB 3.2 or higher) */
-  partialFilterExpression?: Document;
-  /** Creates a sparse index. */
-  sparse?: boolean;
-  /** Allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher) */
-  expireAfterSeconds?: number;
-  /** Allows users to configure the storage engine on a per-index basis when creating an index. (MongoDB 3.0 or higher) */
-  storageEngine?: Document;
-  /** (MongoDB 4.4. or higher) Specifies how many data-bearing members of a replica set, including the primary, must complete the index builds successfully before the primary marks the indexes as ready. This option accepts the same values for the "w" field in a write concern plus "votingMembers", which indicates all voting data-bearing nodes. */
-  commitQuorum?: number | string;
-  /** Specifies the index version number, either 0 or 1. */
-  version?: number;
-  // text indexes
-  weights?: Document;
-  default_language?: string;
-  language_override?: string;
-  textIndexVersion?: number;
-  // 2d-sphere indexes
-  '2dsphereIndexVersion'?: number;
-  // 2d indexes
-  bits?: number;
-  /** For geospatial indexes set the lower bound for the co-ordinates. */
-  min?: number;
-  /** For geospatial indexes set the high bound for the co-ordinates. */
-  max?: number;
-  // geoHaystack Indexes
-  bucketSize?: number;
-  // wildcard indexes
-  wildcardProjection?: Document;
-  /** Specifies that the index should exist on the target collection but should not be used by the query planner when executing operations. (MongoDB 4.4 or higher) */
-  hidden?: boolean;
-}
-
-function isSingleIndexTuple(t: unknown): t is [string, IndexDirection] {
-  return Array.isArray(t) && t.length === 2 && isIndexDirection(t[1]);
-}
-
-function makeIndexSpec(
-  indexSpec: IndexSpecification,
-  options?: CreateIndexesOptions
-): IndexDescription {
-  const key: Map<string, IndexDirection> = new Map();
-
-  const indexSpecs =
-    !Array.isArray(indexSpec) || isSingleIndexTuple(indexSpec) ? [indexSpec] : indexSpec;
-
-  // Iterate through array and handle different types
-  for (const spec of indexSpecs) {
-    if (typeof spec === 'string') {
-      key.set(spec, 1);
-    } else if (Array.isArray(spec)) {
-      key.set(spec[0], spec[1] ?? 1);
-    } else if (spec instanceof Map) {
-      for (const [property, value] of spec) {
-        key.set(property, value);
-      }
-    } else if (isObject(spec)) {
-      for (const [property, value] of Object.entries(spec)) {
-        key.set(property, value);
-      }
-    }
-  }
-
-  return { ...options, key };
-}
-
-/** @internal */
-export class IndexesOperation extends AbstractOperation<Document[]> {
-  override options: IndexInformationOptions;
-  collection: Collection;
-
-  constructor(collection: Collection, options: IndexInformationOptions) {
-    super(options);
-    this.options = options;
-    this.collection = collection;
-  }
-
-  override async execute(_server: Server, session: ClientSession | undefined): Promise<Document[]> {
-    const coll = this.collection;
-    const options = this.options;
-
-    return indexInformation(coll.s.db, coll.collectionName, {
-      full: true,
-      ...options,
-      readPreference: this.readPreference,
-      session
-    });
-  }
-}
-
-/** @internal */
-export class CreateIndexesOperation<
-  T extends string | string[] = string[]
-> extends CommandOperation<T> {
-  override options: CreateIndexesOptions;
-  collectionName: string;
-  indexes: ReadonlyArray<Omit<IndexDescription, 'key'> & { key: Map<string, IndexDirection> }>;
-
-  constructor(
-    parent: OperationParent,
-    collectionName: string,
-    indexes: IndexDescription[],
-    options?: CreateIndexesOptions
-  ) {
-    super(parent, options);
-
-    this.options = options ?? {};
-    this.collectionName = collectionName;
-    this.indexes = indexes.map(userIndex => {
-      // Ensure the key is a Map to preserve index key ordering
-      const key =
-        userIndex.key instanceof Map ? userIndex.key : new Map(Object.entries(userIndex.key));
-      const name = userIndex.name != null ? userIndex.name : Array.from(key).flat().join('_');
-      const validIndexOptions = Object.fromEntries(
-        Object.entries({ ...userIndex }).filter(([optionName]) =>
-          VALID_INDEX_OPTIONS.has(optionName)
-        )
-      );
-      return {
-        ...validIndexOptions,
-        name,
-        key
-      };
-    });
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<T> {
-    const options = this.options;
-    const indexes = this.indexes;
-
-    const serverWireVersion = maxWireVersion(server);
-
-    const cmd: Document = { createIndexes: this.collectionName, indexes };
-
-    if (options.commitQuorum != null) {
-      if (serverWireVersion < 9) {
-        throw new MongoCompatibilityError(
-          'Option `commitQuorum` for `createIndexes` not supported on servers < 4.4'
-        );
-      }
-      cmd.commitQuorum = options.commitQuorum;
-    }
-
-    // collation is set on each index, it should not be defined at the root
-    this.options.collation = undefined;
-
-    await super.executeCommand(server, session, cmd);
-
-    const indexNames = indexes.map(index => index.name || '');
-    return indexNames as T;
-  }
-}
-
-/** @internal */
-export class CreateIndexOperation extends CreateIndexesOperation<string> {
-  constructor(
-    parent: OperationParent,
-    collectionName: string,
-    indexSpec: IndexSpecification,
-    options?: CreateIndexesOptions
-  ) {
-    super(parent, collectionName, [makeIndexSpec(indexSpec, options)], options);
-  }
-  override async execute(server: Server, session: ClientSession | undefined): Promise<string> {
-    const indexNames = await super.execute(server, session);
-    return indexNames[0];
-  }
-}
-
-/** @internal */
-export class EnsureIndexOperation extends CreateIndexOperation {
-  db: Db;
-
-  constructor(
-    db: Db,
-    collectionName: string,
-    indexSpec: IndexSpecification,
-    options?: CreateIndexesOptions
-  ) {
-    super(db, collectionName, indexSpec, options);
-
-    this.readPreference = ReadPreference.primary;
-    this.db = db;
-    this.collectionName = collectionName;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<string> {
-    const indexName = this.indexes[0].name;
-    const indexes = await this.db
-      .collection(this.collectionName)
-      .listIndexes({ session })
-      .toArray()
-      .catch(error => {
-        if (error instanceof MongoError && error.code === MONGODB_ERROR_CODES.NamespaceNotFound)
-          return [];
-        throw error;
-      });
-    if (indexName && indexes.some(index => index.name === indexName)) return indexName;
-    return super.execute(server, session);
-  }
-}
-
-/** @public */
-export type DropIndexesOptions = CommandOperationOptions;
-
-/** @internal */
-export class DropIndexOperation extends CommandOperation<Document> {
-  override options: DropIndexesOptions;
-  collection: Collection;
-  indexName: string;
-
-  constructor(collection: Collection, indexName: string, options?: DropIndexesOptions) {
-    super(collection, options);
-
-    this.options = options ?? {};
-    this.collection = collection;
-    this.indexName = indexName;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Document> {
-    const cmd = { dropIndexes: this.collection.collectionName, index: this.indexName };
-    return super.executeCommand(server, session, cmd);
-  }
-}
-
-/** @public */
-export interface ListIndexesOptions extends Omit<CommandOperationOptions, 'writeConcern'> {
-  /** The batchSize for the returned command cursor or if pre 2.8 the systems batch collection */
-  batchSize?: number;
-}
-
-/** @internal */
-export class ListIndexesOperation extends CommandOperation<Document> {
-  /**
-   * @remarks WriteConcern can still be present on the options because
-   * we inherit options from the client/db/collection.  The
-   * key must be present on the options in order to delete it.
-   * This allows typescript to delete the key but will
-   * not allow a writeConcern to be assigned as a property on options.
-   */
-  override options: ListIndexesOptions & { writeConcern?: never };
-  collectionNamespace: MongoDBNamespace;
-
-  constructor(collection: Collection, options?: ListIndexesOptions) {
-    super(collection, options);
-
-    this.options = { ...options };
-    delete this.options.writeConcern;
-    this.collectionNamespace = collection.s.namespace;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Document> {
-    const serverWireVersion = maxWireVersion(server);
-
-    const cursor = this.options.batchSize ? { batchSize: this.options.batchSize } : {};
-
-    const command: Document = { listIndexes: this.collectionNamespace.collection, cursor };
-
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (serverWireVersion >= 9 && this.options.comment !== undefined) {
-      command.comment = this.options.comment;
-    }
-
-    return super.executeCommand(server, session, command);
-  }
-}
-
-/** @internal */
-export class IndexExistsOperation extends AbstractOperation<boolean> {
-  override options: IndexInformationOptions;
-  collection: Collection;
-  indexes: string | string[];
-
-  constructor(
-    collection: Collection,
-    indexes: string | string[],
-    options: IndexInformationOptions
-  ) {
-    super(options);
-    this.options = options;
-    this.collection = collection;
-    this.indexes = indexes;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<boolean> {
-    const coll = this.collection;
-    const indexes = this.indexes;
-
-    const info = await indexInformation(coll.s.db, coll.collectionName, {
-      ...this.options,
-      readPreference: this.readPreference,
-      session
-    });
-    // Let's check for the index names
-    if (!Array.isArray(indexes)) return info[indexes] != null;
-    // All keys found return true
-    return indexes.every(indexName => info[indexName] != null);
-  }
-}
-
-/** @internal */
-export class IndexInformationOperation extends AbstractOperation<Document> {
-  override options: IndexInformationOptions;
-  db: Db;
-  name: string;
-
-  constructor(db: Db, name: string, options?: IndexInformationOptions) {
-    super(options);
-    this.options = options ?? {};
-    this.db = db;
-    this.name = name;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Document> {
-    const db = this.db;
-    const name = this.name;
-
-    return indexInformation(db, name, {
-      ...this.options,
-      readPreference: this.readPreference,
-      session
-    });
-  }
-}
-
-defineAspects(ListIndexesOperation, [
-  Aspect.READ_OPERATION,
-  Aspect.RETRYABLE,
-  Aspect.CURSOR_CREATING
-]);
-defineAspects(CreateIndexesOperation, [Aspect.WRITE_OPERATION]);
-defineAspects(CreateIndexOperation, [Aspect.WRITE_OPERATION]);
-defineAspects(EnsureIndexOperation, [Aspect.WRITE_OPERATION]);
-defineAspects(DropIndexOperation, [Aspect.WRITE_OPERATION]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/insert.ts b/server/data-import/node_modules/mongodb/src/operations/insert.ts
deleted file mode 100644
index 8a63ad4f4dd2931896242dc4acd783dc1a3f6214..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/insert.ts
+++ /dev/null
@@ -1,150 +0,0 @@
-import type { Document } from '../bson';
-import type { BulkWriteOptions } from '../bulk/common';
-import type { Collection } from '../collection';
-import { MongoInvalidArgumentError, MongoServerError } from '../error';
-import type { InferIdType } from '../mongo_types';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import type { MongoDBNamespace } from '../utils';
-import { WriteConcern } from '../write_concern';
-import { BulkWriteOperation } from './bulk_write';
-import { CommandOperation, type CommandOperationOptions } from './command';
-import { prepareDocs } from './common_functions';
-import { AbstractOperation, Aspect, defineAspects } from './operation';
-
-/** @internal */
-export class InsertOperation extends CommandOperation<Document> {
-  override options: BulkWriteOptions;
-  documents: Document[];
-
-  constructor(ns: MongoDBNamespace, documents: Document[], options: BulkWriteOptions) {
-    super(undefined, options);
-    this.options = { ...options, checkKeys: options.checkKeys ?? false };
-    this.ns = ns;
-    this.documents = documents;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Document> {
-    const options = this.options ?? {};
-    const ordered = typeof options.ordered === 'boolean' ? options.ordered : true;
-    const command: Document = {
-      insert: this.ns.collection,
-      documents: this.documents,
-      ordered
-    };
-
-    if (typeof options.bypassDocumentValidation === 'boolean') {
-      command.bypassDocumentValidation = options.bypassDocumentValidation;
-    }
-
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (options.comment !== undefined) {
-      command.comment = options.comment;
-    }
-
-    return super.executeCommand(server, session, command);
-  }
-}
-
-/** @public */
-export interface InsertOneOptions extends CommandOperationOptions {
-  /** Allow driver to bypass schema validation. */
-  bypassDocumentValidation?: boolean;
-  /** Force server to assign _id values instead of driver. */
-  forceServerObjectId?: boolean;
-}
-
-/** @public */
-export interface InsertOneResult<TSchema = Document> {
-  /** Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined */
-  acknowledged: boolean;
-  /** The identifier that was inserted. If the server generated the identifier, this value will be null as the driver does not have access to that data */
-  insertedId: InferIdType<TSchema>;
-}
-
-export class InsertOneOperation extends InsertOperation {
-  constructor(collection: Collection, doc: Document, options: InsertOneOptions) {
-    super(collection.s.namespace, prepareDocs(collection, [doc], options), options);
-  }
-
-  override async execute(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<InsertOneResult> {
-    const res = await super.execute(server, session);
-    if (res.code) throw new MongoServerError(res);
-    if (res.writeErrors) {
-      // This should be a WriteError but we can't change it now because of error hierarchy
-      throw new MongoServerError(res.writeErrors[0]);
-    }
-
-    return {
-      acknowledged: this.writeConcern?.w !== 0,
-      insertedId: this.documents[0]._id
-    };
-  }
-}
-
-/** @public */
-export interface InsertManyResult<TSchema = Document> {
-  /** Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined */
-  acknowledged: boolean;
-  /** The number of inserted documents for this operations */
-  insertedCount: number;
-  /** Map of the index of the inserted document to the id of the inserted document */
-  insertedIds: { [key: number]: InferIdType<TSchema> };
-}
-
-/** @internal */
-export class InsertManyOperation extends AbstractOperation<InsertManyResult> {
-  override options: BulkWriteOptions;
-  collection: Collection;
-  docs: Document[];
-
-  constructor(collection: Collection, docs: Document[], options: BulkWriteOptions) {
-    super(options);
-
-    if (!Array.isArray(docs)) {
-      throw new MongoInvalidArgumentError('Argument "docs" must be an array of documents');
-    }
-
-    this.options = options;
-    this.collection = collection;
-    this.docs = docs;
-  }
-
-  override async execute(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<InsertManyResult> {
-    const coll = this.collection;
-    const options = { ...this.options, ...this.bsonOptions, readPreference: this.readPreference };
-    const writeConcern = WriteConcern.fromOptions(options);
-    const bulkWriteOperation = new BulkWriteOperation(
-      coll,
-      prepareDocs(coll, this.docs, options).map(document => ({ insertOne: { document } })),
-      options
-    );
-
-    try {
-      const res = await bulkWriteOperation.execute(server, session);
-      return {
-        acknowledged: writeConcern?.w !== 0,
-        insertedCount: res.insertedCount,
-        insertedIds: res.insertedIds
-      };
-    } catch (err) {
-      if (err && err.message === 'Operation must be an object with an operation key') {
-        throw new MongoInvalidArgumentError(
-          'Collection.insertMany() cannot be called with an array that has null/undefined values'
-        );
-      }
-      throw err;
-    }
-  }
-}
-
-defineAspects(InsertOperation, [Aspect.RETRYABLE, Aspect.WRITE_OPERATION]);
-defineAspects(InsertOneOperation, [Aspect.RETRYABLE, Aspect.WRITE_OPERATION]);
-defineAspects(InsertManyOperation, [Aspect.WRITE_OPERATION]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/is_capped.ts b/server/data-import/node_modules/mongodb/src/operations/is_capped.ts
deleted file mode 100644
index 0a08ff4567116bc859fedd61933437a46f20e5f5..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/is_capped.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { Collection } from '../collection';
-import { MongoAPIError } from '../error';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { AbstractOperation, type OperationOptions } from './operation';
-
-/** @internal */
-export class IsCappedOperation extends AbstractOperation<boolean> {
-  override options: OperationOptions;
-  collection: Collection;
-
-  constructor(collection: Collection, options: OperationOptions) {
-    super(options);
-    this.options = options;
-    this.collection = collection;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<boolean> {
-    const coll = this.collection;
-    const [collection] = await coll.s.db
-      .listCollections(
-        { name: coll.collectionName },
-        { ...this.options, nameOnly: false, readPreference: this.readPreference, session }
-      )
-      .toArray();
-    if (collection == null || collection.options == null) {
-      throw new MongoAPIError(`collection ${coll.namespace} not found`);
-    }
-    return !!collection.options?.capped;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/kill_cursors.ts b/server/data-import/node_modules/mongodb/src/operations/kill_cursors.ts
deleted file mode 100644
index b9085464569b09c087d7094671a26a0f8955ffec..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/kill_cursors.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import type { Long } from '../bson';
-import { MongoRuntimeError } from '../error';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import type { MongoDBNamespace } from '../utils';
-import { AbstractOperation, Aspect, defineAspects, type OperationOptions } from './operation';
-
-/**
- * https://www.mongodb.com/docs/manual/reference/command/killCursors/
- * @internal
- */
-interface KillCursorsCommand {
-  killCursors: string;
-  cursors: Long[];
-  comment?: unknown;
-}
-
-export class KillCursorsOperation extends AbstractOperation {
-  cursorId: Long;
-
-  constructor(cursorId: Long, ns: MongoDBNamespace, server: Server, options: OperationOptions) {
-    super(options);
-    this.ns = ns;
-    this.cursorId = cursorId;
-    this.server = server;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<void> {
-    if (server !== this.server) {
-      throw new MongoRuntimeError('Killcursor must run on the same server operation began on');
-    }
-
-    const killCursors = this.ns.collection;
-    if (killCursors == null) {
-      // Cursors should have adopted the namespace returned by MongoDB
-      // which should always defined a collection name (even a pseudo one, ex. db.aggregate())
-      throw new MongoRuntimeError('A collection name must be determined before killCursors');
-    }
-
-    const killCursorsCommand: KillCursorsCommand = {
-      killCursors,
-      cursors: [this.cursorId]
-    };
-    try {
-      await server.commandAsync(this.ns, killCursorsCommand, { session });
-    } catch {
-      // The driver should never emit errors from killCursors, this is spec-ed behavior
-    }
-  }
-}
-
-defineAspects(KillCursorsOperation, [Aspect.MUST_SELECT_SAME_SERVER]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/list_collections.ts b/server/data-import/node_modules/mongodb/src/operations/list_collections.ts
deleted file mode 100644
index 4947ca7862f9c57af22488cf72dc1bfcf77f22c4..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/list_collections.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-import type { Binary, Document } from '../bson';
-import type { Db } from '../db';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { maxWireVersion } from '../utils';
-import { CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects } from './operation';
-
-/** @public */
-export interface ListCollectionsOptions extends Omit<CommandOperationOptions, 'writeConcern'> {
-  /** Since 4.0: If true, will only return the collection name in the response, and will omit additional info */
-  nameOnly?: boolean;
-  /** Since 4.0: If true and nameOnly is true, allows a user without the required privilege (i.e. listCollections action on the database) to run the command when access control is enforced. */
-  authorizedCollections?: boolean;
-  /** The batchSize for the returned command cursor or if pre 2.8 the systems batch collection */
-  batchSize?: number;
-}
-
-/** @internal */
-export class ListCollectionsOperation extends CommandOperation<Document> {
-  /**
-   * @remarks WriteConcern can still be present on the options because
-   * we inherit options from the client/db/collection.  The
-   * key must be present on the options in order to delete it.
-   * This allows typescript to delete the key but will
-   * not allow a writeConcern to be assigned as a property on options.
-   */
-  override options: ListCollectionsOptions & { writeConcern?: never };
-  db: Db;
-  filter: Document;
-  nameOnly: boolean;
-  authorizedCollections: boolean;
-  batchSize?: number;
-
-  constructor(db: Db, filter: Document, options?: ListCollectionsOptions) {
-    super(db, options);
-
-    this.options = { ...options };
-    delete this.options.writeConcern;
-    this.db = db;
-    this.filter = filter;
-    this.nameOnly = !!this.options.nameOnly;
-    this.authorizedCollections = !!this.options.authorizedCollections;
-
-    if (typeof this.options.batchSize === 'number') {
-      this.batchSize = this.options.batchSize;
-    }
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Document> {
-    return super.executeCommand(server, session, this.generateCommand(maxWireVersion(server)));
-  }
-
-  /* This is here for the purpose of unit testing the final command that gets sent. */
-  generateCommand(wireVersion: number): Document {
-    const command: Document = {
-      listCollections: 1,
-      filter: this.filter,
-      cursor: this.batchSize ? { batchSize: this.batchSize } : {},
-      nameOnly: this.nameOnly,
-      authorizedCollections: this.authorizedCollections
-    };
-
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (wireVersion >= 9 && this.options.comment !== undefined) {
-      command.comment = this.options.comment;
-    }
-
-    return command;
-  }
-}
-
-/** @public */
-export interface CollectionInfo extends Document {
-  name: string;
-  type?: string;
-  options?: Document;
-  info?: {
-    readOnly?: false;
-    uuid?: Binary;
-  };
-  idIndex?: Document;
-}
-
-defineAspects(ListCollectionsOperation, [
-  Aspect.READ_OPERATION,
-  Aspect.RETRYABLE,
-  Aspect.CURSOR_CREATING
-]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/list_databases.ts b/server/data-import/node_modules/mongodb/src/operations/list_databases.ts
deleted file mode 100644
index f51da41bd271815f1c5e901f910de01216918fad..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/list_databases.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import type { Document } from '../bson';
-import type { Db } from '../db';
-import { type TODO_NODE_3286 } from '../mongo_types';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { maxWireVersion, MongoDBNamespace } from '../utils';
-import { CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects } from './operation';
-
-/** @public */
-export interface ListDatabasesResult {
-  databases: ({ name: string; sizeOnDisk?: number; empty?: boolean } & Document)[];
-  totalSize?: number;
-  totalSizeMb?: number;
-  ok: 1 | 0;
-}
-
-/** @public */
-export interface ListDatabasesOptions extends CommandOperationOptions {
-  /** A query predicate that determines which databases are listed */
-  filter?: Document;
-  /** A flag to indicate whether the command should return just the database names, or return both database names and size information */
-  nameOnly?: boolean;
-  /** A flag that determines which databases are returned based on the user privileges when access control is enabled */
-  authorizedDatabases?: boolean;
-}
-
-/** @internal */
-export class ListDatabasesOperation extends CommandOperation<ListDatabasesResult> {
-  override options: ListDatabasesOptions;
-
-  constructor(db: Db, options?: ListDatabasesOptions) {
-    super(db, options);
-    this.options = options ?? {};
-    this.ns = new MongoDBNamespace('admin', '$cmd');
-  }
-
-  override async execute(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<ListDatabasesResult> {
-    const cmd: Document = { listDatabases: 1 };
-
-    if (typeof this.options.nameOnly === 'boolean') {
-      cmd.nameOnly = this.options.nameOnly;
-    }
-
-    if (this.options.filter) {
-      cmd.filter = this.options.filter;
-    }
-
-    if (typeof this.options.authorizedDatabases === 'boolean') {
-      cmd.authorizedDatabases = this.options.authorizedDatabases;
-    }
-
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (maxWireVersion(server) >= 9 && this.options.comment !== undefined) {
-      cmd.comment = this.options.comment;
-    }
-
-    return super.executeCommand(server, session, cmd) as TODO_NODE_3286;
-  }
-}
-
-defineAspects(ListDatabasesOperation, [Aspect.READ_OPERATION, Aspect.RETRYABLE]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/operation.ts b/server/data-import/node_modules/mongodb/src/operations/operation.ts
deleted file mode 100644
index 1e56a777ecbcf3616b46f78883516be91b990e01..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/operation.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-import { type BSONSerializeOptions, type Document, resolveBSONOptions } from '../bson';
-import { ReadPreference, type ReadPreferenceLike } from '../read_preference';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import type { MongoDBNamespace } from '../utils';
-
-export const Aspect = {
-  READ_OPERATION: Symbol('READ_OPERATION'),
-  WRITE_OPERATION: Symbol('WRITE_OPERATION'),
-  RETRYABLE: Symbol('RETRYABLE'),
-  EXPLAINABLE: Symbol('EXPLAINABLE'),
-  SKIP_COLLATION: Symbol('SKIP_COLLATION'),
-  CURSOR_CREATING: Symbol('CURSOR_CREATING'),
-  MUST_SELECT_SAME_SERVER: Symbol('MUST_SELECT_SAME_SERVER')
-} as const;
-
-/** @public */
-export type Hint = string | Document;
-
-// eslint-disable-next-line @typescript-eslint/ban-types
-export interface OperationConstructor extends Function {
-  aspects?: Set<symbol>;
-}
-
-/** @public */
-export interface OperationOptions extends BSONSerializeOptions {
-  /** Specify ClientSession for this command */
-  session?: ClientSession;
-  willRetryWrite?: boolean;
-
-  /** The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest). */
-  readPreference?: ReadPreferenceLike;
-
-  /** @internal Hints to `executeOperation` that this operation should not unpin on an ended transaction */
-  bypassPinningCheck?: boolean;
-  omitReadPreference?: boolean;
-}
-
-/** @internal */
-const kSession = Symbol('session');
-
-/**
- * This class acts as a parent class for any operation and is responsible for setting this.options,
- * as well as setting and getting a session.
- * Additionally, this class implements `hasAspect`, which determines whether an operation has
- * a specific aspect.
- * @internal
- */
-export abstract class AbstractOperation<TResult = any> {
-  ns!: MongoDBNamespace;
-  readPreference: ReadPreference;
-  server!: Server;
-  bypassPinningCheck: boolean;
-  trySecondaryWrite: boolean;
-
-  // BSON serialization options
-  bsonOptions?: BSONSerializeOptions;
-
-  options: OperationOptions;
-
-  [kSession]: ClientSession | undefined;
-
-  constructor(options: OperationOptions = {}) {
-    this.readPreference = this.hasAspect(Aspect.WRITE_OPERATION)
-      ? ReadPreference.primary
-      : ReadPreference.fromOptions(options) ?? ReadPreference.primary;
-
-    // Pull the BSON serialize options from the already-resolved options
-    this.bsonOptions = resolveBSONOptions(options);
-
-    this[kSession] = options.session != null ? options.session : undefined;
-
-    this.options = options;
-    this.bypassPinningCheck = !!options.bypassPinningCheck;
-    this.trySecondaryWrite = false;
-  }
-
-  abstract execute(server: Server, session: ClientSession | undefined): Promise<TResult>;
-
-  hasAspect(aspect: symbol): boolean {
-    const ctor = this.constructor as OperationConstructor;
-    if (ctor.aspects == null) {
-      return false;
-    }
-
-    return ctor.aspects.has(aspect);
-  }
-
-  get session(): ClientSession | undefined {
-    return this[kSession];
-  }
-
-  clearSession() {
-    this[kSession] = undefined;
-  }
-
-  get canRetryRead(): boolean {
-    return true;
-  }
-
-  get canRetryWrite(): boolean {
-    return true;
-  }
-}
-
-export function defineAspects(
-  operation: OperationConstructor,
-  aspects: symbol | symbol[] | Set<symbol>
-): Set<symbol> {
-  if (!Array.isArray(aspects) && !(aspects instanceof Set)) {
-    aspects = [aspects];
-  }
-
-  aspects = new Set(aspects);
-  Object.defineProperty(operation, 'aspects', {
-    value: aspects,
-    writable: false
-  });
-
-  return aspects;
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/options_operation.ts b/server/data-import/node_modules/mongodb/src/operations/options_operation.ts
deleted file mode 100644
index e985cc0973a1c38277a5dad6de84d54ee998cf19..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/options_operation.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import type { Document } from '../bson';
-import type { Collection } from '../collection';
-import { MongoAPIError } from '../error';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { AbstractOperation, type OperationOptions } from './operation';
-
-/** @internal */
-export class OptionsOperation extends AbstractOperation<Document> {
-  override options: OperationOptions;
-  collection: Collection;
-
-  constructor(collection: Collection, options: OperationOptions) {
-    super(options);
-    this.options = options;
-    this.collection = collection;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Document> {
-    const coll = this.collection;
-    const [collection] = await coll.s.db
-      .listCollections(
-        { name: coll.collectionName },
-        { ...this.options, nameOnly: false, readPreference: this.readPreference, session }
-      )
-      .toArray();
-    if (collection == null || collection.options == null) {
-      throw new MongoAPIError(`collection ${coll.namespace} not found`);
-    }
-    return collection.options;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/profiling_level.ts b/server/data-import/node_modules/mongodb/src/operations/profiling_level.ts
deleted file mode 100644
index f96f03037640d0e3d4ca59d4ca553727004a3cc1..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/profiling_level.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { Db } from '../db';
-import { MongoUnexpectedServerResponseError } from '../error';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { CommandOperation, type CommandOperationOptions } from './command';
-
-/** @public */
-export type ProfilingLevelOptions = CommandOperationOptions;
-
-/** @internal */
-export class ProfilingLevelOperation extends CommandOperation<string> {
-  override options: ProfilingLevelOptions;
-
-  constructor(db: Db, options: ProfilingLevelOptions) {
-    super(db, options);
-    this.options = options;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<string> {
-    const doc = await super.executeCommand(server, session, { profile: -1 });
-    if (doc.ok === 1) {
-      const was = doc.was;
-      if (was === 0) return 'off';
-      if (was === 1) return 'slow_only';
-      if (was === 2) return 'all';
-      throw new MongoUnexpectedServerResponseError(`Illegal profiling level value ${was}`);
-    } else {
-      throw new MongoUnexpectedServerResponseError('Error with profile command');
-    }
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/remove_user.ts b/server/data-import/node_modules/mongodb/src/operations/remove_user.ts
deleted file mode 100644
index 042c9925e0155a63c116267826def94e77ef9144..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/remove_user.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import type { Db } from '../db';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects } from './operation';
-
-/** @public */
-export type RemoveUserOptions = CommandOperationOptions;
-
-/** @internal */
-export class RemoveUserOperation extends CommandOperation<boolean> {
-  override options: RemoveUserOptions;
-  username: string;
-
-  constructor(db: Db, username: string, options: RemoveUserOptions) {
-    super(db, options);
-    this.options = options;
-    this.username = username;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<boolean> {
-    await super.executeCommand(server, session, { dropUser: this.username });
-    return true;
-  }
-}
-
-defineAspects(RemoveUserOperation, [Aspect.WRITE_OPERATION]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/rename.ts b/server/data-import/node_modules/mongodb/src/operations/rename.ts
deleted file mode 100644
index ec5ee7c8af8b7dd02a595e40e0563a2e383be944..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/rename.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import type { Document } from '../bson';
-import { Collection } from '../collection';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { MongoDBNamespace } from '../utils';
-import { CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects } from './operation';
-
-/** @public */
-export interface RenameOptions extends CommandOperationOptions {
-  /** Drop the target name collection if it previously exists. */
-  dropTarget?: boolean;
-  /** Unclear */
-  new_collection?: boolean;
-}
-
-/** @internal */
-export class RenameOperation extends CommandOperation<Document> {
-  constructor(
-    public collection: Collection,
-    public newName: string,
-    public override options: RenameOptions
-  ) {
-    super(collection, options);
-    this.ns = new MongoDBNamespace('admin', '$cmd');
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Collection> {
-    // Build the command
-    const renameCollection = this.collection.namespace;
-    const toCollection = this.collection.s.namespace.withCollection(this.newName).toString();
-    const dropTarget =
-      typeof this.options.dropTarget === 'boolean' ? this.options.dropTarget : false;
-
-    const command = {
-      renameCollection: renameCollection,
-      to: toCollection,
-      dropTarget: dropTarget
-    };
-
-    await super.executeCommand(server, session, command);
-    return new Collection(this.collection.s.db, this.newName, this.collection.s.options);
-  }
-}
-
-defineAspects(RenameOperation, [Aspect.WRITE_OPERATION]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/run_command.ts b/server/data-import/node_modules/mongodb/src/operations/run_command.ts
deleted file mode 100644
index a0e306e6c62f50195a67ceba1bade31f555255bd..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/run_command.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import type { BSONSerializeOptions, Document } from '../bson';
-import { type Db } from '../db';
-import { type TODO_NODE_3286 } from '../mongo_types';
-import type { ReadPreferenceLike } from '../read_preference';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { MongoDBNamespace } from '../utils';
-import { AbstractOperation } from './operation';
-
-/** @public */
-export type RunCommandOptions = {
-  /** Specify ClientSession for this command */
-  session?: ClientSession;
-  /** The read preference */
-  readPreference?: ReadPreferenceLike;
-} & BSONSerializeOptions;
-
-/** @internal */
-export class RunCommandOperation<T = Document> extends AbstractOperation<T> {
-  constructor(parent: Db, public command: Document, public override options: RunCommandOptions) {
-    super(options);
-    this.ns = parent.s.namespace.withCollection('$cmd');
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<T> {
-    this.server = server;
-    return server.commandAsync(this.ns, this.command, {
-      ...this.options,
-      readPreference: this.readPreference,
-      session
-    }) as TODO_NODE_3286;
-  }
-}
-
-export class RunAdminCommandOperation<T = Document> extends AbstractOperation<T> {
-  constructor(
-    public command: Document,
-    public override options: RunCommandOptions & {
-      noResponse?: boolean;
-      bypassPinningCheck?: boolean;
-    }
-  ) {
-    super(options);
-    this.ns = new MongoDBNamespace('admin', '$cmd');
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<T> {
-    this.server = server;
-    return server.commandAsync(this.ns, this.command, {
-      ...this.options,
-      readPreference: this.readPreference,
-      session
-    }) as TODO_NODE_3286;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/search_indexes/create.ts b/server/data-import/node_modules/mongodb/src/operations/search_indexes/create.ts
deleted file mode 100644
index 1dedfac5cbf79e2872fcb9f37232a6f30fe51627..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/search_indexes/create.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import type { Document } from 'bson';
-
-import type { Collection } from '../../collection';
-import type { Server } from '../../sdam/server';
-import type { ClientSession } from '../../sessions';
-import { AbstractOperation } from '../operation';
-
-/**
- * @public
- */
-export interface SearchIndexDescription {
-  /** The name of the index. */
-  name?: string;
-
-  /** The index definition. */
-  definition: Document;
-}
-
-/** @internal */
-export class CreateSearchIndexesOperation extends AbstractOperation<string[]> {
-  constructor(
-    private readonly collection: Collection,
-    private readonly descriptions: ReadonlyArray<SearchIndexDescription>
-  ) {
-    super();
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<string[]> {
-    const namespace = this.collection.fullNamespace;
-    const command = {
-      createSearchIndexes: namespace.collection,
-      indexes: this.descriptions
-    };
-
-    const res = await server.commandAsync(namespace, command, { session });
-
-    const indexesCreated: Array<{ name: string }> = res?.indexesCreated ?? [];
-    return indexesCreated.map(({ name }) => name);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/search_indexes/drop.ts b/server/data-import/node_modules/mongodb/src/operations/search_indexes/drop.ts
deleted file mode 100644
index 5f29308f86efd16306dd4e3450e241960ef3dd78..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/search_indexes/drop.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import type { Document } from 'bson';
-
-import type { Collection } from '../../collection';
-import { MONGODB_ERROR_CODES, MongoServerError } from '../../error';
-import type { Server } from '../../sdam/server';
-import type { ClientSession } from '../../sessions';
-import { AbstractOperation } from '../operation';
-
-/** @internal */
-export class DropSearchIndexOperation extends AbstractOperation<void> {
-  constructor(private readonly collection: Collection, private readonly name: string) {
-    super();
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<void> {
-    const namespace = this.collection.fullNamespace;
-
-    const command: Document = {
-      dropSearchIndex: namespace.collection
-    };
-
-    if (typeof this.name === 'string') {
-      command.name = this.name;
-    }
-
-    try {
-      await server.commandAsync(namespace, command, { session });
-    } catch (error) {
-      const isNamespaceNotFoundError =
-        error instanceof MongoServerError && error.code === MONGODB_ERROR_CODES.NamespaceNotFound;
-      if (!isNamespaceNotFoundError) {
-        throw error;
-      }
-    }
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/search_indexes/update.ts b/server/data-import/node_modules/mongodb/src/operations/search_indexes/update.ts
deleted file mode 100644
index a490740ee45c8d0fb3ddd7792a3cebc0d6142ff9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/search_indexes/update.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import type { Document } from 'bson';
-
-import type { Collection } from '../../collection';
-import type { Server } from '../../sdam/server';
-import type { ClientSession } from '../../sessions';
-import { AbstractOperation } from '../operation';
-
-/** @internal */
-export class UpdateSearchIndexOperation extends AbstractOperation<void> {
-  constructor(
-    private readonly collection: Collection,
-    private readonly name: string,
-    private readonly definition: Document
-  ) {
-    super();
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<void> {
-    const namespace = this.collection.fullNamespace;
-    const command = {
-      updateSearchIndex: namespace.collection,
-      name: this.name,
-      definition: this.definition
-    };
-
-    await server.commandAsync(namespace, command, { session });
-    return;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/set_profiling_level.ts b/server/data-import/node_modules/mongodb/src/operations/set_profiling_level.ts
deleted file mode 100644
index 9c738f20571267361ec6f6ba634cc055b650d99a..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/set_profiling_level.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import type { Db } from '../db';
-import { MongoInvalidArgumentError } from '../error';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { enumToString } from '../utils';
-import { CommandOperation, type CommandOperationOptions } from './command';
-
-const levelValues = new Set(['off', 'slow_only', 'all']);
-
-/** @public */
-export const ProfilingLevel = Object.freeze({
-  off: 'off',
-  slowOnly: 'slow_only',
-  all: 'all'
-} as const);
-
-/** @public */
-export type ProfilingLevel = (typeof ProfilingLevel)[keyof typeof ProfilingLevel];
-
-/** @public */
-export type SetProfilingLevelOptions = CommandOperationOptions;
-
-/** @internal */
-export class SetProfilingLevelOperation extends CommandOperation<ProfilingLevel> {
-  override options: SetProfilingLevelOptions;
-  level: ProfilingLevel;
-  profile: 0 | 1 | 2;
-
-  constructor(db: Db, level: ProfilingLevel, options: SetProfilingLevelOptions) {
-    super(db, options);
-    this.options = options;
-    switch (level) {
-      case ProfilingLevel.off:
-        this.profile = 0;
-        break;
-      case ProfilingLevel.slowOnly:
-        this.profile = 1;
-        break;
-      case ProfilingLevel.all:
-        this.profile = 2;
-        break;
-      default:
-        this.profile = 0;
-        break;
-    }
-
-    this.level = level;
-  }
-
-  override async execute(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<ProfilingLevel> {
-    const level = this.level;
-
-    if (!levelValues.has(level)) {
-      throw new MongoInvalidArgumentError(
-        `Profiling level must be one of "${enumToString(ProfilingLevel)}"`
-      );
-    }
-
-    // TODO(NODE-3483): Determine error to put here
-    await super.executeCommand(server, session, { profile: this.profile });
-    return level;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/operations/stats.ts b/server/data-import/node_modules/mongodb/src/operations/stats.ts
deleted file mode 100644
index 4717e3eb38b8f38cf5b937b8db27ddab2cf78ff1..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/stats.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import type { Document } from '../bson';
-import type { Db } from '../db';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects } from './operation';
-
-/** @public */
-export interface DbStatsOptions extends CommandOperationOptions {
-  /** Divide the returned sizes by scale value. */
-  scale?: number;
-}
-
-/** @internal */
-export class DbStatsOperation extends CommandOperation<Document> {
-  override options: DbStatsOptions;
-
-  constructor(db: Db, options: DbStatsOptions) {
-    super(db, options);
-    this.options = options;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Document> {
-    const command: Document = { dbStats: true };
-    if (this.options.scale != null) {
-      command.scale = this.options.scale;
-    }
-
-    return super.executeCommand(server, session, command);
-  }
-}
-
-defineAspects(DbStatsOperation, [Aspect.READ_OPERATION]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/update.ts b/server/data-import/node_modules/mongodb/src/operations/update.ts
deleted file mode 100644
index fc03424cbc8beee9525098d10217c79a01c276cf..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/update.ts
+++ /dev/null
@@ -1,299 +0,0 @@
-import type { Document } from '../bson';
-import type { Collection } from '../collection';
-import { MongoCompatibilityError, MongoInvalidArgumentError, MongoServerError } from '../error';
-import type { InferIdType, TODO_NODE_3286 } from '../mongo_types';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { hasAtomicOperators, type MongoDBNamespace } from '../utils';
-import { type CollationOptions, CommandOperation, type CommandOperationOptions } from './command';
-import { Aspect, defineAspects, type Hint } from './operation';
-
-/** @public */
-export interface UpdateOptions extends CommandOperationOptions {
-  /** A set of filters specifying to which array elements an update should apply */
-  arrayFilters?: Document[];
-  /** If true, allows the write to opt-out of document level validation */
-  bypassDocumentValidation?: boolean;
-  /** Specifies a collation */
-  collation?: CollationOptions;
-  /** Specify that the update query should only consider plans using the hinted index */
-  hint?: Hint;
-  /** When true, creates a new document if no document matches the query */
-  upsert?: boolean;
-  /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-  let?: Document;
-}
-
-/**
- * @public
- * `TSchema` is the schema of the collection
- */
-export interface UpdateResult<TSchema extends Document = Document> {
-  /** Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined */
-  acknowledged: boolean;
-  /** The number of documents that matched the filter */
-  matchedCount: number;
-  /** The number of documents that were modified */
-  modifiedCount: number;
-  /** The number of documents that were upserted */
-  upsertedCount: number;
-  /** The identifier of the inserted document if an upsert took place */
-  upsertedId: InferIdType<TSchema> | null;
-}
-
-/** @public */
-export interface UpdateStatement {
-  /** The query that matches documents to update. */
-  q: Document;
-  /** The modifications to apply. */
-  u: Document | Document[];
-  /**  If true, perform an insert if no documents match the query. */
-  upsert?: boolean;
-  /** If true, updates all documents that meet the query criteria. */
-  multi?: boolean;
-  /** Specifies the collation to use for the operation. */
-  collation?: CollationOptions;
-  /** An array of filter documents that determines which array elements to modify for an update operation on an array field. */
-  arrayFilters?: Document[];
-  /** A document or string that specifies the index to use to support the query predicate. */
-  hint?: Hint;
-}
-
-/**
- * @internal
- * UpdateOperation is used in bulk write, while UpdateOneOperation and UpdateManyOperation are only used in the collections API
- */
-export class UpdateOperation extends CommandOperation<Document> {
-  override options: UpdateOptions & { ordered?: boolean };
-  statements: UpdateStatement[];
-
-  constructor(
-    ns: MongoDBNamespace,
-    statements: UpdateStatement[],
-    options: UpdateOptions & { ordered?: boolean }
-  ) {
-    super(undefined, options);
-    this.options = options;
-    this.ns = ns;
-
-    this.statements = statements;
-  }
-
-  override get canRetryWrite(): boolean {
-    if (super.canRetryWrite === false) {
-      return false;
-    }
-
-    return this.statements.every(op => op.multi == null || op.multi === false);
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Document> {
-    const options = this.options ?? {};
-    const ordered = typeof options.ordered === 'boolean' ? options.ordered : true;
-    const command: Document = {
-      update: this.ns.collection,
-      updates: this.statements,
-      ordered
-    };
-
-    if (typeof options.bypassDocumentValidation === 'boolean') {
-      command.bypassDocumentValidation = options.bypassDocumentValidation;
-    }
-
-    if (options.let) {
-      command.let = options.let;
-    }
-
-    // we check for undefined specifically here to allow falsy values
-    // eslint-disable-next-line no-restricted-syntax
-    if (options.comment !== undefined) {
-      command.comment = options.comment;
-    }
-
-    const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0;
-    if (unacknowledgedWrite) {
-      if (this.statements.find((o: Document) => o.hint)) {
-        // TODO(NODE-3541): fix error for hint with unacknowledged writes
-        throw new MongoCompatibilityError(`hint is not supported with unacknowledged writes`);
-      }
-    }
-
-    return super.executeCommand(server, session, command);
-  }
-}
-
-/** @internal */
-export class UpdateOneOperation extends UpdateOperation {
-  constructor(collection: Collection, filter: Document, update: Document, options: UpdateOptions) {
-    super(
-      collection.s.namespace,
-      [makeUpdateStatement(filter, update, { ...options, multi: false })],
-      options
-    );
-
-    if (!hasAtomicOperators(update)) {
-      throw new MongoInvalidArgumentError('Update document requires atomic operators');
-    }
-  }
-
-  override async execute(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<UpdateResult> {
-    const res = await super.execute(server, session);
-    if (this.explain != null) return res as TODO_NODE_3286;
-    if (res.code) throw new MongoServerError(res);
-    if (res.writeErrors) throw new MongoServerError(res.writeErrors[0]);
-
-    return {
-      acknowledged: this.writeConcern?.w !== 0,
-      modifiedCount: res.nModified ?? res.n,
-      upsertedId:
-        Array.isArray(res.upserted) && res.upserted.length > 0 ? res.upserted[0]._id : null,
-      upsertedCount: Array.isArray(res.upserted) && res.upserted.length ? res.upserted.length : 0,
-      matchedCount: Array.isArray(res.upserted) && res.upserted.length > 0 ? 0 : res.n
-    };
-  }
-}
-
-/** @internal */
-export class UpdateManyOperation extends UpdateOperation {
-  constructor(collection: Collection, filter: Document, update: Document, options: UpdateOptions) {
-    super(
-      collection.s.namespace,
-      [makeUpdateStatement(filter, update, { ...options, multi: true })],
-      options
-    );
-
-    if (!hasAtomicOperators(update)) {
-      throw new MongoInvalidArgumentError('Update document requires atomic operators');
-    }
-  }
-
-  override async execute(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<UpdateResult> {
-    const res = await super.execute(server, session);
-    if (this.explain != null) return res as TODO_NODE_3286;
-    if (res.code) throw new MongoServerError(res);
-    if (res.writeErrors) throw new MongoServerError(res.writeErrors[0]);
-
-    return {
-      acknowledged: this.writeConcern?.w !== 0,
-      modifiedCount: res.nModified ?? res.n,
-      upsertedId:
-        Array.isArray(res.upserted) && res.upserted.length > 0 ? res.upserted[0]._id : null,
-      upsertedCount: Array.isArray(res.upserted) && res.upserted.length ? res.upserted.length : 0,
-      matchedCount: Array.isArray(res.upserted) && res.upserted.length > 0 ? 0 : res.n
-    };
-  }
-}
-
-/** @public */
-export interface ReplaceOptions extends CommandOperationOptions {
-  /** If true, allows the write to opt-out of document level validation */
-  bypassDocumentValidation?: boolean;
-  /** Specifies a collation */
-  collation?: CollationOptions;
-  /** Specify that the update query should only consider plans using the hinted index */
-  hint?: string | Document;
-  /** When true, creates a new document if no document matches the query */
-  upsert?: boolean;
-  /** Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0). */
-  let?: Document;
-}
-
-/** @internal */
-export class ReplaceOneOperation extends UpdateOperation {
-  constructor(
-    collection: Collection,
-    filter: Document,
-    replacement: Document,
-    options: ReplaceOptions
-  ) {
-    super(
-      collection.s.namespace,
-      [makeUpdateStatement(filter, replacement, { ...options, multi: false })],
-      options
-    );
-
-    if (hasAtomicOperators(replacement)) {
-      throw new MongoInvalidArgumentError('Replacement document must not contain atomic operators');
-    }
-  }
-
-  override async execute(
-    server: Server,
-    session: ClientSession | undefined
-  ): Promise<UpdateResult> {
-    const res = await super.execute(server, session);
-    if (this.explain != null) return res as TODO_NODE_3286;
-    if (res.code) throw new MongoServerError(res);
-    if (res.writeErrors) throw new MongoServerError(res.writeErrors[0]);
-
-    return {
-      acknowledged: this.writeConcern?.w !== 0,
-      modifiedCount: res.nModified ?? res.n,
-      upsertedId:
-        Array.isArray(res.upserted) && res.upserted.length > 0 ? res.upserted[0]._id : null,
-      upsertedCount: Array.isArray(res.upserted) && res.upserted.length ? res.upserted.length : 0,
-      matchedCount: Array.isArray(res.upserted) && res.upserted.length > 0 ? 0 : res.n
-    };
-  }
-}
-
-export function makeUpdateStatement(
-  filter: Document,
-  update: Document | Document[],
-  options: UpdateOptions & { multi?: boolean }
-): UpdateStatement {
-  if (filter == null || typeof filter !== 'object') {
-    throw new MongoInvalidArgumentError('Selector must be a valid JavaScript object');
-  }
-
-  if (update == null || typeof update !== 'object') {
-    throw new MongoInvalidArgumentError('Document must be a valid JavaScript object');
-  }
-
-  const op: UpdateStatement = { q: filter, u: update };
-  if (typeof options.upsert === 'boolean') {
-    op.upsert = options.upsert;
-  }
-
-  if (options.multi) {
-    op.multi = options.multi;
-  }
-
-  if (options.hint) {
-    op.hint = options.hint;
-  }
-
-  if (options.arrayFilters) {
-    op.arrayFilters = options.arrayFilters;
-  }
-
-  if (options.collation) {
-    op.collation = options.collation;
-  }
-
-  return op;
-}
-
-defineAspects(UpdateOperation, [Aspect.RETRYABLE, Aspect.WRITE_OPERATION, Aspect.SKIP_COLLATION]);
-defineAspects(UpdateOneOperation, [
-  Aspect.RETRYABLE,
-  Aspect.WRITE_OPERATION,
-  Aspect.EXPLAINABLE,
-  Aspect.SKIP_COLLATION
-]);
-defineAspects(UpdateManyOperation, [
-  Aspect.WRITE_OPERATION,
-  Aspect.EXPLAINABLE,
-  Aspect.SKIP_COLLATION
-]);
-defineAspects(ReplaceOneOperation, [
-  Aspect.RETRYABLE,
-  Aspect.WRITE_OPERATION,
-  Aspect.SKIP_COLLATION
-]);
diff --git a/server/data-import/node_modules/mongodb/src/operations/validate_collection.ts b/server/data-import/node_modules/mongodb/src/operations/validate_collection.ts
deleted file mode 100644
index 866e3df575b45982c8c3d5ed2200f48da7369f54..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/operations/validate_collection.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import type { Admin } from '../admin';
-import type { Document } from '../bson';
-import { MongoUnexpectedServerResponseError } from '../error';
-import type { Server } from '../sdam/server';
-import type { ClientSession } from '../sessions';
-import { CommandOperation, type CommandOperationOptions } from './command';
-
-/** @public */
-export interface ValidateCollectionOptions extends CommandOperationOptions {
-  /** Validates a collection in the background, without interrupting read or write traffic (only in MongoDB 4.4+) */
-  background?: boolean;
-}
-
-/** @internal */
-export class ValidateCollectionOperation extends CommandOperation<Document> {
-  override options: ValidateCollectionOptions;
-  collectionName: string;
-  command: Document;
-
-  constructor(admin: Admin, collectionName: string, options: ValidateCollectionOptions) {
-    // Decorate command with extra options
-    const command: Document = { validate: collectionName };
-    const keys = Object.keys(options);
-    for (let i = 0; i < keys.length; i++) {
-      if (Object.prototype.hasOwnProperty.call(options, keys[i]) && keys[i] !== 'session') {
-        command[keys[i]] = (options as Document)[keys[i]];
-      }
-    }
-
-    super(admin.s.db, options);
-    this.options = options;
-    this.command = command;
-    this.collectionName = collectionName;
-  }
-
-  override async execute(server: Server, session: ClientSession | undefined): Promise<Document> {
-    const collectionName = this.collectionName;
-
-    const doc = await super.executeCommand(server, session, this.command);
-    if (doc.result != null && typeof doc.result !== 'string')
-      throw new MongoUnexpectedServerResponseError('Error with validation data');
-    if (doc.result != null && doc.result.match(/exception|corrupt/) != null)
-      throw new MongoUnexpectedServerResponseError(`Invalid collection ${collectionName}`);
-    if (doc.valid != null && !doc.valid)
-      throw new MongoUnexpectedServerResponseError(`Invalid collection ${collectionName}`);
-
-    return doc;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/read_concern.ts b/server/data-import/node_modules/mongodb/src/read_concern.ts
deleted file mode 100644
index 93c5688a4433f9471a76cb7a140de87697551457..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/read_concern.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import type { Document } from './bson';
-
-/** @public */
-export const ReadConcernLevel = Object.freeze({
-  local: 'local',
-  majority: 'majority',
-  linearizable: 'linearizable',
-  available: 'available',
-  snapshot: 'snapshot'
-} as const);
-
-/** @public */
-export type ReadConcernLevel = (typeof ReadConcernLevel)[keyof typeof ReadConcernLevel];
-
-/** @public */
-export type ReadConcernLike = ReadConcern | { level: ReadConcernLevel } | ReadConcernLevel;
-
-/**
- * The MongoDB ReadConcern, which allows for control of the consistency and isolation properties
- * of the data read from replica sets and replica set shards.
- * @public
- *
- * @see https://www.mongodb.com/docs/manual/reference/read-concern/index.html
- */
-export class ReadConcern {
-  level: ReadConcernLevel | string;
-
-  /** Constructs a ReadConcern from the read concern level.*/
-  constructor(level: ReadConcernLevel) {
-    /**
-     * A spec test exists that allows level to be any string.
-     * "invalid readConcern with out stage"
-     * @see ./test/spec/crud/v2/aggregate-out-readConcern.json
-     * @see https://github.com/mongodb/specifications/blob/master/source/read-write-concern/read-write-concern.rst#unknown-levels-and-additional-options-for-string-based-readconcerns
-     */
-    this.level = ReadConcernLevel[level] ?? level;
-  }
-
-  /**
-   * Construct a ReadConcern given an options object.
-   *
-   * @param options - The options object from which to extract the write concern.
-   */
-  static fromOptions(options?: {
-    readConcern?: ReadConcernLike;
-    level?: ReadConcernLevel;
-  }): ReadConcern | undefined {
-    if (options == null) {
-      return;
-    }
-
-    if (options.readConcern) {
-      const { readConcern } = options;
-      if (readConcern instanceof ReadConcern) {
-        return readConcern;
-      } else if (typeof readConcern === 'string') {
-        return new ReadConcern(readConcern);
-      } else if ('level' in readConcern && readConcern.level) {
-        return new ReadConcern(readConcern.level);
-      }
-    }
-
-    if (options.level) {
-      return new ReadConcern(options.level);
-    }
-    return;
-  }
-
-  static get MAJORITY(): 'majority' {
-    return ReadConcernLevel.majority;
-  }
-
-  static get AVAILABLE(): 'available' {
-    return ReadConcernLevel.available;
-  }
-
-  static get LINEARIZABLE(): 'linearizable' {
-    return ReadConcernLevel.linearizable;
-  }
-
-  static get SNAPSHOT(): 'snapshot' {
-    return ReadConcernLevel.snapshot;
-  }
-
-  toJSON(): Document {
-    return { level: this.level };
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/read_preference.ts b/server/data-import/node_modules/mongodb/src/read_preference.ts
deleted file mode 100644
index cef52ad4dcc65dd2049f336be493bcb46d3f0c4c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/read_preference.ts
+++ /dev/null
@@ -1,262 +0,0 @@
-import type { Document } from './bson';
-import { MongoInvalidArgumentError } from './error';
-import type { TagSet } from './sdam/server_description';
-import type { ClientSession } from './sessions';
-
-/** @public */
-export type ReadPreferenceLike = ReadPreference | ReadPreferenceMode;
-
-/** @public */
-export const ReadPreferenceMode = Object.freeze({
-  primary: 'primary',
-  primaryPreferred: 'primaryPreferred',
-  secondary: 'secondary',
-  secondaryPreferred: 'secondaryPreferred',
-  nearest: 'nearest'
-} as const);
-
-/** @public */
-export type ReadPreferenceMode = (typeof ReadPreferenceMode)[keyof typeof ReadPreferenceMode];
-
-/** @public */
-export interface HedgeOptions {
-  /** Explicitly enable or disable hedged reads. */
-  enabled?: boolean;
-}
-
-/** @public */
-export interface ReadPreferenceOptions {
-  /** Max secondary read staleness in seconds, Minimum value is 90 seconds.*/
-  maxStalenessSeconds?: number;
-  /** Server mode in which the same query is dispatched in parallel to multiple replica set members. */
-  hedge?: HedgeOptions;
-}
-
-/** @public */
-export interface ReadPreferenceLikeOptions extends ReadPreferenceOptions {
-  readPreference?:
-    | ReadPreferenceLike
-    | {
-        mode?: ReadPreferenceMode;
-        preference?: ReadPreferenceMode;
-        tags?: TagSet[];
-        maxStalenessSeconds?: number;
-      };
-}
-
-/** @public */
-export interface ReadPreferenceFromOptions extends ReadPreferenceLikeOptions {
-  session?: ClientSession;
-  readPreferenceTags?: TagSet[];
-  hedge?: HedgeOptions;
-}
-
-/**
- * The **ReadPreference** class is a class that represents a MongoDB ReadPreference and is
- * used to construct connections.
- * @public
- *
- * @see https://www.mongodb.com/docs/manual/core/read-preference/
- */
-export class ReadPreference {
-  mode: ReadPreferenceMode;
-  tags?: TagSet[];
-  hedge?: HedgeOptions;
-  maxStalenessSeconds?: number;
-  minWireVersion?: number;
-
-  public static PRIMARY = ReadPreferenceMode.primary;
-  public static PRIMARY_PREFERRED = ReadPreferenceMode.primaryPreferred;
-  public static SECONDARY = ReadPreferenceMode.secondary;
-  public static SECONDARY_PREFERRED = ReadPreferenceMode.secondaryPreferred;
-  public static NEAREST = ReadPreferenceMode.nearest;
-
-  public static primary = new ReadPreference(ReadPreferenceMode.primary);
-  public static primaryPreferred = new ReadPreference(ReadPreferenceMode.primaryPreferred);
-  public static secondary = new ReadPreference(ReadPreferenceMode.secondary);
-  public static secondaryPreferred = new ReadPreference(ReadPreferenceMode.secondaryPreferred);
-  public static nearest = new ReadPreference(ReadPreferenceMode.nearest);
-
-  /**
-   * @param mode - A string describing the read preference mode (primary|primaryPreferred|secondary|secondaryPreferred|nearest)
-   * @param tags - A tag set used to target reads to members with the specified tag(s). tagSet is not available if using read preference mode primary.
-   * @param options - Additional read preference options
-   */
-  constructor(mode: ReadPreferenceMode, tags?: TagSet[], options?: ReadPreferenceOptions) {
-    if (!ReadPreference.isValid(mode)) {
-      throw new MongoInvalidArgumentError(`Invalid read preference mode ${JSON.stringify(mode)}`);
-    }
-    if (options == null && typeof tags === 'object' && !Array.isArray(tags)) {
-      options = tags;
-      tags = undefined;
-    } else if (tags && !Array.isArray(tags)) {
-      throw new MongoInvalidArgumentError('ReadPreference tags must be an array');
-    }
-
-    this.mode = mode;
-    this.tags = tags;
-    this.hedge = options?.hedge;
-    this.maxStalenessSeconds = undefined;
-    this.minWireVersion = undefined;
-
-    options = options ?? {};
-    if (options.maxStalenessSeconds != null) {
-      if (options.maxStalenessSeconds <= 0) {
-        throw new MongoInvalidArgumentError('maxStalenessSeconds must be a positive integer');
-      }
-
-      this.maxStalenessSeconds = options.maxStalenessSeconds;
-
-      // NOTE: The minimum required wire version is 5 for this read preference. If the existing
-      //       topology has a lower value then a MongoError will be thrown during server selection.
-      this.minWireVersion = 5;
-    }
-
-    if (this.mode === ReadPreference.PRIMARY) {
-      if (this.tags && Array.isArray(this.tags) && this.tags.length > 0) {
-        throw new MongoInvalidArgumentError('Primary read preference cannot be combined with tags');
-      }
-
-      if (this.maxStalenessSeconds) {
-        throw new MongoInvalidArgumentError(
-          'Primary read preference cannot be combined with maxStalenessSeconds'
-        );
-      }
-
-      if (this.hedge) {
-        throw new MongoInvalidArgumentError(
-          'Primary read preference cannot be combined with hedge'
-        );
-      }
-    }
-  }
-
-  // Support the deprecated `preference` property introduced in the porcelain layer
-  get preference(): ReadPreferenceMode {
-    return this.mode;
-  }
-
-  static fromString(mode: string): ReadPreference {
-    return new ReadPreference(mode as ReadPreferenceMode);
-  }
-
-  /**
-   * Construct a ReadPreference given an options object.
-   *
-   * @param options - The options object from which to extract the read preference.
-   */
-  static fromOptions(options?: ReadPreferenceFromOptions): ReadPreference | undefined {
-    if (!options) return;
-    const readPreference =
-      options.readPreference ?? options.session?.transaction.options.readPreference;
-    const readPreferenceTags = options.readPreferenceTags;
-
-    if (readPreference == null) {
-      return;
-    }
-
-    if (typeof readPreference === 'string') {
-      return new ReadPreference(readPreference, readPreferenceTags, {
-        maxStalenessSeconds: options.maxStalenessSeconds,
-        hedge: options.hedge
-      });
-    } else if (!(readPreference instanceof ReadPreference) && typeof readPreference === 'object') {
-      const mode = readPreference.mode || readPreference.preference;
-      if (mode && typeof mode === 'string') {
-        return new ReadPreference(mode, readPreference.tags ?? readPreferenceTags, {
-          maxStalenessSeconds: readPreference.maxStalenessSeconds,
-          hedge: options.hedge
-        });
-      }
-    }
-
-    if (readPreferenceTags) {
-      readPreference.tags = readPreferenceTags;
-    }
-
-    return readPreference as ReadPreference;
-  }
-
-  /**
-   * Replaces options.readPreference with a ReadPreference instance
-   */
-  static translate(options: ReadPreferenceLikeOptions): ReadPreferenceLikeOptions {
-    if (options.readPreference == null) return options;
-    const r = options.readPreference;
-
-    if (typeof r === 'string') {
-      options.readPreference = new ReadPreference(r);
-    } else if (r && !(r instanceof ReadPreference) && typeof r === 'object') {
-      const mode = r.mode || r.preference;
-      if (mode && typeof mode === 'string') {
-        options.readPreference = new ReadPreference(mode, r.tags, {
-          maxStalenessSeconds: r.maxStalenessSeconds
-        });
-      }
-    } else if (!(r instanceof ReadPreference)) {
-      throw new MongoInvalidArgumentError(`Invalid read preference: ${r}`);
-    }
-
-    return options;
-  }
-
-  /**
-   * Validate if a mode is legal
-   *
-   * @param mode - The string representing the read preference mode.
-   */
-  static isValid(mode: string): boolean {
-    const VALID_MODES = new Set([
-      ReadPreference.PRIMARY,
-      ReadPreference.PRIMARY_PREFERRED,
-      ReadPreference.SECONDARY,
-      ReadPreference.SECONDARY_PREFERRED,
-      ReadPreference.NEAREST,
-      null
-    ]);
-
-    return VALID_MODES.has(mode as ReadPreferenceMode);
-  }
-
-  /**
-   * Validate if a mode is legal
-   *
-   * @param mode - The string representing the read preference mode.
-   */
-  isValid(mode?: string): boolean {
-    return ReadPreference.isValid(typeof mode === 'string' ? mode : this.mode);
-  }
-
-  /**
-   * Indicates that this readPreference needs the "SecondaryOk" bit when sent over the wire
-   * @see https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/#op-query
-   */
-  secondaryOk(): boolean {
-    const NEEDS_SECONDARYOK = new Set<string>([
-      ReadPreference.PRIMARY_PREFERRED,
-      ReadPreference.SECONDARY,
-      ReadPreference.SECONDARY_PREFERRED,
-      ReadPreference.NEAREST
-    ]);
-
-    return NEEDS_SECONDARYOK.has(this.mode);
-  }
-
-  /**
-   * Check if the two ReadPreferences are equivalent
-   *
-   * @param readPreference - The read preference with which to check equality
-   */
-  equals(readPreference: ReadPreference): boolean {
-    return readPreference.mode === this.mode;
-  }
-
-  /** Return JSON representation */
-  toJSON(): Document {
-    const readPreference = { mode: this.mode } as Document;
-    if (Array.isArray(this.tags)) readPreference.tags = this.tags;
-    if (this.maxStalenessSeconds) readPreference.maxStalenessSeconds = this.maxStalenessSeconds;
-    if (this.hedge) readPreference.hedge = this.hedge;
-    return readPreference;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/sdam/common.ts b/server/data-import/node_modules/mongodb/src/sdam/common.ts
deleted file mode 100644
index e4b84d83f6e9bf3cb1a069beb1b6cf85cc0db7d6..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/sdam/common.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-import { clearTimeout } from 'timers';
-
-import type { Binary, Long, Timestamp } from '../bson';
-import type { ClientSession } from '../sessions';
-import type { Topology } from './topology';
-
-// shared state names
-export const STATE_CLOSING = 'closing';
-export const STATE_CLOSED = 'closed';
-export const STATE_CONNECTING = 'connecting';
-export const STATE_CONNECTED = 'connected';
-
-/**
- * An enumeration of topology types we know about
- * @public
- */
-export const TopologyType = Object.freeze({
-  Single: 'Single',
-  ReplicaSetNoPrimary: 'ReplicaSetNoPrimary',
-  ReplicaSetWithPrimary: 'ReplicaSetWithPrimary',
-  Sharded: 'Sharded',
-  Unknown: 'Unknown',
-  LoadBalanced: 'LoadBalanced'
-} as const);
-
-/** @public */
-export type TopologyType = (typeof TopologyType)[keyof typeof TopologyType];
-
-/**
- * An enumeration of server types we know about
- * @public
- */
-export const ServerType = Object.freeze({
-  Standalone: 'Standalone',
-  Mongos: 'Mongos',
-  PossiblePrimary: 'PossiblePrimary',
-  RSPrimary: 'RSPrimary',
-  RSSecondary: 'RSSecondary',
-  RSArbiter: 'RSArbiter',
-  RSOther: 'RSOther',
-  RSGhost: 'RSGhost',
-  Unknown: 'Unknown',
-  LoadBalancer: 'LoadBalancer'
-} as const);
-
-/** @public */
-export type ServerType = (typeof ServerType)[keyof typeof ServerType];
-
-/** @internal */
-export type TimerQueue = Set<NodeJS.Timeout>;
-
-/** @internal */
-export function drainTimerQueue(queue: TimerQueue): void {
-  queue.forEach(clearTimeout);
-  queue.clear();
-}
-
-/** @public */
-export interface ClusterTime {
-  clusterTime: Timestamp;
-  signature: {
-    hash: Binary;
-    keyId: Long;
-  };
-}
-
-/** Shared function to determine clusterTime for a given topology or session */
-export function _advanceClusterTime(
-  entity: Topology | ClientSession,
-  $clusterTime: ClusterTime
-): void {
-  if (entity.clusterTime == null) {
-    entity.clusterTime = $clusterTime;
-  } else {
-    if ($clusterTime.clusterTime.greaterThan(entity.clusterTime.clusterTime)) {
-      entity.clusterTime = $clusterTime;
-    }
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/sdam/events.ts b/server/data-import/node_modules/mongodb/src/sdam/events.ts
deleted file mode 100644
index 4c8a1c1312caa70a881dd261d97c06d49a18e7e2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/sdam/events.ts
+++ /dev/null
@@ -1,191 +0,0 @@
-import type { Document } from '../bson';
-import type { ServerDescription } from './server_description';
-import type { TopologyDescription } from './topology_description';
-
-/**
- * Emitted when server description changes, but does NOT include changes to the RTT.
- * @public
- * @category Event
- */
-export class ServerDescriptionChangedEvent {
-  /** A unique identifier for the topology */
-  topologyId: number;
-  /** The address (host/port pair) of the server */
-  address: string;
-  /** The previous server description */
-  previousDescription: ServerDescription;
-  /** The new server description */
-  newDescription: ServerDescription;
-
-  /** @internal */
-  constructor(
-    topologyId: number,
-    address: string,
-    previousDescription: ServerDescription,
-    newDescription: ServerDescription
-  ) {
-    this.topologyId = topologyId;
-    this.address = address;
-    this.previousDescription = previousDescription;
-    this.newDescription = newDescription;
-  }
-}
-
-/**
- * Emitted when server is initialized.
- * @public
- * @category Event
- */
-export class ServerOpeningEvent {
-  /** A unique identifier for the topology */
-  topologyId: number;
-  /** The address (host/port pair) of the server */
-  address: string;
-
-  /** @internal */
-  constructor(topologyId: number, address: string) {
-    this.topologyId = topologyId;
-    this.address = address;
-  }
-}
-
-/**
- * Emitted when server is closed.
- * @public
- * @category Event
- */
-export class ServerClosedEvent {
-  /** A unique identifier for the topology */
-  topologyId: number;
-  /** The address (host/port pair) of the server */
-  address: string;
-
-  /** @internal */
-  constructor(topologyId: number, address: string) {
-    this.topologyId = topologyId;
-    this.address = address;
-  }
-}
-
-/**
- * Emitted when topology description changes.
- * @public
- * @category Event
- */
-export class TopologyDescriptionChangedEvent {
-  /** A unique identifier for the topology */
-  topologyId: number;
-  /** The old topology description */
-  previousDescription: TopologyDescription;
-  /** The new topology description */
-  newDescription: TopologyDescription;
-
-  /** @internal */
-  constructor(
-    topologyId: number,
-    previousDescription: TopologyDescription,
-    newDescription: TopologyDescription
-  ) {
-    this.topologyId = topologyId;
-    this.previousDescription = previousDescription;
-    this.newDescription = newDescription;
-  }
-}
-
-/**
- * Emitted when topology is initialized.
- * @public
- * @category Event
- */
-export class TopologyOpeningEvent {
-  /** A unique identifier for the topology */
-  topologyId: number;
-
-  /** @internal */
-  constructor(topologyId: number) {
-    this.topologyId = topologyId;
-  }
-}
-
-/**
- * Emitted when topology is closed.
- * @public
- * @category Event
- */
-export class TopologyClosedEvent {
-  /** A unique identifier for the topology */
-  topologyId: number;
-
-  /** @internal */
-  constructor(topologyId: number) {
-    this.topologyId = topologyId;
-  }
-}
-
-/**
- * Emitted when the server monitor’s hello command is started - immediately before
- * the hello command is serialized into raw BSON and written to the socket.
- *
- * @public
- * @category Event
- */
-export class ServerHeartbeatStartedEvent {
-  /** The connection id for the command */
-  connectionId: string;
-  /** Is true when using the streaming protocol. */
-  awaited: boolean;
-
-  /** @internal */
-  constructor(connectionId: string, awaited: boolean) {
-    this.connectionId = connectionId;
-    this.awaited = awaited;
-  }
-}
-
-/**
- * Emitted when the server monitor’s hello succeeds.
- * @public
- * @category Event
- */
-export class ServerHeartbeatSucceededEvent {
-  /** The connection id for the command */
-  connectionId: string;
-  /** The execution time of the event in ms */
-  duration: number;
-  /** The command reply */
-  reply: Document;
-  /** Is true when using the streaming protocol. */
-  awaited: boolean;
-
-  /** @internal */
-  constructor(connectionId: string, duration: number, reply: Document | null, awaited: boolean) {
-    this.connectionId = connectionId;
-    this.duration = duration;
-    this.reply = reply ?? {};
-    this.awaited = awaited;
-  }
-}
-
-/**
- * Emitted when the server monitor’s hello fails, either with an “ok: 0” or a socket exception.
- * @public
- * @category Event
- */
-export class ServerHeartbeatFailedEvent {
-  /** The connection id for the command */
-  connectionId: string;
-  /** The execution time of the event in ms */
-  duration: number;
-  /** The command failure */
-  failure: Error;
-  /** Is true when using the streaming protocol. */
-  awaited: boolean;
-
-  /** @internal */
-  constructor(connectionId: string, duration: number, failure: Error, awaited: boolean) {
-    this.connectionId = connectionId;
-    this.duration = duration;
-    this.failure = failure;
-    this.awaited = awaited;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/sdam/monitor.ts b/server/data-import/node_modules/mongodb/src/sdam/monitor.ts
deleted file mode 100644
index f4d9404d0cbc72f5c35c692dd88b9fc25cdf2762..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/sdam/monitor.ts
+++ /dev/null
@@ -1,642 +0,0 @@
-import { clearTimeout, setTimeout } from 'timers';
-
-import { type Document, Long } from '../bson';
-import { connect } from '../cmap/connect';
-import { Connection, type ConnectionOptions } from '../cmap/connection';
-import { getFAASEnv } from '../cmap/handshake/client_metadata';
-import { LEGACY_HELLO_COMMAND } from '../constants';
-import { MongoError, MongoErrorLabel, MongoNetworkTimeoutError } from '../error';
-import { CancellationToken, TypedEventEmitter } from '../mongo_types';
-import type { Callback, EventEmitterWithState } from '../utils';
-import { calculateDurationInMs, makeStateMachine, now, ns } from '../utils';
-import { ServerType, STATE_CLOSED, STATE_CLOSING } from './common';
-import {
-  ServerHeartbeatFailedEvent,
-  ServerHeartbeatStartedEvent,
-  ServerHeartbeatSucceededEvent
-} from './events';
-import { Server } from './server';
-import type { TopologyVersion } from './server_description';
-
-/** @internal */
-const kServer = Symbol('server');
-/** @internal */
-const kMonitorId = Symbol('monitorId');
-/** @internal */
-const kConnection = Symbol('connection');
-/** @internal */
-const kCancellationToken = Symbol('cancellationToken');
-/** @internal */
-const kRoundTripTime = Symbol('roundTripTime');
-
-const STATE_IDLE = 'idle';
-const STATE_MONITORING = 'monitoring';
-const stateTransition = makeStateMachine({
-  [STATE_CLOSING]: [STATE_CLOSING, STATE_IDLE, STATE_CLOSED],
-  [STATE_CLOSED]: [STATE_CLOSED, STATE_MONITORING],
-  [STATE_IDLE]: [STATE_IDLE, STATE_MONITORING, STATE_CLOSING],
-  [STATE_MONITORING]: [STATE_MONITORING, STATE_IDLE, STATE_CLOSING]
-});
-
-const INVALID_REQUEST_CHECK_STATES = new Set([STATE_CLOSING, STATE_CLOSED, STATE_MONITORING]);
-function isInCloseState(monitor: Monitor) {
-  return monitor.s.state === STATE_CLOSED || monitor.s.state === STATE_CLOSING;
-}
-
-/** @public */
-export const ServerMonitoringMode = Object.freeze({
-  auto: 'auto',
-  poll: 'poll',
-  stream: 'stream'
-} as const);
-
-/** @public */
-export type ServerMonitoringMode = (typeof ServerMonitoringMode)[keyof typeof ServerMonitoringMode];
-
-/** @internal */
-export interface MonitorPrivate {
-  state: string;
-}
-
-/** @public */
-export interface MonitorOptions
-  extends Omit<ConnectionOptions, 'id' | 'generation' | 'hostAddress'> {
-  connectTimeoutMS: number;
-  heartbeatFrequencyMS: number;
-  minHeartbeatFrequencyMS: number;
-  serverMonitoringMode: ServerMonitoringMode;
-}
-
-/** @public */
-export type MonitorEvents = {
-  serverHeartbeatStarted(event: ServerHeartbeatStartedEvent): void;
-  serverHeartbeatSucceeded(event: ServerHeartbeatSucceededEvent): void;
-  serverHeartbeatFailed(event: ServerHeartbeatFailedEvent): void;
-  resetServer(error?: MongoError): void;
-  resetConnectionPool(): void;
-  close(): void;
-} & EventEmitterWithState;
-
-/** @internal */
-export class Monitor extends TypedEventEmitter<MonitorEvents> {
-  /** @internal */
-  s: MonitorPrivate;
-  address: string;
-  options: Readonly<
-    Pick<
-      MonitorOptions,
-      | 'connectTimeoutMS'
-      | 'heartbeatFrequencyMS'
-      | 'minHeartbeatFrequencyMS'
-      | 'serverMonitoringMode'
-    >
-  >;
-  connectOptions: ConnectionOptions;
-  isRunningInFaasEnv: boolean;
-  [kServer]: Server;
-  [kConnection]?: Connection;
-  [kCancellationToken]: CancellationToken;
-  /** @internal */
-  [kMonitorId]?: MonitorInterval;
-  rttPinger?: RTTPinger;
-
-  get connection(): Connection | undefined {
-    return this[kConnection];
-  }
-
-  constructor(server: Server, options: MonitorOptions) {
-    super();
-
-    this[kServer] = server;
-    this[kConnection] = undefined;
-    this[kCancellationToken] = new CancellationToken();
-    this[kCancellationToken].setMaxListeners(Infinity);
-    this[kMonitorId] = undefined;
-    this.s = {
-      state: STATE_CLOSED
-    };
-
-    this.address = server.description.address;
-    this.options = Object.freeze({
-      connectTimeoutMS: options.connectTimeoutMS ?? 10000,
-      heartbeatFrequencyMS: options.heartbeatFrequencyMS ?? 10000,
-      minHeartbeatFrequencyMS: options.minHeartbeatFrequencyMS ?? 500,
-      serverMonitoringMode: options.serverMonitoringMode
-    });
-    this.isRunningInFaasEnv = getFAASEnv() != null;
-
-    const cancellationToken = this[kCancellationToken];
-    // TODO: refactor this to pull it directly from the pool, requires new ConnectionPool integration
-    const connectOptions = Object.assign(
-      {
-        id: '<monitor>' as const,
-        generation: server.pool.generation,
-        connectionType: Connection,
-        cancellationToken,
-        hostAddress: server.description.hostAddress
-      },
-      options,
-      // force BSON serialization options
-      {
-        raw: false,
-        useBigInt64: false,
-        promoteLongs: true,
-        promoteValues: true,
-        promoteBuffers: true
-      }
-    );
-
-    // ensure no authentication is used for monitoring
-    delete connectOptions.credentials;
-    if (connectOptions.autoEncrypter) {
-      delete connectOptions.autoEncrypter;
-    }
-
-    this.connectOptions = Object.freeze(connectOptions);
-  }
-
-  connect(): void {
-    if (this.s.state !== STATE_CLOSED) {
-      return;
-    }
-
-    // start
-    const heartbeatFrequencyMS = this.options.heartbeatFrequencyMS;
-    const minHeartbeatFrequencyMS = this.options.minHeartbeatFrequencyMS;
-    this[kMonitorId] = new MonitorInterval(monitorServer(this), {
-      heartbeatFrequencyMS: heartbeatFrequencyMS,
-      minHeartbeatFrequencyMS: minHeartbeatFrequencyMS,
-      immediate: true
-    });
-  }
-
-  requestCheck(): void {
-    if (INVALID_REQUEST_CHECK_STATES.has(this.s.state)) {
-      return;
-    }
-
-    this[kMonitorId]?.wake();
-  }
-
-  reset(): void {
-    const topologyVersion = this[kServer].description.topologyVersion;
-    if (isInCloseState(this) || topologyVersion == null) {
-      return;
-    }
-
-    stateTransition(this, STATE_CLOSING);
-    resetMonitorState(this);
-
-    // restart monitor
-    stateTransition(this, STATE_IDLE);
-
-    // restart monitoring
-    const heartbeatFrequencyMS = this.options.heartbeatFrequencyMS;
-    const minHeartbeatFrequencyMS = this.options.minHeartbeatFrequencyMS;
-    this[kMonitorId] = new MonitorInterval(monitorServer(this), {
-      heartbeatFrequencyMS: heartbeatFrequencyMS,
-      minHeartbeatFrequencyMS: minHeartbeatFrequencyMS
-    });
-  }
-
-  close(): void {
-    if (isInCloseState(this)) {
-      return;
-    }
-
-    stateTransition(this, STATE_CLOSING);
-    resetMonitorState(this);
-
-    // close monitor
-    this.emit('close');
-    stateTransition(this, STATE_CLOSED);
-  }
-}
-
-function resetMonitorState(monitor: Monitor) {
-  monitor[kMonitorId]?.stop();
-  monitor[kMonitorId] = undefined;
-
-  monitor.rttPinger?.close();
-  monitor.rttPinger = undefined;
-
-  monitor[kCancellationToken].emit('cancel');
-
-  monitor[kConnection]?.destroy({ force: true });
-  monitor[kConnection] = undefined;
-}
-
-function useStreamingProtocol(monitor: Monitor, topologyVersion: TopologyVersion | null): boolean {
-  // If we have no topology version we always poll no matter
-  // what the user provided, since the server does not support
-  // the streaming protocol.
-  if (topologyVersion == null) return false;
-
-  const serverMonitoringMode = monitor.options.serverMonitoringMode;
-  if (serverMonitoringMode === ServerMonitoringMode.poll) return false;
-  if (serverMonitoringMode === ServerMonitoringMode.stream) return true;
-
-  // If we are in auto mode, we need to figure out if we're in a FaaS
-  // environment or not and choose the appropriate mode.
-  if (monitor.isRunningInFaasEnv) return false;
-  return true;
-}
-
-function checkServer(monitor: Monitor, callback: Callback<Document | null>) {
-  let start = now();
-  const topologyVersion = monitor[kServer].description.topologyVersion;
-  const isAwaitable = useStreamingProtocol(monitor, topologyVersion);
-  monitor.emit(
-    Server.SERVER_HEARTBEAT_STARTED,
-    new ServerHeartbeatStartedEvent(monitor.address, isAwaitable)
-  );
-
-  function failureHandler(err: Error, awaited: boolean) {
-    monitor[kConnection]?.destroy({ force: true });
-    monitor[kConnection] = undefined;
-
-    monitor.emit(
-      Server.SERVER_HEARTBEAT_FAILED,
-      new ServerHeartbeatFailedEvent(monitor.address, calculateDurationInMs(start), err, awaited)
-    );
-
-    const error = !(err instanceof MongoError)
-      ? new MongoError(MongoError.buildErrorMessage(err), { cause: err })
-      : err;
-    error.addErrorLabel(MongoErrorLabel.ResetPool);
-    if (error instanceof MongoNetworkTimeoutError) {
-      error.addErrorLabel(MongoErrorLabel.InterruptInUseConnections);
-    }
-
-    monitor.emit('resetServer', error);
-    callback(err);
-  }
-
-  const connection = monitor[kConnection];
-  if (connection && !connection.closed) {
-    const { serverApi, helloOk } = connection;
-    const connectTimeoutMS = monitor.options.connectTimeoutMS;
-    const maxAwaitTimeMS = monitor.options.heartbeatFrequencyMS;
-
-    const cmd = {
-      [serverApi?.version || helloOk ? 'hello' : LEGACY_HELLO_COMMAND]: 1,
-      ...(isAwaitable && topologyVersion
-        ? { maxAwaitTimeMS, topologyVersion: makeTopologyVersion(topologyVersion) }
-        : {})
-    };
-
-    const options = isAwaitable
-      ? {
-          socketTimeoutMS: connectTimeoutMS ? connectTimeoutMS + maxAwaitTimeMS : 0,
-          exhaustAllowed: true
-        }
-      : { socketTimeoutMS: connectTimeoutMS };
-
-    if (isAwaitable && monitor.rttPinger == null) {
-      monitor.rttPinger = new RTTPinger(
-        monitor[kCancellationToken],
-        Object.assign(
-          { heartbeatFrequencyMS: monitor.options.heartbeatFrequencyMS },
-          monitor.connectOptions
-        )
-      );
-    }
-
-    connection.command(ns('admin.$cmd'), cmd, options, (err, hello) => {
-      if (err) {
-        return failureHandler(err, isAwaitable);
-      }
-
-      if (!('isWritablePrimary' in hello)) {
-        // Provide hello-style response document.
-        hello.isWritablePrimary = hello[LEGACY_HELLO_COMMAND];
-      }
-
-      const duration =
-        isAwaitable && monitor.rttPinger
-          ? monitor.rttPinger.roundTripTime
-          : calculateDurationInMs(start);
-
-      monitor.emit(
-        Server.SERVER_HEARTBEAT_SUCCEEDED,
-        new ServerHeartbeatSucceededEvent(monitor.address, duration, hello, isAwaitable)
-      );
-
-      // If we are using the streaming protocol then we immediately issue another 'started'
-      // event, otherwise the "check" is complete and return to the main monitor loop.
-      if (isAwaitable) {
-        monitor.emit(
-          Server.SERVER_HEARTBEAT_STARTED,
-          new ServerHeartbeatStartedEvent(monitor.address, true)
-        );
-        start = now();
-      } else {
-        monitor.rttPinger?.close();
-        monitor.rttPinger = undefined;
-
-        callback(undefined, hello);
-      }
-    });
-
-    return;
-  }
-
-  // connecting does an implicit `hello`
-  connect(monitor.connectOptions, (err, conn) => {
-    if (err) {
-      monitor[kConnection] = undefined;
-
-      failureHandler(err, false);
-      return;
-    }
-
-    if (conn) {
-      // Tell the connection that we are using the streaming protocol so that the
-      // connection's message stream will only read the last hello on the buffer.
-      conn.isMonitoringConnection = true;
-
-      if (isInCloseState(monitor)) {
-        conn.destroy({ force: true });
-        return;
-      }
-
-      monitor[kConnection] = conn;
-      monitor.emit(
-        Server.SERVER_HEARTBEAT_SUCCEEDED,
-        new ServerHeartbeatSucceededEvent(
-          monitor.address,
-          calculateDurationInMs(start),
-          conn.hello,
-          useStreamingProtocol(monitor, conn.hello?.topologyVersion)
-        )
-      );
-
-      callback(undefined, conn.hello);
-    }
-  });
-}
-
-function monitorServer(monitor: Monitor) {
-  return (callback: Callback) => {
-    if (monitor.s.state === STATE_MONITORING) {
-      process.nextTick(callback);
-      return;
-    }
-    stateTransition(monitor, STATE_MONITORING);
-    function done() {
-      if (!isInCloseState(monitor)) {
-        stateTransition(monitor, STATE_IDLE);
-      }
-
-      callback();
-    }
-
-    checkServer(monitor, (err, hello) => {
-      if (err) {
-        // otherwise an error occurred on initial discovery, also bail
-        if (monitor[kServer].description.type === ServerType.Unknown) {
-          return done();
-        }
-      }
-
-      // if the check indicates streaming is supported, immediately reschedule monitoring
-      if (useStreamingProtocol(monitor, hello?.topologyVersion)) {
-        setTimeout(() => {
-          if (!isInCloseState(monitor)) {
-            monitor[kMonitorId]?.wake();
-          }
-        }, 0);
-      }
-
-      done();
-    });
-  };
-}
-
-function makeTopologyVersion(tv: TopologyVersion) {
-  return {
-    processId: tv.processId,
-    // tests mock counter as just number, but in a real situation counter should always be a Long
-    // TODO(NODE-2674): Preserve int64 sent from MongoDB
-    counter: Long.isLong(tv.counter) ? tv.counter : Long.fromNumber(tv.counter)
-  };
-}
-
-/** @internal */
-export interface RTTPingerOptions extends ConnectionOptions {
-  heartbeatFrequencyMS: number;
-}
-
-/** @internal */
-export class RTTPinger {
-  connection?: Connection;
-  /** @internal */
-  [kCancellationToken]: CancellationToken;
-  /** @internal */
-  [kRoundTripTime]: number;
-  /** @internal */
-  [kMonitorId]: NodeJS.Timeout;
-  closed: boolean;
-
-  constructor(cancellationToken: CancellationToken, options: RTTPingerOptions) {
-    this.connection = undefined;
-    this[kCancellationToken] = cancellationToken;
-    this[kRoundTripTime] = 0;
-    this.closed = false;
-
-    const heartbeatFrequencyMS = options.heartbeatFrequencyMS;
-    this[kMonitorId] = setTimeout(() => measureRoundTripTime(this, options), heartbeatFrequencyMS);
-  }
-
-  get roundTripTime(): number {
-    return this[kRoundTripTime];
-  }
-
-  close(): void {
-    this.closed = true;
-    clearTimeout(this[kMonitorId]);
-
-    this.connection?.destroy({ force: true });
-    this.connection = undefined;
-  }
-}
-
-function measureRoundTripTime(rttPinger: RTTPinger, options: RTTPingerOptions) {
-  const start = now();
-  options.cancellationToken = rttPinger[kCancellationToken];
-  const heartbeatFrequencyMS = options.heartbeatFrequencyMS;
-
-  if (rttPinger.closed) {
-    return;
-  }
-
-  function measureAndReschedule(conn?: Connection) {
-    if (rttPinger.closed) {
-      conn?.destroy({ force: true });
-      return;
-    }
-
-    if (rttPinger.connection == null) {
-      rttPinger.connection = conn;
-    }
-
-    rttPinger[kRoundTripTime] = calculateDurationInMs(start);
-    rttPinger[kMonitorId] = setTimeout(
-      () => measureRoundTripTime(rttPinger, options),
-      heartbeatFrequencyMS
-    );
-  }
-
-  const connection = rttPinger.connection;
-  if (connection == null) {
-    connect(options, (err, conn) => {
-      if (err) {
-        rttPinger.connection = undefined;
-        rttPinger[kRoundTripTime] = 0;
-        return;
-      }
-
-      measureAndReschedule(conn);
-    });
-
-    return;
-  }
-
-  const commandName =
-    connection.serverApi?.version || connection.helloOk ? 'hello' : LEGACY_HELLO_COMMAND;
-  connection.commandAsync(ns('admin.$cmd'), { [commandName]: 1 }, undefined).then(
-    () => measureAndReschedule(),
-    () => {
-      rttPinger.connection?.destroy({ force: true });
-      rttPinger.connection = undefined;
-      rttPinger[kRoundTripTime] = 0;
-      return;
-    }
-  );
-}
-
-/**
- * @internal
- */
-export interface MonitorIntervalOptions {
-  /** The interval to execute a method on */
-  heartbeatFrequencyMS: number;
-  /** A minimum interval that must elapse before the method is called */
-  minHeartbeatFrequencyMS: number;
-  /** Whether the method should be called immediately when the interval is started  */
-  immediate: boolean;
-}
-
-/**
- * @internal
- */
-export class MonitorInterval {
-  fn: (callback: Callback) => void;
-  timerId: NodeJS.Timeout | undefined;
-  lastExecutionEnded: number;
-  isExpeditedCallToFnScheduled = false;
-  stopped = false;
-  isExecutionInProgress = false;
-  hasExecutedOnce = false;
-
-  heartbeatFrequencyMS: number;
-  minHeartbeatFrequencyMS: number;
-
-  constructor(fn: (callback: Callback) => void, options: Partial<MonitorIntervalOptions> = {}) {
-    this.fn = fn;
-    this.lastExecutionEnded = -Infinity;
-
-    this.heartbeatFrequencyMS = options.heartbeatFrequencyMS ?? 1000;
-    this.minHeartbeatFrequencyMS = options.minHeartbeatFrequencyMS ?? 500;
-
-    if (options.immediate) {
-      this._executeAndReschedule();
-    } else {
-      this._reschedule(undefined);
-    }
-  }
-
-  wake() {
-    const currentTime = now();
-    const timeSinceLastCall = currentTime - this.lastExecutionEnded;
-
-    // TODO(NODE-4674): Add error handling and logging to the monitor
-    if (timeSinceLastCall < 0) {
-      return this._executeAndReschedule();
-    }
-
-    if (this.isExecutionInProgress) {
-      return;
-    }
-
-    // debounce multiple calls to wake within the `minInterval`
-    if (this.isExpeditedCallToFnScheduled) {
-      return;
-    }
-
-    // reschedule a call as soon as possible, ensuring the call never happens
-    // faster than the `minInterval`
-    if (timeSinceLastCall < this.minHeartbeatFrequencyMS) {
-      this.isExpeditedCallToFnScheduled = true;
-      this._reschedule(this.minHeartbeatFrequencyMS - timeSinceLastCall);
-      return;
-    }
-
-    this._executeAndReschedule();
-  }
-
-  stop() {
-    this.stopped = true;
-    if (this.timerId) {
-      clearTimeout(this.timerId);
-      this.timerId = undefined;
-    }
-
-    this.lastExecutionEnded = -Infinity;
-    this.isExpeditedCallToFnScheduled = false;
-  }
-
-  toString() {
-    return JSON.stringify(this);
-  }
-
-  toJSON() {
-    const currentTime = now();
-    const timeSinceLastCall = currentTime - this.lastExecutionEnded;
-    return {
-      timerId: this.timerId != null ? 'set' : 'cleared',
-      lastCallTime: this.lastExecutionEnded,
-      isExpeditedCheckScheduled: this.isExpeditedCallToFnScheduled,
-      stopped: this.stopped,
-      heartbeatFrequencyMS: this.heartbeatFrequencyMS,
-      minHeartbeatFrequencyMS: this.minHeartbeatFrequencyMS,
-      currentTime,
-      timeSinceLastCall
-    };
-  }
-
-  private _reschedule(ms?: number) {
-    if (this.stopped) return;
-    if (this.timerId) {
-      clearTimeout(this.timerId);
-    }
-
-    this.timerId = setTimeout(this._executeAndReschedule, ms || this.heartbeatFrequencyMS);
-  }
-
-  private _executeAndReschedule = () => {
-    if (this.stopped) return;
-    if (this.timerId) {
-      clearTimeout(this.timerId);
-    }
-
-    this.isExpeditedCallToFnScheduled = false;
-    this.isExecutionInProgress = true;
-
-    this.fn(() => {
-      this.lastExecutionEnded = now();
-      this.isExecutionInProgress = false;
-      this._reschedule(this.heartbeatFrequencyMS);
-    });
-  };
-}
diff --git a/server/data-import/node_modules/mongodb/src/sdam/server.ts b/server/data-import/node_modules/mongodb/src/sdam/server.ts
deleted file mode 100644
index 8e6d2b13d391b33172e8d662a514b08880751dd6..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/sdam/server.ts
+++ /dev/null
@@ -1,586 +0,0 @@
-import { promisify } from 'util';
-
-import type { Document } from '../bson';
-import { type AutoEncrypter } from '../client-side-encryption/auto_encrypter';
-import { type CommandOptions, Connection, type DestroyOptions } from '../cmap/connection';
-import {
-  ConnectionPool,
-  type ConnectionPoolEvents,
-  type ConnectionPoolOptions
-} from '../cmap/connection_pool';
-import { PoolClearedError } from '../cmap/errors';
-import {
-  APM_EVENTS,
-  CLOSED,
-  CMAP_EVENTS,
-  CONNECT,
-  DESCRIPTION_RECEIVED,
-  ENDED,
-  HEARTBEAT_EVENTS,
-  SERVER_HEARTBEAT_FAILED,
-  SERVER_HEARTBEAT_STARTED,
-  SERVER_HEARTBEAT_SUCCEEDED
-} from '../constants';
-import {
-  type AnyError,
-  isNetworkErrorBeforeHandshake,
-  isNodeShuttingDownError,
-  isSDAMUnrecoverableError,
-  MongoError,
-  MongoErrorLabel,
-  MongoInvalidArgumentError,
-  MongoNetworkError,
-  MongoNetworkTimeoutError,
-  MongoRuntimeError,
-  MongoServerClosedError,
-  type MongoServerError,
-  MongoUnexpectedServerResponseError,
-  needsRetryableWriteLabel
-} from '../error';
-import type { ServerApi } from '../mongo_client';
-import { TypedEventEmitter } from '../mongo_types';
-import type { GetMoreOptions } from '../operations/get_more';
-import type { ClientSession } from '../sessions';
-import { isTransactionCommand } from '../transactions';
-import {
-  type Callback,
-  type EventEmitterWithState,
-  makeStateMachine,
-  maxWireVersion,
-  type MongoDBNamespace,
-  supportsRetryableWrites
-} from '../utils';
-import {
-  type ClusterTime,
-  STATE_CLOSED,
-  STATE_CLOSING,
-  STATE_CONNECTED,
-  STATE_CONNECTING,
-  TopologyType
-} from './common';
-import type {
-  ServerHeartbeatFailedEvent,
-  ServerHeartbeatStartedEvent,
-  ServerHeartbeatSucceededEvent
-} from './events';
-import { Monitor, type MonitorOptions } from './monitor';
-import { compareTopologyVersion, ServerDescription } from './server_description';
-import type { Topology } from './topology';
-
-const stateTransition = makeStateMachine({
-  [STATE_CLOSED]: [STATE_CLOSED, STATE_CONNECTING],
-  [STATE_CONNECTING]: [STATE_CONNECTING, STATE_CLOSING, STATE_CONNECTED, STATE_CLOSED],
-  [STATE_CONNECTED]: [STATE_CONNECTED, STATE_CLOSING, STATE_CLOSED],
-  [STATE_CLOSING]: [STATE_CLOSING, STATE_CLOSED]
-});
-
-/** @internal */
-export type ServerOptions = Omit<ConnectionPoolOptions, 'id' | 'generation' | 'hostAddress'> &
-  MonitorOptions;
-
-/** @internal */
-export interface ServerPrivate {
-  /** The server description for this server */
-  description: ServerDescription;
-  /** A copy of the options used to construct this instance */
-  options: ServerOptions;
-  /** The current state of the Server */
-  state: string;
-  /** MongoDB server API version */
-  serverApi?: ServerApi;
-  /** A count of the operations currently running against the server. */
-  operationCount: number;
-}
-
-/** @public */
-export type ServerEvents = {
-  serverHeartbeatStarted(event: ServerHeartbeatStartedEvent): void;
-  serverHeartbeatSucceeded(event: ServerHeartbeatSucceededEvent): void;
-  serverHeartbeatFailed(event: ServerHeartbeatFailedEvent): void;
-  /** Top level MongoClient doesn't emit this so it is marked: @internal */
-  connect(server: Server): void;
-  descriptionReceived(description: ServerDescription): void;
-  closed(): void;
-  ended(): void;
-} & ConnectionPoolEvents &
-  EventEmitterWithState;
-
-/** @internal */
-export class Server extends TypedEventEmitter<ServerEvents> {
-  /** @internal */
-  s: ServerPrivate;
-  /** @internal */
-  topology: Topology;
-  /** @internal */
-  pool: ConnectionPool;
-  serverApi?: ServerApi;
-  hello?: Document;
-  commandAsync: (ns: MongoDBNamespace, cmd: Document, options: CommandOptions) => Promise<Document>;
-  monitor: Monitor | null;
-
-  /** @event */
-  static readonly SERVER_HEARTBEAT_STARTED = SERVER_HEARTBEAT_STARTED;
-  /** @event */
-  static readonly SERVER_HEARTBEAT_SUCCEEDED = SERVER_HEARTBEAT_SUCCEEDED;
-  /** @event */
-  static readonly SERVER_HEARTBEAT_FAILED = SERVER_HEARTBEAT_FAILED;
-  /** @event */
-  static readonly CONNECT = CONNECT;
-  /** @event */
-  static readonly DESCRIPTION_RECEIVED = DESCRIPTION_RECEIVED;
-  /** @event */
-  static readonly CLOSED = CLOSED;
-  /** @event */
-  static readonly ENDED = ENDED;
-
-  /**
-   * Create a server
-   */
-  constructor(topology: Topology, description: ServerDescription, options: ServerOptions) {
-    super();
-
-    this.commandAsync = promisify(
-      (
-        ns: MongoDBNamespace,
-        cmd: Document,
-        options: CommandOptions,
-        // callback type defines Document result because result is never nullish when it succeeds, otherwise promise rejects
-        callback: (error: Error | undefined, result: Document) => void
-      ) => this.command(ns, cmd, options, callback as any)
-    );
-
-    this.serverApi = options.serverApi;
-
-    const poolOptions = { hostAddress: description.hostAddress, ...options };
-
-    this.topology = topology;
-    this.pool = new ConnectionPool(this, poolOptions);
-
-    this.s = {
-      description,
-      options,
-      state: STATE_CLOSED,
-      operationCount: 0
-    };
-
-    for (const event of [...CMAP_EVENTS, ...APM_EVENTS]) {
-      this.pool.on(event, (e: any) => this.emit(event, e));
-    }
-
-    this.pool.on(Connection.CLUSTER_TIME_RECEIVED, (clusterTime: ClusterTime) => {
-      this.clusterTime = clusterTime;
-    });
-
-    if (this.loadBalanced) {
-      this.monitor = null;
-      // monitoring is disabled in load balancing mode
-      return;
-    }
-
-    // create the monitor
-    this.monitor = new Monitor(this, this.s.options);
-
-    for (const event of HEARTBEAT_EVENTS) {
-      this.monitor.on(event, (e: any) => this.emit(event, e));
-    }
-
-    this.monitor.on('resetServer', (error: MongoError) => markServerUnknown(this, error));
-    this.monitor.on(Server.SERVER_HEARTBEAT_SUCCEEDED, (event: ServerHeartbeatSucceededEvent) => {
-      this.emit(
-        Server.DESCRIPTION_RECEIVED,
-        new ServerDescription(this.description.hostAddress, event.reply, {
-          roundTripTime: calculateRoundTripTime(this.description.roundTripTime, event.duration)
-        })
-      );
-
-      if (this.s.state === STATE_CONNECTING) {
-        stateTransition(this, STATE_CONNECTED);
-        this.emit(Server.CONNECT, this);
-      }
-    });
-  }
-
-  get clusterTime(): ClusterTime | undefined {
-    return this.topology.clusterTime;
-  }
-
-  set clusterTime(clusterTime: ClusterTime | undefined) {
-    this.topology.clusterTime = clusterTime;
-  }
-
-  get description(): ServerDescription {
-    return this.s.description;
-  }
-
-  get name(): string {
-    return this.s.description.address;
-  }
-
-  get autoEncrypter(): AutoEncrypter | undefined {
-    if (this.s.options && this.s.options.autoEncrypter) {
-      return this.s.options.autoEncrypter;
-    }
-    return;
-  }
-
-  get loadBalanced(): boolean {
-    return this.topology.description.type === TopologyType.LoadBalanced;
-  }
-
-  /**
-   * Initiate server connect
-   */
-  connect(): void {
-    if (this.s.state !== STATE_CLOSED) {
-      return;
-    }
-
-    stateTransition(this, STATE_CONNECTING);
-
-    // If in load balancer mode we automatically set the server to
-    // a load balancer. It never transitions out of this state and
-    // has no monitor.
-    if (!this.loadBalanced) {
-      this.monitor?.connect();
-    } else {
-      stateTransition(this, STATE_CONNECTED);
-      this.emit(Server.CONNECT, this);
-    }
-  }
-
-  /** Destroy the server connection */
-  destroy(options?: DestroyOptions, callback?: Callback): void {
-    if (typeof options === 'function') {
-      callback = options;
-      options = { force: false };
-    }
-    options = Object.assign({}, { force: false }, options);
-
-    if (this.s.state === STATE_CLOSED) {
-      if (typeof callback === 'function') {
-        callback();
-      }
-
-      return;
-    }
-
-    stateTransition(this, STATE_CLOSING);
-
-    if (!this.loadBalanced) {
-      this.monitor?.close();
-    }
-
-    this.pool.close(options, err => {
-      stateTransition(this, STATE_CLOSED);
-      this.emit('closed');
-      if (typeof callback === 'function') {
-        callback(err);
-      }
-    });
-  }
-
-  /**
-   * Immediately schedule monitoring of this server. If there already an attempt being made
-   * this will be a no-op.
-   */
-  requestCheck(): void {
-    if (!this.loadBalanced) {
-      this.monitor?.requestCheck();
-    }
-  }
-
-  /**
-   * Execute a command
-   * @internal
-   */
-  command(
-    ns: MongoDBNamespace,
-    cmd: Document,
-    options: CommandOptions,
-    callback: Callback<Document>
-  ): void {
-    if (callback == null) {
-      throw new MongoInvalidArgumentError('Callback must be provided');
-    }
-
-    if (ns.db == null || typeof ns === 'string') {
-      throw new MongoInvalidArgumentError('Namespace must not be a string');
-    }
-
-    if (this.s.state === STATE_CLOSING || this.s.state === STATE_CLOSED) {
-      callback(new MongoServerClosedError());
-      return;
-    }
-
-    // Clone the options
-    const finalOptions = Object.assign({}, options, { wireProtocolCommand: false });
-
-    // There are cases where we need to flag the read preference not to get sent in
-    // the command, such as pre-5.0 servers attempting to perform an aggregate write
-    // with a non-primary read preference. In this case the effective read preference
-    // (primary) is not the same as the provided and must be removed completely.
-    if (finalOptions.omitReadPreference) {
-      delete finalOptions.readPreference;
-    }
-
-    const session = finalOptions.session;
-    const conn = session?.pinnedConnection;
-
-    // NOTE: This is a hack! We can't retrieve the connections used for executing an operation
-    //       (and prevent them from being checked back in) at the point of operation execution.
-    //       This should be considered as part of the work for NODE-2882
-    // NOTE:
-    //       When incrementing operation count, it's important that we increment it before we
-    //       attempt to check out a connection from the pool.  This ensures that operations that
-    //       are waiting for a connection are included in the operation count.  Load balanced
-    //       mode will only ever have a single server, so the operation count doesn't matter.
-    //       Incrementing the operation count above the logic to handle load balanced mode would
-    //       require special logic to decrement it again, or would double increment (the load
-    //       balanced code makes a recursive call).  Instead, we increment the count after this
-    //       check.
-    if (this.loadBalanced && session && conn == null && isPinnableCommand(cmd, session)) {
-      this.pool.checkOut((err, checkedOut) => {
-        if (err || checkedOut == null) {
-          if (callback) return callback(err);
-          return;
-        }
-
-        session.pin(checkedOut);
-        this.command(ns, cmd, finalOptions, callback);
-      });
-      return;
-    }
-
-    this.incrementOperationCount();
-
-    this.pool.withConnection(
-      conn,
-      (err, conn, cb) => {
-        if (err || !conn) {
-          this.decrementOperationCount();
-          if (!err) {
-            return cb(new MongoRuntimeError('Failed to create connection without error'));
-          }
-          if (!(err instanceof PoolClearedError)) {
-            this.handleError(err);
-          }
-          return cb(err);
-        }
-
-        conn.command(
-          ns,
-          cmd,
-          finalOptions,
-          makeOperationHandler(this, conn, cmd, finalOptions, (error, response) => {
-            this.decrementOperationCount();
-            cb(error, response);
-          })
-        );
-      },
-      callback
-    );
-  }
-
-  /**
-   * Handle SDAM error
-   * @internal
-   */
-  handleError(error: AnyError, connection?: Connection) {
-    if (!(error instanceof MongoError)) {
-      return;
-    }
-
-    const isStaleError =
-      error.connectionGeneration && error.connectionGeneration < this.pool.generation;
-    if (isStaleError) {
-      return;
-    }
-
-    const isNetworkNonTimeoutError =
-      error instanceof MongoNetworkError && !(error instanceof MongoNetworkTimeoutError);
-    const isNetworkTimeoutBeforeHandshakeError = isNetworkErrorBeforeHandshake(error);
-    const isAuthHandshakeError = error.hasErrorLabel(MongoErrorLabel.HandshakeError);
-    if (isNetworkNonTimeoutError || isNetworkTimeoutBeforeHandshakeError || isAuthHandshakeError) {
-      // In load balanced mode we never mark the server as unknown and always
-      // clear for the specific service id.
-      if (!this.loadBalanced) {
-        error.addErrorLabel(MongoErrorLabel.ResetPool);
-        markServerUnknown(this, error);
-      } else if (connection) {
-        this.pool.clear({ serviceId: connection.serviceId });
-      }
-    } else {
-      if (isSDAMUnrecoverableError(error)) {
-        if (shouldHandleStateChangeError(this, error)) {
-          const shouldClearPool = maxWireVersion(this) <= 7 || isNodeShuttingDownError(error);
-          if (this.loadBalanced && connection && shouldClearPool) {
-            this.pool.clear({ serviceId: connection.serviceId });
-          }
-
-          if (!this.loadBalanced) {
-            if (shouldClearPool) {
-              error.addErrorLabel(MongoErrorLabel.ResetPool);
-            }
-            markServerUnknown(this, error);
-            process.nextTick(() => this.requestCheck());
-          }
-        }
-      }
-    }
-  }
-
-  /**
-   * Decrement the operation count, returning the new count.
-   */
-  private decrementOperationCount(): number {
-    return (this.s.operationCount -= 1);
-  }
-
-  /**
-   * Increment the operation count, returning the new count.
-   */
-  private incrementOperationCount(): number {
-    return (this.s.operationCount += 1);
-  }
-}
-
-function calculateRoundTripTime(oldRtt: number, duration: number): number {
-  if (oldRtt === -1) {
-    return duration;
-  }
-
-  const alpha = 0.2;
-  return alpha * duration + (1 - alpha) * oldRtt;
-}
-
-function markServerUnknown(server: Server, error?: MongoServerError) {
-  // Load balancer servers can never be marked unknown.
-  if (server.loadBalanced) {
-    return;
-  }
-
-  if (error instanceof MongoNetworkError && !(error instanceof MongoNetworkTimeoutError)) {
-    server.monitor?.reset();
-  }
-
-  server.emit(
-    Server.DESCRIPTION_RECEIVED,
-    new ServerDescription(server.description.hostAddress, undefined, { error })
-  );
-}
-
-function isPinnableCommand(cmd: Document, session?: ClientSession): boolean {
-  if (session) {
-    return (
-      session.inTransaction() ||
-      'aggregate' in cmd ||
-      'find' in cmd ||
-      'getMore' in cmd ||
-      'listCollections' in cmd ||
-      'listIndexes' in cmd
-    );
-  }
-
-  return false;
-}
-
-function connectionIsStale(pool: ConnectionPool, connection: Connection) {
-  if (connection.serviceId) {
-    return (
-      connection.generation !== pool.serviceGenerations.get(connection.serviceId.toHexString())
-    );
-  }
-
-  return connection.generation !== pool.generation;
-}
-
-function shouldHandleStateChangeError(server: Server, err: MongoError) {
-  const etv = err.topologyVersion;
-  const stv = server.description.topologyVersion;
-  return compareTopologyVersion(stv, etv) < 0;
-}
-
-function inActiveTransaction(session: ClientSession | undefined, cmd: Document) {
-  return session && session.inTransaction() && !isTransactionCommand(cmd);
-}
-
-/** this checks the retryWrites option passed down from the client options, it
- * does not check if the server supports retryable writes */
-function isRetryableWritesEnabled(topology: Topology) {
-  return topology.s.options.retryWrites !== false;
-}
-
-function makeOperationHandler(
-  server: Server,
-  connection: Connection,
-  cmd: Document,
-  options: CommandOptions | GetMoreOptions | undefined,
-  callback: Callback
-): Callback {
-  const session = options?.session;
-  return function handleOperationResult(error, result) {
-    // We should not swallow an error if it is present.
-    if (error == null && result != null) {
-      return callback(undefined, result);
-    }
-
-    if (options != null && 'noResponse' in options && options.noResponse === true) {
-      return callback(undefined, null);
-    }
-
-    if (!error) {
-      return callback(new MongoUnexpectedServerResponseError('Empty response with no error'));
-    }
-
-    if (!(error instanceof MongoError)) {
-      // Node.js or some other error we have not special handling for
-      return callback(error);
-    }
-
-    if (connectionIsStale(server.pool, connection)) {
-      return callback(error);
-    }
-
-    if (error instanceof MongoNetworkError) {
-      if (session && !session.hasEnded && session.serverSession) {
-        session.serverSession.isDirty = true;
-      }
-
-      // inActiveTransaction check handles commit and abort.
-      if (
-        inActiveTransaction(session, cmd) &&
-        !error.hasErrorLabel(MongoErrorLabel.TransientTransactionError)
-      ) {
-        error.addErrorLabel(MongoErrorLabel.TransientTransactionError);
-      }
-
-      if (
-        (isRetryableWritesEnabled(server.topology) || isTransactionCommand(cmd)) &&
-        supportsRetryableWrites(server) &&
-        !inActiveTransaction(session, cmd)
-      ) {
-        error.addErrorLabel(MongoErrorLabel.RetryableWriteError);
-      }
-    } else {
-      if (
-        (isRetryableWritesEnabled(server.topology) || isTransactionCommand(cmd)) &&
-        needsRetryableWriteLabel(error, maxWireVersion(server)) &&
-        !inActiveTransaction(session, cmd)
-      ) {
-        error.addErrorLabel(MongoErrorLabel.RetryableWriteError);
-      }
-    }
-
-    if (
-      session &&
-      session.isPinned &&
-      error.hasErrorLabel(MongoErrorLabel.TransientTransactionError)
-    ) {
-      session.unpin({ force: true });
-    }
-
-    server.handleError(error, connection);
-
-    return callback(error);
-  };
-}
diff --git a/server/data-import/node_modules/mongodb/src/sdam/server_description.ts b/server/data-import/node_modules/mongodb/src/sdam/server_description.ts
deleted file mode 100644
index 62fe0aaddeecf554c60de076573e384f4402007d..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/sdam/server_description.ts
+++ /dev/null
@@ -1,262 +0,0 @@
-import { type Document, Long, type ObjectId } from '../bson';
-import { type MongoError, MongoRuntimeError, type MongoServerError } from '../error';
-import { arrayStrictEqual, compareObjectId, errorStrictEqual, HostAddress, now } from '../utils';
-import type { ClusterTime } from './common';
-import { ServerType } from './common';
-
-const WRITABLE_SERVER_TYPES = new Set<ServerType>([
-  ServerType.RSPrimary,
-  ServerType.Standalone,
-  ServerType.Mongos,
-  ServerType.LoadBalancer
-]);
-
-const DATA_BEARING_SERVER_TYPES = new Set<ServerType>([
-  ServerType.RSPrimary,
-  ServerType.RSSecondary,
-  ServerType.Mongos,
-  ServerType.Standalone,
-  ServerType.LoadBalancer
-]);
-
-/** @public */
-export interface TopologyVersion {
-  processId: ObjectId;
-  counter: Long;
-}
-
-/** @public */
-export type TagSet = { [key: string]: string };
-
-/** @internal */
-export interface ServerDescriptionOptions {
-  /** An Error used for better reporting debugging */
-  error?: MongoServerError;
-
-  /** The round trip time to ping this server (in ms) */
-  roundTripTime?: number;
-
-  /** If the client is in load balancing mode. */
-  loadBalanced?: boolean;
-}
-
-/**
- * The client's view of a single server, based on the most recent hello outcome.
- *
- * Internal type, not meant to be directly instantiated
- * @public
- */
-export class ServerDescription {
-  address: string;
-  type: ServerType;
-  hosts: string[];
-  passives: string[];
-  arbiters: string[];
-  tags: TagSet;
-  error: MongoError | null;
-  topologyVersion: TopologyVersion | null;
-  minWireVersion: number;
-  maxWireVersion: number;
-  roundTripTime: number;
-  lastUpdateTime: number;
-  lastWriteDate: number;
-  me: string | null;
-  primary: string | null;
-  setName: string | null;
-  setVersion: number | null;
-  electionId: ObjectId | null;
-  logicalSessionTimeoutMinutes: number | null;
-
-  // NOTE: does this belong here? It seems we should gossip the cluster time at the CMAP level
-  $clusterTime?: ClusterTime;
-
-  /**
-   * Create a ServerDescription
-   * @internal
-   *
-   * @param address - The address of the server
-   * @param hello - An optional hello response for this server
-   */
-  constructor(
-    address: HostAddress | string,
-    hello?: Document,
-    options: ServerDescriptionOptions = {}
-  ) {
-    if (address == null || address === '') {
-      throw new MongoRuntimeError('ServerDescription must be provided with a non-empty address');
-    }
-
-    this.address =
-      typeof address === 'string'
-        ? HostAddress.fromString(address).toString() // Use HostAddress to normalize
-        : address.toString();
-    this.type = parseServerType(hello, options);
-    this.hosts = hello?.hosts?.map((host: string) => host.toLowerCase()) ?? [];
-    this.passives = hello?.passives?.map((host: string) => host.toLowerCase()) ?? [];
-    this.arbiters = hello?.arbiters?.map((host: string) => host.toLowerCase()) ?? [];
-    this.tags = hello?.tags ?? {};
-    this.minWireVersion = hello?.minWireVersion ?? 0;
-    this.maxWireVersion = hello?.maxWireVersion ?? 0;
-    this.roundTripTime = options?.roundTripTime ?? -1;
-    this.lastUpdateTime = now();
-    this.lastWriteDate = hello?.lastWrite?.lastWriteDate ?? 0;
-    this.error = options.error ?? null;
-    // TODO(NODE-2674): Preserve int64 sent from MongoDB
-    this.topologyVersion = this.error?.topologyVersion ?? hello?.topologyVersion ?? null;
-    this.setName = hello?.setName ?? null;
-    this.setVersion = hello?.setVersion ?? null;
-    this.electionId = hello?.electionId ?? null;
-    this.logicalSessionTimeoutMinutes = hello?.logicalSessionTimeoutMinutes ?? null;
-    this.primary = hello?.primary ?? null;
-    this.me = hello?.me?.toLowerCase() ?? null;
-    this.$clusterTime = hello?.$clusterTime ?? null;
-  }
-
-  get hostAddress(): HostAddress {
-    return HostAddress.fromString(this.address);
-  }
-
-  get allHosts(): string[] {
-    return this.hosts.concat(this.arbiters).concat(this.passives);
-  }
-
-  /** Is this server available for reads*/
-  get isReadable(): boolean {
-    return this.type === ServerType.RSSecondary || this.isWritable;
-  }
-
-  /** Is this server data bearing */
-  get isDataBearing(): boolean {
-    return DATA_BEARING_SERVER_TYPES.has(this.type);
-  }
-
-  /** Is this server available for writes */
-  get isWritable(): boolean {
-    return WRITABLE_SERVER_TYPES.has(this.type);
-  }
-
-  get host(): string {
-    const chopLength = `:${this.port}`.length;
-    return this.address.slice(0, -chopLength);
-  }
-
-  get port(): number {
-    const port = this.address.split(':').pop();
-    return port ? Number.parseInt(port, 10) : 27017;
-  }
-
-  /**
-   * Determines if another `ServerDescription` is equal to this one per the rules defined
-   * in the {@link https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#serverdescription|SDAM spec}
-   */
-  equals(other?: ServerDescription | null): boolean {
-    // Despite using the comparator that would determine a nullish topologyVersion as greater than
-    // for equality we should only always perform direct equality comparison
-    const topologyVersionsEqual =
-      this.topologyVersion === other?.topologyVersion ||
-      compareTopologyVersion(this.topologyVersion, other?.topologyVersion) === 0;
-
-    const electionIdsEqual =
-      this.electionId != null && other?.electionId != null
-        ? compareObjectId(this.electionId, other.electionId) === 0
-        : this.electionId === other?.electionId;
-
-    return (
-      other != null &&
-      errorStrictEqual(this.error, other.error) &&
-      this.type === other.type &&
-      this.minWireVersion === other.minWireVersion &&
-      arrayStrictEqual(this.hosts, other.hosts) &&
-      tagsStrictEqual(this.tags, other.tags) &&
-      this.setName === other.setName &&
-      this.setVersion === other.setVersion &&
-      electionIdsEqual &&
-      this.primary === other.primary &&
-      this.logicalSessionTimeoutMinutes === other.logicalSessionTimeoutMinutes &&
-      topologyVersionsEqual
-    );
-  }
-}
-
-// Parses a `hello` message and determines the server type
-export function parseServerType(hello?: Document, options?: ServerDescriptionOptions): ServerType {
-  if (options?.loadBalanced) {
-    return ServerType.LoadBalancer;
-  }
-
-  if (!hello || !hello.ok) {
-    return ServerType.Unknown;
-  }
-
-  if (hello.isreplicaset) {
-    return ServerType.RSGhost;
-  }
-
-  if (hello.msg && hello.msg === 'isdbgrid') {
-    return ServerType.Mongos;
-  }
-
-  if (hello.setName) {
-    if (hello.hidden) {
-      return ServerType.RSOther;
-    } else if (hello.isWritablePrimary) {
-      return ServerType.RSPrimary;
-    } else if (hello.secondary) {
-      return ServerType.RSSecondary;
-    } else if (hello.arbiterOnly) {
-      return ServerType.RSArbiter;
-    } else {
-      return ServerType.RSOther;
-    }
-  }
-
-  return ServerType.Standalone;
-}
-
-function tagsStrictEqual(tags: TagSet, tags2: TagSet): boolean {
-  const tagsKeys = Object.keys(tags);
-  const tags2Keys = Object.keys(tags2);
-
-  return (
-    tagsKeys.length === tags2Keys.length &&
-    tagsKeys.every((key: string) => tags2[key] === tags[key])
-  );
-}
-
-/**
- * Compares two topology versions.
- *
- * 1. If the response topologyVersion is unset or the ServerDescription's
- *    topologyVersion is null, the client MUST assume the response is more recent.
- * 1. If the response's topologyVersion.processId is not equal to the
- *    ServerDescription's, the client MUST assume the response is more recent.
- * 1. If the response's topologyVersion.processId is equal to the
- *    ServerDescription's, the client MUST use the counter field to determine
- *    which topologyVersion is more recent.
- *
- * ```ts
- * currentTv <   newTv === -1
- * currentTv === newTv === 0
- * currentTv >   newTv === 1
- * ```
- */
-export function compareTopologyVersion(
-  currentTv?: TopologyVersion | null,
-  newTv?: TopologyVersion | null
-): 0 | -1 | 1 {
-  if (currentTv == null || newTv == null) {
-    return -1;
-  }
-
-  if (!currentTv.processId.equals(newTv.processId)) {
-    return -1;
-  }
-
-  // TODO(NODE-2674): Preserve int64 sent from MongoDB
-  const currentCounter = Long.isLong(currentTv.counter)
-    ? currentTv.counter
-    : Long.fromNumber(currentTv.counter);
-  const newCounter = Long.isLong(newTv.counter) ? newTv.counter : Long.fromNumber(newTv.counter);
-
-  return currentCounter.compare(newCounter);
-}
diff --git a/server/data-import/node_modules/mongodb/src/sdam/server_selection.ts b/server/data-import/node_modules/mongodb/src/sdam/server_selection.ts
deleted file mode 100644
index c7c2b563cd055f5d5ca933c32c0ce12917b295f7..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/sdam/server_selection.ts
+++ /dev/null
@@ -1,324 +0,0 @@
-import { MongoCompatibilityError, MongoInvalidArgumentError } from '../error';
-import { ReadPreference } from '../read_preference';
-import { ServerType, TopologyType } from './common';
-import type { ServerDescription, TagSet } from './server_description';
-import type { TopologyDescription } from './topology_description';
-
-// max staleness constants
-const IDLE_WRITE_PERIOD = 10000;
-const SMALLEST_MAX_STALENESS_SECONDS = 90;
-
-//  Minimum version to try writes on secondaries.
-export const MIN_SECONDARY_WRITE_WIRE_VERSION = 13;
-
-/** @internal */
-export type ServerSelector = (
-  topologyDescription: TopologyDescription,
-  servers: ServerDescription[]
-) => ServerDescription[];
-
-/**
- * Returns a server selector that selects for writable servers
- */
-export function writableServerSelector(): ServerSelector {
-  return (
-    topologyDescription: TopologyDescription,
-    servers: ServerDescription[]
-  ): ServerDescription[] =>
-    latencyWindowReducer(
-      topologyDescription,
-      servers.filter((s: ServerDescription) => s.isWritable)
-    );
-}
-
-/**
- * The purpose of this selector is to select the same server, only
- * if it is in a state that it can have commands sent to it.
- */
-export function sameServerSelector(description?: ServerDescription): ServerSelector {
-  return (
-    topologyDescription: TopologyDescription,
-    servers: ServerDescription[]
-  ): ServerDescription[] => {
-    if (!description) return [];
-    // Filter the servers to match the provided description only if
-    // the type is not unknown.
-    return servers.filter(sd => {
-      return sd.address === description.address && sd.type !== ServerType.Unknown;
-    });
-  };
-}
-
-/**
- * Returns a server selector that uses a read preference to select a
- * server potentially for a write on a secondary.
- */
-export function secondaryWritableServerSelector(
-  wireVersion?: number,
-  readPreference?: ReadPreference
-): ServerSelector {
-  // If server version < 5.0, read preference always primary.
-  // If server version >= 5.0...
-  // - If read preference is supplied, use that.
-  // - If no read preference is supplied, use primary.
-  if (
-    !readPreference ||
-    !wireVersion ||
-    (wireVersion && wireVersion < MIN_SECONDARY_WRITE_WIRE_VERSION)
-  ) {
-    return readPreferenceServerSelector(ReadPreference.primary);
-  }
-  return readPreferenceServerSelector(readPreference);
-}
-
-/**
- * Reduces the passed in array of servers by the rules of the "Max Staleness" specification
- * found here: https://github.com/mongodb/specifications/blob/master/source/max-staleness/max-staleness.rst
- *
- * @param readPreference - The read preference providing max staleness guidance
- * @param topologyDescription - The topology description
- * @param servers - The list of server descriptions to be reduced
- * @returns The list of servers that satisfy the requirements of max staleness
- */
-function maxStalenessReducer(
-  readPreference: ReadPreference,
-  topologyDescription: TopologyDescription,
-  servers: ServerDescription[]
-): ServerDescription[] {
-  if (readPreference.maxStalenessSeconds == null || readPreference.maxStalenessSeconds < 0) {
-    return servers;
-  }
-
-  const maxStaleness = readPreference.maxStalenessSeconds;
-  const maxStalenessVariance =
-    (topologyDescription.heartbeatFrequencyMS + IDLE_WRITE_PERIOD) / 1000;
-  if (maxStaleness < maxStalenessVariance) {
-    throw new MongoInvalidArgumentError(
-      `Option "maxStalenessSeconds" must be at least ${maxStalenessVariance} seconds`
-    );
-  }
-
-  if (maxStaleness < SMALLEST_MAX_STALENESS_SECONDS) {
-    throw new MongoInvalidArgumentError(
-      `Option "maxStalenessSeconds" must be at least ${SMALLEST_MAX_STALENESS_SECONDS} seconds`
-    );
-  }
-
-  if (topologyDescription.type === TopologyType.ReplicaSetWithPrimary) {
-    const primary: ServerDescription = Array.from(topologyDescription.servers.values()).filter(
-      primaryFilter
-    )[0];
-
-    return servers.reduce((result: ServerDescription[], server: ServerDescription) => {
-      const stalenessMS =
-        server.lastUpdateTime -
-        server.lastWriteDate -
-        (primary.lastUpdateTime - primary.lastWriteDate) +
-        topologyDescription.heartbeatFrequencyMS;
-
-      const staleness = stalenessMS / 1000;
-      const maxStalenessSeconds = readPreference.maxStalenessSeconds ?? 0;
-      if (staleness <= maxStalenessSeconds) {
-        result.push(server);
-      }
-
-      return result;
-    }, []);
-  }
-
-  if (topologyDescription.type === TopologyType.ReplicaSetNoPrimary) {
-    if (servers.length === 0) {
-      return servers;
-    }
-
-    const sMax = servers.reduce((max: ServerDescription, s: ServerDescription) =>
-      s.lastWriteDate > max.lastWriteDate ? s : max
-    );
-
-    return servers.reduce((result: ServerDescription[], server: ServerDescription) => {
-      const stalenessMS =
-        sMax.lastWriteDate - server.lastWriteDate + topologyDescription.heartbeatFrequencyMS;
-
-      const staleness = stalenessMS / 1000;
-      const maxStalenessSeconds = readPreference.maxStalenessSeconds ?? 0;
-      if (staleness <= maxStalenessSeconds) {
-        result.push(server);
-      }
-
-      return result;
-    }, []);
-  }
-
-  return servers;
-}
-
-/**
- * Determines whether a server's tags match a given set of tags
- *
- * @param tagSet - The requested tag set to match
- * @param serverTags - The server's tags
- */
-function tagSetMatch(tagSet: TagSet, serverTags: TagSet) {
-  const keys = Object.keys(tagSet);
-  const serverTagKeys = Object.keys(serverTags);
-  for (let i = 0; i < keys.length; ++i) {
-    const key = keys[i];
-    if (serverTagKeys.indexOf(key) === -1 || serverTags[key] !== tagSet[key]) {
-      return false;
-    }
-  }
-
-  return true;
-}
-
-/**
- * Reduces a set of server descriptions based on tags requested by the read preference
- *
- * @param readPreference - The read preference providing the requested tags
- * @param servers - The list of server descriptions to reduce
- * @returns The list of servers matching the requested tags
- */
-function tagSetReducer(
-  readPreference: ReadPreference,
-  servers: ServerDescription[]
-): ServerDescription[] {
-  if (
-    readPreference.tags == null ||
-    (Array.isArray(readPreference.tags) && readPreference.tags.length === 0)
-  ) {
-    return servers;
-  }
-
-  for (let i = 0; i < readPreference.tags.length; ++i) {
-    const tagSet = readPreference.tags[i];
-    const serversMatchingTagset = servers.reduce(
-      (matched: ServerDescription[], server: ServerDescription) => {
-        if (tagSetMatch(tagSet, server.tags)) matched.push(server);
-        return matched;
-      },
-      []
-    );
-
-    if (serversMatchingTagset.length) {
-      return serversMatchingTagset;
-    }
-  }
-
-  return [];
-}
-
-/**
- * Reduces a list of servers to ensure they fall within an acceptable latency window. This is
- * further specified in the "Server Selection" specification, found here:
- * https://github.com/mongodb/specifications/blob/master/source/server-selection/server-selection.rst
- *
- * @param topologyDescription - The topology description
- * @param servers - The list of servers to reduce
- * @returns The servers which fall within an acceptable latency window
- */
-function latencyWindowReducer(
-  topologyDescription: TopologyDescription,
-  servers: ServerDescription[]
-): ServerDescription[] {
-  const low = servers.reduce(
-    (min: number, server: ServerDescription) =>
-      min === -1 ? server.roundTripTime : Math.min(server.roundTripTime, min),
-    -1
-  );
-
-  const high = low + topologyDescription.localThresholdMS;
-  return servers.reduce((result: ServerDescription[], server: ServerDescription) => {
-    if (server.roundTripTime <= high && server.roundTripTime >= low) result.push(server);
-    return result;
-  }, []);
-}
-
-// filters
-function primaryFilter(server: ServerDescription): boolean {
-  return server.type === ServerType.RSPrimary;
-}
-
-function secondaryFilter(server: ServerDescription): boolean {
-  return server.type === ServerType.RSSecondary;
-}
-
-function nearestFilter(server: ServerDescription): boolean {
-  return server.type === ServerType.RSSecondary || server.type === ServerType.RSPrimary;
-}
-
-function knownFilter(server: ServerDescription): boolean {
-  return server.type !== ServerType.Unknown;
-}
-
-function loadBalancerFilter(server: ServerDescription): boolean {
-  return server.type === ServerType.LoadBalancer;
-}
-
-/**
- * Returns a function which selects servers based on a provided read preference
- *
- * @param readPreference - The read preference to select with
- */
-export function readPreferenceServerSelector(readPreference: ReadPreference): ServerSelector {
-  if (!readPreference.isValid()) {
-    throw new MongoInvalidArgumentError('Invalid read preference specified');
-  }
-
-  return (
-    topologyDescription: TopologyDescription,
-    servers: ServerDescription[]
-  ): ServerDescription[] => {
-    const commonWireVersion = topologyDescription.commonWireVersion;
-    if (
-      commonWireVersion &&
-      readPreference.minWireVersion &&
-      readPreference.minWireVersion > commonWireVersion
-    ) {
-      throw new MongoCompatibilityError(
-        `Minimum wire version '${readPreference.minWireVersion}' required, but found '${commonWireVersion}'`
-      );
-    }
-
-    if (topologyDescription.type === TopologyType.LoadBalanced) {
-      return servers.filter(loadBalancerFilter);
-    }
-
-    if (topologyDescription.type === TopologyType.Unknown) {
-      return [];
-    }
-
-    if (
-      topologyDescription.type === TopologyType.Single ||
-      topologyDescription.type === TopologyType.Sharded
-    ) {
-      return latencyWindowReducer(topologyDescription, servers.filter(knownFilter));
-    }
-
-    const mode = readPreference.mode;
-    if (mode === ReadPreference.PRIMARY) {
-      return servers.filter(primaryFilter);
-    }
-
-    if (mode === ReadPreference.PRIMARY_PREFERRED) {
-      const result = servers.filter(primaryFilter);
-      if (result.length) {
-        return result;
-      }
-    }
-
-    const filter = mode === ReadPreference.NEAREST ? nearestFilter : secondaryFilter;
-    const selectedServers = latencyWindowReducer(
-      topologyDescription,
-      tagSetReducer(
-        readPreference,
-        maxStalenessReducer(readPreference, topologyDescription, servers.filter(filter))
-      )
-    );
-
-    if (mode === ReadPreference.SECONDARY_PREFERRED && selectedServers.length === 0) {
-      return servers.filter(primaryFilter);
-    }
-
-    return selectedServers;
-  };
-}
diff --git a/server/data-import/node_modules/mongodb/src/sdam/srv_polling.ts b/server/data-import/node_modules/mongodb/src/sdam/srv_polling.ts
deleted file mode 100644
index 8606abc059fd6ce67b9c55de6e600ebdb3531f79..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/sdam/srv_polling.ts
+++ /dev/null
@@ -1,142 +0,0 @@
-import * as dns from 'dns';
-import { clearTimeout, setTimeout } from 'timers';
-
-import { MongoRuntimeError } from '../error';
-import { TypedEventEmitter } from '../mongo_types';
-import { HostAddress, matchesParentDomain } from '../utils';
-
-/**
- * @internal
- * @category Event
- */
-export class SrvPollingEvent {
-  srvRecords: dns.SrvRecord[];
-  constructor(srvRecords: dns.SrvRecord[]) {
-    this.srvRecords = srvRecords;
-  }
-
-  hostnames(): Set<string> {
-    return new Set(this.srvRecords.map(r => HostAddress.fromSrvRecord(r).toString()));
-  }
-}
-
-/** @internal */
-export interface SrvPollerOptions {
-  srvServiceName: string;
-  srvMaxHosts: number;
-  srvHost: string;
-  heartbeatFrequencyMS: number;
-}
-
-/** @internal */
-export type SrvPollerEvents = {
-  srvRecordDiscovery(event: SrvPollingEvent): void;
-};
-
-/** @internal */
-export class SrvPoller extends TypedEventEmitter<SrvPollerEvents> {
-  srvHost: string;
-  rescanSrvIntervalMS: number;
-  heartbeatFrequencyMS: number;
-  haMode: boolean;
-  generation: number;
-  srvMaxHosts: number;
-  srvServiceName: string;
-  _timeout?: NodeJS.Timeout;
-
-  /** @event */
-  static readonly SRV_RECORD_DISCOVERY = 'srvRecordDiscovery' as const;
-
-  constructor(options: SrvPollerOptions) {
-    super();
-
-    if (!options || !options.srvHost) {
-      throw new MongoRuntimeError('Options for SrvPoller must exist and include srvHost');
-    }
-
-    this.srvHost = options.srvHost;
-    this.srvMaxHosts = options.srvMaxHosts ?? 0;
-    this.srvServiceName = options.srvServiceName ?? 'mongodb';
-    this.rescanSrvIntervalMS = 60000;
-    this.heartbeatFrequencyMS = options.heartbeatFrequencyMS ?? 10000;
-
-    this.haMode = false;
-    this.generation = 0;
-
-    this._timeout = undefined;
-  }
-
-  get srvAddress(): string {
-    return `_${this.srvServiceName}._tcp.${this.srvHost}`;
-  }
-
-  get intervalMS(): number {
-    return this.haMode ? this.heartbeatFrequencyMS : this.rescanSrvIntervalMS;
-  }
-
-  start(): void {
-    if (!this._timeout) {
-      this.schedule();
-    }
-  }
-
-  stop(): void {
-    if (this._timeout) {
-      clearTimeout(this._timeout);
-      this.generation += 1;
-      this._timeout = undefined;
-    }
-  }
-
-  // TODO(NODE-4994): implement new logging logic for SrvPoller failures
-  schedule(): void {
-    if (this._timeout) {
-      clearTimeout(this._timeout);
-    }
-
-    this._timeout = setTimeout(() => {
-      this._poll().catch(() => null);
-    }, this.intervalMS);
-  }
-
-  success(srvRecords: dns.SrvRecord[]): void {
-    this.haMode = false;
-    this.schedule();
-    this.emit(SrvPoller.SRV_RECORD_DISCOVERY, new SrvPollingEvent(srvRecords));
-  }
-
-  failure(): void {
-    this.haMode = true;
-    this.schedule();
-  }
-
-  async _poll(): Promise<void> {
-    const generation = this.generation;
-    let srvRecords;
-
-    try {
-      srvRecords = await dns.promises.resolveSrv(this.srvAddress);
-    } catch (dnsError) {
-      this.failure();
-      return;
-    }
-
-    if (generation !== this.generation) {
-      return;
-    }
-
-    const finalAddresses: dns.SrvRecord[] = [];
-    for (const record of srvRecords) {
-      if (matchesParentDomain(record.name, this.srvHost)) {
-        finalAddresses.push(record);
-      }
-    }
-
-    if (!finalAddresses.length) {
-      this.failure();
-      return;
-    }
-
-    this.success(finalAddresses);
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/sdam/topology.ts b/server/data-import/node_modules/mongodb/src/sdam/topology.ts
deleted file mode 100644
index c65a5f22b74988976e7452b3058b0e906fcc7b75..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/sdam/topology.ts
+++ /dev/null
@@ -1,988 +0,0 @@
-import { promisify } from 'util';
-
-import type { BSONSerializeOptions, Document } from '../bson';
-import type { MongoCredentials } from '../cmap/auth/mongo_credentials';
-import type { ConnectionEvents, DestroyOptions } from '../cmap/connection';
-import type { CloseOptions, ConnectionPoolEvents } from '../cmap/connection_pool';
-import type { ClientMetadata } from '../cmap/handshake/client_metadata';
-import { DEFAULT_OPTIONS, FEATURE_FLAGS } from '../connection_string';
-import {
-  CLOSE,
-  CONNECT,
-  ERROR,
-  LOCAL_SERVER_EVENTS,
-  OPEN,
-  SERVER_CLOSED,
-  SERVER_DESCRIPTION_CHANGED,
-  SERVER_OPENING,
-  SERVER_RELAY_EVENTS,
-  TIMEOUT,
-  TOPOLOGY_CLOSED,
-  TOPOLOGY_DESCRIPTION_CHANGED,
-  TOPOLOGY_OPENING
-} from '../constants';
-import {
-  MongoCompatibilityError,
-  type MongoDriverError,
-  MongoError,
-  MongoErrorLabel,
-  MongoRuntimeError,
-  MongoServerSelectionError,
-  MongoTopologyClosedError
-} from '../error';
-import type { MongoClient, ServerApi } from '../mongo_client';
-import { TypedEventEmitter } from '../mongo_types';
-import { ReadPreference, type ReadPreferenceLike } from '../read_preference';
-import type { ClientSession } from '../sessions';
-import type { Transaction } from '../transactions';
-import {
-  type Callback,
-  type EventEmitterWithState,
-  HostAddress,
-  List,
-  makeStateMachine,
-  ns,
-  shuffle,
-  TimeoutController
-} from '../utils';
-import {
-  _advanceClusterTime,
-  type ClusterTime,
-  drainTimerQueue,
-  ServerType,
-  STATE_CLOSED,
-  STATE_CLOSING,
-  STATE_CONNECTED,
-  STATE_CONNECTING,
-  type TimerQueue,
-  TopologyType
-} from './common';
-import {
-  ServerClosedEvent,
-  ServerDescriptionChangedEvent,
-  ServerOpeningEvent,
-  TopologyClosedEvent,
-  TopologyDescriptionChangedEvent,
-  TopologyOpeningEvent
-} from './events';
-import type { ServerMonitoringMode } from './monitor';
-import { Server, type ServerEvents, type ServerOptions } from './server';
-import { compareTopologyVersion, ServerDescription } from './server_description';
-import { readPreferenceServerSelector, type ServerSelector } from './server_selection';
-import { SrvPoller, type SrvPollingEvent } from './srv_polling';
-import { TopologyDescription } from './topology_description';
-
-// Global state
-let globalTopologyCounter = 0;
-
-const stateTransition = makeStateMachine({
-  [STATE_CLOSED]: [STATE_CLOSED, STATE_CONNECTING],
-  [STATE_CONNECTING]: [STATE_CONNECTING, STATE_CLOSING, STATE_CONNECTED, STATE_CLOSED],
-  [STATE_CONNECTED]: [STATE_CONNECTED, STATE_CLOSING, STATE_CLOSED],
-  [STATE_CLOSING]: [STATE_CLOSING, STATE_CLOSED]
-});
-
-/** @internal */
-const kCancelled = Symbol('cancelled');
-/** @internal */
-const kWaitQueue = Symbol('waitQueue');
-
-/** @internal */
-export type ServerSelectionCallback = Callback<Server>;
-
-/** @internal */
-export interface ServerSelectionRequest {
-  serverSelector: ServerSelector;
-  transaction?: Transaction;
-  callback: ServerSelectionCallback;
-  [kCancelled]?: boolean;
-  timeoutController: TimeoutController;
-}
-
-/** @internal */
-export interface TopologyPrivate {
-  /** the id of this topology */
-  id: number;
-  /** passed in options */
-  options: TopologyOptions;
-  /** initial seedlist of servers to connect to */
-  seedlist: HostAddress[];
-  /** initial state */
-  state: string;
-  /** the topology description */
-  description: TopologyDescription;
-  serverSelectionTimeoutMS: number;
-  heartbeatFrequencyMS: number;
-  minHeartbeatFrequencyMS: number;
-  /** A map of server instances to normalized addresses */
-  servers: Map<string, Server>;
-  credentials?: MongoCredentials;
-  clusterTime?: ClusterTime;
-  /** timers created for the initial connect to a server */
-  connectionTimers: TimerQueue;
-
-  /** related to srv polling */
-  srvPoller?: SrvPoller;
-  detectShardedTopology: (event: TopologyDescriptionChangedEvent) => void;
-  detectSrvRecords: (event: SrvPollingEvent) => void;
-}
-
-/** @internal */
-export interface TopologyOptions extends BSONSerializeOptions, ServerOptions {
-  srvMaxHosts: number;
-  srvServiceName: string;
-  hosts: HostAddress[];
-  retryWrites: boolean;
-  retryReads: boolean;
-  /** How long to block for server selection before throwing an error */
-  serverSelectionTimeoutMS: number;
-  /** The name of the replica set to connect to */
-  replicaSet?: string;
-  srvHost?: string;
-  srvPoller?: SrvPoller;
-  /** Indicates that a client should directly connect to a node without attempting to discover its topology type */
-  directConnection: boolean;
-  loadBalanced: boolean;
-  metadata: ClientMetadata;
-  serverMonitoringMode: ServerMonitoringMode;
-  /** MongoDB server API version */
-  serverApi?: ServerApi;
-  [featureFlag: symbol]: any;
-}
-
-/** @public */
-export interface ConnectOptions {
-  readPreference?: ReadPreference;
-}
-
-/** @public */
-export interface SelectServerOptions {
-  readPreference?: ReadPreferenceLike;
-  /** How long to block for server selection before throwing an error */
-  serverSelectionTimeoutMS?: number;
-  session?: ClientSession;
-}
-
-/** @public */
-export type TopologyEvents = {
-  /** Top level MongoClient doesn't emit this so it is marked: @internal */
-  connect(topology: Topology): void;
-  serverOpening(event: ServerOpeningEvent): void;
-  serverClosed(event: ServerClosedEvent): void;
-  serverDescriptionChanged(event: ServerDescriptionChangedEvent): void;
-  topologyClosed(event: TopologyClosedEvent): void;
-  topologyOpening(event: TopologyOpeningEvent): void;
-  topologyDescriptionChanged(event: TopologyDescriptionChangedEvent): void;
-  error(error: Error): void;
-  /** @internal */
-  open(topology: Topology): void;
-  close(): void;
-  timeout(): void;
-} & Omit<ServerEvents, 'connect'> &
-  ConnectionPoolEvents &
-  ConnectionEvents &
-  EventEmitterWithState;
-/**
- * A container of server instances representing a connection to a MongoDB topology.
- * @internal
- */
-export class Topology extends TypedEventEmitter<TopologyEvents> {
-  /** @internal */
-  s: TopologyPrivate;
-  /** @internal */
-  [kWaitQueue]: List<ServerSelectionRequest>;
-  /** @internal */
-  hello?: Document;
-  /** @internal */
-  _type?: string;
-
-  client!: MongoClient;
-
-  /** @event */
-  static readonly SERVER_OPENING = SERVER_OPENING;
-  /** @event */
-  static readonly SERVER_CLOSED = SERVER_CLOSED;
-  /** @event */
-  static readonly SERVER_DESCRIPTION_CHANGED = SERVER_DESCRIPTION_CHANGED;
-  /** @event */
-  static readonly TOPOLOGY_OPENING = TOPOLOGY_OPENING;
-  /** @event */
-  static readonly TOPOLOGY_CLOSED = TOPOLOGY_CLOSED;
-  /** @event */
-  static readonly TOPOLOGY_DESCRIPTION_CHANGED = TOPOLOGY_DESCRIPTION_CHANGED;
-  /** @event */
-  static readonly ERROR = ERROR;
-  /** @event */
-  static readonly OPEN = OPEN;
-  /** @event */
-  static readonly CONNECT = CONNECT;
-  /** @event */
-  static readonly CLOSE = CLOSE;
-  /** @event */
-  static readonly TIMEOUT = TIMEOUT;
-
-  selectServerAsync: (
-    selector: string | ReadPreference | ServerSelector,
-    options: SelectServerOptions
-  ) => Promise<Server>;
-
-  /**
-   * @param seedlist - a list of HostAddress instances to connect to
-   */
-  constructor(
-    client: MongoClient,
-    seeds: string | string[] | HostAddress | HostAddress[],
-    options: TopologyOptions
-  ) {
-    super();
-
-    this.client = client;
-    this.selectServerAsync = promisify(
-      (
-        selector: string | ReadPreference | ServerSelector,
-        options: SelectServerOptions,
-        callback: (e: Error, r: Server) => void
-      ) => this.selectServer(selector, options, callback as any)
-    );
-
-    // Options should only be undefined in tests, MongoClient will always have defined options
-    options = options ?? {
-      hosts: [HostAddress.fromString('localhost:27017')],
-      ...Object.fromEntries(DEFAULT_OPTIONS.entries()),
-      ...Object.fromEntries(FEATURE_FLAGS.entries())
-    };
-
-    if (typeof seeds === 'string') {
-      seeds = [HostAddress.fromString(seeds)];
-    } else if (!Array.isArray(seeds)) {
-      seeds = [seeds];
-    }
-
-    const seedlist: HostAddress[] = [];
-    for (const seed of seeds) {
-      if (typeof seed === 'string') {
-        seedlist.push(HostAddress.fromString(seed));
-      } else if (seed instanceof HostAddress) {
-        seedlist.push(seed);
-      } else {
-        // FIXME(NODE-3483): May need to be a MongoParseError
-        throw new MongoRuntimeError(`Topology cannot be constructed from ${JSON.stringify(seed)}`);
-      }
-    }
-
-    const topologyType = topologyTypeFromOptions(options);
-    const topologyId = globalTopologyCounter++;
-
-    const selectedHosts =
-      options.srvMaxHosts == null ||
-      options.srvMaxHosts === 0 ||
-      options.srvMaxHosts >= seedlist.length
-        ? seedlist
-        : shuffle(seedlist, options.srvMaxHosts);
-
-    const serverDescriptions = new Map();
-    for (const hostAddress of selectedHosts) {
-      serverDescriptions.set(hostAddress.toString(), new ServerDescription(hostAddress));
-    }
-
-    this[kWaitQueue] = new List();
-    this.s = {
-      // the id of this topology
-      id: topologyId,
-      // passed in options
-      options,
-      // initial seedlist of servers to connect to
-      seedlist,
-      // initial state
-      state: STATE_CLOSED,
-      // the topology description
-      description: new TopologyDescription(
-        topologyType,
-        serverDescriptions,
-        options.replicaSet,
-        undefined,
-        undefined,
-        undefined,
-        options
-      ),
-      serverSelectionTimeoutMS: options.serverSelectionTimeoutMS,
-      heartbeatFrequencyMS: options.heartbeatFrequencyMS,
-      minHeartbeatFrequencyMS: options.minHeartbeatFrequencyMS,
-      // a map of server instances to normalized addresses
-      servers: new Map(),
-      credentials: options?.credentials,
-      clusterTime: undefined,
-
-      // timer management
-      connectionTimers: new Set<NodeJS.Timeout>(),
-      detectShardedTopology: ev => this.detectShardedTopology(ev),
-      detectSrvRecords: ev => this.detectSrvRecords(ev)
-    };
-
-    if (options.srvHost && !options.loadBalanced) {
-      this.s.srvPoller =
-        options.srvPoller ??
-        new SrvPoller({
-          heartbeatFrequencyMS: this.s.heartbeatFrequencyMS,
-          srvHost: options.srvHost,
-          srvMaxHosts: options.srvMaxHosts,
-          srvServiceName: options.srvServiceName
-        });
-
-      this.on(Topology.TOPOLOGY_DESCRIPTION_CHANGED, this.s.detectShardedTopology);
-    }
-  }
-
-  private detectShardedTopology(event: TopologyDescriptionChangedEvent) {
-    const previousType = event.previousDescription.type;
-    const newType = event.newDescription.type;
-
-    const transitionToSharded =
-      previousType !== TopologyType.Sharded && newType === TopologyType.Sharded;
-    const srvListeners = this.s.srvPoller?.listeners(SrvPoller.SRV_RECORD_DISCOVERY);
-    const listeningToSrvPolling = !!srvListeners?.includes(this.s.detectSrvRecords);
-
-    if (transitionToSharded && !listeningToSrvPolling) {
-      this.s.srvPoller?.on(SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords);
-      this.s.srvPoller?.start();
-    }
-  }
-
-  private detectSrvRecords(ev: SrvPollingEvent) {
-    const previousTopologyDescription = this.s.description;
-    this.s.description = this.s.description.updateFromSrvPollingEvent(
-      ev,
-      this.s.options.srvMaxHosts
-    );
-    if (this.s.description === previousTopologyDescription) {
-      // Nothing changed, so return
-      return;
-    }
-
-    updateServers(this);
-
-    this.emit(
-      Topology.TOPOLOGY_DESCRIPTION_CHANGED,
-      new TopologyDescriptionChangedEvent(
-        this.s.id,
-        previousTopologyDescription,
-        this.s.description
-      )
-    );
-  }
-
-  /**
-   * @returns A `TopologyDescription` for this topology
-   */
-  get description(): TopologyDescription {
-    return this.s.description;
-  }
-
-  get loadBalanced(): boolean {
-    return this.s.options.loadBalanced;
-  }
-
-  get capabilities(): ServerCapabilities {
-    return new ServerCapabilities(this.lastHello());
-  }
-
-  /** Initiate server connect */
-  connect(callback: Callback): void;
-  connect(options: ConnectOptions, callback: Callback): void;
-  connect(options?: ConnectOptions | Callback, callback?: Callback): void {
-    if (typeof options === 'function') (callback = options), (options = {});
-    options = options ?? {};
-    if (this.s.state === STATE_CONNECTED) {
-      if (typeof callback === 'function') {
-        callback();
-      }
-
-      return;
-    }
-
-    stateTransition(this, STATE_CONNECTING);
-
-    // emit SDAM monitoring events
-    this.emit(Topology.TOPOLOGY_OPENING, new TopologyOpeningEvent(this.s.id));
-
-    // emit an event for the topology change
-    this.emit(
-      Topology.TOPOLOGY_DESCRIPTION_CHANGED,
-      new TopologyDescriptionChangedEvent(
-        this.s.id,
-        new TopologyDescription(TopologyType.Unknown), // initial is always Unknown
-        this.s.description
-      )
-    );
-
-    // connect all known servers, then attempt server selection to connect
-    const serverDescriptions = Array.from(this.s.description.servers.values());
-    this.s.servers = new Map(
-      serverDescriptions.map(serverDescription => [
-        serverDescription.address,
-        createAndConnectServer(this, serverDescription)
-      ])
-    );
-
-    // In load balancer mode we need to fake a server description getting
-    // emitted from the monitor, since the monitor doesn't exist.
-    if (this.s.options.loadBalanced) {
-      for (const description of serverDescriptions) {
-        const newDescription = new ServerDescription(description.hostAddress, undefined, {
-          loadBalanced: this.s.options.loadBalanced
-        });
-        this.serverUpdateHandler(newDescription);
-      }
-    }
-
-    const exitWithError = (error: Error) =>
-      callback ? callback(error) : this.emit(Topology.ERROR, error);
-
-    const readPreference = options.readPreference ?? ReadPreference.primary;
-    this.selectServer(readPreferenceServerSelector(readPreference), options, (err, server) => {
-      if (err) {
-        return this.close({ force: false }, () => exitWithError(err));
-      }
-
-      // TODO: NODE-2471
-      const skipPingOnConnect = this.s.options[Symbol.for('@@mdb.skipPingOnConnect')] === true;
-      if (!skipPingOnConnect && server && this.s.credentials) {
-        server.command(ns('admin.$cmd'), { ping: 1 }, {}, err => {
-          if (err) {
-            return exitWithError(err);
-          }
-
-          stateTransition(this, STATE_CONNECTED);
-          this.emit(Topology.OPEN, this);
-          this.emit(Topology.CONNECT, this);
-
-          callback?.(undefined, this);
-        });
-
-        return;
-      }
-
-      stateTransition(this, STATE_CONNECTED);
-      this.emit(Topology.OPEN, this);
-      this.emit(Topology.CONNECT, this);
-
-      callback?.(undefined, this);
-    });
-  }
-
-  /** Close this topology */
-  close(options: CloseOptions): void;
-  close(options: CloseOptions, callback: Callback): void;
-  close(options?: CloseOptions, callback?: Callback): void {
-    options = options ?? { force: false };
-
-    if (this.s.state === STATE_CLOSED || this.s.state === STATE_CLOSING) {
-      return callback?.();
-    }
-
-    const destroyedServers = Array.from(this.s.servers.values(), server => {
-      return promisify(destroyServer)(server, this, { force: !!options?.force });
-    });
-
-    Promise.all(destroyedServers)
-      .then(() => {
-        this.s.servers.clear();
-
-        stateTransition(this, STATE_CLOSING);
-
-        drainWaitQueue(this[kWaitQueue], new MongoTopologyClosedError());
-        drainTimerQueue(this.s.connectionTimers);
-
-        if (this.s.srvPoller) {
-          this.s.srvPoller.stop();
-          this.s.srvPoller.removeListener(SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords);
-        }
-
-        this.removeListener(Topology.TOPOLOGY_DESCRIPTION_CHANGED, this.s.detectShardedTopology);
-
-        stateTransition(this, STATE_CLOSED);
-
-        // emit an event for close
-        this.emit(Topology.TOPOLOGY_CLOSED, new TopologyClosedEvent(this.s.id));
-      })
-      .finally(() => callback?.());
-  }
-
-  /**
-   * Selects a server according to the selection predicate provided
-   *
-   * @param selector - An optional selector to select servers by, defaults to a random selection within a latency window
-   * @param options - Optional settings related to server selection
-   * @param callback - The callback used to indicate success or failure
-   * @returns An instance of a `Server` meeting the criteria of the predicate provided
-   */
-  selectServer(
-    selector: string | ReadPreference | ServerSelector,
-    options: SelectServerOptions,
-    callback: Callback<Server>
-  ): void {
-    let serverSelector;
-    if (typeof selector !== 'function') {
-      if (typeof selector === 'string') {
-        serverSelector = readPreferenceServerSelector(ReadPreference.fromString(selector));
-      } else {
-        let readPreference;
-        if (selector instanceof ReadPreference) {
-          readPreference = selector;
-        } else {
-          ReadPreference.translate(options);
-          readPreference = options.readPreference || ReadPreference.primary;
-        }
-
-        serverSelector = readPreferenceServerSelector(readPreference as ReadPreference);
-      }
-    } else {
-      serverSelector = selector;
-    }
-
-    options = Object.assign(
-      {},
-      { serverSelectionTimeoutMS: this.s.serverSelectionTimeoutMS },
-      options
-    );
-
-    const isSharded = this.description.type === TopologyType.Sharded;
-    const session = options.session;
-    const transaction = session && session.transaction;
-
-    if (isSharded && transaction && transaction.server) {
-      callback(undefined, transaction.server);
-      return;
-    }
-
-    const waitQueueMember: ServerSelectionRequest = {
-      serverSelector,
-      transaction,
-      callback,
-      timeoutController: new TimeoutController(options.serverSelectionTimeoutMS)
-    };
-
-    waitQueueMember.timeoutController.signal.addEventListener('abort', () => {
-      waitQueueMember[kCancelled] = true;
-      waitQueueMember.timeoutController.clear();
-      const timeoutError = new MongoServerSelectionError(
-        `Server selection timed out after ${options.serverSelectionTimeoutMS} ms`,
-        this.description
-      );
-
-      waitQueueMember.callback(timeoutError);
-    });
-
-    this[kWaitQueue].push(waitQueueMember);
-    processWaitQueue(this);
-  }
-
-  /**
-   * Update the internal TopologyDescription with a ServerDescription
-   *
-   * @param serverDescription - The server to update in the internal list of server descriptions
-   */
-  serverUpdateHandler(serverDescription: ServerDescription): void {
-    if (!this.s.description.hasServer(serverDescription.address)) {
-      return;
-    }
-
-    // ignore this server update if its from an outdated topologyVersion
-    if (isStaleServerDescription(this.s.description, serverDescription)) {
-      return;
-    }
-
-    // these will be used for monitoring events later
-    const previousTopologyDescription = this.s.description;
-    const previousServerDescription = this.s.description.servers.get(serverDescription.address);
-    if (!previousServerDescription) {
-      return;
-    }
-
-    // Driver Sessions Spec: "Whenever a driver receives a cluster time from
-    // a server it MUST compare it to the current highest seen cluster time
-    // for the deployment. If the new cluster time is higher than the
-    // highest seen cluster time it MUST become the new highest seen cluster
-    // time. Two cluster times are compared using only the BsonTimestamp
-    // value of the clusterTime embedded field."
-    const clusterTime = serverDescription.$clusterTime;
-    if (clusterTime) {
-      _advanceClusterTime(this, clusterTime);
-    }
-
-    // If we already know all the information contained in this updated description, then
-    // we don't need to emit SDAM events, but still need to update the description, in order
-    // to keep client-tracked attributes like last update time and round trip time up to date
-    const equalDescriptions =
-      previousServerDescription && previousServerDescription.equals(serverDescription);
-
-    // first update the TopologyDescription
-    this.s.description = this.s.description.update(serverDescription);
-    if (this.s.description.compatibilityError) {
-      this.emit(Topology.ERROR, new MongoCompatibilityError(this.s.description.compatibilityError));
-      return;
-    }
-
-    // emit monitoring events for this change
-    if (!equalDescriptions) {
-      const newDescription = this.s.description.servers.get(serverDescription.address);
-      if (newDescription) {
-        this.emit(
-          Topology.SERVER_DESCRIPTION_CHANGED,
-          new ServerDescriptionChangedEvent(
-            this.s.id,
-            serverDescription.address,
-            previousServerDescription,
-            newDescription
-          )
-        );
-      }
-    }
-
-    // update server list from updated descriptions
-    updateServers(this, serverDescription);
-
-    // attempt to resolve any outstanding server selection attempts
-    if (this[kWaitQueue].length > 0) {
-      processWaitQueue(this);
-    }
-
-    if (!equalDescriptions) {
-      this.emit(
-        Topology.TOPOLOGY_DESCRIPTION_CHANGED,
-        new TopologyDescriptionChangedEvent(
-          this.s.id,
-          previousTopologyDescription,
-          this.s.description
-        )
-      );
-    }
-  }
-
-  auth(credentials?: MongoCredentials, callback?: Callback): void {
-    if (typeof credentials === 'function') (callback = credentials), (credentials = undefined);
-    if (typeof callback === 'function') callback(undefined, true);
-  }
-
-  get clientMetadata(): ClientMetadata {
-    return this.s.options.metadata;
-  }
-
-  isConnected(): boolean {
-    return this.s.state === STATE_CONNECTED;
-  }
-
-  isDestroyed(): boolean {
-    return this.s.state === STATE_CLOSED;
-  }
-
-  // NOTE: There are many places in code where we explicitly check the last hello
-  //       to do feature support detection. This should be done any other way, but for
-  //       now we will just return the first hello seen, which should suffice.
-  lastHello(): Document {
-    const serverDescriptions = Array.from(this.description.servers.values());
-    if (serverDescriptions.length === 0) return {};
-    const sd = serverDescriptions.filter(
-      (sd: ServerDescription) => sd.type !== ServerType.Unknown
-    )[0];
-
-    const result = sd || { maxWireVersion: this.description.commonWireVersion };
-    return result;
-  }
-
-  get commonWireVersion(): number | undefined {
-    return this.description.commonWireVersion;
-  }
-
-  get logicalSessionTimeoutMinutes(): number | null {
-    return this.description.logicalSessionTimeoutMinutes;
-  }
-
-  get clusterTime(): ClusterTime | undefined {
-    return this.s.clusterTime;
-  }
-
-  set clusterTime(clusterTime: ClusterTime | undefined) {
-    this.s.clusterTime = clusterTime;
-  }
-}
-
-/** Destroys a server, and removes all event listeners from the instance */
-function destroyServer(
-  server: Server,
-  topology: Topology,
-  options?: DestroyOptions,
-  callback?: Callback
-) {
-  options = options ?? { force: false };
-  for (const event of LOCAL_SERVER_EVENTS) {
-    server.removeAllListeners(event);
-  }
-
-  server.destroy(options, () => {
-    topology.emit(
-      Topology.SERVER_CLOSED,
-      new ServerClosedEvent(topology.s.id, server.description.address)
-    );
-
-    for (const event of SERVER_RELAY_EVENTS) {
-      server.removeAllListeners(event);
-    }
-    if (typeof callback === 'function') {
-      callback();
-    }
-  });
-}
-
-/** Predicts the TopologyType from options */
-function topologyTypeFromOptions(options?: TopologyOptions) {
-  if (options?.directConnection) {
-    return TopologyType.Single;
-  }
-
-  if (options?.replicaSet) {
-    return TopologyType.ReplicaSetNoPrimary;
-  }
-
-  if (options?.loadBalanced) {
-    return TopologyType.LoadBalanced;
-  }
-
-  return TopologyType.Unknown;
-}
-
-/**
- * Creates new server instances and attempts to connect them
- *
- * @param topology - The topology that this server belongs to
- * @param serverDescription - The description for the server to initialize and connect to
- */
-function createAndConnectServer(topology: Topology, serverDescription: ServerDescription) {
-  topology.emit(
-    Topology.SERVER_OPENING,
-    new ServerOpeningEvent(topology.s.id, serverDescription.address)
-  );
-
-  const server = new Server(topology, serverDescription, topology.s.options);
-  for (const event of SERVER_RELAY_EVENTS) {
-    server.on(event, (e: any) => topology.emit(event, e));
-  }
-
-  server.on(Server.DESCRIPTION_RECEIVED, description => topology.serverUpdateHandler(description));
-
-  server.connect();
-  return server;
-}
-
-/**
- * @param topology - Topology to update.
- * @param incomingServerDescription - New server description.
- */
-function updateServers(topology: Topology, incomingServerDescription?: ServerDescription) {
-  // update the internal server's description
-  if (incomingServerDescription && topology.s.servers.has(incomingServerDescription.address)) {
-    const server = topology.s.servers.get(incomingServerDescription.address);
-    if (server) {
-      server.s.description = incomingServerDescription;
-      if (
-        incomingServerDescription.error instanceof MongoError &&
-        incomingServerDescription.error.hasErrorLabel(MongoErrorLabel.ResetPool)
-      ) {
-        const interruptInUseConnections = incomingServerDescription.error.hasErrorLabel(
-          MongoErrorLabel.InterruptInUseConnections
-        );
-
-        server.pool.clear({ interruptInUseConnections });
-      } else if (incomingServerDescription.error == null) {
-        const newTopologyType = topology.s.description.type;
-        const shouldMarkPoolReady =
-          incomingServerDescription.isDataBearing ||
-          (incomingServerDescription.type !== ServerType.Unknown &&
-            newTopologyType === TopologyType.Single);
-        if (shouldMarkPoolReady) {
-          server.pool.ready();
-        }
-      }
-    }
-  }
-
-  // add new servers for all descriptions we currently don't know about locally
-  for (const serverDescription of topology.description.servers.values()) {
-    if (!topology.s.servers.has(serverDescription.address)) {
-      const server = createAndConnectServer(topology, serverDescription);
-      topology.s.servers.set(serverDescription.address, server);
-    }
-  }
-
-  // for all servers no longer known, remove their descriptions and destroy their instances
-  for (const entry of topology.s.servers) {
-    const serverAddress = entry[0];
-    if (topology.description.hasServer(serverAddress)) {
-      continue;
-    }
-
-    if (!topology.s.servers.has(serverAddress)) {
-      continue;
-    }
-
-    const server = topology.s.servers.get(serverAddress);
-    topology.s.servers.delete(serverAddress);
-
-    // prepare server for garbage collection
-    if (server) {
-      destroyServer(server, topology);
-    }
-  }
-}
-
-function drainWaitQueue(queue: List<ServerSelectionRequest>, err?: MongoDriverError) {
-  while (queue.length) {
-    const waitQueueMember = queue.shift();
-    if (!waitQueueMember) {
-      continue;
-    }
-
-    waitQueueMember.timeoutController.clear();
-
-    if (!waitQueueMember[kCancelled]) {
-      waitQueueMember.callback(err);
-    }
-  }
-}
-
-function processWaitQueue(topology: Topology) {
-  if (topology.s.state === STATE_CLOSED) {
-    drainWaitQueue(topology[kWaitQueue], new MongoTopologyClosedError());
-    return;
-  }
-
-  const isSharded = topology.description.type === TopologyType.Sharded;
-  const serverDescriptions = Array.from(topology.description.servers.values());
-  const membersToProcess = topology[kWaitQueue].length;
-  for (let i = 0; i < membersToProcess; ++i) {
-    const waitQueueMember = topology[kWaitQueue].shift();
-    if (!waitQueueMember) {
-      continue;
-    }
-
-    if (waitQueueMember[kCancelled]) {
-      continue;
-    }
-
-    let selectedDescriptions;
-    try {
-      const serverSelector = waitQueueMember.serverSelector;
-      selectedDescriptions = serverSelector
-        ? serverSelector(topology.description, serverDescriptions)
-        : serverDescriptions;
-    } catch (e) {
-      waitQueueMember.timeoutController.clear();
-
-      waitQueueMember.callback(e);
-      continue;
-    }
-
-    let selectedServer;
-    if (selectedDescriptions.length === 0) {
-      topology[kWaitQueue].push(waitQueueMember);
-      continue;
-    } else if (selectedDescriptions.length === 1) {
-      selectedServer = topology.s.servers.get(selectedDescriptions[0].address);
-    } else {
-      const descriptions = shuffle(selectedDescriptions, 2);
-      const server1 = topology.s.servers.get(descriptions[0].address);
-      const server2 = topology.s.servers.get(descriptions[1].address);
-
-      selectedServer =
-        server1 && server2 && server1.s.operationCount < server2.s.operationCount
-          ? server1
-          : server2;
-    }
-
-    if (!selectedServer) {
-      waitQueueMember.callback(
-        new MongoServerSelectionError(
-          'server selection returned a server description but the server was not found in the topology',
-          topology.description
-        )
-      );
-      return;
-    }
-    const transaction = waitQueueMember.transaction;
-    if (isSharded && transaction && transaction.isActive && selectedServer) {
-      transaction.pinServer(selectedServer);
-    }
-
-    waitQueueMember.timeoutController.clear();
-
-    waitQueueMember.callback(undefined, selectedServer);
-  }
-
-  if (topology[kWaitQueue].length > 0) {
-    // ensure all server monitors attempt monitoring soon
-    for (const [, server] of topology.s.servers) {
-      process.nextTick(function scheduleServerCheck() {
-        return server.requestCheck();
-      });
-    }
-  }
-}
-
-function isStaleServerDescription(
-  topologyDescription: TopologyDescription,
-  incomingServerDescription: ServerDescription
-) {
-  const currentServerDescription = topologyDescription.servers.get(
-    incomingServerDescription.address
-  );
-  const currentTopologyVersion = currentServerDescription?.topologyVersion;
-  return (
-    compareTopologyVersion(currentTopologyVersion, incomingServerDescription.topologyVersion) > 0
-  );
-}
-
-/** @public */
-export class ServerCapabilities {
-  maxWireVersion: number;
-  minWireVersion: number;
-
-  constructor(hello: Document) {
-    this.minWireVersion = hello.minWireVersion || 0;
-    this.maxWireVersion = hello.maxWireVersion || 0;
-  }
-
-  get hasAggregationCursor(): boolean {
-    return this.maxWireVersion >= 1;
-  }
-
-  get hasWriteCommands(): boolean {
-    return this.maxWireVersion >= 2;
-  }
-  get hasTextSearch(): boolean {
-    return this.minWireVersion >= 0;
-  }
-
-  get hasAuthCommands(): boolean {
-    return this.maxWireVersion >= 1;
-  }
-
-  get hasListCollectionsCommand(): boolean {
-    return this.maxWireVersion >= 3;
-  }
-
-  get hasListIndexesCommand(): boolean {
-    return this.maxWireVersion >= 3;
-  }
-
-  get supportsSnapshotReads(): boolean {
-    return this.maxWireVersion >= 13;
-  }
-
-  get commandsTakeWriteConcern(): boolean {
-    return this.maxWireVersion >= 5;
-  }
-
-  get commandsTakeCollation(): boolean {
-    return this.maxWireVersion >= 5;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/sdam/topology_description.ts b/server/data-import/node_modules/mongodb/src/sdam/topology_description.ts
deleted file mode 100644
index 380e6c8f0c97e7a34b7bfe40475bf0276af293b1..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/sdam/topology_description.ts
+++ /dev/null
@@ -1,511 +0,0 @@
-import type { ObjectId } from '../bson';
-import * as WIRE_CONSTANTS from '../cmap/wire_protocol/constants';
-import { MongoRuntimeError, type MongoServerError } from '../error';
-import { compareObjectId, shuffle } from '../utils';
-import { ServerType, TopologyType } from './common';
-import { ServerDescription } from './server_description';
-import type { SrvPollingEvent } from './srv_polling';
-
-// constants related to compatibility checks
-const MIN_SUPPORTED_SERVER_VERSION = WIRE_CONSTANTS.MIN_SUPPORTED_SERVER_VERSION;
-const MAX_SUPPORTED_SERVER_VERSION = WIRE_CONSTANTS.MAX_SUPPORTED_SERVER_VERSION;
-const MIN_SUPPORTED_WIRE_VERSION = WIRE_CONSTANTS.MIN_SUPPORTED_WIRE_VERSION;
-const MAX_SUPPORTED_WIRE_VERSION = WIRE_CONSTANTS.MAX_SUPPORTED_WIRE_VERSION;
-
-const MONGOS_OR_UNKNOWN = new Set<ServerType>([ServerType.Mongos, ServerType.Unknown]);
-const MONGOS_OR_STANDALONE = new Set<ServerType>([ServerType.Mongos, ServerType.Standalone]);
-const NON_PRIMARY_RS_MEMBERS = new Set<ServerType>([
-  ServerType.RSSecondary,
-  ServerType.RSArbiter,
-  ServerType.RSOther
-]);
-
-/** @public */
-export interface TopologyDescriptionOptions {
-  heartbeatFrequencyMS?: number;
-  localThresholdMS?: number;
-}
-
-/**
- * Representation of a deployment of servers
- * @public
- */
-export class TopologyDescription {
-  type: TopologyType;
-  setName: string | null;
-  maxSetVersion: number | null;
-  maxElectionId: ObjectId | null;
-  servers: Map<string, ServerDescription>;
-  stale: boolean;
-  compatible: boolean;
-  compatibilityError?: string;
-  logicalSessionTimeoutMinutes: number | null;
-  heartbeatFrequencyMS: number;
-  localThresholdMS: number;
-  commonWireVersion: number;
-
-  /**
-   * Create a TopologyDescription
-   */
-  constructor(
-    topologyType: TopologyType,
-    serverDescriptions: Map<string, ServerDescription> | null = null,
-    setName: string | null = null,
-    maxSetVersion: number | null = null,
-    maxElectionId: ObjectId | null = null,
-    commonWireVersion: number | null = null,
-    options: TopologyDescriptionOptions | null = null
-  ) {
-    options = options ?? {};
-
-    this.type = topologyType ?? TopologyType.Unknown;
-    this.servers = serverDescriptions ?? new Map();
-    this.stale = false;
-    this.compatible = true;
-    this.heartbeatFrequencyMS = options.heartbeatFrequencyMS ?? 0;
-    this.localThresholdMS = options.localThresholdMS ?? 15;
-    this.setName = setName ?? null;
-    this.maxElectionId = maxElectionId ?? null;
-    this.maxSetVersion = maxSetVersion ?? null;
-    this.commonWireVersion = commonWireVersion ?? 0;
-
-    // determine server compatibility
-    for (const serverDescription of this.servers.values()) {
-      // Load balancer mode is always compatible.
-      if (
-        serverDescription.type === ServerType.Unknown ||
-        serverDescription.type === ServerType.LoadBalancer
-      ) {
-        continue;
-      }
-
-      if (serverDescription.minWireVersion > MAX_SUPPORTED_WIRE_VERSION) {
-        this.compatible = false;
-        this.compatibilityError = `Server at ${serverDescription.address} requires wire version ${serverDescription.minWireVersion}, but this version of the driver only supports up to ${MAX_SUPPORTED_WIRE_VERSION} (MongoDB ${MAX_SUPPORTED_SERVER_VERSION})`;
-      }
-
-      if (serverDescription.maxWireVersion < MIN_SUPPORTED_WIRE_VERSION) {
-        this.compatible = false;
-        this.compatibilityError = `Server at ${serverDescription.address} reports wire version ${serverDescription.maxWireVersion}, but this version of the driver requires at least ${MIN_SUPPORTED_WIRE_VERSION} (MongoDB ${MIN_SUPPORTED_SERVER_VERSION}).`;
-        break;
-      }
-    }
-
-    // Whenever a client updates the TopologyDescription from a hello response, it MUST set
-    // TopologyDescription.logicalSessionTimeoutMinutes to the smallest logicalSessionTimeoutMinutes
-    // value among ServerDescriptions of all data-bearing server types. If any have a null
-    // logicalSessionTimeoutMinutes, then TopologyDescription.logicalSessionTimeoutMinutes MUST be
-    // set to null.
-    this.logicalSessionTimeoutMinutes = null;
-    for (const [, server] of this.servers) {
-      if (server.isReadable) {
-        if (server.logicalSessionTimeoutMinutes == null) {
-          // If any of the servers have a null logicalSessionsTimeout, then the whole topology does
-          this.logicalSessionTimeoutMinutes = null;
-          break;
-        }
-
-        if (this.logicalSessionTimeoutMinutes == null) {
-          // First server with a non null logicalSessionsTimeout
-          this.logicalSessionTimeoutMinutes = server.logicalSessionTimeoutMinutes;
-          continue;
-        }
-
-        // Always select the smaller of the:
-        // current server logicalSessionsTimeout and the topologies logicalSessionsTimeout
-        this.logicalSessionTimeoutMinutes = Math.min(
-          this.logicalSessionTimeoutMinutes,
-          server.logicalSessionTimeoutMinutes
-        );
-      }
-    }
-  }
-
-  /**
-   * Returns a new TopologyDescription based on the SrvPollingEvent
-   * @internal
-   */
-  updateFromSrvPollingEvent(ev: SrvPollingEvent, srvMaxHosts = 0): TopologyDescription {
-    /** The SRV addresses defines the set of addresses we should be using */
-    const incomingHostnames = ev.hostnames();
-    const currentHostnames = new Set(this.servers.keys());
-
-    const hostnamesToAdd = new Set<string>(incomingHostnames);
-    const hostnamesToRemove = new Set<string>();
-    for (const hostname of currentHostnames) {
-      // filter hostnamesToAdd (made from incomingHostnames) down to what is *not* present in currentHostnames
-      hostnamesToAdd.delete(hostname);
-      if (!incomingHostnames.has(hostname)) {
-        // If the SRV Records no longer include this hostname
-        // we have to stop using it
-        hostnamesToRemove.add(hostname);
-      }
-    }
-
-    if (hostnamesToAdd.size === 0 && hostnamesToRemove.size === 0) {
-      // No new hosts to add and none to remove
-      return this;
-    }
-
-    const serverDescriptions = new Map(this.servers);
-    for (const removedHost of hostnamesToRemove) {
-      serverDescriptions.delete(removedHost);
-    }
-
-    if (hostnamesToAdd.size > 0) {
-      if (srvMaxHosts === 0) {
-        // Add all!
-        for (const hostToAdd of hostnamesToAdd) {
-          serverDescriptions.set(hostToAdd, new ServerDescription(hostToAdd));
-        }
-      } else if (serverDescriptions.size < srvMaxHosts) {
-        // Add only the amount needed to get us back to srvMaxHosts
-        const selectedHosts = shuffle(hostnamesToAdd, srvMaxHosts - serverDescriptions.size);
-        for (const selectedHostToAdd of selectedHosts) {
-          serverDescriptions.set(selectedHostToAdd, new ServerDescription(selectedHostToAdd));
-        }
-      }
-    }
-
-    return new TopologyDescription(
-      this.type,
-      serverDescriptions,
-      this.setName,
-      this.maxSetVersion,
-      this.maxElectionId,
-      this.commonWireVersion,
-      { heartbeatFrequencyMS: this.heartbeatFrequencyMS, localThresholdMS: this.localThresholdMS }
-    );
-  }
-
-  /**
-   * Returns a copy of this description updated with a given ServerDescription
-   * @internal
-   */
-  update(serverDescription: ServerDescription): TopologyDescription {
-    const address = serverDescription.address;
-
-    // potentially mutated values
-    let { type: topologyType, setName, maxSetVersion, maxElectionId, commonWireVersion } = this;
-
-    const serverType = serverDescription.type;
-    const serverDescriptions = new Map(this.servers);
-
-    // update common wire version
-    if (serverDescription.maxWireVersion !== 0) {
-      if (commonWireVersion == null) {
-        commonWireVersion = serverDescription.maxWireVersion;
-      } else {
-        commonWireVersion = Math.min(commonWireVersion, serverDescription.maxWireVersion);
-      }
-    }
-
-    if (
-      typeof serverDescription.setName === 'string' &&
-      typeof setName === 'string' &&
-      serverDescription.setName !== setName
-    ) {
-      if (topologyType === TopologyType.Single) {
-        // "Single" Topology with setName mismatch is direct connection usage, mark unknown do not remove
-        serverDescription = new ServerDescription(address);
-      } else {
-        serverDescriptions.delete(address);
-      }
-    }
-
-    // update the actual server description
-    serverDescriptions.set(address, serverDescription);
-
-    if (topologyType === TopologyType.Single) {
-      // once we are defined as single, that never changes
-      return new TopologyDescription(
-        TopologyType.Single,
-        serverDescriptions,
-        setName,
-        maxSetVersion,
-        maxElectionId,
-        commonWireVersion,
-        { heartbeatFrequencyMS: this.heartbeatFrequencyMS, localThresholdMS: this.localThresholdMS }
-      );
-    }
-
-    if (topologyType === TopologyType.Unknown) {
-      if (serverType === ServerType.Standalone && this.servers.size !== 1) {
-        serverDescriptions.delete(address);
-      } else {
-        topologyType = topologyTypeForServerType(serverType);
-      }
-    }
-
-    if (topologyType === TopologyType.Sharded) {
-      if (!MONGOS_OR_UNKNOWN.has(serverType)) {
-        serverDescriptions.delete(address);
-      }
-    }
-
-    if (topologyType === TopologyType.ReplicaSetNoPrimary) {
-      if (MONGOS_OR_STANDALONE.has(serverType)) {
-        serverDescriptions.delete(address);
-      }
-
-      if (serverType === ServerType.RSPrimary) {
-        const result = updateRsFromPrimary(
-          serverDescriptions,
-          serverDescription,
-          setName,
-          maxSetVersion,
-          maxElectionId
-        );
-
-        topologyType = result[0];
-        setName = result[1];
-        maxSetVersion = result[2];
-        maxElectionId = result[3];
-      } else if (NON_PRIMARY_RS_MEMBERS.has(serverType)) {
-        const result = updateRsNoPrimaryFromMember(serverDescriptions, serverDescription, setName);
-        topologyType = result[0];
-        setName = result[1];
-      }
-    }
-
-    if (topologyType === TopologyType.ReplicaSetWithPrimary) {
-      if (MONGOS_OR_STANDALONE.has(serverType)) {
-        serverDescriptions.delete(address);
-        topologyType = checkHasPrimary(serverDescriptions);
-      } else if (serverType === ServerType.RSPrimary) {
-        const result = updateRsFromPrimary(
-          serverDescriptions,
-          serverDescription,
-          setName,
-          maxSetVersion,
-          maxElectionId
-        );
-
-        topologyType = result[0];
-        setName = result[1];
-        maxSetVersion = result[2];
-        maxElectionId = result[3];
-      } else if (NON_PRIMARY_RS_MEMBERS.has(serverType)) {
-        topologyType = updateRsWithPrimaryFromMember(
-          serverDescriptions,
-          serverDescription,
-          setName
-        );
-      } else {
-        topologyType = checkHasPrimary(serverDescriptions);
-      }
-    }
-
-    return new TopologyDescription(
-      topologyType,
-      serverDescriptions,
-      setName,
-      maxSetVersion,
-      maxElectionId,
-      commonWireVersion,
-      { heartbeatFrequencyMS: this.heartbeatFrequencyMS, localThresholdMS: this.localThresholdMS }
-    );
-  }
-
-  get error(): MongoServerError | null {
-    const descriptionsWithError = Array.from(this.servers.values()).filter(
-      (sd: ServerDescription) => sd.error
-    );
-
-    if (descriptionsWithError.length > 0) {
-      return descriptionsWithError[0].error;
-    }
-
-    return null;
-  }
-
-  /**
-   * Determines if the topology description has any known servers
-   */
-  get hasKnownServers(): boolean {
-    return Array.from(this.servers.values()).some(
-      (sd: ServerDescription) => sd.type !== ServerType.Unknown
-    );
-  }
-
-  /**
-   * Determines if this topology description has a data-bearing server available.
-   */
-  get hasDataBearingServers(): boolean {
-    return Array.from(this.servers.values()).some((sd: ServerDescription) => sd.isDataBearing);
-  }
-
-  /**
-   * Determines if the topology has a definition for the provided address
-   * @internal
-   */
-  hasServer(address: string): boolean {
-    return this.servers.has(address);
-  }
-}
-
-function topologyTypeForServerType(serverType: ServerType): TopologyType {
-  switch (serverType) {
-    case ServerType.Standalone:
-      return TopologyType.Single;
-    case ServerType.Mongos:
-      return TopologyType.Sharded;
-    case ServerType.RSPrimary:
-      return TopologyType.ReplicaSetWithPrimary;
-    case ServerType.RSOther:
-    case ServerType.RSSecondary:
-      return TopologyType.ReplicaSetNoPrimary;
-    default:
-      return TopologyType.Unknown;
-  }
-}
-
-function updateRsFromPrimary(
-  serverDescriptions: Map<string, ServerDescription>,
-  serverDescription: ServerDescription,
-  setName: string | null = null,
-  maxSetVersion: number | null = null,
-  maxElectionId: ObjectId | null = null
-): [TopologyType, string | null, number | null, ObjectId | null] {
-  setName = setName || serverDescription.setName;
-  if (setName !== serverDescription.setName) {
-    serverDescriptions.delete(serverDescription.address);
-    return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId];
-  }
-
-  if (serverDescription.maxWireVersion >= 17) {
-    const electionIdComparison = compareObjectId(maxElectionId, serverDescription.electionId);
-    const maxElectionIdIsEqual = electionIdComparison === 0;
-    const maxElectionIdIsLess = electionIdComparison === -1;
-    const maxSetVersionIsLessOrEqual =
-      (maxSetVersion ?? -1) <= (serverDescription.setVersion ?? -1);
-
-    if (maxElectionIdIsLess || (maxElectionIdIsEqual && maxSetVersionIsLessOrEqual)) {
-      // The reported electionId was greater
-      // or the electionId was equal and reported setVersion was greater
-      // Always update both values, they are a tuple
-      maxElectionId = serverDescription.electionId;
-      maxSetVersion = serverDescription.setVersion;
-    } else {
-      // Stale primary
-      // replace serverDescription with a default ServerDescription of type "Unknown"
-      serverDescriptions.set(
-        serverDescription.address,
-        new ServerDescription(serverDescription.address)
-      );
-
-      return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId];
-    }
-  } else {
-    const electionId = serverDescription.electionId ? serverDescription.electionId : null;
-    if (serverDescription.setVersion && electionId) {
-      if (maxSetVersion && maxElectionId) {
-        if (
-          maxSetVersion > serverDescription.setVersion ||
-          compareObjectId(maxElectionId, electionId) > 0
-        ) {
-          // this primary is stale, we must remove it
-          serverDescriptions.set(
-            serverDescription.address,
-            new ServerDescription(serverDescription.address)
-          );
-
-          return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId];
-        }
-      }
-
-      maxElectionId = serverDescription.electionId;
-    }
-
-    if (
-      serverDescription.setVersion != null &&
-      (maxSetVersion == null || serverDescription.setVersion > maxSetVersion)
-    ) {
-      maxSetVersion = serverDescription.setVersion;
-    }
-  }
-
-  // We've heard from the primary. Is it the same primary as before?
-  for (const [address, server] of serverDescriptions) {
-    if (server.type === ServerType.RSPrimary && server.address !== serverDescription.address) {
-      // Reset old primary's type to Unknown.
-      serverDescriptions.set(address, new ServerDescription(server.address));
-
-      // There can only be one primary
-      break;
-    }
-  }
-
-  // Discover new hosts from this primary's response.
-  serverDescription.allHosts.forEach((address: string) => {
-    if (!serverDescriptions.has(address)) {
-      serverDescriptions.set(address, new ServerDescription(address));
-    }
-  });
-
-  // Remove hosts not in the response.
-  const currentAddresses = Array.from(serverDescriptions.keys());
-  const responseAddresses = serverDescription.allHosts;
-  currentAddresses
-    .filter((addr: string) => responseAddresses.indexOf(addr) === -1)
-    .forEach((address: string) => {
-      serverDescriptions.delete(address);
-    });
-
-  return [checkHasPrimary(serverDescriptions), setName, maxSetVersion, maxElectionId];
-}
-
-function updateRsWithPrimaryFromMember(
-  serverDescriptions: Map<string, ServerDescription>,
-  serverDescription: ServerDescription,
-  setName: string | null = null
-): TopologyType {
-  if (setName == null) {
-    // TODO(NODE-3483): should be an appropriate runtime error
-    throw new MongoRuntimeError('Argument "setName" is required if connected to a replica set');
-  }
-
-  if (
-    setName !== serverDescription.setName ||
-    (serverDescription.me && serverDescription.address !== serverDescription.me)
-  ) {
-    serverDescriptions.delete(serverDescription.address);
-  }
-
-  return checkHasPrimary(serverDescriptions);
-}
-
-function updateRsNoPrimaryFromMember(
-  serverDescriptions: Map<string, ServerDescription>,
-  serverDescription: ServerDescription,
-  setName: string | null = null
-): [TopologyType, string | null] {
-  const topologyType = TopologyType.ReplicaSetNoPrimary;
-  setName = setName ?? serverDescription.setName;
-  if (setName !== serverDescription.setName) {
-    serverDescriptions.delete(serverDescription.address);
-    return [topologyType, setName];
-  }
-
-  serverDescription.allHosts.forEach((address: string) => {
-    if (!serverDescriptions.has(address)) {
-      serverDescriptions.set(address, new ServerDescription(address));
-    }
-  });
-
-  if (serverDescription.me && serverDescription.address !== serverDescription.me) {
-    serverDescriptions.delete(serverDescription.address);
-  }
-
-  return [topologyType, setName];
-}
-
-function checkHasPrimary(serverDescriptions: Map<string, ServerDescription>): TopologyType {
-  for (const serverDescription of serverDescriptions.values()) {
-    if (serverDescription.type === ServerType.RSPrimary) {
-      return TopologyType.ReplicaSetWithPrimary;
-    }
-  }
-
-  return TopologyType.ReplicaSetNoPrimary;
-}
diff --git a/server/data-import/node_modules/mongodb/src/sessions.ts b/server/data-import/node_modules/mongodb/src/sessions.ts
deleted file mode 100644
index eafbc3c156245b685a742b05cfbe1c637138cf18..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/sessions.ts
+++ /dev/null
@@ -1,1053 +0,0 @@
-import { promisify } from 'util';
-
-import { Binary, type Document, Long, type Timestamp } from './bson';
-import type { CommandOptions, Connection } from './cmap/connection';
-import { ConnectionPoolMetrics } from './cmap/metrics';
-import { isSharded } from './cmap/wire_protocol/shared';
-import { PINNED, UNPINNED } from './constants';
-import type { AbstractCursor } from './cursor/abstract_cursor';
-import {
-  type AnyError,
-  isRetryableWriteError,
-  MongoAPIError,
-  MongoCompatibilityError,
-  MONGODB_ERROR_CODES,
-  type MongoDriverError,
-  MongoError,
-  MongoErrorLabel,
-  MongoExpiredSessionError,
-  MongoInvalidArgumentError,
-  MongoRuntimeError,
-  MongoServerError,
-  MongoTransactionError,
-  MongoWriteConcernError
-} from './error';
-import type { MongoClient, MongoOptions } from './mongo_client';
-import { TypedEventEmitter } from './mongo_types';
-import { executeOperation } from './operations/execute_operation';
-import { RunAdminCommandOperation } from './operations/run_command';
-import { ReadConcernLevel } from './read_concern';
-import { ReadPreference } from './read_preference';
-import { _advanceClusterTime, type ClusterTime, TopologyType } from './sdam/common';
-import {
-  isTransactionCommand,
-  Transaction,
-  type TransactionOptions,
-  TxnState
-} from './transactions';
-import {
-  ByteUtils,
-  calculateDurationInMs,
-  type Callback,
-  commandSupportsReadConcern,
-  isPromiseLike,
-  List,
-  maxWireVersion,
-  now,
-  uuidV4
-} from './utils';
-import { WriteConcern } from './write_concern';
-
-const minWireVersionForShardedTransactions = 8;
-
-/** @public */
-export interface ClientSessionOptions {
-  /** Whether causal consistency should be enabled on this session */
-  causalConsistency?: boolean;
-  /** Whether all read operations should be read from the same snapshot for this session (NOTE: not compatible with `causalConsistency=true`) */
-  snapshot?: boolean;
-  /** The default TransactionOptions to use for transactions started on this session. */
-  defaultTransactionOptions?: TransactionOptions;
-
-  /** @internal */
-  owner?: symbol | AbstractCursor;
-  /** @internal */
-  explicit?: boolean;
-  /** @internal */
-  initialClusterTime?: ClusterTime;
-}
-
-/** @public */
-export type WithTransactionCallback<T = any> = (session: ClientSession) => Promise<T>;
-
-/** @public */
-export type ClientSessionEvents = {
-  ended(session: ClientSession): void;
-};
-
-/** @internal */
-const kServerSession = Symbol('serverSession');
-/** @internal */
-const kSnapshotTime = Symbol('snapshotTime');
-/** @internal */
-const kSnapshotEnabled = Symbol('snapshotEnabled');
-/** @internal */
-const kPinnedConnection = Symbol('pinnedConnection');
-/** @internal Accumulates total number of increments to add to txnNumber when applying session to command */
-const kTxnNumberIncrement = Symbol('txnNumberIncrement');
-
-/** @public */
-export interface EndSessionOptions {
-  /**
-   * An optional error which caused the call to end this session
-   * @internal
-   */
-  error?: AnyError;
-  force?: boolean;
-  forceClear?: boolean;
-}
-
-/**
- * A class representing a client session on the server
- *
- * NOTE: not meant to be instantiated directly.
- * @public
- */
-export class ClientSession extends TypedEventEmitter<ClientSessionEvents> {
-  /** @internal */
-  client: MongoClient;
-  /** @internal */
-  sessionPool: ServerSessionPool;
-  hasEnded: boolean;
-  clientOptions?: MongoOptions;
-  supports: { causalConsistency: boolean };
-  clusterTime?: ClusterTime;
-  operationTime?: Timestamp;
-  explicit: boolean;
-  /** @internal */
-  owner?: symbol | AbstractCursor;
-  defaultTransactionOptions: TransactionOptions;
-  transaction: Transaction;
-  /** @internal */
-  [kServerSession]: ServerSession | null;
-  /** @internal */
-  [kSnapshotTime]?: Timestamp;
-  /** @internal */
-  [kSnapshotEnabled] = false;
-  /** @internal */
-  [kPinnedConnection]?: Connection;
-  /** @internal */
-  [kTxnNumberIncrement]: number;
-
-  /**
-   * Create a client session.
-   * @internal
-   * @param client - The current client
-   * @param sessionPool - The server session pool (Internal Class)
-   * @param options - Optional settings
-   * @param clientOptions - Optional settings provided when creating a MongoClient
-   */
-  constructor(
-    client: MongoClient,
-    sessionPool: ServerSessionPool,
-    options: ClientSessionOptions,
-    clientOptions?: MongoOptions
-  ) {
-    super();
-
-    if (client == null) {
-      // TODO(NODE-3483)
-      throw new MongoRuntimeError('ClientSession requires a MongoClient');
-    }
-
-    if (sessionPool == null || !(sessionPool instanceof ServerSessionPool)) {
-      // TODO(NODE-3483)
-      throw new MongoRuntimeError('ClientSession requires a ServerSessionPool');
-    }
-
-    options = options ?? {};
-
-    if (options.snapshot === true) {
-      this[kSnapshotEnabled] = true;
-      if (options.causalConsistency === true) {
-        throw new MongoInvalidArgumentError(
-          'Properties "causalConsistency" and "snapshot" are mutually exclusive'
-        );
-      }
-    }
-
-    this.client = client;
-    this.sessionPool = sessionPool;
-    this.hasEnded = false;
-    this.clientOptions = clientOptions;
-
-    this.explicit = !!options.explicit;
-    this[kServerSession] = this.explicit ? this.sessionPool.acquire() : null;
-    this[kTxnNumberIncrement] = 0;
-
-    const defaultCausalConsistencyValue = this.explicit && options.snapshot !== true;
-    this.supports = {
-      // if we can enable causal consistency, do so by default
-      causalConsistency: options.causalConsistency ?? defaultCausalConsistencyValue
-    };
-
-    this.clusterTime = options.initialClusterTime;
-
-    this.operationTime = undefined;
-    this.owner = options.owner;
-    this.defaultTransactionOptions = Object.assign({}, options.defaultTransactionOptions);
-    this.transaction = new Transaction();
-  }
-
-  /** The server id associated with this session */
-  get id(): ServerSessionId | undefined {
-    return this[kServerSession]?.id;
-  }
-
-  get serverSession(): ServerSession {
-    let serverSession = this[kServerSession];
-    if (serverSession == null) {
-      if (this.explicit) {
-        throw new MongoRuntimeError('Unexpected null serverSession for an explicit session');
-      }
-      if (this.hasEnded) {
-        throw new MongoRuntimeError('Unexpected null serverSession for an ended implicit session');
-      }
-      serverSession = this.sessionPool.acquire();
-      this[kServerSession] = serverSession;
-    }
-    return serverSession;
-  }
-
-  /** Whether or not this session is configured for snapshot reads */
-  get snapshotEnabled(): boolean {
-    return this[kSnapshotEnabled];
-  }
-
-  get loadBalanced(): boolean {
-    return this.client.topology?.description.type === TopologyType.LoadBalanced;
-  }
-
-  /** @internal */
-  get pinnedConnection(): Connection | undefined {
-    return this[kPinnedConnection];
-  }
-
-  /** @internal */
-  pin(conn: Connection): void {
-    if (this[kPinnedConnection]) {
-      throw TypeError('Cannot pin multiple connections to the same session');
-    }
-
-    this[kPinnedConnection] = conn;
-    conn.emit(
-      PINNED,
-      this.inTransaction() ? ConnectionPoolMetrics.TXN : ConnectionPoolMetrics.CURSOR
-    );
-  }
-
-  /** @internal */
-  unpin(options?: { force?: boolean; forceClear?: boolean; error?: AnyError }): void {
-    if (this.loadBalanced) {
-      return maybeClearPinnedConnection(this, options);
-    }
-
-    this.transaction.unpinServer();
-  }
-
-  get isPinned(): boolean {
-    return this.loadBalanced ? !!this[kPinnedConnection] : this.transaction.isPinned;
-  }
-
-  /**
-   * Ends this session on the server
-   *
-   * @param options - Optional settings. Currently reserved for future use
-   */
-  async endSession(options?: EndSessionOptions): Promise<void> {
-    try {
-      if (this.inTransaction()) {
-        await this.abortTransaction();
-      }
-      if (!this.hasEnded) {
-        const serverSession = this[kServerSession];
-        if (serverSession != null) {
-          // release the server session back to the pool
-          this.sessionPool.release(serverSession);
-          // Make sure a new serverSession never makes it onto this ClientSession
-          Object.defineProperty(this, kServerSession, {
-            value: ServerSession.clone(serverSession),
-            writable: false
-          });
-        }
-        // mark the session as ended, and emit a signal
-        this.hasEnded = true;
-        this.emit('ended', this);
-      }
-    } catch {
-      // spec indicates that we should ignore all errors for `endSessions`
-    } finally {
-      maybeClearPinnedConnection(this, { force: true, ...options });
-    }
-  }
-
-  /**
-   * Advances the operationTime for a ClientSession.
-   *
-   * @param operationTime - the `BSON.Timestamp` of the operation type it is desired to advance to
-   */
-  advanceOperationTime(operationTime: Timestamp): void {
-    if (this.operationTime == null) {
-      this.operationTime = operationTime;
-      return;
-    }
-
-    if (operationTime.greaterThan(this.operationTime)) {
-      this.operationTime = operationTime;
-    }
-  }
-
-  /**
-   * Advances the clusterTime for a ClientSession to the provided clusterTime of another ClientSession
-   *
-   * @param clusterTime - the $clusterTime returned by the server from another session in the form of a document containing the `BSON.Timestamp` clusterTime and signature
-   */
-  advanceClusterTime(clusterTime: ClusterTime): void {
-    if (!clusterTime || typeof clusterTime !== 'object') {
-      throw new MongoInvalidArgumentError('input cluster time must be an object');
-    }
-    if (!clusterTime.clusterTime || clusterTime.clusterTime._bsontype !== 'Timestamp') {
-      throw new MongoInvalidArgumentError(
-        'input cluster time "clusterTime" property must be a valid BSON Timestamp'
-      );
-    }
-    if (
-      !clusterTime.signature ||
-      clusterTime.signature.hash?._bsontype !== 'Binary' ||
-      (typeof clusterTime.signature.keyId !== 'bigint' &&
-        typeof clusterTime.signature.keyId !== 'number' &&
-        clusterTime.signature.keyId?._bsontype !== 'Long') // apparently we decode the key to number?
-    ) {
-      throw new MongoInvalidArgumentError(
-        'input cluster time must have a valid "signature" property with BSON Binary hash and BSON Long keyId'
-      );
-    }
-
-    _advanceClusterTime(this, clusterTime);
-  }
-
-  /**
-   * Used to determine if this session equals another
-   *
-   * @param session - The session to compare to
-   */
-  equals(session: ClientSession): boolean {
-    if (!(session instanceof ClientSession)) {
-      return false;
-    }
-
-    if (this.id == null || session.id == null) {
-      return false;
-    }
-
-    return ByteUtils.equals(this.id.id.buffer, session.id.id.buffer);
-  }
-
-  /**
-   * Increment the transaction number on the internal ServerSession
-   *
-   * @privateRemarks
-   * This helper increments a value stored on the client session that will be
-   * added to the serverSession's txnNumber upon applying it to a command.
-   * This is because the serverSession is lazily acquired after a connection is obtained
-   */
-  incrementTransactionNumber(): void {
-    this[kTxnNumberIncrement] += 1;
-  }
-
-  /** @returns whether this session is currently in a transaction or not */
-  inTransaction(): boolean {
-    return this.transaction.isActive;
-  }
-
-  /**
-   * Starts a new transaction with the given options.
-   *
-   * @param options - Options for the transaction
-   */
-  startTransaction(options?: TransactionOptions): void {
-    if (this[kSnapshotEnabled]) {
-      throw new MongoCompatibilityError('Transactions are not supported in snapshot sessions');
-    }
-
-    if (this.inTransaction()) {
-      throw new MongoTransactionError('Transaction already in progress');
-    }
-
-    if (this.isPinned && this.transaction.isCommitted) {
-      this.unpin();
-    }
-
-    const topologyMaxWireVersion = maxWireVersion(this.client.topology);
-    if (
-      isSharded(this.client.topology) &&
-      topologyMaxWireVersion != null &&
-      topologyMaxWireVersion < minWireVersionForShardedTransactions
-    ) {
-      throw new MongoCompatibilityError(
-        'Transactions are not supported on sharded clusters in MongoDB < 4.2.'
-      );
-    }
-
-    // increment txnNumber
-    this.incrementTransactionNumber();
-    // create transaction state
-    this.transaction = new Transaction({
-      readConcern:
-        options?.readConcern ??
-        this.defaultTransactionOptions.readConcern ??
-        this.clientOptions?.readConcern,
-      writeConcern:
-        options?.writeConcern ??
-        this.defaultTransactionOptions.writeConcern ??
-        this.clientOptions?.writeConcern,
-      readPreference:
-        options?.readPreference ??
-        this.defaultTransactionOptions.readPreference ??
-        this.clientOptions?.readPreference,
-      maxCommitTimeMS: options?.maxCommitTimeMS ?? this.defaultTransactionOptions.maxCommitTimeMS
-    });
-
-    this.transaction.transition(TxnState.STARTING_TRANSACTION);
-  }
-
-  /**
-   * Commits the currently active transaction in this session.
-   */
-  async commitTransaction(): Promise<void> {
-    return endTransactionAsync(this, 'commitTransaction');
-  }
-
-  /**
-   * Aborts the currently active transaction in this session.
-   */
-  async abortTransaction(): Promise<void> {
-    return endTransactionAsync(this, 'abortTransaction');
-  }
-
-  /**
-   * This is here to ensure that ClientSession is never serialized to BSON.
-   */
-  toBSON(): never {
-    throw new MongoRuntimeError('ClientSession cannot be serialized to BSON.');
-  }
-
-  /**
-   * Starts a transaction and runs a provided function, ensuring the commitTransaction is always attempted when all operations run in the function have completed.
-   *
-   * **IMPORTANT:** This method requires the user to return a Promise, and `await` all operations.
-   *
-   * @remarks
-   * This function:
-   * - If all operations successfully complete and the `commitTransaction` operation is successful, then this function will return the result of the provided function.
-   * - If the transaction is unable to complete or an error is thrown from within the provided function, then this function will throw an error.
-   *   - If the transaction is manually aborted within the provided function it will not throw.
-   * - May be called multiple times if the driver needs to attempt to retry the operations.
-   *
-   * Checkout a descriptive example here:
-   * @see https://www.mongodb.com/blog/post/quick-start-nodejs--mongodb--how-to-implement-transactions
-   *
-   * @param fn - callback to run within a transaction
-   * @param options - optional settings for the transaction
-   * @returns A raw command response or undefined
-   */
-  async withTransaction<T = any>(
-    fn: WithTransactionCallback<T>,
-    options?: TransactionOptions
-  ): Promise<T> {
-    const startTime = now();
-    return attemptTransaction(this, startTime, fn, options);
-  }
-}
-
-const MAX_WITH_TRANSACTION_TIMEOUT = 120000;
-const NON_DETERMINISTIC_WRITE_CONCERN_ERRORS = new Set([
-  'CannotSatisfyWriteConcern',
-  'UnknownReplWriteConcern',
-  'UnsatisfiableWriteConcern'
-]);
-
-function hasNotTimedOut(startTime: number, max: number) {
-  return calculateDurationInMs(startTime) < max;
-}
-
-function isUnknownTransactionCommitResult(err: MongoError) {
-  const isNonDeterministicWriteConcernError =
-    err instanceof MongoServerError &&
-    err.codeName &&
-    NON_DETERMINISTIC_WRITE_CONCERN_ERRORS.has(err.codeName);
-
-  return (
-    isMaxTimeMSExpiredError(err) ||
-    (!isNonDeterministicWriteConcernError &&
-      err.code !== MONGODB_ERROR_CODES.UnsatisfiableWriteConcern &&
-      err.code !== MONGODB_ERROR_CODES.UnknownReplWriteConcern)
-  );
-}
-
-export function maybeClearPinnedConnection(
-  session: ClientSession,
-  options?: EndSessionOptions
-): void {
-  // unpin a connection if it has been pinned
-  const conn = session[kPinnedConnection];
-  const error = options?.error;
-
-  if (
-    session.inTransaction() &&
-    error &&
-    error instanceof MongoError &&
-    error.hasErrorLabel(MongoErrorLabel.TransientTransactionError)
-  ) {
-    return;
-  }
-
-  const topology = session.client.topology;
-  // NOTE: the spec talks about what to do on a network error only, but the tests seem to
-  //       to validate that we don't unpin on _all_ errors?
-  if (conn && topology != null) {
-    const servers = Array.from(topology.s.servers.values());
-    const loadBalancer = servers[0];
-
-    if (options?.error == null || options?.force) {
-      loadBalancer.pool.checkIn(conn);
-      conn.emit(
-        UNPINNED,
-        session.transaction.state !== TxnState.NO_TRANSACTION
-          ? ConnectionPoolMetrics.TXN
-          : ConnectionPoolMetrics.CURSOR
-      );
-
-      if (options?.forceClear) {
-        loadBalancer.pool.clear({ serviceId: conn.serviceId });
-      }
-    }
-
-    session[kPinnedConnection] = undefined;
-  }
-}
-
-function isMaxTimeMSExpiredError(err: MongoError) {
-  if (err == null || !(err instanceof MongoServerError)) {
-    return false;
-  }
-
-  return (
-    err.code === MONGODB_ERROR_CODES.MaxTimeMSExpired ||
-    (err.writeConcernError && err.writeConcernError.code === MONGODB_ERROR_CODES.MaxTimeMSExpired)
-  );
-}
-
-function attemptTransactionCommit<T>(
-  session: ClientSession,
-  startTime: number,
-  fn: WithTransactionCallback<T>,
-  result: any,
-  options: TransactionOptions
-): Promise<T> {
-  return session.commitTransaction().then(
-    () => result,
-    (err: MongoError) => {
-      if (
-        err instanceof MongoError &&
-        hasNotTimedOut(startTime, MAX_WITH_TRANSACTION_TIMEOUT) &&
-        !isMaxTimeMSExpiredError(err)
-      ) {
-        if (err.hasErrorLabel(MongoErrorLabel.UnknownTransactionCommitResult)) {
-          return attemptTransactionCommit(session, startTime, fn, result, options);
-        }
-
-        if (err.hasErrorLabel(MongoErrorLabel.TransientTransactionError)) {
-          return attemptTransaction(session, startTime, fn, options);
-        }
-      }
-
-      throw err;
-    }
-  );
-}
-
-const USER_EXPLICIT_TXN_END_STATES = new Set<TxnState>([
-  TxnState.NO_TRANSACTION,
-  TxnState.TRANSACTION_COMMITTED,
-  TxnState.TRANSACTION_ABORTED
-]);
-
-function userExplicitlyEndedTransaction(session: ClientSession) {
-  return USER_EXPLICIT_TXN_END_STATES.has(session.transaction.state);
-}
-
-function attemptTransaction<T>(
-  session: ClientSession,
-  startTime: number,
-  fn: WithTransactionCallback<T>,
-  options: TransactionOptions = {}
-): Promise<any> {
-  session.startTransaction(options);
-
-  let promise;
-  try {
-    promise = fn(session);
-  } catch (err) {
-    promise = Promise.reject(err);
-  }
-
-  if (!isPromiseLike(promise)) {
-    session.abortTransaction().catch(() => null);
-    return Promise.reject(
-      new MongoInvalidArgumentError('Function provided to `withTransaction` must return a Promise')
-    );
-  }
-
-  return promise.then(
-    result => {
-      if (userExplicitlyEndedTransaction(session)) {
-        return result;
-      }
-
-      return attemptTransactionCommit(session, startTime, fn, result, options);
-    },
-    err => {
-      function maybeRetryOrThrow(err: MongoError): Promise<any> {
-        if (
-          err instanceof MongoError &&
-          err.hasErrorLabel(MongoErrorLabel.TransientTransactionError) &&
-          hasNotTimedOut(startTime, MAX_WITH_TRANSACTION_TIMEOUT)
-        ) {
-          return attemptTransaction(session, startTime, fn, options);
-        }
-
-        if (isMaxTimeMSExpiredError(err)) {
-          err.addErrorLabel(MongoErrorLabel.UnknownTransactionCommitResult);
-        }
-
-        throw err;
-      }
-
-      if (session.inTransaction()) {
-        return session.abortTransaction().then(() => maybeRetryOrThrow(err));
-      }
-
-      return maybeRetryOrThrow(err);
-    }
-  );
-}
-
-const endTransactionAsync = promisify(
-  endTransaction as (
-    session: ClientSession,
-    commandName: 'abortTransaction' | 'commitTransaction',
-    callback: (error: Error) => void
-  ) => void
-);
-
-function endTransaction(
-  session: ClientSession,
-  commandName: 'abortTransaction' | 'commitTransaction',
-  callback: Callback<void>
-) {
-  // handle any initial problematic cases
-  const txnState = session.transaction.state;
-
-  if (txnState === TxnState.NO_TRANSACTION) {
-    callback(new MongoTransactionError('No transaction started'));
-    return;
-  }
-
-  if (commandName === 'commitTransaction') {
-    if (
-      txnState === TxnState.STARTING_TRANSACTION ||
-      txnState === TxnState.TRANSACTION_COMMITTED_EMPTY
-    ) {
-      // the transaction was never started, we can safely exit here
-      session.transaction.transition(TxnState.TRANSACTION_COMMITTED_EMPTY);
-      callback();
-      return;
-    }
-
-    if (txnState === TxnState.TRANSACTION_ABORTED) {
-      callback(
-        new MongoTransactionError('Cannot call commitTransaction after calling abortTransaction')
-      );
-      return;
-    }
-  } else {
-    if (txnState === TxnState.STARTING_TRANSACTION) {
-      // the transaction was never started, we can safely exit here
-      session.transaction.transition(TxnState.TRANSACTION_ABORTED);
-      callback();
-      return;
-    }
-
-    if (txnState === TxnState.TRANSACTION_ABORTED) {
-      callback(new MongoTransactionError('Cannot call abortTransaction twice'));
-      return;
-    }
-
-    if (
-      txnState === TxnState.TRANSACTION_COMMITTED ||
-      txnState === TxnState.TRANSACTION_COMMITTED_EMPTY
-    ) {
-      callback(
-        new MongoTransactionError('Cannot call abortTransaction after calling commitTransaction')
-      );
-      return;
-    }
-  }
-
-  // construct and send the command
-  const command: Document = { [commandName]: 1 };
-
-  // apply a writeConcern if specified
-  let writeConcern;
-  if (session.transaction.options.writeConcern) {
-    writeConcern = Object.assign({}, session.transaction.options.writeConcern);
-  } else if (session.clientOptions && session.clientOptions.writeConcern) {
-    writeConcern = { w: session.clientOptions.writeConcern.w };
-  }
-
-  if (txnState === TxnState.TRANSACTION_COMMITTED) {
-    writeConcern = Object.assign({ wtimeoutMS: 10000 }, writeConcern, { w: 'majority' });
-  }
-
-  if (writeConcern) {
-    WriteConcern.apply(command, writeConcern);
-  }
-
-  if (commandName === 'commitTransaction' && session.transaction.options.maxTimeMS) {
-    Object.assign(command, { maxTimeMS: session.transaction.options.maxTimeMS });
-  }
-
-  function commandHandler(error?: Error) {
-    if (commandName !== 'commitTransaction') {
-      session.transaction.transition(TxnState.TRANSACTION_ABORTED);
-      if (session.loadBalanced) {
-        maybeClearPinnedConnection(session, { force: false });
-      }
-
-      // The spec indicates that we should ignore all errors on `abortTransaction`
-      return callback();
-    }
-
-    session.transaction.transition(TxnState.TRANSACTION_COMMITTED);
-    if (error instanceof MongoError) {
-      if (
-        isRetryableWriteError(error) ||
-        error instanceof MongoWriteConcernError ||
-        isMaxTimeMSExpiredError(error)
-      ) {
-        if (isUnknownTransactionCommitResult(error)) {
-          error.addErrorLabel(MongoErrorLabel.UnknownTransactionCommitResult);
-
-          // per txns spec, must unpin session in this case
-          session.unpin({ error });
-        }
-      } else if (error.hasErrorLabel(MongoErrorLabel.TransientTransactionError)) {
-        session.unpin({ error });
-      }
-    }
-
-    callback(error);
-  }
-
-  if (session.transaction.recoveryToken) {
-    command.recoveryToken = session.transaction.recoveryToken;
-  }
-
-  // send the command
-  executeOperation(
-    session.client,
-    new RunAdminCommandOperation(command, {
-      session,
-      readPreference: ReadPreference.primary,
-      bypassPinningCheck: true
-    }),
-    error => {
-      if (command.abortTransaction) {
-        // always unpin on abort regardless of command outcome
-        session.unpin();
-      }
-
-      if (error instanceof MongoError && isRetryableWriteError(error)) {
-        // SPEC-1185: apply majority write concern when retrying commitTransaction
-        if (command.commitTransaction) {
-          // per txns spec, must unpin session in this case
-          session.unpin({ force: true });
-
-          command.writeConcern = Object.assign({ wtimeout: 10000 }, command.writeConcern, {
-            w: 'majority'
-          });
-        }
-
-        return executeOperation(
-          session.client,
-          new RunAdminCommandOperation(command, {
-            session,
-            readPreference: ReadPreference.primary,
-            bypassPinningCheck: true
-          }),
-          commandHandler
-        );
-      }
-
-      commandHandler(error);
-    }
-  );
-}
-
-/** @public */
-export type ServerSessionId = { id: Binary };
-
-/**
- * Reflects the existence of a session on the server. Can be reused by the session pool.
- * WARNING: not meant to be instantiated directly. For internal use only.
- * @public
- */
-export class ServerSession {
-  id: ServerSessionId;
-  lastUse: number;
-  txnNumber: number;
-  isDirty: boolean;
-
-  /** @internal */
-  constructor() {
-    this.id = { id: new Binary(uuidV4(), Binary.SUBTYPE_UUID) };
-    this.lastUse = now();
-    this.txnNumber = 0;
-    this.isDirty = false;
-  }
-
-  /**
-   * Determines if the server session has timed out.
-   *
-   * @param sessionTimeoutMinutes - The server's "logicalSessionTimeoutMinutes"
-   */
-  hasTimedOut(sessionTimeoutMinutes: number): boolean {
-    // Take the difference of the lastUse timestamp and now, which will result in a value in
-    // milliseconds, and then convert milliseconds to minutes to compare to `sessionTimeoutMinutes`
-    const idleTimeMinutes = Math.round(
-      ((calculateDurationInMs(this.lastUse) % 86400000) % 3600000) / 60000
-    );
-
-    return idleTimeMinutes > sessionTimeoutMinutes - 1;
-  }
-
-  /**
-   * @internal
-   * Cloning meant to keep a readable reference to the server session data
-   * after ClientSession has ended
-   */
-  static clone(serverSession: ServerSession): Readonly<ServerSession> {
-    const arrayBuffer = new ArrayBuffer(16);
-    const idBytes = Buffer.from(arrayBuffer);
-    idBytes.set(serverSession.id.id.buffer);
-
-    const id = new Binary(idBytes, serverSession.id.id.sub_type);
-
-    // Manual prototype construction to avoid modifying the constructor of this class
-    return Object.setPrototypeOf(
-      {
-        id: { id },
-        lastUse: serverSession.lastUse,
-        txnNumber: serverSession.txnNumber,
-        isDirty: serverSession.isDirty
-      },
-      ServerSession.prototype
-    );
-  }
-}
-
-/**
- * Maintains a pool of Server Sessions.
- * For internal use only
- * @internal
- */
-export class ServerSessionPool {
-  client: MongoClient;
-  sessions: List<ServerSession>;
-
-  constructor(client: MongoClient) {
-    if (client == null) {
-      throw new MongoRuntimeError('ServerSessionPool requires a MongoClient');
-    }
-
-    this.client = client;
-    this.sessions = new List<ServerSession>();
-  }
-
-  /**
-   * Acquire a Server Session from the pool.
-   * Iterates through each session in the pool, removing any stale sessions
-   * along the way. The first non-stale session found is removed from the
-   * pool and returned. If no non-stale session is found, a new ServerSession is created.
-   */
-  acquire(): ServerSession {
-    const sessionTimeoutMinutes = this.client.topology?.logicalSessionTimeoutMinutes ?? 10;
-
-    let session: ServerSession | null = null;
-
-    // Try to obtain from session pool
-    while (this.sessions.length > 0) {
-      const potentialSession = this.sessions.shift();
-      if (
-        potentialSession != null &&
-        (!!this.client.topology?.loadBalanced ||
-          !potentialSession.hasTimedOut(sessionTimeoutMinutes))
-      ) {
-        session = potentialSession;
-        break;
-      }
-    }
-
-    // If nothing valid came from the pool make a new one
-    if (session == null) {
-      session = new ServerSession();
-    }
-
-    return session;
-  }
-
-  /**
-   * Release a session to the session pool
-   * Adds the session back to the session pool if the session has not timed out yet.
-   * This method also removes any stale sessions from the pool.
-   *
-   * @param session - The session to release to the pool
-   */
-  release(session: ServerSession): void {
-    const sessionTimeoutMinutes = this.client.topology?.logicalSessionTimeoutMinutes ?? 10;
-
-    if (this.client.topology?.loadBalanced && !sessionTimeoutMinutes) {
-      this.sessions.unshift(session);
-    }
-
-    if (!sessionTimeoutMinutes) {
-      return;
-    }
-
-    this.sessions.prune(session => session.hasTimedOut(sessionTimeoutMinutes));
-
-    if (!session.hasTimedOut(sessionTimeoutMinutes)) {
-      if (session.isDirty) {
-        return;
-      }
-
-      // otherwise, readd this session to the session pool
-      this.sessions.unshift(session);
-    }
-  }
-}
-
-/**
- * Optionally decorate a command with sessions specific keys
- *
- * @param session - the session tracking transaction state
- * @param command - the command to decorate
- * @param options - Optional settings passed to calling operation
- *
- * @internal
- */
-export function applySession(
-  session: ClientSession,
-  command: Document,
-  options: CommandOptions
-): MongoDriverError | undefined {
-  if (session.hasEnded) {
-    return new MongoExpiredSessionError();
-  }
-
-  // May acquire serverSession here
-  const serverSession = session.serverSession;
-  if (serverSession == null) {
-    return new MongoRuntimeError('Unable to acquire server session');
-  }
-
-  if (options.writeConcern?.w === 0) {
-    if (session && session.explicit) {
-      // Error if user provided an explicit session to an unacknowledged write (SPEC-1019)
-      return new MongoAPIError('Cannot have explicit session with unacknowledged writes');
-    }
-    return;
-  }
-
-  // mark the last use of this session, and apply the `lsid`
-  serverSession.lastUse = now();
-  command.lsid = serverSession.id;
-
-  const inTxnOrTxnCommand = session.inTransaction() || isTransactionCommand(command);
-  const isRetryableWrite = !!options.willRetryWrite;
-
-  if (isRetryableWrite || inTxnOrTxnCommand) {
-    serverSession.txnNumber += session[kTxnNumberIncrement];
-    session[kTxnNumberIncrement] = 0;
-    // TODO(NODE-2674): Preserve int64 sent from MongoDB
-    command.txnNumber = Long.fromNumber(serverSession.txnNumber);
-  }
-
-  if (!inTxnOrTxnCommand) {
-    if (session.transaction.state !== TxnState.NO_TRANSACTION) {
-      session.transaction.transition(TxnState.NO_TRANSACTION);
-    }
-
-    if (
-      session.supports.causalConsistency &&
-      session.operationTime &&
-      commandSupportsReadConcern(command)
-    ) {
-      command.readConcern = command.readConcern || {};
-      Object.assign(command.readConcern, { afterClusterTime: session.operationTime });
-    } else if (session[kSnapshotEnabled]) {
-      command.readConcern = command.readConcern || { level: ReadConcernLevel.snapshot };
-      if (session[kSnapshotTime] != null) {
-        Object.assign(command.readConcern, { atClusterTime: session[kSnapshotTime] });
-      }
-    }
-
-    return;
-  }
-
-  // now attempt to apply transaction-specific sessions data
-
-  // `autocommit` must always be false to differentiate from retryable writes
-  command.autocommit = false;
-
-  if (session.transaction.state === TxnState.STARTING_TRANSACTION) {
-    session.transaction.transition(TxnState.TRANSACTION_IN_PROGRESS);
-    command.startTransaction = true;
-
-    const readConcern =
-      session.transaction.options.readConcern || session?.clientOptions?.readConcern;
-    if (readConcern) {
-      command.readConcern = readConcern;
-    }
-
-    if (session.supports.causalConsistency && session.operationTime) {
-      command.readConcern = command.readConcern || {};
-      Object.assign(command.readConcern, { afterClusterTime: session.operationTime });
-    }
-  }
-  return;
-}
-
-export function updateSessionFromResponse(session: ClientSession, document: Document): void {
-  if (document.$clusterTime) {
-    _advanceClusterTime(session, document.$clusterTime);
-  }
-
-  if (document.operationTime && session && session.supports.causalConsistency) {
-    session.advanceOperationTime(document.operationTime);
-  }
-
-  if (document.recoveryToken && session && session.inTransaction()) {
-    session.transaction._recoveryToken = document.recoveryToken;
-  }
-
-  if (session?.[kSnapshotEnabled] && session[kSnapshotTime] == null) {
-    // find and aggregate commands return atClusterTime on the cursor
-    // distinct includes it in the response body
-    const atClusterTime = document.cursor?.atClusterTime || document.atClusterTime;
-    if (atClusterTime) {
-      session[kSnapshotTime] = atClusterTime;
-    }
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/src/sort.ts b/server/data-import/node_modules/mongodb/src/sort.ts
deleted file mode 100644
index 6b766b545630050007a65914e663bdbf75c5d504..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/sort.ts
+++ /dev/null
@@ -1,132 +0,0 @@
-import { MongoInvalidArgumentError } from './error';
-
-/** @public */
-export type SortDirection =
-  | 1
-  | -1
-  | 'asc'
-  | 'desc'
-  | 'ascending'
-  | 'descending'
-  | { $meta: string };
-
-/** @public */
-export type Sort =
-  | string
-  | Exclude<SortDirection, { $meta: string }>
-  | string[]
-  | { [key: string]: SortDirection }
-  | Map<string, SortDirection>
-  | [string, SortDirection][]
-  | [string, SortDirection];
-
-/** Below stricter types were created for sort that correspond with type that the cmd takes  */
-
-/** @internal */
-export type SortDirectionForCmd = 1 | -1 | { $meta: string };
-
-/** @internal */
-export type SortForCmd = Map<string, SortDirectionForCmd>;
-
-/** @internal */
-type SortPairForCmd = [string, SortDirectionForCmd];
-
-/** @internal */
-function prepareDirection(direction: any = 1): SortDirectionForCmd {
-  const value = `${direction}`.toLowerCase();
-  if (isMeta(direction)) return direction;
-  switch (value) {
-    case 'ascending':
-    case 'asc':
-    case '1':
-      return 1;
-    case 'descending':
-    case 'desc':
-    case '-1':
-      return -1;
-    default:
-      throw new MongoInvalidArgumentError(`Invalid sort direction: ${JSON.stringify(direction)}`);
-  }
-}
-
-/** @internal */
-function isMeta(t: SortDirection): t is { $meta: string } {
-  return typeof t === 'object' && t != null && '$meta' in t && typeof t.$meta === 'string';
-}
-
-/** @internal */
-function isPair(t: Sort): t is [string, SortDirection] {
-  if (Array.isArray(t) && t.length === 2) {
-    try {
-      prepareDirection(t[1]);
-      return true;
-    } catch (e) {
-      return false;
-    }
-  }
-  return false;
-}
-
-function isDeep(t: Sort): t is [string, SortDirection][] {
-  return Array.isArray(t) && Array.isArray(t[0]);
-}
-
-function isMap(t: Sort): t is Map<string, SortDirection> {
-  return t instanceof Map && t.size > 0;
-}
-
-/** @internal */
-function pairToMap(v: [string, SortDirection]): SortForCmd {
-  return new Map([[`${v[0]}`, prepareDirection([v[1]])]]);
-}
-
-/** @internal */
-function deepToMap(t: [string, SortDirection][]): SortForCmd {
-  const sortEntries: SortPairForCmd[] = t.map(([k, v]) => [`${k}`, prepareDirection(v)]);
-  return new Map(sortEntries);
-}
-
-/** @internal */
-function stringsToMap(t: string[]): SortForCmd {
-  const sortEntries: SortPairForCmd[] = t.map(key => [`${key}`, 1]);
-  return new Map(sortEntries);
-}
-
-/** @internal */
-function objectToMap(t: { [key: string]: SortDirection }): SortForCmd {
-  const sortEntries: SortPairForCmd[] = Object.entries(t).map(([k, v]) => [
-    `${k}`,
-    prepareDirection(v)
-  ]);
-  return new Map(sortEntries);
-}
-
-/** @internal */
-function mapToMap(t: Map<string, SortDirection>): SortForCmd {
-  const sortEntries: SortPairForCmd[] = Array.from(t).map(([k, v]) => [
-    `${k}`,
-    prepareDirection(v)
-  ]);
-  return new Map(sortEntries);
-}
-
-/** converts a Sort type into a type that is valid for the server (SortForCmd) */
-export function formatSort(
-  sort: Sort | undefined,
-  direction?: SortDirection
-): SortForCmd | undefined {
-  if (sort == null) return undefined;
-  if (typeof sort === 'string') return new Map([[sort, prepareDirection(direction)]]);
-  if (typeof sort !== 'object') {
-    throw new MongoInvalidArgumentError(
-      `Invalid sort format: ${JSON.stringify(sort)} Sort must be a valid object`
-    );
-  }
-  if (!Array.isArray(sort)) {
-    return isMap(sort) ? mapToMap(sort) : Object.keys(sort).length ? objectToMap(sort) : undefined;
-  }
-  if (!sort.length) return undefined;
-  if (isDeep(sort)) return deepToMap(sort);
-  if (isPair(sort)) return pairToMap(sort);
-  return stringsToMap(sort);
-}
diff --git a/server/data-import/node_modules/mongodb/src/transactions.ts b/server/data-import/node_modules/mongodb/src/transactions.ts
deleted file mode 100644
index 7ee8660b97cc443d473d805bc48b73b05a9a7be2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/transactions.ts
+++ /dev/null
@@ -1,188 +0,0 @@
-import type { Document } from './bson';
-import { MongoRuntimeError, MongoTransactionError } from './error';
-import type { CommandOperationOptions } from './operations/command';
-import { ReadConcern, type ReadConcernLike } from './read_concern';
-import type { ReadPreferenceLike } from './read_preference';
-import { ReadPreference } from './read_preference';
-import type { Server } from './sdam/server';
-import { WriteConcern } from './write_concern';
-
-/** @internal */
-export const TxnState = Object.freeze({
-  NO_TRANSACTION: 'NO_TRANSACTION',
-  STARTING_TRANSACTION: 'STARTING_TRANSACTION',
-  TRANSACTION_IN_PROGRESS: 'TRANSACTION_IN_PROGRESS',
-  TRANSACTION_COMMITTED: 'TRANSACTION_COMMITTED',
-  TRANSACTION_COMMITTED_EMPTY: 'TRANSACTION_COMMITTED_EMPTY',
-  TRANSACTION_ABORTED: 'TRANSACTION_ABORTED'
-} as const);
-
-/** @internal */
-export type TxnState = (typeof TxnState)[keyof typeof TxnState];
-
-const stateMachine: { [state in TxnState]: TxnState[] } = {
-  [TxnState.NO_TRANSACTION]: [TxnState.NO_TRANSACTION, TxnState.STARTING_TRANSACTION],
-  [TxnState.STARTING_TRANSACTION]: [
-    TxnState.TRANSACTION_IN_PROGRESS,
-    TxnState.TRANSACTION_COMMITTED,
-    TxnState.TRANSACTION_COMMITTED_EMPTY,
-    TxnState.TRANSACTION_ABORTED
-  ],
-  [TxnState.TRANSACTION_IN_PROGRESS]: [
-    TxnState.TRANSACTION_IN_PROGRESS,
-    TxnState.TRANSACTION_COMMITTED,
-    TxnState.TRANSACTION_ABORTED
-  ],
-  [TxnState.TRANSACTION_COMMITTED]: [
-    TxnState.TRANSACTION_COMMITTED,
-    TxnState.TRANSACTION_COMMITTED_EMPTY,
-    TxnState.STARTING_TRANSACTION,
-    TxnState.NO_TRANSACTION
-  ],
-  [TxnState.TRANSACTION_ABORTED]: [TxnState.STARTING_TRANSACTION, TxnState.NO_TRANSACTION],
-  [TxnState.TRANSACTION_COMMITTED_EMPTY]: [
-    TxnState.TRANSACTION_COMMITTED_EMPTY,
-    TxnState.NO_TRANSACTION
-  ]
-};
-
-const ACTIVE_STATES: Set<TxnState> = new Set([
-  TxnState.STARTING_TRANSACTION,
-  TxnState.TRANSACTION_IN_PROGRESS
-]);
-
-const COMMITTED_STATES: Set<TxnState> = new Set([
-  TxnState.TRANSACTION_COMMITTED,
-  TxnState.TRANSACTION_COMMITTED_EMPTY,
-  TxnState.TRANSACTION_ABORTED
-]);
-
-/**
- * Configuration options for a transaction.
- * @public
- */
-export interface TransactionOptions extends CommandOperationOptions {
-  // TODO(NODE-3344): These options use the proper class forms of these settings, it should accept the basic enum values too
-  /** A default read concern for commands in this transaction */
-  readConcern?: ReadConcernLike;
-  /** A default writeConcern for commands in this transaction */
-  writeConcern?: WriteConcern;
-  /** A default read preference for commands in this transaction */
-  readPreference?: ReadPreferenceLike;
-  /** Specifies the maximum amount of time to allow a commit action on a transaction to run in milliseconds */
-  maxCommitTimeMS?: number;
-}
-
-/**
- * @public
- * A class maintaining state related to a server transaction. Internal Only
- */
-export class Transaction {
-  /** @internal */
-  state: TxnState;
-  options: TransactionOptions;
-  /** @internal */
-  _pinnedServer?: Server;
-  /** @internal */
-  _recoveryToken?: Document;
-
-  /** Create a transaction @internal */
-  constructor(options?: TransactionOptions) {
-    options = options ?? {};
-    this.state = TxnState.NO_TRANSACTION;
-    this.options = {};
-
-    const writeConcern = WriteConcern.fromOptions(options);
-    if (writeConcern) {
-      if (writeConcern.w === 0) {
-        throw new MongoTransactionError('Transactions do not support unacknowledged write concern');
-      }
-
-      this.options.writeConcern = writeConcern;
-    }
-
-    if (options.readConcern) {
-      this.options.readConcern = ReadConcern.fromOptions(options);
-    }
-
-    if (options.readPreference) {
-      this.options.readPreference = ReadPreference.fromOptions(options);
-    }
-
-    if (options.maxCommitTimeMS) {
-      this.options.maxTimeMS = options.maxCommitTimeMS;
-    }
-
-    // TODO: This isn't technically necessary
-    this._pinnedServer = undefined;
-    this._recoveryToken = undefined;
-  }
-
-  /** @internal */
-  get server(): Server | undefined {
-    return this._pinnedServer;
-  }
-
-  get recoveryToken(): Document | undefined {
-    return this._recoveryToken;
-  }
-
-  get isPinned(): boolean {
-    return !!this.server;
-  }
-
-  /** @returns Whether the transaction has started */
-  get isStarting(): boolean {
-    return this.state === TxnState.STARTING_TRANSACTION;
-  }
-
-  /**
-   * @returns Whether this session is presently in a transaction
-   */
-  get isActive(): boolean {
-    return ACTIVE_STATES.has(this.state);
-  }
-
-  get isCommitted(): boolean {
-    return COMMITTED_STATES.has(this.state);
-  }
-  /**
-   * Transition the transaction in the state machine
-   * @internal
-   * @param nextState - The new state to transition to
-   */
-  transition(nextState: TxnState): void {
-    const nextStates = stateMachine[this.state];
-    if (nextStates && nextStates.includes(nextState)) {
-      this.state = nextState;
-      if (
-        this.state === TxnState.NO_TRANSACTION ||
-        this.state === TxnState.STARTING_TRANSACTION ||
-        this.state === TxnState.TRANSACTION_ABORTED
-      ) {
-        this.unpinServer();
-      }
-      return;
-    }
-
-    throw new MongoRuntimeError(
-      `Attempted illegal state transition from [${this.state}] to [${nextState}]`
-    );
-  }
-
-  /** @internal */
-  pinServer(server: Server): void {
-    if (this.isActive) {
-      this._pinnedServer = server;
-    }
-  }
-
-  /** @internal */
-  unpinServer(): void {
-    this._pinnedServer = undefined;
-  }
-}
-
-export function isTransactionCommand(command: Document): boolean {
-  return !!(command.commitTransaction || command.abortTransaction);
-}
diff --git a/server/data-import/node_modules/mongodb/src/utils.ts b/server/data-import/node_modules/mongodb/src/utils.ts
deleted file mode 100644
index 8bf4425c18b2b8ec672b59180d28631d55921409..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/utils.ts
+++ /dev/null
@@ -1,1301 +0,0 @@
-import * as crypto from 'crypto';
-import type { SrvRecord } from 'dns';
-import * as http from 'http';
-import { clearTimeout, setTimeout } from 'timers';
-import * as url from 'url';
-import { URL } from 'url';
-
-import { type Document, ObjectId, resolveBSONOptions } from './bson';
-import type { Connection } from './cmap/connection';
-import { MAX_SUPPORTED_WIRE_VERSION } from './cmap/wire_protocol/constants';
-import type { Collection } from './collection';
-import { LEGACY_HELLO_COMMAND } from './constants';
-import type { AbstractCursor } from './cursor/abstract_cursor';
-import type { FindCursor } from './cursor/find_cursor';
-import type { Db } from './db';
-import {
-  type AnyError,
-  MongoCompatibilityError,
-  MongoInvalidArgumentError,
-  MongoNetworkTimeoutError,
-  MongoNotConnectedError,
-  MongoParseError,
-  MongoRuntimeError
-} from './error';
-import type { Explain } from './explain';
-import type { MongoClient } from './mongo_client';
-import type { CommandOperationOptions, OperationParent } from './operations/command';
-import type { Hint, OperationOptions } from './operations/operation';
-import { ReadConcern } from './read_concern';
-import { ReadPreference } from './read_preference';
-import { ServerType } from './sdam/common';
-import type { Server } from './sdam/server';
-import type { Topology } from './sdam/topology';
-import type { ClientSession } from './sessions';
-import { WriteConcern } from './write_concern';
-
-/**
- * MongoDB Driver style callback
- * @public
- */
-export type Callback<T = any> = (error?: AnyError, result?: T) => void;
-
-export type AnyOptions = Document;
-
-export const ByteUtils = {
-  toLocalBufferType(this: void, buffer: Buffer | Uint8Array): Buffer {
-    return Buffer.isBuffer(buffer)
-      ? buffer
-      : Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength);
-  },
-
-  equals(this: void, seqA: Uint8Array, seqB: Uint8Array) {
-    return ByteUtils.toLocalBufferType(seqA).equals(seqB);
-  },
-
-  compare(this: void, seqA: Uint8Array, seqB: Uint8Array) {
-    return ByteUtils.toLocalBufferType(seqA).compare(seqB);
-  },
-
-  toBase64(this: void, uint8array: Uint8Array) {
-    return ByteUtils.toLocalBufferType(uint8array).toString('base64');
-  }
-};
-
-/**
- * Determines if a connection's address matches a user provided list
- * of domain wildcards.
- */
-export function hostMatchesWildcards(host: string, wildcards: string[]): boolean {
-  for (const wildcard of wildcards) {
-    if (
-      host === wildcard ||
-      (wildcard.startsWith('*.') && host?.endsWith(wildcard.substring(2, wildcard.length))) ||
-      (wildcard.startsWith('*/') && host?.endsWith(wildcard.substring(2, wildcard.length)))
-    ) {
-      return true;
-    }
-  }
-  return false;
-}
-
-/**
- * Ensure Hint field is in a shape we expect:
- * - object of index names mapping to 1 or -1
- * - just an index name
- * @internal
- */
-export function normalizeHintField(hint?: Hint): Hint | undefined {
-  let finalHint = undefined;
-
-  if (typeof hint === 'string') {
-    finalHint = hint;
-  } else if (Array.isArray(hint)) {
-    finalHint = {};
-
-    hint.forEach(param => {
-      finalHint[param] = 1;
-    });
-  } else if (hint != null && typeof hint === 'object') {
-    finalHint = {} as Document;
-    for (const name in hint) {
-      finalHint[name] = hint[name];
-    }
-  }
-
-  return finalHint;
-}
-
-const TO_STRING = (object: unknown) => Object.prototype.toString.call(object);
-/**
- * Checks if arg is an Object:
- * - **NOTE**: the check is based on the `[Symbol.toStringTag]() === 'Object'`
- * @internal
- */
-
-export function isObject(arg: unknown): arg is object {
-  return '[object Object]' === TO_STRING(arg);
-}
-
-/** @internal */
-export function mergeOptions<T, S>(target: T, source: S): T & S {
-  return { ...target, ...source };
-}
-
-/** @internal */
-export function filterOptions(options: AnyOptions, names: ReadonlyArray<string>): AnyOptions {
-  const filterOptions: AnyOptions = {};
-
-  for (const name in options) {
-    if (names.includes(name)) {
-      filterOptions[name] = options[name];
-    }
-  }
-
-  // Filtered options
-  return filterOptions;
-}
-
-interface HasRetryableWrites {
-  retryWrites?: boolean;
-}
-/**
- * Applies retryWrites: true to a command if retryWrites is set on the command's database.
- * @internal
- *
- * @param target - The target command to which we will apply retryWrites.
- * @param db - The database from which we can inherit a retryWrites value.
- */
-export function applyRetryableWrites<T extends HasRetryableWrites>(target: T, db?: Db): T {
-  if (db && db.s.options?.retryWrites) {
-    target.retryWrites = true;
-  }
-
-  return target;
-}
-
-/**
- * Applies a write concern to a command based on well defined inheritance rules, optionally
- * detecting support for the write concern in the first place.
- * @internal
- *
- * @param target - the target command we will be applying the write concern to
- * @param sources - sources where we can inherit default write concerns from
- * @param options - optional settings passed into a command for write concern overrides
- */
-
-/**
- * Checks if a given value is a Promise
- *
- * @typeParam T - The resolution type of the possible promise
- * @param value - An object that could be a promise
- * @returns true if the provided value is a Promise
- */
-export function isPromiseLike<T = any>(value?: PromiseLike<T> | void): value is Promise<T> {
-  return !!value && typeof value.then === 'function';
-}
-
-/**
- * Applies collation to a given command.
- * @internal
- *
- * @param command - the command on which to apply collation
- * @param target - target of command
- * @param options - options containing collation settings
- */
-export function decorateWithCollation(
-  command: Document,
-  target: MongoClient | Db | Collection,
-  options: AnyOptions
-): void {
-  const capabilities = getTopology(target).capabilities;
-  if (options.collation && typeof options.collation === 'object') {
-    if (capabilities && capabilities.commandsTakeCollation) {
-      command.collation = options.collation;
-    } else {
-      throw new MongoCompatibilityError(`Current topology does not support collation`);
-    }
-  }
-}
-
-/**
- * Applies a read concern to a given command.
- * @internal
- *
- * @param command - the command on which to apply the read concern
- * @param coll - the parent collection of the operation calling this method
- */
-export function decorateWithReadConcern(
-  command: Document,
-  coll: { s: { readConcern?: ReadConcern } },
-  options?: OperationOptions
-): void {
-  if (options && options.session && options.session.inTransaction()) {
-    return;
-  }
-  const readConcern = Object.assign({}, command.readConcern || {});
-  if (coll.s.readConcern) {
-    Object.assign(readConcern, coll.s.readConcern);
-  }
-
-  if (Object.keys(readConcern).length > 0) {
-    Object.assign(command, { readConcern: readConcern });
-  }
-}
-
-/**
- * Applies an explain to a given command.
- * @internal
- *
- * @param command - the command on which to apply the explain
- * @param options - the options containing the explain verbosity
- */
-export function decorateWithExplain(command: Document, explain: Explain): Document {
-  if (command.explain) {
-    return command;
-  }
-
-  return { explain: command, verbosity: explain.verbosity };
-}
-
-/**
- * @internal
- */
-export type TopologyProvider =
-  | MongoClient
-  | ClientSession
-  | FindCursor
-  | AbstractCursor
-  | Collection<any>
-  | Db;
-
-/**
- * A helper function to get the topology from a given provider. Throws
- * if the topology cannot be found.
- * @throws MongoNotConnectedError
- * @internal
- */
-export function getTopology(provider: TopologyProvider): Topology {
-  // MongoClient or ClientSession or AbstractCursor
-  if ('topology' in provider && provider.topology) {
-    return provider.topology;
-  } else if ('client' in provider && provider.client.topology) {
-    return provider.client.topology;
-  }
-
-  throw new MongoNotConnectedError('MongoClient must be connected to perform this operation');
-}
-
-/** @internal */
-export function ns(ns: string): MongoDBNamespace {
-  return MongoDBNamespace.fromString(ns);
-}
-
-/** @public */
-export class MongoDBNamespace {
-  /**
-   * Create a namespace object
-   *
-   * @param db - database name
-   * @param collection - collection name
-   */
-  constructor(public db: string, public collection?: string) {
-    this.collection = collection === '' ? undefined : collection;
-  }
-
-  toString(): string {
-    return this.collection ? `${this.db}.${this.collection}` : this.db;
-  }
-
-  withCollection(collection: string): MongoDBCollectionNamespace {
-    return new MongoDBCollectionNamespace(this.db, collection);
-  }
-
-  static fromString(namespace?: string): MongoDBNamespace {
-    if (typeof namespace !== 'string' || namespace === '') {
-      // TODO(NODE-3483): Replace with MongoNamespaceError
-      throw new MongoRuntimeError(`Cannot parse namespace from "${namespace}"`);
-    }
-
-    const [db, ...collectionParts] = namespace.split('.');
-    const collection = collectionParts.join('.');
-    return new MongoDBNamespace(db, collection === '' ? undefined : collection);
-  }
-}
-
-/**
- * @public
- *
- * A class representing a collection's namespace.  This class enforces (through Typescript) that
- * the `collection` portion of the namespace is defined and should only be
- * used in scenarios where this can be guaranteed.
- */
-export class MongoDBCollectionNamespace extends MongoDBNamespace {
-  constructor(db: string, override collection: string) {
-    super(db, collection);
-  }
-
-  static override fromString(namespace?: string): MongoDBCollectionNamespace {
-    return super.fromString(namespace) as MongoDBCollectionNamespace;
-  }
-}
-
-/** @internal */
-export function* makeCounter(seed = 0): Generator<number> {
-  let count = seed;
-  while (true) {
-    const newCount = count;
-    count += 1;
-    yield newCount;
-  }
-}
-
-/**
- * Helper for handling legacy callback support.
- */
-export function maybeCallback<T>(promiseFn: () => Promise<T>, callback: null): Promise<T>;
-export function maybeCallback<T>(
-  promiseFn: () => Promise<T>,
-  callback?: Callback<T>
-): Promise<T> | void;
-export function maybeCallback<T>(
-  promiseFn: () => Promise<T>,
-  callback?: Callback<T> | null
-): Promise<T> | void {
-  const promise = promiseFn();
-  if (callback == null) {
-    return promise;
-  }
-
-  promise.then(
-    result => callback(undefined, result),
-    error => callback(error)
-  );
-  return;
-}
-
-/**
- * Synchronously Generate a UUIDv4
- * @internal
- */
-export function uuidV4(): Buffer {
-  const result = crypto.randomBytes(16);
-  result[6] = (result[6] & 0x0f) | 0x40;
-  result[8] = (result[8] & 0x3f) | 0x80;
-  return result;
-}
-
-/**
- * A helper function for determining `maxWireVersion` between legacy and new topology instances
- * @internal
- */
-export function maxWireVersion(topologyOrServer?: Connection | Topology | Server): number {
-  if (topologyOrServer) {
-    if (topologyOrServer.loadBalanced) {
-      // Since we do not have a monitor, we assume the load balanced server is always
-      // pointed at the latest mongodb version. There is a risk that for on-prem
-      // deployments that don't upgrade immediately that this could alert to the
-      // application that a feature is available that is actually not.
-      return MAX_SUPPORTED_WIRE_VERSION;
-    }
-    if (topologyOrServer.hello) {
-      return topologyOrServer.hello.maxWireVersion;
-    }
-
-    if ('lastHello' in topologyOrServer && typeof topologyOrServer.lastHello === 'function') {
-      const lastHello = topologyOrServer.lastHello();
-      if (lastHello) {
-        return lastHello.maxWireVersion;
-      }
-    }
-
-    if (
-      topologyOrServer.description &&
-      'maxWireVersion' in topologyOrServer.description &&
-      topologyOrServer.description.maxWireVersion != null
-    ) {
-      return topologyOrServer.description.maxWireVersion;
-    }
-  }
-
-  return 0;
-}
-
-/**
- * Applies the function `eachFn` to each item in `arr`, in parallel.
- * @internal
- *
- * @param arr - An array of items to asynchronously iterate over
- * @param eachFn - A function to call on each item of the array. The callback signature is `(item, callback)`, where the callback indicates iteration is complete.
- * @param callback - The callback called after every item has been iterated
- */
-export function eachAsync<T = Document>(
-  arr: T[],
-  eachFn: (item: T, callback: (err?: AnyError) => void) => void,
-  callback: Callback
-): void {
-  arr = arr || [];
-
-  let idx = 0;
-  let awaiting = 0;
-  for (idx = 0; idx < arr.length; ++idx) {
-    awaiting++;
-    eachFn(arr[idx], eachCallback);
-  }
-
-  if (awaiting === 0) {
-    callback();
-    return;
-  }
-
-  function eachCallback(err?: AnyError) {
-    awaiting--;
-    if (err) {
-      callback(err);
-      return;
-    }
-
-    if (idx === arr.length && awaiting <= 0) {
-      callback();
-    }
-  }
-}
-
-/** @internal */
-export function arrayStrictEqual(arr: unknown[], arr2: unknown[]): boolean {
-  if (!Array.isArray(arr) || !Array.isArray(arr2)) {
-    return false;
-  }
-
-  return arr.length === arr2.length && arr.every((elt, idx) => elt === arr2[idx]);
-}
-
-/** @internal */
-export function errorStrictEqual(lhs?: AnyError | null, rhs?: AnyError | null): boolean {
-  if (lhs === rhs) {
-    return true;
-  }
-
-  if (!lhs || !rhs) {
-    return lhs === rhs;
-  }
-
-  if ((lhs == null && rhs != null) || (lhs != null && rhs == null)) {
-    return false;
-  }
-
-  if (lhs.constructor.name !== rhs.constructor.name) {
-    return false;
-  }
-
-  if (lhs.message !== rhs.message) {
-    return false;
-  }
-
-  return true;
-}
-
-interface StateTable {
-  [key: string]: string[];
-}
-interface ObjectWithState {
-  s: { state: string };
-  emit(event: 'stateChanged', state: string, newState: string): void;
-}
-interface StateTransitionFunction {
-  (target: ObjectWithState, newState: string): void;
-}
-
-/** @public */
-export type EventEmitterWithState = {
-  /** @internal */
-  stateChanged(previous: string, current: string): void;
-};
-
-/** @internal */
-export function makeStateMachine(stateTable: StateTable): StateTransitionFunction {
-  return function stateTransition(target, newState) {
-    const legalStates = stateTable[target.s.state];
-    if (legalStates && legalStates.indexOf(newState) < 0) {
-      throw new MongoRuntimeError(
-        `illegal state transition from [${target.s.state}] => [${newState}], allowed: [${legalStates}]`
-      );
-    }
-
-    target.emit('stateChanged', target.s.state, newState);
-    target.s.state = newState;
-  };
-}
-
-/** @internal */
-export function now(): number {
-  const hrtime = process.hrtime();
-  return Math.floor(hrtime[0] * 1000 + hrtime[1] / 1000000);
-}
-
-/** @internal */
-export function calculateDurationInMs(started: number): number {
-  if (typeof started !== 'number') {
-    throw new MongoInvalidArgumentError('Numeric value required to calculate duration');
-  }
-
-  const elapsed = now() - started;
-  return elapsed < 0 ? 0 : elapsed;
-}
-
-/** @internal */
-export function hasAtomicOperators(doc: Document | Document[]): boolean {
-  if (Array.isArray(doc)) {
-    for (const document of doc) {
-      if (hasAtomicOperators(document)) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  const keys = Object.keys(doc);
-  return keys.length > 0 && keys[0][0] === '$';
-}
-
-/**
- * Merge inherited properties from parent into options, prioritizing values from options,
- * then values from parent.
- * @internal
- */
-export function resolveOptions<T extends CommandOperationOptions>(
-  parent: OperationParent | undefined,
-  options?: T
-): T {
-  const result: T = Object.assign({}, options, resolveBSONOptions(options, parent));
-
-  // Users cannot pass a readConcern/writeConcern to operations in a transaction
-  const session = options?.session;
-  if (!session?.inTransaction()) {
-    const readConcern = ReadConcern.fromOptions(options) ?? parent?.readConcern;
-    if (readConcern) {
-      result.readConcern = readConcern;
-    }
-
-    const writeConcern = WriteConcern.fromOptions(options) ?? parent?.writeConcern;
-    if (writeConcern) {
-      result.writeConcern = writeConcern;
-    }
-  }
-
-  const readPreference = ReadPreference.fromOptions(options) ?? parent?.readPreference;
-  if (readPreference) {
-    result.readPreference = readPreference;
-  }
-
-  return result;
-}
-
-export function isSuperset(set: Set<any> | any[], subset: Set<any> | any[]): boolean {
-  set = Array.isArray(set) ? new Set(set) : set;
-  subset = Array.isArray(subset) ? new Set(subset) : subset;
-  for (const elem of subset) {
-    if (!set.has(elem)) {
-      return false;
-    }
-  }
-  return true;
-}
-
-/**
- * Checks if the document is a Hello request
- * @internal
- */
-export function isHello(doc: Document): boolean {
-  return doc[LEGACY_HELLO_COMMAND] || doc.hello ? true : false;
-}
-
-/** Returns the items that are uniquely in setA */
-export function setDifference<T>(setA: Iterable<T>, setB: Iterable<T>): Set<T> {
-  const difference = new Set<T>(setA);
-  for (const elem of setB) {
-    difference.delete(elem);
-  }
-  return difference;
-}
-
-const HAS_OWN = (object: unknown, prop: string) =>
-  Object.prototype.hasOwnProperty.call(object, prop);
-
-export function isRecord<T extends readonly string[]>(
-  value: unknown,
-  requiredKeys: T
-): value is Record<T[number], any>;
-export function isRecord(value: unknown): value is Record<string, any>;
-export function isRecord(
-  value: unknown,
-  requiredKeys: string[] | undefined = undefined
-): value is Record<string, any> {
-  if (!isObject(value)) {
-    return false;
-  }
-
-  const ctor = (value as any).constructor;
-  if (ctor && ctor.prototype) {
-    if (!isObject(ctor.prototype)) {
-      return false;
-    }
-
-    // Check to see if some method exists from the Object exists
-    if (!HAS_OWN(ctor.prototype, 'isPrototypeOf')) {
-      return false;
-    }
-  }
-
-  if (requiredKeys) {
-    const keys = Object.keys(value as Record<string, any>);
-    return isSuperset(keys, requiredKeys);
-  }
-
-  return true;
-}
-
-/**
- * Make a deep copy of an object
- *
- * NOTE: This is not meant to be the perfect implementation of a deep copy,
- * but instead something that is good enough for the purposes of
- * command monitoring.
- */
-export function deepCopy<T>(value: T): T {
-  if (value == null) {
-    return value;
-  } else if (Array.isArray(value)) {
-    return value.map(item => deepCopy(item)) as unknown as T;
-  } else if (isRecord(value)) {
-    const res = {} as any;
-    for (const key in value) {
-      res[key] = deepCopy(value[key]);
-    }
-    return res;
-  }
-
-  const ctor = (value as any).constructor;
-  if (ctor) {
-    switch (ctor.name.toLowerCase()) {
-      case 'date':
-        return new ctor(Number(value));
-      case 'map':
-        return new Map(value as any) as unknown as T;
-      case 'set':
-        return new Set(value as any) as unknown as T;
-      case 'buffer':
-        return Buffer.from(value as unknown as Buffer) as unknown as T;
-    }
-  }
-
-  return value;
-}
-
-type ListNode<T> = {
-  value: T;
-  next: ListNode<T> | HeadNode<T>;
-  prev: ListNode<T> | HeadNode<T>;
-};
-
-type HeadNode<T> = {
-  value: null;
-  next: ListNode<T>;
-  prev: ListNode<T>;
-};
-
-/**
- * When a list is empty the head is a reference with pointers to itself
- * So this type represents that self referential state
- */
-type EmptyNode = {
-  value: null;
-  next: EmptyNode;
-  prev: EmptyNode;
-};
-
-/**
- * A sequential list of items in a circularly linked list
- * @remarks
- * The head node is special, it is always defined and has a value of null.
- * It is never "included" in the list, in that, it is not returned by pop/shift or yielded by the iterator.
- * The circular linkage and always defined head node are to reduce checks for null next/prev references to zero.
- * New nodes are declared as object literals with keys always in the same order: next, prev, value.
- * @internal
- */
-export class List<T = unknown> {
-  private readonly head: HeadNode<T> | EmptyNode;
-  private count: number;
-
-  get length() {
-    return this.count;
-  }
-
-  get [Symbol.toStringTag]() {
-    return 'List' as const;
-  }
-
-  constructor() {
-    this.count = 0;
-
-    // this is carefully crafted:
-    // declaring a complete and consistently key ordered
-    // object is beneficial to the runtime optimizations
-    this.head = {
-      next: null,
-      prev: null,
-      value: null
-    } as unknown as EmptyNode;
-    this.head.next = this.head;
-    this.head.prev = this.head;
-  }
-
-  toArray() {
-    return Array.from(this);
-  }
-
-  toString() {
-    return `head <=> ${this.toArray().join(' <=> ')} <=> head`;
-  }
-
-  *[Symbol.iterator](): Generator<T, void, void> {
-    for (const node of this.nodes()) {
-      yield node.value;
-    }
-  }
-
-  private *nodes(): Generator<ListNode<T>, void, void> {
-    let ptr: HeadNode<T> | ListNode<T> | EmptyNode = this.head.next;
-    while (ptr !== this.head) {
-      // Save next before yielding so that we make removing within iteration safe
-      const { next } = ptr as ListNode<T>;
-      yield ptr as ListNode<T>;
-      ptr = next;
-    }
-  }
-
-  /** Insert at end of list */
-  push(value: T) {
-    this.count += 1;
-    const newNode: ListNode<T> = {
-      next: this.head as HeadNode<T>,
-      prev: this.head.prev as ListNode<T>,
-      value
-    };
-    this.head.prev.next = newNode;
-    this.head.prev = newNode;
-  }
-
-  /** Inserts every item inside an iterable instead of the iterable itself */
-  pushMany(iterable: Iterable<T>) {
-    for (const value of iterable) {
-      this.push(value);
-    }
-  }
-
-  /** Insert at front of list */
-  unshift(value: T) {
-    this.count += 1;
-    const newNode: ListNode<T> = {
-      next: this.head.next as ListNode<T>,
-      prev: this.head as HeadNode<T>,
-      value
-    };
-    this.head.next.prev = newNode;
-    this.head.next = newNode;
-  }
-
-  private remove(node: ListNode<T> | EmptyNode): T | null {
-    if (node === this.head || this.length === 0) {
-      return null;
-    }
-
-    this.count -= 1;
-
-    const prevNode = node.prev;
-    const nextNode = node.next;
-    prevNode.next = nextNode;
-    nextNode.prev = prevNode;
-
-    return node.value;
-  }
-
-  /** Removes the first node at the front of the list */
-  shift(): T | null {
-    return this.remove(this.head.next);
-  }
-
-  /** Removes the last node at the end of the list */
-  pop(): T | null {
-    return this.remove(this.head.prev);
-  }
-
-  /** Iterates through the list and removes nodes where filter returns true */
-  prune(filter: (value: T) => boolean) {
-    for (const node of this.nodes()) {
-      if (filter(node.value)) {
-        this.remove(node);
-      }
-    }
-  }
-
-  clear() {
-    this.count = 0;
-    this.head.next = this.head as EmptyNode;
-    this.head.prev = this.head as EmptyNode;
-  }
-
-  /** Returns the first item in the list, does not remove */
-  first(): T | null {
-    // If the list is empty, value will be the head's null
-    return this.head.next.value;
-  }
-
-  /** Returns the last item in the list, does not remove */
-  last(): T | null {
-    // If the list is empty, value will be the head's null
-    return this.head.prev.value;
-  }
-}
-
-/**
- * A pool of Buffers which allow you to read them as if they were one
- * @internal
- */
-export class BufferPool {
-  private buffers: List<Buffer>;
-  private totalByteLength: number;
-
-  constructor() {
-    this.buffers = new List();
-    this.totalByteLength = 0;
-  }
-
-  get length(): number {
-    return this.totalByteLength;
-  }
-
-  /** Adds a buffer to the internal buffer pool list */
-  append(buffer: Buffer): void {
-    this.buffers.push(buffer);
-    this.totalByteLength += buffer.length;
-  }
-
-  /**
-   * If BufferPool contains 4 bytes or more construct an int32 from the leading bytes,
-   * otherwise return null. Size can be negative, caller should error check.
-   */
-  getInt32(): number | null {
-    if (this.totalByteLength < 4) {
-      return null;
-    }
-    const firstBuffer = this.buffers.first();
-    if (firstBuffer != null && firstBuffer.byteLength >= 4) {
-      return firstBuffer.readInt32LE(0);
-    }
-
-    // Unlikely case: an int32 is split across buffers.
-    // Use read and put the returned buffer back on top
-    const top4Bytes = this.read(4);
-    const value = top4Bytes.readInt32LE(0);
-
-    // Put it back.
-    this.totalByteLength += 4;
-    this.buffers.unshift(top4Bytes);
-
-    return value;
-  }
-
-  /** Reads the requested number of bytes, optionally consuming them */
-  read(size: number): Buffer {
-    if (typeof size !== 'number' || size < 0) {
-      throw new MongoInvalidArgumentError('Argument "size" must be a non-negative number');
-    }
-
-    // oversized request returns empty buffer
-    if (size > this.totalByteLength) {
-      return Buffer.alloc(0);
-    }
-
-    // We know we have enough, we just don't know how it is spread across chunks
-    // TODO(NODE-4732): alloc API should change based on raw option
-    const result = Buffer.allocUnsafe(size);
-
-    for (let bytesRead = 0; bytesRead < size; ) {
-      const buffer = this.buffers.shift();
-      if (buffer == null) {
-        break;
-      }
-      const bytesRemaining = size - bytesRead;
-      const bytesReadable = Math.min(bytesRemaining, buffer.byteLength);
-      const bytes = buffer.subarray(0, bytesReadable);
-
-      result.set(bytes, bytesRead);
-
-      bytesRead += bytesReadable;
-      this.totalByteLength -= bytesReadable;
-      if (bytesReadable < buffer.byteLength) {
-        this.buffers.unshift(buffer.subarray(bytesReadable));
-      }
-    }
-
-    return result;
-  }
-}
-
-/** @public */
-export class HostAddress {
-  host: string | undefined = undefined;
-  port: number | undefined = undefined;
-  socketPath: string | undefined = undefined;
-  isIPv6 = false;
-
-  constructor(hostString: string) {
-    const escapedHost = hostString.split(' ').join('%20'); // escape spaces, for socket path hosts
-
-    if (escapedHost.endsWith('.sock')) {
-      // heuristically determine if we're working with a domain socket
-      this.socketPath = decodeURIComponent(escapedHost);
-      return;
-    }
-
-    const urlString = `iLoveJS://${escapedHost}`;
-    let url;
-    try {
-      url = new URL(urlString);
-    } catch (urlError) {
-      const runtimeError = new MongoRuntimeError(`Unable to parse ${escapedHost} with URL`);
-      runtimeError.cause = urlError;
-      throw runtimeError;
-    }
-
-    const hostname = url.hostname;
-    const port = url.port;
-
-    let normalized = decodeURIComponent(hostname).toLowerCase();
-    if (normalized.startsWith('[') && normalized.endsWith(']')) {
-      this.isIPv6 = true;
-      normalized = normalized.substring(1, hostname.length - 1);
-    }
-
-    this.host = normalized.toLowerCase();
-
-    if (typeof port === 'number') {
-      this.port = port;
-    } else if (typeof port === 'string' && port !== '') {
-      this.port = Number.parseInt(port, 10);
-    } else {
-      this.port = 27017;
-    }
-
-    if (this.port === 0) {
-      throw new MongoParseError('Invalid port (zero) with hostname');
-    }
-    Object.freeze(this);
-  }
-
-  [Symbol.for('nodejs.util.inspect.custom')](): string {
-    return this.inspect();
-  }
-
-  inspect(): string {
-    return `new HostAddress('${this.toString()}')`;
-  }
-
-  toString(): string {
-    if (typeof this.host === 'string') {
-      if (this.isIPv6) {
-        return `[${this.host}]:${this.port}`;
-      }
-      return `${this.host}:${this.port}`;
-    }
-    return `${this.socketPath}`;
-  }
-
-  static fromString(this: void, s: string): HostAddress {
-    return new HostAddress(s);
-  }
-
-  static fromHostPort(host: string, port: number): HostAddress {
-    if (host.includes(':')) {
-      host = `[${host}]`; // IPv6 address
-    }
-    return HostAddress.fromString(`${host}:${port}`);
-  }
-
-  static fromSrvRecord({ name, port }: SrvRecord): HostAddress {
-    return HostAddress.fromHostPort(name, port);
-  }
-
-  toHostPort(): { host: string; port: number } {
-    if (this.socketPath) {
-      return { host: this.socketPath, port: 0 };
-    }
-
-    const host = this.host ?? '';
-    const port = this.port ?? 0;
-    return { host, port };
-  }
-}
-
-export const DEFAULT_PK_FACTORY = {
-  // We prefer not to rely on ObjectId having a createPk method
-  createPk(): ObjectId {
-    return new ObjectId();
-  }
-};
-
-/**
- * When the driver used emitWarning the code will be equal to this.
- * @public
- *
- * @example
- * ```ts
- * process.on('warning', (warning) => {
- *  if (warning.code === MONGODB_WARNING_CODE) console.error('Ah an important warning! :)')
- * })
- * ```
- */
-export const MONGODB_WARNING_CODE = 'MONGODB DRIVER' as const;
-
-/** @internal */
-export function emitWarning(message: string): void {
-  return process.emitWarning(message, { code: MONGODB_WARNING_CODE } as any);
-}
-
-const emittedWarnings = new Set();
-/**
- * Will emit a warning once for the duration of the application.
- * Uses the message to identify if it has already been emitted
- * so using string interpolation can cause multiple emits
- * @internal
- */
-export function emitWarningOnce(message: string): void {
-  if (!emittedWarnings.has(message)) {
-    emittedWarnings.add(message);
-    return emitWarning(message);
-  }
-}
-
-/**
- * Takes a JS object and joins the values into a string separated by ', '
- */
-export function enumToString(en: Record<string, unknown>): string {
-  return Object.values(en).join(', ');
-}
-
-/**
- * Determine if a server supports retryable writes.
- *
- * @internal
- */
-export function supportsRetryableWrites(server?: Server): boolean {
-  if (!server) {
-    return false;
-  }
-
-  if (server.loadBalanced) {
-    // Loadbalanced topologies will always support retry writes
-    return true;
-  }
-
-  if (server.description.logicalSessionTimeoutMinutes != null) {
-    // that supports sessions
-    if (server.description.type !== ServerType.Standalone) {
-      // and that is not a standalone
-      return true;
-    }
-  }
-
-  return false;
-}
-
-/**
- * Fisher–Yates Shuffle
- *
- * Reference: https://bost.ocks.org/mike/shuffle/
- * @param sequence - items to be shuffled
- * @param limit - Defaults to `0`. If nonzero shuffle will slice the randomized array e.g, `.slice(0, limit)` otherwise will return the entire randomized array.
- */
-export function shuffle<T>(sequence: Iterable<T>, limit = 0): Array<T> {
-  const items = Array.from(sequence); // shallow copy in order to never shuffle the input
-
-  if (limit > items.length) {
-    throw new MongoRuntimeError('Limit must be less than the number of items');
-  }
-
-  let remainingItemsToShuffle = items.length;
-  const lowerBound = limit % items.length === 0 ? 1 : items.length - limit;
-  while (remainingItemsToShuffle > lowerBound) {
-    // Pick a remaining element
-    const randomIndex = Math.floor(Math.random() * remainingItemsToShuffle);
-    remainingItemsToShuffle -= 1;
-
-    // And swap it with the current element
-    const swapHold = items[remainingItemsToShuffle];
-    items[remainingItemsToShuffle] = items[randomIndex];
-    items[randomIndex] = swapHold;
-  }
-
-  return limit % items.length === 0 ? items : items.slice(lowerBound);
-}
-
-// TODO(NODE-4936): read concern eligibility for commands should be codified in command construction
-// @see https://github.com/mongodb/specifications/blob/master/source/read-write-concern/read-write-concern.rst#read-concern
-export function commandSupportsReadConcern(command: Document): boolean {
-  if (command.aggregate || command.count || command.distinct || command.find || command.geoNear) {
-    return true;
-  }
-
-  return false;
-}
-
-/**
- * Compare objectIds. `null` is always less
- * - `+1 = oid1 is greater than oid2`
- * - `-1 = oid1 is less than oid2`
- * - `+0 = oid1 is equal oid2`
- */
-export function compareObjectId(oid1?: ObjectId | null, oid2?: ObjectId | null): 0 | 1 | -1 {
-  if (oid1 == null && oid2 == null) {
-    return 0;
-  }
-
-  if (oid1 == null) {
-    return -1;
-  }
-
-  if (oid2 == null) {
-    return 1;
-  }
-
-  return ByteUtils.compare(oid1.id, oid2.id);
-}
-
-export function parseInteger(value: unknown): number | null {
-  if (typeof value === 'number') return Math.trunc(value);
-  const parsedValue = Number.parseInt(String(value), 10);
-
-  return Number.isNaN(parsedValue) ? null : parsedValue;
-}
-
-export function parseUnsignedInteger(value: unknown): number | null {
-  const parsedInt = parseInteger(value);
-
-  return parsedInt != null && parsedInt >= 0 ? parsedInt : null;
-}
-
-/**
- * Determines whether a provided address matches the provided parent domain.
- *
- * If a DNS server were to become compromised SRV records would still need to
- * advertise addresses that are under the same domain as the srvHost.
- *
- * @param address - The address to check against a domain
- * @param srvHost - The domain to check the provided address against
- * @returns Whether the provided address matches the parent domain
- */
-export function matchesParentDomain(address: string, srvHost: string): boolean {
-  // Remove trailing dot if exists on either the resolved address or the srv hostname
-  const normalizedAddress = address.endsWith('.') ? address.slice(0, address.length - 1) : address;
-  const normalizedSrvHost = srvHost.endsWith('.') ? srvHost.slice(0, srvHost.length - 1) : srvHost;
-
-  const allCharacterBeforeFirstDot = /^.*?\./;
-  // Remove all characters before first dot
-  // Add leading dot back to string so
-  //   an srvHostDomain = '.trusted.site'
-  //   will not satisfy an addressDomain that endsWith '.fake-trusted.site'
-  const addressDomain = `.${normalizedAddress.replace(allCharacterBeforeFirstDot, '')}`;
-  const srvHostDomain = `.${normalizedSrvHost.replace(allCharacterBeforeFirstDot, '')}`;
-
-  return addressDomain.endsWith(srvHostDomain);
-}
-
-interface RequestOptions {
-  json?: boolean;
-  method?: string;
-  timeout?: number;
-  headers?: http.OutgoingHttpHeaders;
-}
-
-export async function request(uri: string): Promise<Record<string, any>>;
-export async function request(
-  uri: string,
-  options?: { json?: true } & RequestOptions
-): Promise<Record<string, any>>;
-export async function request(
-  uri: string,
-  options?: { json: false } & RequestOptions
-): Promise<string>;
-export async function request(
-  uri: string,
-  options: RequestOptions = {}
-): Promise<string | Record<string, any>> {
-  return new Promise<string | Record<string, any>>((resolve, reject) => {
-    const requestOptions = {
-      method: 'GET',
-      timeout: 10000,
-      json: true,
-      ...url.parse(uri),
-      ...options
-    };
-
-    const req = http.request(requestOptions, res => {
-      res.setEncoding('utf8');
-
-      let data = '';
-      res.on('data', d => {
-        data += d;
-      });
-
-      res.once('end', () => {
-        if (options.json === false) {
-          resolve(data);
-          return;
-        }
-
-        try {
-          const parsed = JSON.parse(data);
-          resolve(parsed);
-        } catch {
-          // TODO(NODE-3483)
-          reject(new MongoRuntimeError(`Invalid JSON response: "${data}"`));
-        }
-      });
-    });
-
-    req.once('timeout', () =>
-      req.destroy(
-        new MongoNetworkTimeoutError(
-          `Network request to ${uri} timed out after ${options.timeout} ms`
-        )
-      )
-    );
-    req.once('error', error => reject(error));
-    req.end();
-  });
-}
-
-/**
- * A custom AbortController that aborts after a specified timeout.
- *
- * If `timeout` is undefined or \<=0, the abort controller never aborts.
- *
- * This class provides two benefits over the built-in AbortSignal.timeout() method.
- * - This class provides a mechanism for cancelling the timeout
- * - This class supports infinite timeouts by interpreting a timeout of 0 as infinite.  This is
- *    consistent with existing timeout options in the Node driver (serverSelectionTimeoutMS, for example).
- * @internal
- */
-export class TimeoutController extends AbortController {
-  constructor(
-    timeout = 0,
-    private timeoutId = timeout > 0 ? setTimeout(() => this.abort(), timeout) : null
-  ) {
-    super();
-  }
-
-  clear() {
-    if (this.timeoutId != null) {
-      clearTimeout(this.timeoutId);
-    }
-    this.timeoutId = null;
-  }
-}
-
-/** @internal */
-export const DOCUMENT_DB_CHECK = /(\.docdb\.amazonaws\.com$)|(\.docdb-elastic\.amazonaws\.com$)/;
-/** @internal */
-export const COSMOS_DB_CHECK = /\.cosmos\.azure\.com$/;
-
-/** @internal */
-export const DOCUMENT_DB_MSG =
-  'You appear to be connected to a DocumentDB cluster. For more information regarding feature compatibility and support please visit https://www.mongodb.com/supportability/documentdb';
-/** @internal */
-export const COSMOS_DB_MSG =
-  'You appear to be connected to a CosmosDB cluster. For more information regarding feature compatibility and support please visit https://www.mongodb.com/supportability/cosmosdb';
-
-/** @internal */
-export function isHostMatch(match: RegExp, host?: string): boolean {
-  return host && match.test(host.toLowerCase()) ? true : false;
-}
diff --git a/server/data-import/node_modules/mongodb/src/write_concern.ts b/server/data-import/node_modules/mongodb/src/write_concern.ts
deleted file mode 100644
index e3a3f5510e3526545a6a34adde98ab3cc373c257..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/src/write_concern.ts
+++ /dev/null
@@ -1,161 +0,0 @@
-import { type Document } from './bson';
-
-/** @public */
-export type W = number | 'majority';
-
-/** @public */
-export interface WriteConcernOptions {
-  /** Write Concern as an object */
-  writeConcern?: WriteConcern | WriteConcernSettings;
-}
-
-/** @public */
-export interface WriteConcernSettings {
-  /** The write concern */
-  w?: W;
-  /** The write concern timeout */
-  wtimeoutMS?: number;
-  /** The journal write concern */
-  journal?: boolean;
-
-  // legacy options
-  /**
-   * The journal write concern.
-   * @deprecated Will be removed in the next major version. Please use the journal option.
-   */
-  j?: boolean;
-  /**
-   * The write concern timeout.
-   * @deprecated Will be removed in the next major version. Please use the wtimeoutMS option.
-   */
-  wtimeout?: number;
-  /**
-   * The file sync write concern.
-   * @deprecated Will be removed in the next major version. Please use the journal option.
-   */
-  fsync?: boolean | 1;
-}
-
-export const WRITE_CONCERN_KEYS = ['w', 'wtimeout', 'j', 'journal', 'fsync'];
-
-/** The write concern options that decorate the server command. */
-interface CommandWriteConcernOptions {
-  /** The write concern */
-  w?: W;
-  /** The journal write concern. */
-  j?: boolean;
-  /** The write concern timeout. */
-  wtimeout?: number;
-}
-
-/**
- * A MongoDB WriteConcern, which describes the level of acknowledgement
- * requested from MongoDB for write operations.
- * @public
- *
- * @see https://www.mongodb.com/docs/manual/reference/write-concern/
- */
-export class WriteConcern {
-  /** Request acknowledgment that the write operation has propagated to a specified number of mongod instances or to mongod instances with specified tags. */
-  readonly w?: W;
-  /** Request acknowledgment that the write operation has been written to the on-disk journal */
-  readonly journal?: boolean;
-  /** Specify a time limit to prevent write operations from blocking indefinitely */
-  readonly wtimeoutMS?: number;
-  /**
-   * Specify a time limit to prevent write operations from blocking indefinitely.
-   * @deprecated Will be removed in the next major version. Please use wtimeoutMS.
-   */
-  wtimeout?: number;
-  /**
-   * Request acknowledgment that the write operation has been written to the on-disk journal.
-   * @deprecated Will be removed in the next major version. Please use journal.
-   */
-  j?: boolean;
-  /**
-   * Equivalent to the j option.
-   * @deprecated Will be removed in the next major version. Please use journal.
-   */
-  fsync?: boolean | 1;
-
-  /**
-   * Constructs a WriteConcern from the write concern properties.
-   * @param w - request acknowledgment that the write operation has propagated to a specified number of mongod instances or to mongod instances with specified tags.
-   * @param wtimeoutMS - specify a time limit to prevent write operations from blocking indefinitely
-   * @param journal - request acknowledgment that the write operation has been written to the on-disk journal
-   * @param fsync - equivalent to the j option. Is deprecated and will be removed in the next major version.
-   */
-  constructor(w?: W, wtimeoutMS?: number, journal?: boolean, fsync?: boolean | 1) {
-    if (w != null) {
-      if (!Number.isNaN(Number(w))) {
-        this.w = Number(w);
-      } else {
-        this.w = w;
-      }
-    }
-    if (wtimeoutMS != null) {
-      this.wtimeoutMS = this.wtimeout = wtimeoutMS;
-    }
-    if (journal != null) {
-      this.journal = this.j = journal;
-    }
-    if (fsync != null) {
-      this.journal = this.j = fsync ? true : false;
-    }
-  }
-
-  /**
-   * Apply a write concern to a command document. Will modify and return the command.
-   */
-  static apply(command: Document, writeConcern: WriteConcern): Document {
-    const wc: CommandWriteConcernOptions = {};
-    // The write concern document sent to the server has w/wtimeout/j fields.
-    if (writeConcern.w != null) wc.w = writeConcern.w;
-    if (writeConcern.wtimeoutMS != null) wc.wtimeout = writeConcern.wtimeoutMS;
-    if (writeConcern.journal != null) wc.j = writeConcern.j;
-    command.writeConcern = wc;
-    return command;
-  }
-
-  /** Construct a WriteConcern given an options object. */
-  static fromOptions(
-    options?: WriteConcernOptions | WriteConcern | W,
-    inherit?: WriteConcernOptions | WriteConcern
-  ): WriteConcern | undefined {
-    if (options == null) return undefined;
-    inherit = inherit ?? {};
-    let opts: WriteConcernSettings | WriteConcern | undefined;
-    if (typeof options === 'string' || typeof options === 'number') {
-      opts = { w: options };
-    } else if (options instanceof WriteConcern) {
-      opts = options;
-    } else {
-      opts = options.writeConcern;
-    }
-    const parentOpts: WriteConcern | WriteConcernSettings | undefined =
-      inherit instanceof WriteConcern ? inherit : inherit.writeConcern;
-
-    const {
-      w = undefined,
-      wtimeout = undefined,
-      j = undefined,
-      fsync = undefined,
-      journal = undefined,
-      wtimeoutMS = undefined
-    } = {
-      ...parentOpts,
-      ...opts
-    };
-    if (
-      w != null ||
-      wtimeout != null ||
-      wtimeoutMS != null ||
-      j != null ||
-      journal != null ||
-      fsync != null
-    ) {
-      return new WriteConcern(w, wtimeout ?? wtimeoutMS, j ?? journal, fsync);
-    }
-    return undefined;
-  }
-}
diff --git a/server/data-import/node_modules/mongodb/tsconfig.json b/server/data-import/node_modules/mongodb/tsconfig.json
deleted file mode 100644
index 0d08d129980c4fe283fb1464f9d87a63a702fb89..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/mongodb/tsconfig.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "compilerOptions": {
-    "allowJs": true,
-    "checkJs": false,
-    "strict": true,
-    "alwaysStrict": true,
-    "target": "ES2021",
-    "module": "commonJS",
-    "moduleResolution": "node",
-    "skipLibCheck": true,
-    "lib": [
-      "es2021",
-      "ES2022.Error"
-    ],
-    // We don't make use of tslib helpers, all syntax used is supported by target engine
-    "importHelpers": false,
-    "noEmitHelpers": true,
-    // Never emit error filled code
-    "noEmitOnError": true,
-    "outDir": "lib",
-    // We want the sourcemaps in a separate file
-    "inlineSourceMap": false,
-    "sourceMap": true,
-    // API-Extractor uses declaration maps to report problems in source, no need to distribute
-    "declaration": true,
-    "declarationMap": true,
-    // we include sources in the release
-    "inlineSources": false,
-    // Prevents web types from being suggested by vscode.
-    "types": [
-      "node"
-    ],
-    "forceConsistentCasingInFileNames": true,
-    "noImplicitOverride": true,
-    "noImplicitReturns": true,
-    // TODO(NODE-3659): Enable useUnknownInCatchVariables and add type assertions or remove unnecessary catch blocks
-    "useUnknownInCatchVariables": false
-  },
-  "ts-node": {
-    "transpileOnly": true,
-    "compiler": "typescript-cached-transpile"
-  },
-  "include": [
-    "src/**/*"
-  ]
-}
diff --git a/server/data-import/node_modules/punycode/LICENSE-MIT.txt b/server/data-import/node_modules/punycode/LICENSE-MIT.txt
deleted file mode 100644
index a41e0a7ef970ecdd83d82cd99bda97b22077bc62..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/punycode/LICENSE-MIT.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright Mathias Bynens <https://mathiasbynens.be/>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/data-import/node_modules/punycode/README.md b/server/data-import/node_modules/punycode/README.md
deleted file mode 100644
index f611016b01a27ad709e837880d4ddc2f19331ff2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/punycode/README.md
+++ /dev/null
@@ -1,148 +0,0 @@
-# Punycode.js [![punycode on npm](https://img.shields.io/npm/v/punycode)](https://www.npmjs.com/package/punycode) [![](https://data.jsdelivr.com/v1/package/npm/punycode/badge)](https://www.jsdelivr.com/package/npm/punycode)
-
-Punycode.js is a robust Punycode converter that fully complies to [RFC 3492](https://tools.ietf.org/html/rfc3492) and [RFC 5891](https://tools.ietf.org/html/rfc5891).
-
-This JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm:
-
-* [The C example code from RFC 3492](https://tools.ietf.org/html/rfc3492#appendix-C)
-* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c)
-* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c)
-* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287)
-* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072))
-
-This project was [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with Node.js from [v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc) until [v7](https://github.com/nodejs/node/pull/7941) (soft-deprecated).
-
-This project provides a CommonJS module that uses ES2015+ features and JavaScript module, which work in modern Node.js versions and browsers. For the old Punycode.js version that offers the same functionality in a UMD build with support for older pre-ES2015 runtimes, including Rhino, Ringo, and Narwhal, see [v1.4.1](https://github.com/mathiasbynens/punycode.js/releases/tag/v1.4.1).
-
-## Installation
-
-Via [npm](https://www.npmjs.com/):
-
-```bash
-npm install punycode --save
-```
-
-In [Node.js](https://nodejs.org/):
-
-> ⚠️ Note that userland modules don't hide core modules.
-> For example, `require('punycode')` still imports the deprecated core module even if you executed `npm install punycode`.
-> Use `require('punycode/')` to import userland modules rather than core modules.
-
-```js
-const punycode = require('punycode/');
-```
-
-## API
-
-### `punycode.decode(string)`
-
-Converts a Punycode string of ASCII symbols to a string of Unicode symbols.
-
-```js
-// decode domain name parts
-punycode.decode('maana-pta'); // 'mañana'
-punycode.decode('--dqo34k'); // '☃-⌘'
-```
-
-### `punycode.encode(string)`
-
-Converts a string of Unicode symbols to a Punycode string of ASCII symbols.
-
-```js
-// encode domain name parts
-punycode.encode('mañana'); // 'maana-pta'
-punycode.encode('☃-⌘'); // '--dqo34k'
-```
-
-### `punycode.toUnicode(input)`
-
-Converts a Punycode string representing a domain name or an email address to Unicode. Only the Punycoded parts of the input will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode.
-
-```js
-// decode domain names
-punycode.toUnicode('xn--maana-pta.com');
-// → 'mañana.com'
-punycode.toUnicode('xn----dqo34k.com');
-// → '☃-⌘.com'
-
-// decode email addresses
-punycode.toUnicode('джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq');
-// → 'джумла@джpумлатест.bрфa'
-```
-
-### `punycode.toASCII(input)`
-
-Converts a lowercased Unicode string representing a domain name or an email address to Punycode. Only the non-ASCII parts of the input will be converted, i.e. it doesn’t matter if you call it with a domain that’s already in ASCII.
-
-```js
-// encode domain names
-punycode.toASCII('mañana.com');
-// → 'xn--maana-pta.com'
-punycode.toASCII('☃-⌘.com');
-// → 'xn----dqo34k.com'
-
-// encode email addresses
-punycode.toASCII('джумла@джpумлатест.bрфa');
-// → 'джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq'
-```
-
-### `punycode.ucs2`
-
-#### `punycode.ucs2.decode(string)`
-
-Creates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](https://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16.
-
-```js
-punycode.ucs2.decode('abc');
-// → [0x61, 0x62, 0x63]
-// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE:
-punycode.ucs2.decode('\uD834\uDF06');
-// → [0x1D306]
-```
-
-#### `punycode.ucs2.encode(codePoints)`
-
-Creates a string based on an array of numeric code point values.
-
-```js
-punycode.ucs2.encode([0x61, 0x62, 0x63]);
-// → 'abc'
-punycode.ucs2.encode([0x1D306]);
-// → '\uD834\uDF06'
-```
-
-### `punycode.version`
-
-A string representing the current Punycode.js version number.
-
-## For maintainers
-
-### How to publish a new release
-
-1. On the `main` branch, bump the version number in `package.json`:
-
-    ```sh
-    npm version patch -m 'Release v%s'
-    ```
-
-    Instead of `patch`, use `minor` or `major` [as needed](https://semver.org/).
-
-    Note that this produces a Git commit + tag.
-
-1. Push the release commit and tag:
-
-    ```sh
-    git push && git push --tags
-    ```
-
-    Our CI then automatically publishes the new release to npm, under both the [`punycode`](https://www.npmjs.com/package/punycode) and [`punycode.js`](https://www.npmjs.com/package/punycode.js) names.
-
-## Author
-
-| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") |
-|---|
-| [Mathias Bynens](https://mathiasbynens.be/) |
-
-## License
-
-Punycode.js is available under the [MIT](https://mths.be/mit) license.
diff --git a/server/data-import/node_modules/punycode/package.json b/server/data-import/node_modules/punycode/package.json
deleted file mode 100644
index b8b76fc76c2162104f066c6f2330a7cacdee4a72..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/punycode/package.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "name": "punycode",
-  "version": "2.3.1",
-  "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.",
-  "homepage": "https://mths.be/punycode",
-  "main": "punycode.js",
-  "jsnext:main": "punycode.es6.js",
-  "module": "punycode.es6.js",
-  "engines": {
-    "node": ">=6"
-  },
-  "keywords": [
-    "punycode",
-    "unicode",
-    "idn",
-    "idna",
-    "dns",
-    "url",
-    "domain"
-  ],
-  "license": "MIT",
-  "author": {
-    "name": "Mathias Bynens",
-    "url": "https://mathiasbynens.be/"
-  },
-  "contributors": [
-    {
-      "name": "Mathias Bynens",
-      "url": "https://mathiasbynens.be/"
-    }
-  ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mathiasbynens/punycode.js.git"
-  },
-  "bugs": "https://github.com/mathiasbynens/punycode.js/issues",
-  "files": [
-    "LICENSE-MIT.txt",
-    "punycode.js",
-    "punycode.es6.js"
-  ],
-  "scripts": {
-    "test": "mocha tests",
-    "build": "node scripts/prepublish.js"
-  },
-  "devDependencies": {
-    "codecov": "^3.8.3",
-    "nyc": "^15.1.0",
-    "mocha": "^10.2.0"
-  },
-  "jspm": {
-    "map": {
-      "./punycode.js": {
-        "node": "@node/punycode"
-      }
-    }
-  }
-}
diff --git a/server/data-import/node_modules/punycode/punycode.es6.js b/server/data-import/node_modules/punycode/punycode.es6.js
deleted file mode 100644
index dadece25b35f595d717ec52adfc94d23d3b1edda..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/punycode/punycode.es6.js
+++ /dev/null
@@ -1,444 +0,0 @@
-'use strict';
-
-/** Highest positive signed 32-bit float value */
-const maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1
-
-/** Bootstring parameters */
-const base = 36;
-const tMin = 1;
-const tMax = 26;
-const skew = 38;
-const damp = 700;
-const initialBias = 72;
-const initialN = 128; // 0x80
-const delimiter = '-'; // '\x2D'
-
-/** Regular expressions */
-const regexPunycode = /^xn--/;
-const regexNonASCII = /[^\0-\x7F]/; // Note: U+007F DEL is excluded too.
-const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators
-
-/** Error messages */
-const errors = {
-	'overflow': 'Overflow: input needs wider integers to process',
-	'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
-	'invalid-input': 'Invalid input'
-};
-
-/** Convenience shortcuts */
-const baseMinusTMin = base - tMin;
-const floor = Math.floor;
-const stringFromCharCode = String.fromCharCode;
-
-/*--------------------------------------------------------------------------*/
-
-/**
- * A generic error utility function.
- * @private
- * @param {String} type The error type.
- * @returns {Error} Throws a `RangeError` with the applicable error message.
- */
-function error(type) {
-	throw new RangeError(errors[type]);
-}
-
-/**
- * A generic `Array#map` utility function.
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} callback The function that gets called for every array
- * item.
- * @returns {Array} A new array of values returned by the callback function.
- */
-function map(array, callback) {
-	const result = [];
-	let length = array.length;
-	while (length--) {
-		result[length] = callback(array[length]);
-	}
-	return result;
-}
-
-/**
- * A simple `Array#map`-like wrapper to work with domain name strings or email
- * addresses.
- * @private
- * @param {String} domain The domain name or email address.
- * @param {Function} callback The function that gets called for every
- * character.
- * @returns {String} A new string of characters returned by the callback
- * function.
- */
-function mapDomain(domain, callback) {
-	const parts = domain.split('@');
-	let result = '';
-	if (parts.length > 1) {
-		// In email addresses, only the domain name should be punycoded. Leave
-		// the local part (i.e. everything up to `@`) intact.
-		result = parts[0] + '@';
-		domain = parts[1];
-	}
-	// Avoid `split(regex)` for IE8 compatibility. See #17.
-	domain = domain.replace(regexSeparators, '\x2E');
-	const labels = domain.split('.');
-	const encoded = map(labels, callback).join('.');
-	return result + encoded;
-}
-
-/**
- * Creates an array containing the numeric code points of each Unicode
- * character in the string. While JavaScript uses UCS-2 internally,
- * this function will convert a pair of surrogate halves (each of which
- * UCS-2 exposes as separate characters) into a single code point,
- * matching UTF-16.
- * @see `punycode.ucs2.encode`
- * @see <https://mathiasbynens.be/notes/javascript-encoding>
- * @memberOf punycode.ucs2
- * @name decode
- * @param {String} string The Unicode input string (UCS-2).
- * @returns {Array} The new array of code points.
- */
-function ucs2decode(string) {
-	const output = [];
-	let counter = 0;
-	const length = string.length;
-	while (counter < length) {
-		const value = string.charCodeAt(counter++);
-		if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
-			// It's a high surrogate, and there is a next character.
-			const extra = string.charCodeAt(counter++);
-			if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.
-				output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
-			} else {
-				// It's an unmatched surrogate; only append this code unit, in case the
-				// next code unit is the high surrogate of a surrogate pair.
-				output.push(value);
-				counter--;
-			}
-		} else {
-			output.push(value);
-		}
-	}
-	return output;
-}
-
-/**
- * Creates a string based on an array of numeric code points.
- * @see `punycode.ucs2.decode`
- * @memberOf punycode.ucs2
- * @name encode
- * @param {Array} codePoints The array of numeric code points.
- * @returns {String} The new Unicode string (UCS-2).
- */
-const ucs2encode = codePoints => String.fromCodePoint(...codePoints);
-
-/**
- * Converts a basic code point into a digit/integer.
- * @see `digitToBasic()`
- * @private
- * @param {Number} codePoint The basic numeric code point value.
- * @returns {Number} The numeric value of a basic code point (for use in
- * representing integers) in the range `0` to `base - 1`, or `base` if
- * the code point does not represent a value.
- */
-const basicToDigit = function(codePoint) {
-	if (codePoint >= 0x30 && codePoint < 0x3A) {
-		return 26 + (codePoint - 0x30);
-	}
-	if (codePoint >= 0x41 && codePoint < 0x5B) {
-		return codePoint - 0x41;
-	}
-	if (codePoint >= 0x61 && codePoint < 0x7B) {
-		return codePoint - 0x61;
-	}
-	return base;
-};
-
-/**
- * Converts a digit/integer into a basic code point.
- * @see `basicToDigit()`
- * @private
- * @param {Number} digit The numeric value of a basic code point.
- * @returns {Number} The basic code point whose value (when used for
- * representing integers) is `digit`, which needs to be in the range
- * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
- * used; else, the lowercase form is used. The behavior is undefined
- * if `flag` is non-zero and `digit` has no uppercase form.
- */
-const digitToBasic = function(digit, flag) {
-	//  0..25 map to ASCII a..z or A..Z
-	// 26..35 map to ASCII 0..9
-	return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
-};
-
-/**
- * Bias adaptation function as per section 3.4 of RFC 3492.
- * https://tools.ietf.org/html/rfc3492#section-3.4
- * @private
- */
-const adapt = function(delta, numPoints, firstTime) {
-	let k = 0;
-	delta = firstTime ? floor(delta / damp) : delta >> 1;
-	delta += floor(delta / numPoints);
-	for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
-		delta = floor(delta / baseMinusTMin);
-	}
-	return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
-};
-
-/**
- * Converts a Punycode string of ASCII-only symbols to a string of Unicode
- * symbols.
- * @memberOf punycode
- * @param {String} input The Punycode string of ASCII-only symbols.
- * @returns {String} The resulting string of Unicode symbols.
- */
-const decode = function(input) {
-	// Don't use UCS-2.
-	const output = [];
-	const inputLength = input.length;
-	let i = 0;
-	let n = initialN;
-	let bias = initialBias;
-
-	// Handle the basic code points: let `basic` be the number of input code
-	// points before the last delimiter, or `0` if there is none, then copy
-	// the first basic code points to the output.
-
-	let basic = input.lastIndexOf(delimiter);
-	if (basic < 0) {
-		basic = 0;
-	}
-
-	for (let j = 0; j < basic; ++j) {
-		// if it's not a basic code point
-		if (input.charCodeAt(j) >= 0x80) {
-			error('not-basic');
-		}
-		output.push(input.charCodeAt(j));
-	}
-
-	// Main decoding loop: start just after the last delimiter if any basic code
-	// points were copied; start at the beginning otherwise.
-
-	for (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
-
-		// `index` is the index of the next character to be consumed.
-		// Decode a generalized variable-length integer into `delta`,
-		// which gets added to `i`. The overflow checking is easier
-		// if we increase `i` as we go, then subtract off its starting
-		// value at the end to obtain `delta`.
-		const oldi = i;
-		for (let w = 1, k = base; /* no condition */; k += base) {
-
-			if (index >= inputLength) {
-				error('invalid-input');
-			}
-
-			const digit = basicToDigit(input.charCodeAt(index++));
-
-			if (digit >= base) {
-				error('invalid-input');
-			}
-			if (digit > floor((maxInt - i) / w)) {
-				error('overflow');
-			}
-
-			i += digit * w;
-			const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
-
-			if (digit < t) {
-				break;
-			}
-
-			const baseMinusT = base - t;
-			if (w > floor(maxInt / baseMinusT)) {
-				error('overflow');
-			}
-
-			w *= baseMinusT;
-
-		}
-
-		const out = output.length + 1;
-		bias = adapt(i - oldi, out, oldi == 0);
-
-		// `i` was supposed to wrap around from `out` to `0`,
-		// incrementing `n` each time, so we'll fix that now:
-		if (floor(i / out) > maxInt - n) {
-			error('overflow');
-		}
-
-		n += floor(i / out);
-		i %= out;
-
-		// Insert `n` at position `i` of the output.
-		output.splice(i++, 0, n);
-
-	}
-
-	return String.fromCodePoint(...output);
-};
-
-/**
- * Converts a string of Unicode symbols (e.g. a domain name label) to a
- * Punycode string of ASCII-only symbols.
- * @memberOf punycode
- * @param {String} input The string of Unicode symbols.
- * @returns {String} The resulting Punycode string of ASCII-only symbols.
- */
-const encode = function(input) {
-	const output = [];
-
-	// Convert the input in UCS-2 to an array of Unicode code points.
-	input = ucs2decode(input);
-
-	// Cache the length.
-	const inputLength = input.length;
-
-	// Initialize the state.
-	let n = initialN;
-	let delta = 0;
-	let bias = initialBias;
-
-	// Handle the basic code points.
-	for (const currentValue of input) {
-		if (currentValue < 0x80) {
-			output.push(stringFromCharCode(currentValue));
-		}
-	}
-
-	const basicLength = output.length;
-	let handledCPCount = basicLength;
-
-	// `handledCPCount` is the number of code points that have been handled;
-	// `basicLength` is the number of basic code points.
-
-	// Finish the basic string with a delimiter unless it's empty.
-	if (basicLength) {
-		output.push(delimiter);
-	}
-
-	// Main encoding loop:
-	while (handledCPCount < inputLength) {
-
-		// All non-basic code points < n have been handled already. Find the next
-		// larger one:
-		let m = maxInt;
-		for (const currentValue of input) {
-			if (currentValue >= n && currentValue < m) {
-				m = currentValue;
-			}
-		}
-
-		// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
-		// but guard against overflow.
-		const handledCPCountPlusOne = handledCPCount + 1;
-		if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
-			error('overflow');
-		}
-
-		delta += (m - n) * handledCPCountPlusOne;
-		n = m;
-
-		for (const currentValue of input) {
-			if (currentValue < n && ++delta > maxInt) {
-				error('overflow');
-			}
-			if (currentValue === n) {
-				// Represent delta as a generalized variable-length integer.
-				let q = delta;
-				for (let k = base; /* no condition */; k += base) {
-					const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
-					if (q < t) {
-						break;
-					}
-					const qMinusT = q - t;
-					const baseMinusT = base - t;
-					output.push(
-						stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
-					);
-					q = floor(qMinusT / baseMinusT);
-				}
-
-				output.push(stringFromCharCode(digitToBasic(q, 0)));
-				bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);
-				delta = 0;
-				++handledCPCount;
-			}
-		}
-
-		++delta;
-		++n;
-
-	}
-	return output.join('');
-};
-
-/**
- * Converts a Punycode string representing a domain name or an email address
- * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
- * it doesn't matter if you call it on a string that has already been
- * converted to Unicode.
- * @memberOf punycode
- * @param {String} input The Punycoded domain name or email address to
- * convert to Unicode.
- * @returns {String} The Unicode representation of the given Punycode
- * string.
- */
-const toUnicode = function(input) {
-	return mapDomain(input, function(string) {
-		return regexPunycode.test(string)
-			? decode(string.slice(4).toLowerCase())
-			: string;
-	});
-};
-
-/**
- * Converts a Unicode string representing a domain name or an email address to
- * Punycode. Only the non-ASCII parts of the domain name will be converted,
- * i.e. it doesn't matter if you call it with a domain that's already in
- * ASCII.
- * @memberOf punycode
- * @param {String} input The domain name or email address to convert, as a
- * Unicode string.
- * @returns {String} The Punycode representation of the given domain name or
- * email address.
- */
-const toASCII = function(input) {
-	return mapDomain(input, function(string) {
-		return regexNonASCII.test(string)
-			? 'xn--' + encode(string)
-			: string;
-	});
-};
-
-/*--------------------------------------------------------------------------*/
-
-/** Define the public API */
-const punycode = {
-	/**
-	 * A string representing the current Punycode.js version number.
-	 * @memberOf punycode
-	 * @type String
-	 */
-	'version': '2.3.1',
-	/**
-	 * An object of methods to convert from JavaScript's internal character
-	 * representation (UCS-2) to Unicode code points, and back.
-	 * @see <https://mathiasbynens.be/notes/javascript-encoding>
-	 * @memberOf punycode
-	 * @type Object
-	 */
-	'ucs2': {
-		'decode': ucs2decode,
-		'encode': ucs2encode
-	},
-	'decode': decode,
-	'encode': encode,
-	'toASCII': toASCII,
-	'toUnicode': toUnicode
-};
-
-export { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };
-export default punycode;
diff --git a/server/data-import/node_modules/punycode/punycode.js b/server/data-import/node_modules/punycode/punycode.js
deleted file mode 100644
index a1ef251924c81e2cf620132f7765058c690eeb6e..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/punycode/punycode.js
+++ /dev/null
@@ -1,443 +0,0 @@
-'use strict';
-
-/** Highest positive signed 32-bit float value */
-const maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1
-
-/** Bootstring parameters */
-const base = 36;
-const tMin = 1;
-const tMax = 26;
-const skew = 38;
-const damp = 700;
-const initialBias = 72;
-const initialN = 128; // 0x80
-const delimiter = '-'; // '\x2D'
-
-/** Regular expressions */
-const regexPunycode = /^xn--/;
-const regexNonASCII = /[^\0-\x7F]/; // Note: U+007F DEL is excluded too.
-const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators
-
-/** Error messages */
-const errors = {
-	'overflow': 'Overflow: input needs wider integers to process',
-	'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
-	'invalid-input': 'Invalid input'
-};
-
-/** Convenience shortcuts */
-const baseMinusTMin = base - tMin;
-const floor = Math.floor;
-const stringFromCharCode = String.fromCharCode;
-
-/*--------------------------------------------------------------------------*/
-
-/**
- * A generic error utility function.
- * @private
- * @param {String} type The error type.
- * @returns {Error} Throws a `RangeError` with the applicable error message.
- */
-function error(type) {
-	throw new RangeError(errors[type]);
-}
-
-/**
- * A generic `Array#map` utility function.
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} callback The function that gets called for every array
- * item.
- * @returns {Array} A new array of values returned by the callback function.
- */
-function map(array, callback) {
-	const result = [];
-	let length = array.length;
-	while (length--) {
-		result[length] = callback(array[length]);
-	}
-	return result;
-}
-
-/**
- * A simple `Array#map`-like wrapper to work with domain name strings or email
- * addresses.
- * @private
- * @param {String} domain The domain name or email address.
- * @param {Function} callback The function that gets called for every
- * character.
- * @returns {String} A new string of characters returned by the callback
- * function.
- */
-function mapDomain(domain, callback) {
-	const parts = domain.split('@');
-	let result = '';
-	if (parts.length > 1) {
-		// In email addresses, only the domain name should be punycoded. Leave
-		// the local part (i.e. everything up to `@`) intact.
-		result = parts[0] + '@';
-		domain = parts[1];
-	}
-	// Avoid `split(regex)` for IE8 compatibility. See #17.
-	domain = domain.replace(regexSeparators, '\x2E');
-	const labels = domain.split('.');
-	const encoded = map(labels, callback).join('.');
-	return result + encoded;
-}
-
-/**
- * Creates an array containing the numeric code points of each Unicode
- * character in the string. While JavaScript uses UCS-2 internally,
- * this function will convert a pair of surrogate halves (each of which
- * UCS-2 exposes as separate characters) into a single code point,
- * matching UTF-16.
- * @see `punycode.ucs2.encode`
- * @see <https://mathiasbynens.be/notes/javascript-encoding>
- * @memberOf punycode.ucs2
- * @name decode
- * @param {String} string The Unicode input string (UCS-2).
- * @returns {Array} The new array of code points.
- */
-function ucs2decode(string) {
-	const output = [];
-	let counter = 0;
-	const length = string.length;
-	while (counter < length) {
-		const value = string.charCodeAt(counter++);
-		if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
-			// It's a high surrogate, and there is a next character.
-			const extra = string.charCodeAt(counter++);
-			if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.
-				output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
-			} else {
-				// It's an unmatched surrogate; only append this code unit, in case the
-				// next code unit is the high surrogate of a surrogate pair.
-				output.push(value);
-				counter--;
-			}
-		} else {
-			output.push(value);
-		}
-	}
-	return output;
-}
-
-/**
- * Creates a string based on an array of numeric code points.
- * @see `punycode.ucs2.decode`
- * @memberOf punycode.ucs2
- * @name encode
- * @param {Array} codePoints The array of numeric code points.
- * @returns {String} The new Unicode string (UCS-2).
- */
-const ucs2encode = codePoints => String.fromCodePoint(...codePoints);
-
-/**
- * Converts a basic code point into a digit/integer.
- * @see `digitToBasic()`
- * @private
- * @param {Number} codePoint The basic numeric code point value.
- * @returns {Number} The numeric value of a basic code point (for use in
- * representing integers) in the range `0` to `base - 1`, or `base` if
- * the code point does not represent a value.
- */
-const basicToDigit = function(codePoint) {
-	if (codePoint >= 0x30 && codePoint < 0x3A) {
-		return 26 + (codePoint - 0x30);
-	}
-	if (codePoint >= 0x41 && codePoint < 0x5B) {
-		return codePoint - 0x41;
-	}
-	if (codePoint >= 0x61 && codePoint < 0x7B) {
-		return codePoint - 0x61;
-	}
-	return base;
-};
-
-/**
- * Converts a digit/integer into a basic code point.
- * @see `basicToDigit()`
- * @private
- * @param {Number} digit The numeric value of a basic code point.
- * @returns {Number} The basic code point whose value (when used for
- * representing integers) is `digit`, which needs to be in the range
- * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
- * used; else, the lowercase form is used. The behavior is undefined
- * if `flag` is non-zero and `digit` has no uppercase form.
- */
-const digitToBasic = function(digit, flag) {
-	//  0..25 map to ASCII a..z or A..Z
-	// 26..35 map to ASCII 0..9
-	return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
-};
-
-/**
- * Bias adaptation function as per section 3.4 of RFC 3492.
- * https://tools.ietf.org/html/rfc3492#section-3.4
- * @private
- */
-const adapt = function(delta, numPoints, firstTime) {
-	let k = 0;
-	delta = firstTime ? floor(delta / damp) : delta >> 1;
-	delta += floor(delta / numPoints);
-	for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
-		delta = floor(delta / baseMinusTMin);
-	}
-	return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
-};
-
-/**
- * Converts a Punycode string of ASCII-only symbols to a string of Unicode
- * symbols.
- * @memberOf punycode
- * @param {String} input The Punycode string of ASCII-only symbols.
- * @returns {String} The resulting string of Unicode symbols.
- */
-const decode = function(input) {
-	// Don't use UCS-2.
-	const output = [];
-	const inputLength = input.length;
-	let i = 0;
-	let n = initialN;
-	let bias = initialBias;
-
-	// Handle the basic code points: let `basic` be the number of input code
-	// points before the last delimiter, or `0` if there is none, then copy
-	// the first basic code points to the output.
-
-	let basic = input.lastIndexOf(delimiter);
-	if (basic < 0) {
-		basic = 0;
-	}
-
-	for (let j = 0; j < basic; ++j) {
-		// if it's not a basic code point
-		if (input.charCodeAt(j) >= 0x80) {
-			error('not-basic');
-		}
-		output.push(input.charCodeAt(j));
-	}
-
-	// Main decoding loop: start just after the last delimiter if any basic code
-	// points were copied; start at the beginning otherwise.
-
-	for (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
-
-		// `index` is the index of the next character to be consumed.
-		// Decode a generalized variable-length integer into `delta`,
-		// which gets added to `i`. The overflow checking is easier
-		// if we increase `i` as we go, then subtract off its starting
-		// value at the end to obtain `delta`.
-		const oldi = i;
-		for (let w = 1, k = base; /* no condition */; k += base) {
-
-			if (index >= inputLength) {
-				error('invalid-input');
-			}
-
-			const digit = basicToDigit(input.charCodeAt(index++));
-
-			if (digit >= base) {
-				error('invalid-input');
-			}
-			if (digit > floor((maxInt - i) / w)) {
-				error('overflow');
-			}
-
-			i += digit * w;
-			const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
-
-			if (digit < t) {
-				break;
-			}
-
-			const baseMinusT = base - t;
-			if (w > floor(maxInt / baseMinusT)) {
-				error('overflow');
-			}
-
-			w *= baseMinusT;
-
-		}
-
-		const out = output.length + 1;
-		bias = adapt(i - oldi, out, oldi == 0);
-
-		// `i` was supposed to wrap around from `out` to `0`,
-		// incrementing `n` each time, so we'll fix that now:
-		if (floor(i / out) > maxInt - n) {
-			error('overflow');
-		}
-
-		n += floor(i / out);
-		i %= out;
-
-		// Insert `n` at position `i` of the output.
-		output.splice(i++, 0, n);
-
-	}
-
-	return String.fromCodePoint(...output);
-};
-
-/**
- * Converts a string of Unicode symbols (e.g. a domain name label) to a
- * Punycode string of ASCII-only symbols.
- * @memberOf punycode
- * @param {String} input The string of Unicode symbols.
- * @returns {String} The resulting Punycode string of ASCII-only symbols.
- */
-const encode = function(input) {
-	const output = [];
-
-	// Convert the input in UCS-2 to an array of Unicode code points.
-	input = ucs2decode(input);
-
-	// Cache the length.
-	const inputLength = input.length;
-
-	// Initialize the state.
-	let n = initialN;
-	let delta = 0;
-	let bias = initialBias;
-
-	// Handle the basic code points.
-	for (const currentValue of input) {
-		if (currentValue < 0x80) {
-			output.push(stringFromCharCode(currentValue));
-		}
-	}
-
-	const basicLength = output.length;
-	let handledCPCount = basicLength;
-
-	// `handledCPCount` is the number of code points that have been handled;
-	// `basicLength` is the number of basic code points.
-
-	// Finish the basic string with a delimiter unless it's empty.
-	if (basicLength) {
-		output.push(delimiter);
-	}
-
-	// Main encoding loop:
-	while (handledCPCount < inputLength) {
-
-		// All non-basic code points < n have been handled already. Find the next
-		// larger one:
-		let m = maxInt;
-		for (const currentValue of input) {
-			if (currentValue >= n && currentValue < m) {
-				m = currentValue;
-			}
-		}
-
-		// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
-		// but guard against overflow.
-		const handledCPCountPlusOne = handledCPCount + 1;
-		if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
-			error('overflow');
-		}
-
-		delta += (m - n) * handledCPCountPlusOne;
-		n = m;
-
-		for (const currentValue of input) {
-			if (currentValue < n && ++delta > maxInt) {
-				error('overflow');
-			}
-			if (currentValue === n) {
-				// Represent delta as a generalized variable-length integer.
-				let q = delta;
-				for (let k = base; /* no condition */; k += base) {
-					const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
-					if (q < t) {
-						break;
-					}
-					const qMinusT = q - t;
-					const baseMinusT = base - t;
-					output.push(
-						stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
-					);
-					q = floor(qMinusT / baseMinusT);
-				}
-
-				output.push(stringFromCharCode(digitToBasic(q, 0)));
-				bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);
-				delta = 0;
-				++handledCPCount;
-			}
-		}
-
-		++delta;
-		++n;
-
-	}
-	return output.join('');
-};
-
-/**
- * Converts a Punycode string representing a domain name or an email address
- * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
- * it doesn't matter if you call it on a string that has already been
- * converted to Unicode.
- * @memberOf punycode
- * @param {String} input The Punycoded domain name or email address to
- * convert to Unicode.
- * @returns {String} The Unicode representation of the given Punycode
- * string.
- */
-const toUnicode = function(input) {
-	return mapDomain(input, function(string) {
-		return regexPunycode.test(string)
-			? decode(string.slice(4).toLowerCase())
-			: string;
-	});
-};
-
-/**
- * Converts a Unicode string representing a domain name or an email address to
- * Punycode. Only the non-ASCII parts of the domain name will be converted,
- * i.e. it doesn't matter if you call it with a domain that's already in
- * ASCII.
- * @memberOf punycode
- * @param {String} input The domain name or email address to convert, as a
- * Unicode string.
- * @returns {String} The Punycode representation of the given domain name or
- * email address.
- */
-const toASCII = function(input) {
-	return mapDomain(input, function(string) {
-		return regexNonASCII.test(string)
-			? 'xn--' + encode(string)
-			: string;
-	});
-};
-
-/*--------------------------------------------------------------------------*/
-
-/** Define the public API */
-const punycode = {
-	/**
-	 * A string representing the current Punycode.js version number.
-	 * @memberOf punycode
-	 * @type String
-	 */
-	'version': '2.3.1',
-	/**
-	 * An object of methods to convert from JavaScript's internal character
-	 * representation (UCS-2) to Unicode code points, and back.
-	 * @see <https://mathiasbynens.be/notes/javascript-encoding>
-	 * @memberOf punycode
-	 * @type Object
-	 */
-	'ucs2': {
-		'decode': ucs2decode,
-		'encode': ucs2encode
-	},
-	'decode': decode,
-	'encode': encode,
-	'toASCII': toASCII,
-	'toUnicode': toUnicode
-};
-
-module.exports = punycode;
diff --git a/server/data-import/node_modules/sparse-bitfield/.npmignore b/server/data-import/node_modules/sparse-bitfield/.npmignore
deleted file mode 100644
index 3c3629e647f5ddf82548912e337bea9826b434af..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/sparse-bitfield/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/server/data-import/node_modules/sparse-bitfield/.travis.yml b/server/data-import/node_modules/sparse-bitfield/.travis.yml
deleted file mode 100644
index c0428217037e472e73fc90e620d9f71bae940c31..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/sparse-bitfield/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-language: node_js
-node_js:
-  - '0.10'
-  - '0.12'
-  - '4.0'
-  - '5.0'
diff --git a/server/data-import/node_modules/sparse-bitfield/LICENSE b/server/data-import/node_modules/sparse-bitfield/LICENSE
deleted file mode 100644
index bae9da7bfae2b5e22cfb0945b362b23ca822c8bb..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/sparse-bitfield/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 Mathias Buus
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/server/data-import/node_modules/sparse-bitfield/README.md b/server/data-import/node_modules/sparse-bitfield/README.md
deleted file mode 100644
index 7b6b8f9ed33bc995571f0138ac1450b7420a6642..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/sparse-bitfield/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-# sparse-bitfield
-
-Bitfield implementation that allocates a series of 1kb buffers to support sparse bitfields
-without allocating a massive buffer. If you want to simple implementation of a flat bitfield
-see the [bitfield](https://github.com/fb55/bitfield) module.
-
-This module is mostly useful if you need a big bitfield where you won't nessecarily set every bit.
-
-```
-npm install sparse-bitfield
-```
-
-[![build status](http://img.shields.io/travis/mafintosh/sparse-bitfield.svg?style=flat)](http://travis-ci.org/mafintosh/sparse-bitfield)
-
-## Usage
-
-``` js
-var bitfield = require('sparse-bitfield')
-var bits = bitfield()
-
-bits.set(0, true) // set first bit
-bits.set(1, true) // set second bit
-bits.set(1000000000000, true) // set the 1.000.000.000.000th bit
-```
-
-Running the above example will allocate two 1kb buffers internally.
-Each 1kb buffer can hold information about 8192 bits so the first one will be used to store information about the first two bits and the second will be used to store the 1.000.000.000.000th bit.
-
-## API
-
-#### `var bits = bitfield([options])`
-
-Create a new bitfield. Options include
-
-``` js
-{
-  pageSize: 1024, // how big should the partial buffers be
-  buffer: anExistingBitfield,
-  trackUpdates: false // track when pages are being updated in the pager
-}
-```
-
-#### `bits.set(index, value)`
-
-Set a bit to true or false.
-
-#### `bits.get(index)`
-
-Get the value of a bit.
-
-#### `bits.pages`
-
-A [memory-pager](https://github.com/mafintosh/memory-pager) instance that is managing the underlying memory.
-If you set `trackUpdates` to true in the constructor you can use `.lastUpdate()` on this instance to get the last updated memory page.
-
-#### `var buffer = bits.toBuffer()`
-
-Get a single buffer representing the entire bitfield.
-
-## License
-
-MIT
diff --git a/server/data-import/node_modules/sparse-bitfield/index.js b/server/data-import/node_modules/sparse-bitfield/index.js
deleted file mode 100644
index ff458c974fcd4e6051b44b3ae2e4674c3ce70b01..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/sparse-bitfield/index.js
+++ /dev/null
@@ -1,95 +0,0 @@
-var pager = require('memory-pager')
-
-module.exports = Bitfield
-
-function Bitfield (opts) {
-  if (!(this instanceof Bitfield)) return new Bitfield(opts)
-  if (!opts) opts = {}
-  if (Buffer.isBuffer(opts)) opts = {buffer: opts}
-
-  this.pageOffset = opts.pageOffset || 0
-  this.pageSize = opts.pageSize || 1024
-  this.pages = opts.pages || pager(this.pageSize)
-
-  this.byteLength = this.pages.length * this.pageSize
-  this.length = 8 * this.byteLength
-
-  if (!powerOfTwo(this.pageSize)) throw new Error('The page size should be a power of two')
-
-  this._trackUpdates = !!opts.trackUpdates
-  this._pageMask = this.pageSize - 1
-
-  if (opts.buffer) {
-    for (var i = 0; i < opts.buffer.length; i += this.pageSize) {
-      this.pages.set(i / this.pageSize, opts.buffer.slice(i, i + this.pageSize))
-    }
-    this.byteLength = opts.buffer.length
-    this.length = 8 * this.byteLength
-  }
-}
-
-Bitfield.prototype.get = function (i) {
-  var o = i & 7
-  var j = (i - o) / 8
-
-  return !!(this.getByte(j) & (128 >> o))
-}
-
-Bitfield.prototype.getByte = function (i) {
-  var o = i & this._pageMask
-  var j = (i - o) / this.pageSize
-  var page = this.pages.get(j, true)
-
-  return page ? page.buffer[o + this.pageOffset] : 0
-}
-
-Bitfield.prototype.set = function (i, v) {
-  var o = i & 7
-  var j = (i - o) / 8
-  var b = this.getByte(j)
-
-  return this.setByte(j, v ? b | (128 >> o) : b & (255 ^ (128 >> o)))
-}
-
-Bitfield.prototype.toBuffer = function () {
-  var all = alloc(this.pages.length * this.pageSize)
-
-  for (var i = 0; i < this.pages.length; i++) {
-    var next = this.pages.get(i, true)
-    var allOffset = i * this.pageSize
-    if (next) next.buffer.copy(all, allOffset, this.pageOffset, this.pageOffset + this.pageSize)
-  }
-
-  return all
-}
-
-Bitfield.prototype.setByte = function (i, b) {
-  var o = i & this._pageMask
-  var j = (i - o) / this.pageSize
-  var page = this.pages.get(j, false)
-
-  o += this.pageOffset
-
-  if (page.buffer[o] === b) return false
-  page.buffer[o] = b
-
-  if (i >= this.byteLength) {
-    this.byteLength = i + 1
-    this.length = this.byteLength * 8
-  }
-
-  if (this._trackUpdates) this.pages.updated(page)
-
-  return true
-}
-
-function alloc (n) {
-  if (Buffer.alloc) return Buffer.alloc(n)
-  var b = new Buffer(n)
-  b.fill(0)
-  return b
-}
-
-function powerOfTwo (x) {
-  return !(x & (x - 1))
-}
diff --git a/server/data-import/node_modules/sparse-bitfield/package.json b/server/data-import/node_modules/sparse-bitfield/package.json
deleted file mode 100644
index 092a23f61733e43de499a599f591362523243032..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/sparse-bitfield/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-  "name": "sparse-bitfield",
-  "version": "3.0.3",
-  "description": "Bitfield that allocates a series of small buffers to support sparse bits without allocating a massive buffer",
-  "main": "index.js",
-  "dependencies": {
-    "memory-pager": "^1.0.2"
-  },
-  "devDependencies": {
-    "buffer-alloc": "^1.1.0",
-    "standard": "^9.0.0",
-    "tape": "^4.6.3"
-  },
-  "scripts": {
-    "test": "standard && tape test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mafintosh/sparse-bitfield.git"
-  },
-  "author": "Mathias Buus (@mafintosh)",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/mafintosh/sparse-bitfield/issues"
-  },
-  "homepage": "https://github.com/mafintosh/sparse-bitfield"
-}
diff --git a/server/data-import/node_modules/sparse-bitfield/test.js b/server/data-import/node_modules/sparse-bitfield/test.js
deleted file mode 100644
index ae42ef467309493e2a01cc51d567fae98382b5d4..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/sparse-bitfield/test.js
+++ /dev/null
@@ -1,79 +0,0 @@
-var alloc = require('buffer-alloc')
-var tape = require('tape')
-var bitfield = require('./')
-
-tape('set and get', function (t) {
-  var bits = bitfield()
-
-  t.same(bits.get(0), false, 'first bit is false')
-  bits.set(0, true)
-  t.same(bits.get(0), true, 'first bit is true')
-  t.same(bits.get(1), false, 'second bit is false')
-  bits.set(0, false)
-  t.same(bits.get(0), false, 'first bit is reset')
-  t.end()
-})
-
-tape('set large and get', function (t) {
-  var bits = bitfield()
-
-  t.same(bits.get(9999999999999), false, 'large bit is false')
-  bits.set(9999999999999, true)
-  t.same(bits.get(9999999999999), true, 'large bit is true')
-  t.same(bits.get(9999999999999 + 1), false, 'large bit + 1 is false')
-  bits.set(9999999999999, false)
-  t.same(bits.get(9999999999999), false, 'large bit is reset')
-  t.end()
-})
-
-tape('get and set buffer', function (t) {
-  var bits = bitfield({trackUpdates: true})
-
-  t.same(bits.pages.get(0, true), undefined)
-  t.same(bits.pages.get(Math.floor(9999999999999 / 8 / 1024), true), undefined)
-  bits.set(9999999999999, true)
-
-  var bits2 = bitfield()
-  var upd = bits.pages.lastUpdate()
-  bits2.pages.set(Math.floor(upd.offset / 1024), upd.buffer)
-  t.same(bits2.get(9999999999999), true, 'bit is set')
-  t.end()
-})
-
-tape('toBuffer', function (t) {
-  var bits = bitfield()
-
-  t.same(bits.toBuffer(), alloc(0))
-
-  bits.set(0, true)
-
-  t.same(bits.toBuffer(), bits.pages.get(0).buffer)
-
-  bits.set(9000, true)
-
-  t.same(bits.toBuffer(), Buffer.concat([bits.pages.get(0).buffer, bits.pages.get(1).buffer]))
-  t.end()
-})
-
-tape('pass in buffer', function (t) {
-  var bits = bitfield()
-
-  bits.set(0, true)
-  bits.set(9000, true)
-
-  var clone = bitfield(bits.toBuffer())
-
-  t.same(clone.get(0), true)
-  t.same(clone.get(9000), true)
-  t.end()
-})
-
-tape('set small buffer', function (t) {
-  var buf = alloc(1)
-  buf[0] = 255
-  var bits = bitfield(buf)
-
-  t.same(bits.get(0), true)
-  t.same(bits.pages.get(0).buffer.length, bits.pageSize)
-  t.end()
-})
diff --git a/server/data-import/node_modules/tr46/LICENSE.md b/server/data-import/node_modules/tr46/LICENSE.md
deleted file mode 100644
index 62c0de28a830d3ae3a006c9e1e7df19067e409a7..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/tr46/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sebastian Mayr
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/server/data-import/node_modules/tr46/README.md b/server/data-import/node_modules/tr46/README.md
deleted file mode 100644
index f4f7607aef575bb3bbf514d87fe9986bd274dfb2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/tr46/README.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# tr46
-
-An JavaScript implementation of [Unicode Technical Standard #46: Unicode IDNA Compatibility Processing](https://unicode.org/reports/tr46/).
-
-## API
-
-### `toASCII(domainName[, options])`
-
-Converts a string of Unicode symbols to a case-folded Punycode string of ASCII symbols.
-
-Available options:
-
-* [`checkBidi`](#checkBidi)
-* [`checkHyphens`](#checkHyphens)
-* [`checkJoiners`](#checkJoiners)
-* [`processingOption`](#processingOption)
-* [`useSTD3ASCIIRules`](#useSTD3ASCIIRules)
-* [`verifyDNSLength`](#verifyDNSLength)
-
-### `toUnicode(domainName[, options])`
-
-Converts a case-folded Punycode string of ASCII symbols to a string of Unicode symbols.
-
-Available options:
-
-* [`checkBidi`](#checkBidi)
-* [`checkHyphens`](#checkHyphens)
-* [`checkJoiners`](#checkJoiners)
-* [`processingOption`](#processingOption)
-* [`useSTD3ASCIIRules`](#useSTD3ASCIIRules)
-
-## Options
-
-### `checkBidi`
-
-Type: `boolean`
-Default value: `false`
-When set to `true`, any bi-directional text within the input will be checked for validation.
-
-### `checkHyphens`
-
-Type: `boolean`
-Default value: `false`
-When set to `true`, the positions of any hyphen characters within the input will be checked for validation.
-
-### `checkJoiners`
-
-Type: `boolean`
-Default value: `false`
-When set to `true`, any word joiner characters within the input will be checked for validation.
-
-### `processingOption`
-
-Type: `string`
-Default value: `"nontransitional"`
-When set to `"transitional"`, symbols within the input will be validated according to the older IDNA2003 protocol. When set to `"nontransitional"`, the current IDNA2008 protocol will be used.
-
-### `useSTD3ASCIIRules`
-
-Type: `boolean`
-Default value: `false`
-When set to `true`, input will be validated according to [STD3 Rules](http://unicode.org/reports/tr46/#STD3_Rules).
-
-### `verifyDNSLength`
-
-Type: `boolean`
-Default value: `false`
-When set to `true`, the length of each DNS label within the input will be checked for validation.
diff --git a/server/data-import/node_modules/tr46/index.js b/server/data-import/node_modules/tr46/index.js
deleted file mode 100644
index 518eb10b6ee3425419b58777c3a12beafa9a2fd6..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/tr46/index.js
+++ /dev/null
@@ -1,300 +0,0 @@
-"use strict";
-
-const punycode = require("punycode/");
-const regexes = require("./lib/regexes.js");
-const mappingTable = require("./lib/mappingTable.json");
-const { STATUS_MAPPING } = require("./lib/statusMapping.js");
-
-function containsNonASCII(str) {
-  return /[^\x00-\x7F]/u.test(str);
-}
-
-function findStatus(val, { useSTD3ASCIIRules }) {
-  let start = 0;
-  let end = mappingTable.length - 1;
-
-  while (start <= end) {
-    const mid = Math.floor((start + end) / 2);
-
-    const target = mappingTable[mid];
-    const min = Array.isArray(target[0]) ? target[0][0] : target[0];
-    const max = Array.isArray(target[0]) ? target[0][1] : target[0];
-
-    if (min <= val && max >= val) {
-      if (useSTD3ASCIIRules &&
-          (target[1] === STATUS_MAPPING.disallowed_STD3_valid || target[1] === STATUS_MAPPING.disallowed_STD3_mapped)) {
-        return [STATUS_MAPPING.disallowed, ...target.slice(2)];
-      } else if (target[1] === STATUS_MAPPING.disallowed_STD3_valid) {
-        return [STATUS_MAPPING.valid, ...target.slice(2)];
-      } else if (target[1] === STATUS_MAPPING.disallowed_STD3_mapped) {
-        return [STATUS_MAPPING.mapped, ...target.slice(2)];
-      }
-
-      return target.slice(1);
-    } else if (min > val) {
-      end = mid - 1;
-    } else {
-      start = mid + 1;
-    }
-  }
-
-  return null;
-}
-
-function mapChars(domainName, { useSTD3ASCIIRules, processingOption }) {
-  let hasError = false;
-  let processed = "";
-
-  for (const ch of domainName) {
-    const [status, mapping] = findStatus(ch.codePointAt(0), { useSTD3ASCIIRules });
-
-    switch (status) {
-      case STATUS_MAPPING.disallowed:
-        hasError = true;
-        processed += ch;
-        break;
-      case STATUS_MAPPING.ignored:
-        break;
-      case STATUS_MAPPING.mapped:
-        processed += mapping;
-        break;
-      case STATUS_MAPPING.deviation:
-        if (processingOption === "transitional") {
-          processed += mapping;
-        } else {
-          processed += ch;
-        }
-        break;
-      case STATUS_MAPPING.valid:
-        processed += ch;
-        break;
-    }
-  }
-
-  return {
-    string: processed,
-    error: hasError
-  };
-}
-
-function validateLabel(label, { checkHyphens, checkBidi, checkJoiners, processingOption, useSTD3ASCIIRules }) {
-  if (label.normalize("NFC") !== label) {
-    return false;
-  }
-
-  const codePoints = Array.from(label);
-
-  if (checkHyphens) {
-    if ((codePoints[2] === "-" && codePoints[3] === "-") ||
-        (label.startsWith("-") || label.endsWith("-"))) {
-      return false;
-    }
-  }
-
-  if (label.includes(".") ||
-      (codePoints.length > 0 && regexes.combiningMarks.test(codePoints[0]))) {
-    return false;
-  }
-
-  for (const ch of codePoints) {
-    const [status] = findStatus(ch.codePointAt(0), { useSTD3ASCIIRules });
-    if ((processingOption === "transitional" && status !== STATUS_MAPPING.valid) ||
-        (processingOption === "nontransitional" &&
-         status !== STATUS_MAPPING.valid && status !== STATUS_MAPPING.deviation)) {
-      return false;
-    }
-  }
-
-  // https://tools.ietf.org/html/rfc5892#appendix-A
-  if (checkJoiners) {
-    let last = 0;
-    for (const [i, ch] of codePoints.entries()) {
-      if (ch === "\u200C" || ch === "\u200D") {
-        if (i > 0) {
-          if (regexes.combiningClassVirama.test(codePoints[i - 1])) {
-            continue;
-          }
-          if (ch === "\u200C") {
-            // TODO: make this more efficient
-            const next = codePoints.indexOf("\u200C", i + 1);
-            const test = next < 0 ? codePoints.slice(last) : codePoints.slice(last, next);
-            if (regexes.validZWNJ.test(test.join(""))) {
-              last = i + 1;
-              continue;
-            }
-          }
-        }
-        return false;
-      }
-    }
-  }
-
-  // https://tools.ietf.org/html/rfc5893#section-2
-  // For the codePoints length check, see discussion in https://github.com/jsdom/whatwg-url/pull/250 and the second item
-  // in https://github.com/whatwg/url/issues/744.
-  if (checkBidi && codePoints.length > 0) {
-    let rtl;
-
-    // 1
-    if (regexes.bidiS1LTR.test(codePoints[0])) {
-      rtl = false;
-    } else if (regexes.bidiS1RTL.test(codePoints[0])) {
-      rtl = true;
-    } else {
-      return false;
-    }
-
-    if (rtl) {
-      // 2-4
-      if (!regexes.bidiS2.test(label) ||
-          !regexes.bidiS3.test(label) ||
-          (regexes.bidiS4EN.test(label) && regexes.bidiS4AN.test(label))) {
-        return false;
-      }
-    } else if (!regexes.bidiS5.test(label) ||
-               !regexes.bidiS6.test(label)) { // 5-6
-      return false;
-    }
-  }
-
-  return true;
-}
-
-function isBidiDomain(labels) {
-  const domain = labels.map(label => {
-    if (label.startsWith("xn--")) {
-      try {
-        return punycode.decode(label.substring(4));
-      } catch (err) {
-        return "";
-      }
-    }
-    return label;
-  }).join(".");
-  return regexes.bidiDomain.test(domain);
-}
-
-function processing(domainName, options) {
-  const { processingOption } = options;
-
-  // 1. Map.
-  let { string, error } = mapChars(domainName, options);
-
-  // 2. Normalize.
-  string = string.normalize("NFC");
-
-  // 3. Break.
-  const labels = string.split(".");
-  const isBidi = isBidiDomain(labels);
-
-  // 4. Convert/Validate.
-  for (const [i, origLabel] of labels.entries()) {
-    let label = origLabel;
-    let curProcessing = processingOption;
-    if (label.startsWith("xn--")) {
-      try {
-        label = punycode.decode(label.substring(4));
-        labels[i] = label;
-      } catch (err) {
-        error = true;
-        continue;
-      }
-      curProcessing = "nontransitional";
-    }
-
-    // No need to validate if we already know there is an error.
-    if (error) {
-      continue;
-    }
-    const validation = validateLabel(label, {
-      ...options,
-      processingOption: curProcessing,
-      checkBidi: options.checkBidi && isBidi
-    });
-    if (!validation) {
-      error = true;
-    }
-  }
-
-  return {
-    string: labels.join("."),
-    error
-  };
-}
-
-function toASCII(domainName, {
-  checkHyphens = false,
-  checkBidi = false,
-  checkJoiners = false,
-  useSTD3ASCIIRules = false,
-  processingOption = "nontransitional",
-  verifyDNSLength = false
-} = {}) {
-  if (processingOption !== "transitional" && processingOption !== "nontransitional") {
-    throw new RangeError("processingOption must be either transitional or nontransitional");
-  }
-
-  const result = processing(domainName, {
-    processingOption,
-    checkHyphens,
-    checkBidi,
-    checkJoiners,
-    useSTD3ASCIIRules
-  });
-  let labels = result.string.split(".");
-  labels = labels.map(l => {
-    if (containsNonASCII(l)) {
-      try {
-        return `xn--${punycode.encode(l)}`;
-      } catch (e) {
-        result.error = true;
-      }
-    }
-    return l;
-  });
-
-  if (verifyDNSLength) {
-    const total = labels.join(".").length;
-    if (total > 253 || total === 0) {
-      result.error = true;
-    }
-
-    for (let i = 0; i < labels.length; ++i) {
-      if (labels[i].length > 63 || labels[i].length === 0) {
-        result.error = true;
-        break;
-      }
-    }
-  }
-
-  if (result.error) {
-    return null;
-  }
-  return labels.join(".");
-}
-
-function toUnicode(domainName, {
-  checkHyphens = false,
-  checkBidi = false,
-  checkJoiners = false,
-  useSTD3ASCIIRules = false,
-  processingOption = "nontransitional"
-} = {}) {
-  const result = processing(domainName, {
-    processingOption,
-    checkHyphens,
-    checkBidi,
-    checkJoiners,
-    useSTD3ASCIIRules
-  });
-
-  return {
-    domain: result.string,
-    error: result.error
-  };
-}
-
-module.exports = {
-  toASCII,
-  toUnicode
-};
diff --git a/server/data-import/node_modules/tr46/lib/mappingTable.json b/server/data-import/node_modules/tr46/lib/mappingTable.json
deleted file mode 100644
index 483ca3b9d879fec0629f008c95c8a894f66a8755..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/tr46/lib/mappingTable.json
+++ /dev/null
@@ -1 +0,0 @@
-[[[0,44],4],[[45,46],2],[47,4],[[48,57],2],[[58,64],4],[65,1,"a"],[66,1,"b"],[67,1,"c"],[68,1,"d"],[69,1,"e"],[70,1,"f"],[71,1,"g"],[72,1,"h"],[73,1,"i"],[74,1,"j"],[75,1,"k"],[76,1,"l"],[77,1,"m"],[78,1,"n"],[79,1,"o"],[80,1,"p"],[81,1,"q"],[82,1,"r"],[83,1,"s"],[84,1,"t"],[85,1,"u"],[86,1,"v"],[87,1,"w"],[88,1,"x"],[89,1,"y"],[90,1,"z"],[[91,96],4],[[97,122],2],[[123,127],4],[[128,159],3],[160,5," "],[[161,167],2],[168,5," ̈"],[169,2],[170,1,"a"],[[171,172],2],[173,7],[174,2],[175,5," ̄"],[[176,177],2],[178,1,"2"],[179,1,"3"],[180,5," ́"],[181,1,"μ"],[182,2],[183,2],[184,5," ̧"],[185,1,"1"],[186,1,"o"],[187,2],[188,1,"1⁄4"],[189,1,"1⁄2"],[190,1,"3⁄4"],[191,2],[192,1,"à"],[193,1,"á"],[194,1,"â"],[195,1,"ã"],[196,1,"ä"],[197,1,"å"],[198,1,"æ"],[199,1,"ç"],[200,1,"è"],[201,1,"é"],[202,1,"ê"],[203,1,"ë"],[204,1,"ì"],[205,1,"í"],[206,1,"î"],[207,1,"ï"],[208,1,"ð"],[209,1,"ñ"],[210,1,"ò"],[211,1,"ó"],[212,1,"ô"],[213,1,"õ"],[214,1,"ö"],[215,2],[216,1,"ø"],[217,1,"ù"],[218,1,"ú"],[219,1,"û"],[220,1,"ü"],[221,1,"ý"],[222,1,"þ"],[223,6,"ss"],[[224,246],2],[247,2],[[248,255],2],[256,1,"ā"],[257,2],[258,1,"ă"],[259,2],[260,1,"ą"],[261,2],[262,1,"ć"],[263,2],[264,1,"ĉ"],[265,2],[266,1,"ċ"],[267,2],[268,1,"č"],[269,2],[270,1,"ď"],[271,2],[272,1,"đ"],[273,2],[274,1,"ē"],[275,2],[276,1,"ĕ"],[277,2],[278,1,"ė"],[279,2],[280,1,"ę"],[281,2],[282,1,"ě"],[283,2],[284,1,"ĝ"],[285,2],[286,1,"ğ"],[287,2],[288,1,"ġ"],[289,2],[290,1,"ģ"],[291,2],[292,1,"ĥ"],[293,2],[294,1,"ħ"],[295,2],[296,1,"ĩ"],[297,2],[298,1,"ī"],[299,2],[300,1,"ĭ"],[301,2],[302,1,"į"],[303,2],[304,1,"i̇"],[305,2],[[306,307],1,"ij"],[308,1,"ĵ"],[309,2],[310,1,"ķ"],[[311,312],2],[313,1,"ĺ"],[314,2],[315,1,"ļ"],[316,2],[317,1,"ľ"],[318,2],[[319,320],1,"l·"],[321,1,"ł"],[322,2],[323,1,"ń"],[324,2],[325,1,"ņ"],[326,2],[327,1,"ň"],[328,2],[329,1,"ʼn"],[330,1,"ŋ"],[331,2],[332,1,"ō"],[333,2],[334,1,"ŏ"],[335,2],[336,1,"ő"],[337,2],[338,1,"œ"],[339,2],[340,1,"ŕ"],[341,2],[342,1,"ŗ"],[343,2],[344,1,"ř"],[345,2],[346,1,"ś"],[347,2],[348,1,"ŝ"],[349,2],[350,1,"ş"],[351,2],[352,1,"š"],[353,2],[354,1,"ţ"],[355,2],[356,1,"ť"],[357,2],[358,1,"ŧ"],[359,2],[360,1,"ũ"],[361,2],[362,1,"ū"],[363,2],[364,1,"ŭ"],[365,2],[366,1,"ů"],[367,2],[368,1,"ű"],[369,2],[370,1,"ų"],[371,2],[372,1,"ŵ"],[373,2],[374,1,"ŷ"],[375,2],[376,1,"ÿ"],[377,1,"ź"],[378,2],[379,1,"ż"],[380,2],[381,1,"ž"],[382,2],[383,1,"s"],[384,2],[385,1,"ɓ"],[386,1,"ƃ"],[387,2],[388,1,"ƅ"],[389,2],[390,1,"ɔ"],[391,1,"ƈ"],[392,2],[393,1,"ɖ"],[394,1,"ɗ"],[395,1,"ƌ"],[[396,397],2],[398,1,"ǝ"],[399,1,"ə"],[400,1,"ɛ"],[401,1,"ƒ"],[402,2],[403,1,"ɠ"],[404,1,"ɣ"],[405,2],[406,1,"ɩ"],[407,1,"ɨ"],[408,1,"ƙ"],[[409,411],2],[412,1,"ɯ"],[413,1,"ɲ"],[414,2],[415,1,"ɵ"],[416,1,"ơ"],[417,2],[418,1,"ƣ"],[419,2],[420,1,"ƥ"],[421,2],[422,1,"ʀ"],[423,1,"ƨ"],[424,2],[425,1,"ʃ"],[[426,427],2],[428,1,"ƭ"],[429,2],[430,1,"ʈ"],[431,1,"ư"],[432,2],[433,1,"ʊ"],[434,1,"ʋ"],[435,1,"ƴ"],[436,2],[437,1,"ƶ"],[438,2],[439,1,"ʒ"],[440,1,"ƹ"],[[441,443],2],[444,1,"ƽ"],[[445,451],2],[[452,454],1,"dž"],[[455,457],1,"lj"],[[458,460],1,"nj"],[461,1,"ǎ"],[462,2],[463,1,"ǐ"],[464,2],[465,1,"ǒ"],[466,2],[467,1,"ǔ"],[468,2],[469,1,"ǖ"],[470,2],[471,1,"ǘ"],[472,2],[473,1,"ǚ"],[474,2],[475,1,"ǜ"],[[476,477],2],[478,1,"ǟ"],[479,2],[480,1,"ǡ"],[481,2],[482,1,"ǣ"],[483,2],[484,1,"ǥ"],[485,2],[486,1,"ǧ"],[487,2],[488,1,"ǩ"],[489,2],[490,1,"ǫ"],[491,2],[492,1,"ǭ"],[493,2],[494,1,"ǯ"],[[495,496],2],[[497,499],1,"dz"],[500,1,"ǵ"],[501,2],[502,1,"ƕ"],[503,1,"ƿ"],[504,1,"ǹ"],[505,2],[506,1,"ǻ"],[507,2],[508,1,"ǽ"],[509,2],[510,1,"ǿ"],[511,2],[512,1,"ȁ"],[513,2],[514,1,"ȃ"],[515,2],[516,1,"ȅ"],[517,2],[518,1,"ȇ"],[519,2],[520,1,"ȉ"],[521,2],[522,1,"ȋ"],[523,2],[524,1,"ȍ"],[525,2],[526,1,"ȏ"],[527,2],[528,1,"ȑ"],[529,2],[530,1,"ȓ"],[531,2],[532,1,"ȕ"],[533,2],[534,1,"ȗ"],[535,2],[536,1,"ș"],[537,2],[538,1,"ț"],[539,2],[540,1,"ȝ"],[541,2],[542,1,"ȟ"],[543,2],[544,1,"ƞ"],[545,2],[546,1,"ȣ"],[547,2],[548,1,"ȥ"],[549,2],[550,1,"ȧ"],[551,2],[552,1,"ȩ"],[553,2],[554,1,"ȫ"],[555,2],[556,1,"ȭ"],[557,2],[558,1,"ȯ"],[559,2],[560,1,"ȱ"],[561,2],[562,1,"ȳ"],[563,2],[[564,566],2],[[567,569],2],[570,1,"ⱥ"],[571,1,"ȼ"],[572,2],[573,1,"ƚ"],[574,1,"ⱦ"],[[575,576],2],[577,1,"ɂ"],[578,2],[579,1,"ƀ"],[580,1,"ʉ"],[581,1,"ʌ"],[582,1,"ɇ"],[583,2],[584,1,"ɉ"],[585,2],[586,1,"ɋ"],[587,2],[588,1,"ɍ"],[589,2],[590,1,"ɏ"],[591,2],[[592,680],2],[[681,685],2],[[686,687],2],[688,1,"h"],[689,1,"ɦ"],[690,1,"j"],[691,1,"r"],[692,1,"ɹ"],[693,1,"ɻ"],[694,1,"ʁ"],[695,1,"w"],[696,1,"y"],[[697,705],2],[[706,709],2],[[710,721],2],[[722,727],2],[728,5," ̆"],[729,5," ̇"],[730,5," ̊"],[731,5," ̨"],[732,5," ̃"],[733,5," ̋"],[734,2],[735,2],[736,1,"ɣ"],[737,1,"l"],[738,1,"s"],[739,1,"x"],[740,1,"ʕ"],[[741,745],2],[[746,747],2],[748,2],[749,2],[750,2],[[751,767],2],[[768,831],2],[832,1,"̀"],[833,1,"́"],[834,2],[835,1,"̓"],[836,1,"̈́"],[837,1,"ι"],[[838,846],2],[847,7],[[848,855],2],[[856,860],2],[[861,863],2],[[864,865],2],[866,2],[[867,879],2],[880,1,"ͱ"],[881,2],[882,1,"ͳ"],[883,2],[884,1,"ʹ"],[885,2],[886,1,"ͷ"],[887,2],[[888,889],3],[890,5," ι"],[[891,893],2],[894,5,";"],[895,1,"ϳ"],[[896,899],3],[900,5," ́"],[901,5," ̈́"],[902,1,"ά"],[903,1,"·"],[904,1,"έ"],[905,1,"ή"],[906,1,"ί"],[907,3],[908,1,"ό"],[909,3],[910,1,"ύ"],[911,1,"ώ"],[912,2],[913,1,"α"],[914,1,"β"],[915,1,"γ"],[916,1,"δ"],[917,1,"ε"],[918,1,"ζ"],[919,1,"η"],[920,1,"θ"],[921,1,"ι"],[922,1,"κ"],[923,1,"λ"],[924,1,"μ"],[925,1,"ν"],[926,1,"ξ"],[927,1,"ο"],[928,1,"π"],[929,1,"ρ"],[930,3],[931,1,"σ"],[932,1,"τ"],[933,1,"υ"],[934,1,"φ"],[935,1,"χ"],[936,1,"ψ"],[937,1,"ω"],[938,1,"ϊ"],[939,1,"ϋ"],[[940,961],2],[962,6,"σ"],[[963,974],2],[975,1,"ϗ"],[976,1,"β"],[977,1,"θ"],[978,1,"υ"],[979,1,"ύ"],[980,1,"ϋ"],[981,1,"φ"],[982,1,"π"],[983,2],[984,1,"ϙ"],[985,2],[986,1,"ϛ"],[987,2],[988,1,"ϝ"],[989,2],[990,1,"ϟ"],[991,2],[992,1,"ϡ"],[993,2],[994,1,"ϣ"],[995,2],[996,1,"ϥ"],[997,2],[998,1,"ϧ"],[999,2],[1000,1,"ϩ"],[1001,2],[1002,1,"ϫ"],[1003,2],[1004,1,"ϭ"],[1005,2],[1006,1,"ϯ"],[1007,2],[1008,1,"κ"],[1009,1,"ρ"],[1010,1,"σ"],[1011,2],[1012,1,"θ"],[1013,1,"ε"],[1014,2],[1015,1,"ϸ"],[1016,2],[1017,1,"σ"],[1018,1,"ϻ"],[1019,2],[1020,2],[1021,1,"ͻ"],[1022,1,"ͼ"],[1023,1,"ͽ"],[1024,1,"ѐ"],[1025,1,"ё"],[1026,1,"ђ"],[1027,1,"ѓ"],[1028,1,"є"],[1029,1,"ѕ"],[1030,1,"і"],[1031,1,"ї"],[1032,1,"ј"],[1033,1,"љ"],[1034,1,"њ"],[1035,1,"ћ"],[1036,1,"ќ"],[1037,1,"ѝ"],[1038,1,"ў"],[1039,1,"џ"],[1040,1,"а"],[1041,1,"б"],[1042,1,"в"],[1043,1,"г"],[1044,1,"д"],[1045,1,"е"],[1046,1,"ж"],[1047,1,"з"],[1048,1,"и"],[1049,1,"й"],[1050,1,"к"],[1051,1,"л"],[1052,1,"м"],[1053,1,"н"],[1054,1,"о"],[1055,1,"п"],[1056,1,"р"],[1057,1,"с"],[1058,1,"т"],[1059,1,"у"],[1060,1,"ф"],[1061,1,"х"],[1062,1,"ц"],[1063,1,"ч"],[1064,1,"ш"],[1065,1,"щ"],[1066,1,"ъ"],[1067,1,"ы"],[1068,1,"ь"],[1069,1,"э"],[1070,1,"ю"],[1071,1,"я"],[[1072,1103],2],[1104,2],[[1105,1116],2],[1117,2],[[1118,1119],2],[1120,1,"ѡ"],[1121,2],[1122,1,"ѣ"],[1123,2],[1124,1,"ѥ"],[1125,2],[1126,1,"ѧ"],[1127,2],[1128,1,"ѩ"],[1129,2],[1130,1,"ѫ"],[1131,2],[1132,1,"ѭ"],[1133,2],[1134,1,"ѯ"],[1135,2],[1136,1,"ѱ"],[1137,2],[1138,1,"ѳ"],[1139,2],[1140,1,"ѵ"],[1141,2],[1142,1,"ѷ"],[1143,2],[1144,1,"ѹ"],[1145,2],[1146,1,"ѻ"],[1147,2],[1148,1,"ѽ"],[1149,2],[1150,1,"ѿ"],[1151,2],[1152,1,"ҁ"],[1153,2],[1154,2],[[1155,1158],2],[1159,2],[[1160,1161],2],[1162,1,"ҋ"],[1163,2],[1164,1,"ҍ"],[1165,2],[1166,1,"ҏ"],[1167,2],[1168,1,"ґ"],[1169,2],[1170,1,"ғ"],[1171,2],[1172,1,"ҕ"],[1173,2],[1174,1,"җ"],[1175,2],[1176,1,"ҙ"],[1177,2],[1178,1,"қ"],[1179,2],[1180,1,"ҝ"],[1181,2],[1182,1,"ҟ"],[1183,2],[1184,1,"ҡ"],[1185,2],[1186,1,"ң"],[1187,2],[1188,1,"ҥ"],[1189,2],[1190,1,"ҧ"],[1191,2],[1192,1,"ҩ"],[1193,2],[1194,1,"ҫ"],[1195,2],[1196,1,"ҭ"],[1197,2],[1198,1,"ү"],[1199,2],[1200,1,"ұ"],[1201,2],[1202,1,"ҳ"],[1203,2],[1204,1,"ҵ"],[1205,2],[1206,1,"ҷ"],[1207,2],[1208,1,"ҹ"],[1209,2],[1210,1,"һ"],[1211,2],[1212,1,"ҽ"],[1213,2],[1214,1,"ҿ"],[1215,2],[1216,3],[1217,1,"ӂ"],[1218,2],[1219,1,"ӄ"],[1220,2],[1221,1,"ӆ"],[1222,2],[1223,1,"ӈ"],[1224,2],[1225,1,"ӊ"],[1226,2],[1227,1,"ӌ"],[1228,2],[1229,1,"ӎ"],[1230,2],[1231,2],[1232,1,"ӑ"],[1233,2],[1234,1,"ӓ"],[1235,2],[1236,1,"ӕ"],[1237,2],[1238,1,"ӗ"],[1239,2],[1240,1,"ә"],[1241,2],[1242,1,"ӛ"],[1243,2],[1244,1,"ӝ"],[1245,2],[1246,1,"ӟ"],[1247,2],[1248,1,"ӡ"],[1249,2],[1250,1,"ӣ"],[1251,2],[1252,1,"ӥ"],[1253,2],[1254,1,"ӧ"],[1255,2],[1256,1,"ө"],[1257,2],[1258,1,"ӫ"],[1259,2],[1260,1,"ӭ"],[1261,2],[1262,1,"ӯ"],[1263,2],[1264,1,"ӱ"],[1265,2],[1266,1,"ӳ"],[1267,2],[1268,1,"ӵ"],[1269,2],[1270,1,"ӷ"],[1271,2],[1272,1,"ӹ"],[1273,2],[1274,1,"ӻ"],[1275,2],[1276,1,"ӽ"],[1277,2],[1278,1,"ӿ"],[1279,2],[1280,1,"ԁ"],[1281,2],[1282,1,"ԃ"],[1283,2],[1284,1,"ԅ"],[1285,2],[1286,1,"ԇ"],[1287,2],[1288,1,"ԉ"],[1289,2],[1290,1,"ԋ"],[1291,2],[1292,1,"ԍ"],[1293,2],[1294,1,"ԏ"],[1295,2],[1296,1,"ԑ"],[1297,2],[1298,1,"ԓ"],[1299,2],[1300,1,"ԕ"],[1301,2],[1302,1,"ԗ"],[1303,2],[1304,1,"ԙ"],[1305,2],[1306,1,"ԛ"],[1307,2],[1308,1,"ԝ"],[1309,2],[1310,1,"ԟ"],[1311,2],[1312,1,"ԡ"],[1313,2],[1314,1,"ԣ"],[1315,2],[1316,1,"ԥ"],[1317,2],[1318,1,"ԧ"],[1319,2],[1320,1,"ԩ"],[1321,2],[1322,1,"ԫ"],[1323,2],[1324,1,"ԭ"],[1325,2],[1326,1,"ԯ"],[1327,2],[1328,3],[1329,1,"ա"],[1330,1,"բ"],[1331,1,"գ"],[1332,1,"դ"],[1333,1,"ե"],[1334,1,"զ"],[1335,1,"է"],[1336,1,"ը"],[1337,1,"թ"],[1338,1,"ժ"],[1339,1,"ի"],[1340,1,"լ"],[1341,1,"խ"],[1342,1,"ծ"],[1343,1,"կ"],[1344,1,"հ"],[1345,1,"ձ"],[1346,1,"ղ"],[1347,1,"ճ"],[1348,1,"մ"],[1349,1,"յ"],[1350,1,"ն"],[1351,1,"շ"],[1352,1,"ո"],[1353,1,"չ"],[1354,1,"պ"],[1355,1,"ջ"],[1356,1,"ռ"],[1357,1,"ս"],[1358,1,"վ"],[1359,1,"տ"],[1360,1,"ր"],[1361,1,"ց"],[1362,1,"ւ"],[1363,1,"փ"],[1364,1,"ք"],[1365,1,"օ"],[1366,1,"ֆ"],[[1367,1368],3],[1369,2],[[1370,1375],2],[1376,2],[[1377,1414],2],[1415,1,"եւ"],[1416,2],[1417,2],[1418,2],[[1419,1420],3],[[1421,1422],2],[1423,2],[1424,3],[[1425,1441],2],[1442,2],[[1443,1455],2],[[1456,1465],2],[1466,2],[[1467,1469],2],[1470,2],[1471,2],[1472,2],[[1473,1474],2],[1475,2],[1476,2],[1477,2],[1478,2],[1479,2],[[1480,1487],3],[[1488,1514],2],[[1515,1518],3],[1519,2],[[1520,1524],2],[[1525,1535],3],[[1536,1539],3],[1540,3],[1541,3],[[1542,1546],2],[1547,2],[1548,2],[[1549,1551],2],[[1552,1557],2],[[1558,1562],2],[1563,2],[1564,3],[1565,2],[1566,2],[1567,2],[1568,2],[[1569,1594],2],[[1595,1599],2],[1600,2],[[1601,1618],2],[[1619,1621],2],[[1622,1624],2],[[1625,1630],2],[1631,2],[[1632,1641],2],[[1642,1645],2],[[1646,1647],2],[[1648,1652],2],[1653,1,"اٴ"],[1654,1,"وٴ"],[1655,1,"ۇٴ"],[1656,1,"يٴ"],[[1657,1719],2],[[1720,1721],2],[[1722,1726],2],[1727,2],[[1728,1742],2],[1743,2],[[1744,1747],2],[1748,2],[[1749,1756],2],[1757,3],[1758,2],[[1759,1768],2],[1769,2],[[1770,1773],2],[[1774,1775],2],[[1776,1785],2],[[1786,1790],2],[1791,2],[[1792,1805],2],[1806,3],[1807,3],[[1808,1836],2],[[1837,1839],2],[[1840,1866],2],[[1867,1868],3],[[1869,1871],2],[[1872,1901],2],[[1902,1919],2],[[1920,1968],2],[1969,2],[[1970,1983],3],[[1984,2037],2],[[2038,2042],2],[[2043,2044],3],[2045,2],[[2046,2047],2],[[2048,2093],2],[[2094,2095],3],[[2096,2110],2],[2111,3],[[2112,2139],2],[[2140,2141],3],[2142,2],[2143,3],[[2144,2154],2],[[2155,2159],3],[[2160,2183],2],[2184,2],[[2185,2190],2],[2191,3],[[2192,2193],3],[[2194,2199],3],[[2200,2207],2],[2208,2],[2209,2],[[2210,2220],2],[[2221,2226],2],[[2227,2228],2],[2229,2],[[2230,2237],2],[[2238,2247],2],[[2248,2258],2],[2259,2],[[2260,2273],2],[2274,3],[2275,2],[[2276,2302],2],[2303,2],[2304,2],[[2305,2307],2],[2308,2],[[2309,2361],2],[[2362,2363],2],[[2364,2381],2],[2382,2],[2383,2],[[2384,2388],2],[2389,2],[[2390,2391],2],[2392,1,"क़"],[2393,1,"ख़"],[2394,1,"ग़"],[2395,1,"ज़"],[2396,1,"ड़"],[2397,1,"ढ़"],[2398,1,"फ़"],[2399,1,"य़"],[[2400,2403],2],[[2404,2405],2],[[2406,2415],2],[2416,2],[[2417,2418],2],[[2419,2423],2],[2424,2],[[2425,2426],2],[[2427,2428],2],[2429,2],[[2430,2431],2],[2432,2],[[2433,2435],2],[2436,3],[[2437,2444],2],[[2445,2446],3],[[2447,2448],2],[[2449,2450],3],[[2451,2472],2],[2473,3],[[2474,2480],2],[2481,3],[2482,2],[[2483,2485],3],[[2486,2489],2],[[2490,2491],3],[2492,2],[2493,2],[[2494,2500],2],[[2501,2502],3],[[2503,2504],2],[[2505,2506],3],[[2507,2509],2],[2510,2],[[2511,2518],3],[2519,2],[[2520,2523],3],[2524,1,"ড়"],[2525,1,"ঢ়"],[2526,3],[2527,1,"য়"],[[2528,2531],2],[[2532,2533],3],[[2534,2545],2],[[2546,2554],2],[2555,2],[2556,2],[2557,2],[2558,2],[[2559,2560],3],[2561,2],[2562,2],[2563,2],[2564,3],[[2565,2570],2],[[2571,2574],3],[[2575,2576],2],[[2577,2578],3],[[2579,2600],2],[2601,3],[[2602,2608],2],[2609,3],[2610,2],[2611,1,"ਲ਼"],[2612,3],[2613,2],[2614,1,"ਸ਼"],[2615,3],[[2616,2617],2],[[2618,2619],3],[2620,2],[2621,3],[[2622,2626],2],[[2627,2630],3],[[2631,2632],2],[[2633,2634],3],[[2635,2637],2],[[2638,2640],3],[2641,2],[[2642,2648],3],[2649,1,"ਖ਼"],[2650,1,"ਗ਼"],[2651,1,"ਜ਼"],[2652,2],[2653,3],[2654,1,"ਫ਼"],[[2655,2661],3],[[2662,2676],2],[2677,2],[2678,2],[[2679,2688],3],[[2689,2691],2],[2692,3],[[2693,2699],2],[2700,2],[2701,2],[2702,3],[[2703,2705],2],[2706,3],[[2707,2728],2],[2729,3],[[2730,2736],2],[2737,3],[[2738,2739],2],[2740,3],[[2741,2745],2],[[2746,2747],3],[[2748,2757],2],[2758,3],[[2759,2761],2],[2762,3],[[2763,2765],2],[[2766,2767],3],[2768,2],[[2769,2783],3],[2784,2],[[2785,2787],2],[[2788,2789],3],[[2790,2799],2],[2800,2],[2801,2],[[2802,2808],3],[2809,2],[[2810,2815],2],[2816,3],[[2817,2819],2],[2820,3],[[2821,2828],2],[[2829,2830],3],[[2831,2832],2],[[2833,2834],3],[[2835,2856],2],[2857,3],[[2858,2864],2],[2865,3],[[2866,2867],2],[2868,3],[2869,2],[[2870,2873],2],[[2874,2875],3],[[2876,2883],2],[2884,2],[[2885,2886],3],[[2887,2888],2],[[2889,2890],3],[[2891,2893],2],[[2894,2900],3],[2901,2],[[2902,2903],2],[[2904,2907],3],[2908,1,"ଡ଼"],[2909,1,"ଢ଼"],[2910,3],[[2911,2913],2],[[2914,2915],2],[[2916,2917],3],[[2918,2927],2],[2928,2],[2929,2],[[2930,2935],2],[[2936,2945],3],[[2946,2947],2],[2948,3],[[2949,2954],2],[[2955,2957],3],[[2958,2960],2],[2961,3],[[2962,2965],2],[[2966,2968],3],[[2969,2970],2],[2971,3],[2972,2],[2973,3],[[2974,2975],2],[[2976,2978],3],[[2979,2980],2],[[2981,2983],3],[[2984,2986],2],[[2987,2989],3],[[2990,2997],2],[2998,2],[[2999,3001],2],[[3002,3005],3],[[3006,3010],2],[[3011,3013],3],[[3014,3016],2],[3017,3],[[3018,3021],2],[[3022,3023],3],[3024,2],[[3025,3030],3],[3031,2],[[3032,3045],3],[3046,2],[[3047,3055],2],[[3056,3058],2],[[3059,3066],2],[[3067,3071],3],[3072,2],[[3073,3075],2],[3076,2],[[3077,3084],2],[3085,3],[[3086,3088],2],[3089,3],[[3090,3112],2],[3113,3],[[3114,3123],2],[3124,2],[[3125,3129],2],[[3130,3131],3],[3132,2],[3133,2],[[3134,3140],2],[3141,3],[[3142,3144],2],[3145,3],[[3146,3149],2],[[3150,3156],3],[[3157,3158],2],[3159,3],[[3160,3161],2],[3162,2],[[3163,3164],3],[3165,2],[[3166,3167],3],[[3168,3169],2],[[3170,3171],2],[[3172,3173],3],[[3174,3183],2],[[3184,3190],3],[3191,2],[[3192,3199],2],[3200,2],[3201,2],[[3202,3203],2],[3204,2],[[3205,3212],2],[3213,3],[[3214,3216],2],[3217,3],[[3218,3240],2],[3241,3],[[3242,3251],2],[3252,3],[[3253,3257],2],[[3258,3259],3],[[3260,3261],2],[[3262,3268],2],[3269,3],[[3270,3272],2],[3273,3],[[3274,3277],2],[[3278,3284],3],[[3285,3286],2],[[3287,3292],3],[3293,2],[3294,2],[3295,3],[[3296,3297],2],[[3298,3299],2],[[3300,3301],3],[[3302,3311],2],[3312,3],[[3313,3314],2],[3315,2],[[3316,3327],3],[3328,2],[3329,2],[[3330,3331],2],[3332,2],[[3333,3340],2],[3341,3],[[3342,3344],2],[3345,3],[[3346,3368],2],[3369,2],[[3370,3385],2],[3386,2],[[3387,3388],2],[3389,2],[[3390,3395],2],[3396,2],[3397,3],[[3398,3400],2],[3401,3],[[3402,3405],2],[3406,2],[3407,2],[[3408,3411],3],[[3412,3414],2],[3415,2],[[3416,3422],2],[3423,2],[[3424,3425],2],[[3426,3427],2],[[3428,3429],3],[[3430,3439],2],[[3440,3445],2],[[3446,3448],2],[3449,2],[[3450,3455],2],[3456,3],[3457,2],[[3458,3459],2],[3460,3],[[3461,3478],2],[[3479,3481],3],[[3482,3505],2],[3506,3],[[3507,3515],2],[3516,3],[3517,2],[[3518,3519],3],[[3520,3526],2],[[3527,3529],3],[3530,2],[[3531,3534],3],[[3535,3540],2],[3541,3],[3542,2],[3543,3],[[3544,3551],2],[[3552,3557],3],[[3558,3567],2],[[3568,3569],3],[[3570,3571],2],[3572,2],[[3573,3584],3],[[3585,3634],2],[3635,1,"ํา"],[[3636,3642],2],[[3643,3646],3],[3647,2],[[3648,3662],2],[3663,2],[[3664,3673],2],[[3674,3675],2],[[3676,3712],3],[[3713,3714],2],[3715,3],[3716,2],[3717,3],[3718,2],[[3719,3720],2],[3721,2],[3722,2],[3723,3],[3724,2],[3725,2],[[3726,3731],2],[[3732,3735],2],[3736,2],[[3737,3743],2],[3744,2],[[3745,3747],2],[3748,3],[3749,2],[3750,3],[3751,2],[[3752,3753],2],[[3754,3755],2],[3756,2],[[3757,3762],2],[3763,1,"ໍາ"],[[3764,3769],2],[3770,2],[[3771,3773],2],[[3774,3775],3],[[3776,3780],2],[3781,3],[3782,2],[3783,3],[[3784,3789],2],[3790,2],[3791,3],[[3792,3801],2],[[3802,3803],3],[3804,1,"ຫນ"],[3805,1,"ຫມ"],[[3806,3807],2],[[3808,3839],3],[3840,2],[[3841,3850],2],[3851,2],[3852,1,"་"],[[3853,3863],2],[[3864,3865],2],[[3866,3871],2],[[3872,3881],2],[[3882,3892],2],[3893,2],[3894,2],[3895,2],[3896,2],[3897,2],[[3898,3901],2],[[3902,3906],2],[3907,1,"གྷ"],[[3908,3911],2],[3912,3],[[3913,3916],2],[3917,1,"ཌྷ"],[[3918,3921],2],[3922,1,"དྷ"],[[3923,3926],2],[3927,1,"བྷ"],[[3928,3931],2],[3932,1,"ཛྷ"],[[3933,3944],2],[3945,1,"ཀྵ"],[3946,2],[[3947,3948],2],[[3949,3952],3],[[3953,3954],2],[3955,1,"ཱི"],[3956,2],[3957,1,"ཱུ"],[3958,1,"ྲྀ"],[3959,1,"ྲཱྀ"],[3960,1,"ླྀ"],[3961,1,"ླཱྀ"],[[3962,3968],2],[3969,1,"ཱྀ"],[[3970,3972],2],[3973,2],[[3974,3979],2],[[3980,3983],2],[[3984,3986],2],[3987,1,"ྒྷ"],[[3988,3989],2],[3990,2],[3991,2],[3992,3],[[3993,3996],2],[3997,1,"ྜྷ"],[[3998,4001],2],[4002,1,"ྡྷ"],[[4003,4006],2],[4007,1,"ྦྷ"],[[4008,4011],2],[4012,1,"ྫྷ"],[4013,2],[[4014,4016],2],[[4017,4023],2],[4024,2],[4025,1,"ྐྵ"],[[4026,4028],2],[4029,3],[[4030,4037],2],[4038,2],[[4039,4044],2],[4045,3],[4046,2],[4047,2],[[4048,4049],2],[[4050,4052],2],[[4053,4056],2],[[4057,4058],2],[[4059,4095],3],[[4096,4129],2],[4130,2],[[4131,4135],2],[4136,2],[[4137,4138],2],[4139,2],[[4140,4146],2],[[4147,4149],2],[[4150,4153],2],[[4154,4159],2],[[4160,4169],2],[[4170,4175],2],[[4176,4185],2],[[4186,4249],2],[[4250,4253],2],[[4254,4255],2],[[4256,4293],3],[4294,3],[4295,1,"ⴧ"],[[4296,4300],3],[4301,1,"ⴭ"],[[4302,4303],3],[[4304,4342],2],[[4343,4344],2],[[4345,4346],2],[4347,2],[4348,1,"ნ"],[[4349,4351],2],[[4352,4441],2],[[4442,4446],2],[[4447,4448],3],[[4449,4514],2],[[4515,4519],2],[[4520,4601],2],[[4602,4607],2],[[4608,4614],2],[4615,2],[[4616,4678],2],[4679,2],[4680,2],[4681,3],[[4682,4685],2],[[4686,4687],3],[[4688,4694],2],[4695,3],[4696,2],[4697,3],[[4698,4701],2],[[4702,4703],3],[[4704,4742],2],[4743,2],[4744,2],[4745,3],[[4746,4749],2],[[4750,4751],3],[[4752,4782],2],[4783,2],[4784,2],[4785,3],[[4786,4789],2],[[4790,4791],3],[[4792,4798],2],[4799,3],[4800,2],[4801,3],[[4802,4805],2],[[4806,4807],3],[[4808,4814],2],[4815,2],[[4816,4822],2],[4823,3],[[4824,4846],2],[4847,2],[[4848,4878],2],[4879,2],[4880,2],[4881,3],[[4882,4885],2],[[4886,4887],3],[[4888,4894],2],[4895,2],[[4896,4934],2],[4935,2],[[4936,4954],2],[[4955,4956],3],[[4957,4958],2],[4959,2],[4960,2],[[4961,4988],2],[[4989,4991],3],[[4992,5007],2],[[5008,5017],2],[[5018,5023],3],[[5024,5108],2],[5109,2],[[5110,5111],3],[5112,1,"Ᏸ"],[5113,1,"Ᏹ"],[5114,1,"Ᏺ"],[5115,1,"Ᏻ"],[5116,1,"Ᏼ"],[5117,1,"Ᏽ"],[[5118,5119],3],[5120,2],[[5121,5740],2],[[5741,5742],2],[[5743,5750],2],[[5751,5759],2],[5760,3],[[5761,5786],2],[[5787,5788],2],[[5789,5791],3],[[5792,5866],2],[[5867,5872],2],[[5873,5880],2],[[5881,5887],3],[[5888,5900],2],[5901,2],[[5902,5908],2],[5909,2],[[5910,5918],3],[5919,2],[[5920,5940],2],[[5941,5942],2],[[5943,5951],3],[[5952,5971],2],[[5972,5983],3],[[5984,5996],2],[5997,3],[[5998,6000],2],[6001,3],[[6002,6003],2],[[6004,6015],3],[[6016,6067],2],[[6068,6069],3],[[6070,6099],2],[[6100,6102],2],[6103,2],[[6104,6107],2],[6108,2],[6109,2],[[6110,6111],3],[[6112,6121],2],[[6122,6127],3],[[6128,6137],2],[[6138,6143],3],[[6144,6149],2],[6150,3],[[6151,6154],2],[[6155,6157],7],[6158,3],[6159,7],[[6160,6169],2],[[6170,6175],3],[[6176,6263],2],[6264,2],[[6265,6271],3],[[6272,6313],2],[6314,2],[[6315,6319],3],[[6320,6389],2],[[6390,6399],3],[[6400,6428],2],[[6429,6430],2],[6431,3],[[6432,6443],2],[[6444,6447],3],[[6448,6459],2],[[6460,6463],3],[6464,2],[[6465,6467],3],[[6468,6469],2],[[6470,6509],2],[[6510,6511],3],[[6512,6516],2],[[6517,6527],3],[[6528,6569],2],[[6570,6571],2],[[6572,6575],3],[[6576,6601],2],[[6602,6607],3],[[6608,6617],2],[6618,2],[[6619,6621],3],[[6622,6623],2],[[6624,6655],2],[[6656,6683],2],[[6684,6685],3],[[6686,6687],2],[[6688,6750],2],[6751,3],[[6752,6780],2],[[6781,6782],3],[[6783,6793],2],[[6794,6799],3],[[6800,6809],2],[[6810,6815],3],[[6816,6822],2],[6823,2],[[6824,6829],2],[[6830,6831],3],[[6832,6845],2],[6846,2],[[6847,6848],2],[[6849,6862],2],[[6863,6911],3],[[6912,6987],2],[6988,2],[[6989,6991],3],[[6992,7001],2],[[7002,7018],2],[[7019,7027],2],[[7028,7036],2],[[7037,7038],2],[7039,3],[[7040,7082],2],[[7083,7085],2],[[7086,7097],2],[[7098,7103],2],[[7104,7155],2],[[7156,7163],3],[[7164,7167],2],[[7168,7223],2],[[7224,7226],3],[[7227,7231],2],[[7232,7241],2],[[7242,7244],3],[[7245,7293],2],[[7294,7295],2],[7296,1,"в"],[7297,1,"д"],[7298,1,"о"],[7299,1,"с"],[[7300,7301],1,"т"],[7302,1,"ъ"],[7303,1,"ѣ"],[7304,1,"ꙋ"],[[7305,7311],3],[7312,1,"ა"],[7313,1,"ბ"],[7314,1,"გ"],[7315,1,"დ"],[7316,1,"ე"],[7317,1,"ვ"],[7318,1,"ზ"],[7319,1,"თ"],[7320,1,"ი"],[7321,1,"კ"],[7322,1,"ლ"],[7323,1,"მ"],[7324,1,"ნ"],[7325,1,"ო"],[7326,1,"პ"],[7327,1,"ჟ"],[7328,1,"რ"],[7329,1,"ს"],[7330,1,"ტ"],[7331,1,"უ"],[7332,1,"ფ"],[7333,1,"ქ"],[7334,1,"ღ"],[7335,1,"ყ"],[7336,1,"შ"],[7337,1,"ჩ"],[7338,1,"ც"],[7339,1,"ძ"],[7340,1,"წ"],[7341,1,"ჭ"],[7342,1,"ხ"],[7343,1,"ჯ"],[7344,1,"ჰ"],[7345,1,"ჱ"],[7346,1,"ჲ"],[7347,1,"ჳ"],[7348,1,"ჴ"],[7349,1,"ჵ"],[7350,1,"ჶ"],[7351,1,"ჷ"],[7352,1,"ჸ"],[7353,1,"ჹ"],[7354,1,"ჺ"],[[7355,7356],3],[7357,1,"ჽ"],[7358,1,"ჾ"],[7359,1,"ჿ"],[[7360,7367],2],[[7368,7375],3],[[7376,7378],2],[7379,2],[[7380,7410],2],[[7411,7414],2],[7415,2],[[7416,7417],2],[7418,2],[[7419,7423],3],[[7424,7467],2],[7468,1,"a"],[7469,1,"æ"],[7470,1,"b"],[7471,2],[7472,1,"d"],[7473,1,"e"],[7474,1,"ǝ"],[7475,1,"g"],[7476,1,"h"],[7477,1,"i"],[7478,1,"j"],[7479,1,"k"],[7480,1,"l"],[7481,1,"m"],[7482,1,"n"],[7483,2],[7484,1,"o"],[7485,1,"ȣ"],[7486,1,"p"],[7487,1,"r"],[7488,1,"t"],[7489,1,"u"],[7490,1,"w"],[7491,1,"a"],[7492,1,"ɐ"],[7493,1,"ɑ"],[7494,1,"ᴂ"],[7495,1,"b"],[7496,1,"d"],[7497,1,"e"],[7498,1,"ə"],[7499,1,"ɛ"],[7500,1,"ɜ"],[7501,1,"g"],[7502,2],[7503,1,"k"],[7504,1,"m"],[7505,1,"ŋ"],[7506,1,"o"],[7507,1,"ɔ"],[7508,1,"ᴖ"],[7509,1,"ᴗ"],[7510,1,"p"],[7511,1,"t"],[7512,1,"u"],[7513,1,"ᴝ"],[7514,1,"ɯ"],[7515,1,"v"],[7516,1,"ᴥ"],[7517,1,"β"],[7518,1,"γ"],[7519,1,"δ"],[7520,1,"φ"],[7521,1,"χ"],[7522,1,"i"],[7523,1,"r"],[7524,1,"u"],[7525,1,"v"],[7526,1,"β"],[7527,1,"γ"],[7528,1,"ρ"],[7529,1,"φ"],[7530,1,"χ"],[7531,2],[[7532,7543],2],[7544,1,"н"],[[7545,7578],2],[7579,1,"ɒ"],[7580,1,"c"],[7581,1,"ɕ"],[7582,1,"ð"],[7583,1,"ɜ"],[7584,1,"f"],[7585,1,"ɟ"],[7586,1,"ɡ"],[7587,1,"ɥ"],[7588,1,"ɨ"],[7589,1,"ɩ"],[7590,1,"ɪ"],[7591,1,"ᵻ"],[7592,1,"ʝ"],[7593,1,"ɭ"],[7594,1,"ᶅ"],[7595,1,"ʟ"],[7596,1,"ɱ"],[7597,1,"ɰ"],[7598,1,"ɲ"],[7599,1,"ɳ"],[7600,1,"ɴ"],[7601,1,"ɵ"],[7602,1,"ɸ"],[7603,1,"ʂ"],[7604,1,"ʃ"],[7605,1,"ƫ"],[7606,1,"ʉ"],[7607,1,"ʊ"],[7608,1,"ᴜ"],[7609,1,"ʋ"],[7610,1,"ʌ"],[7611,1,"z"],[7612,1,"ʐ"],[7613,1,"ʑ"],[7614,1,"ʒ"],[7615,1,"θ"],[[7616,7619],2],[[7620,7626],2],[[7627,7654],2],[[7655,7669],2],[[7670,7673],2],[7674,2],[7675,2],[7676,2],[7677,2],[[7678,7679],2],[7680,1,"ḁ"],[7681,2],[7682,1,"ḃ"],[7683,2],[7684,1,"ḅ"],[7685,2],[7686,1,"ḇ"],[7687,2],[7688,1,"ḉ"],[7689,2],[7690,1,"ḋ"],[7691,2],[7692,1,"ḍ"],[7693,2],[7694,1,"ḏ"],[7695,2],[7696,1,"ḑ"],[7697,2],[7698,1,"ḓ"],[7699,2],[7700,1,"ḕ"],[7701,2],[7702,1,"ḗ"],[7703,2],[7704,1,"ḙ"],[7705,2],[7706,1,"ḛ"],[7707,2],[7708,1,"ḝ"],[7709,2],[7710,1,"ḟ"],[7711,2],[7712,1,"ḡ"],[7713,2],[7714,1,"ḣ"],[7715,2],[7716,1,"ḥ"],[7717,2],[7718,1,"ḧ"],[7719,2],[7720,1,"ḩ"],[7721,2],[7722,1,"ḫ"],[7723,2],[7724,1,"ḭ"],[7725,2],[7726,1,"ḯ"],[7727,2],[7728,1,"ḱ"],[7729,2],[7730,1,"ḳ"],[7731,2],[7732,1,"ḵ"],[7733,2],[7734,1,"ḷ"],[7735,2],[7736,1,"ḹ"],[7737,2],[7738,1,"ḻ"],[7739,2],[7740,1,"ḽ"],[7741,2],[7742,1,"ḿ"],[7743,2],[7744,1,"ṁ"],[7745,2],[7746,1,"ṃ"],[7747,2],[7748,1,"ṅ"],[7749,2],[7750,1,"ṇ"],[7751,2],[7752,1,"ṉ"],[7753,2],[7754,1,"ṋ"],[7755,2],[7756,1,"ṍ"],[7757,2],[7758,1,"ṏ"],[7759,2],[7760,1,"ṑ"],[7761,2],[7762,1,"ṓ"],[7763,2],[7764,1,"ṕ"],[7765,2],[7766,1,"ṗ"],[7767,2],[7768,1,"ṙ"],[7769,2],[7770,1,"ṛ"],[7771,2],[7772,1,"ṝ"],[7773,2],[7774,1,"ṟ"],[7775,2],[7776,1,"ṡ"],[7777,2],[7778,1,"ṣ"],[7779,2],[7780,1,"ṥ"],[7781,2],[7782,1,"ṧ"],[7783,2],[7784,1,"ṩ"],[7785,2],[7786,1,"ṫ"],[7787,2],[7788,1,"ṭ"],[7789,2],[7790,1,"ṯ"],[7791,2],[7792,1,"ṱ"],[7793,2],[7794,1,"ṳ"],[7795,2],[7796,1,"ṵ"],[7797,2],[7798,1,"ṷ"],[7799,2],[7800,1,"ṹ"],[7801,2],[7802,1,"ṻ"],[7803,2],[7804,1,"ṽ"],[7805,2],[7806,1,"ṿ"],[7807,2],[7808,1,"ẁ"],[7809,2],[7810,1,"ẃ"],[7811,2],[7812,1,"ẅ"],[7813,2],[7814,1,"ẇ"],[7815,2],[7816,1,"ẉ"],[7817,2],[7818,1,"ẋ"],[7819,2],[7820,1,"ẍ"],[7821,2],[7822,1,"ẏ"],[7823,2],[7824,1,"ẑ"],[7825,2],[7826,1,"ẓ"],[7827,2],[7828,1,"ẕ"],[[7829,7833],2],[7834,1,"aʾ"],[7835,1,"ṡ"],[[7836,7837],2],[7838,1,"ss"],[7839,2],[7840,1,"ạ"],[7841,2],[7842,1,"ả"],[7843,2],[7844,1,"ấ"],[7845,2],[7846,1,"ầ"],[7847,2],[7848,1,"ẩ"],[7849,2],[7850,1,"ẫ"],[7851,2],[7852,1,"ậ"],[7853,2],[7854,1,"ắ"],[7855,2],[7856,1,"ằ"],[7857,2],[7858,1,"ẳ"],[7859,2],[7860,1,"ẵ"],[7861,2],[7862,1,"ặ"],[7863,2],[7864,1,"ẹ"],[7865,2],[7866,1,"ẻ"],[7867,2],[7868,1,"ẽ"],[7869,2],[7870,1,"ế"],[7871,2],[7872,1,"ề"],[7873,2],[7874,1,"ể"],[7875,2],[7876,1,"ễ"],[7877,2],[7878,1,"ệ"],[7879,2],[7880,1,"ỉ"],[7881,2],[7882,1,"ị"],[7883,2],[7884,1,"ọ"],[7885,2],[7886,1,"ỏ"],[7887,2],[7888,1,"ố"],[7889,2],[7890,1,"ồ"],[7891,2],[7892,1,"ổ"],[7893,2],[7894,1,"ỗ"],[7895,2],[7896,1,"ộ"],[7897,2],[7898,1,"ớ"],[7899,2],[7900,1,"ờ"],[7901,2],[7902,1,"ở"],[7903,2],[7904,1,"ỡ"],[7905,2],[7906,1,"ợ"],[7907,2],[7908,1,"ụ"],[7909,2],[7910,1,"ủ"],[7911,2],[7912,1,"ứ"],[7913,2],[7914,1,"ừ"],[7915,2],[7916,1,"ử"],[7917,2],[7918,1,"ữ"],[7919,2],[7920,1,"ự"],[7921,2],[7922,1,"ỳ"],[7923,2],[7924,1,"ỵ"],[7925,2],[7926,1,"ỷ"],[7927,2],[7928,1,"ỹ"],[7929,2],[7930,1,"ỻ"],[7931,2],[7932,1,"ỽ"],[7933,2],[7934,1,"ỿ"],[7935,2],[[7936,7943],2],[7944,1,"ἀ"],[7945,1,"ἁ"],[7946,1,"ἂ"],[7947,1,"ἃ"],[7948,1,"ἄ"],[7949,1,"ἅ"],[7950,1,"ἆ"],[7951,1,"ἇ"],[[7952,7957],2],[[7958,7959],3],[7960,1,"ἐ"],[7961,1,"ἑ"],[7962,1,"ἒ"],[7963,1,"ἓ"],[7964,1,"ἔ"],[7965,1,"ἕ"],[[7966,7967],3],[[7968,7975],2],[7976,1,"ἠ"],[7977,1,"ἡ"],[7978,1,"ἢ"],[7979,1,"ἣ"],[7980,1,"ἤ"],[7981,1,"ἥ"],[7982,1,"ἦ"],[7983,1,"ἧ"],[[7984,7991],2],[7992,1,"ἰ"],[7993,1,"ἱ"],[7994,1,"ἲ"],[7995,1,"ἳ"],[7996,1,"ἴ"],[7997,1,"ἵ"],[7998,1,"ἶ"],[7999,1,"ἷ"],[[8000,8005],2],[[8006,8007],3],[8008,1,"ὀ"],[8009,1,"ὁ"],[8010,1,"ὂ"],[8011,1,"ὃ"],[8012,1,"ὄ"],[8013,1,"ὅ"],[[8014,8015],3],[[8016,8023],2],[8024,3],[8025,1,"ὑ"],[8026,3],[8027,1,"ὓ"],[8028,3],[8029,1,"ὕ"],[8030,3],[8031,1,"ὗ"],[[8032,8039],2],[8040,1,"ὠ"],[8041,1,"ὡ"],[8042,1,"ὢ"],[8043,1,"ὣ"],[8044,1,"ὤ"],[8045,1,"ὥ"],[8046,1,"ὦ"],[8047,1,"ὧ"],[8048,2],[8049,1,"ά"],[8050,2],[8051,1,"έ"],[8052,2],[8053,1,"ή"],[8054,2],[8055,1,"ί"],[8056,2],[8057,1,"ό"],[8058,2],[8059,1,"ύ"],[8060,2],[8061,1,"ώ"],[[8062,8063],3],[8064,1,"ἀι"],[8065,1,"ἁι"],[8066,1,"ἂι"],[8067,1,"ἃι"],[8068,1,"ἄι"],[8069,1,"ἅι"],[8070,1,"ἆι"],[8071,1,"ἇι"],[8072,1,"ἀι"],[8073,1,"ἁι"],[8074,1,"ἂι"],[8075,1,"ἃι"],[8076,1,"ἄι"],[8077,1,"ἅι"],[8078,1,"ἆι"],[8079,1,"ἇι"],[8080,1,"ἠι"],[8081,1,"ἡι"],[8082,1,"ἢι"],[8083,1,"ἣι"],[8084,1,"ἤι"],[8085,1,"ἥι"],[8086,1,"ἦι"],[8087,1,"ἧι"],[8088,1,"ἠι"],[8089,1,"ἡι"],[8090,1,"ἢι"],[8091,1,"ἣι"],[8092,1,"ἤι"],[8093,1,"ἥι"],[8094,1,"ἦι"],[8095,1,"ἧι"],[8096,1,"ὠι"],[8097,1,"ὡι"],[8098,1,"ὢι"],[8099,1,"ὣι"],[8100,1,"ὤι"],[8101,1,"ὥι"],[8102,1,"ὦι"],[8103,1,"ὧι"],[8104,1,"ὠι"],[8105,1,"ὡι"],[8106,1,"ὢι"],[8107,1,"ὣι"],[8108,1,"ὤι"],[8109,1,"ὥι"],[8110,1,"ὦι"],[8111,1,"ὧι"],[[8112,8113],2],[8114,1,"ὰι"],[8115,1,"αι"],[8116,1,"άι"],[8117,3],[8118,2],[8119,1,"ᾶι"],[8120,1,"ᾰ"],[8121,1,"ᾱ"],[8122,1,"ὰ"],[8123,1,"ά"],[8124,1,"αι"],[8125,5," ̓"],[8126,1,"ι"],[8127,5," ̓"],[8128,5," ͂"],[8129,5," ̈͂"],[8130,1,"ὴι"],[8131,1,"ηι"],[8132,1,"ήι"],[8133,3],[8134,2],[8135,1,"ῆι"],[8136,1,"ὲ"],[8137,1,"έ"],[8138,1,"ὴ"],[8139,1,"ή"],[8140,1,"ηι"],[8141,5," ̓̀"],[8142,5," ̓́"],[8143,5," ̓͂"],[[8144,8146],2],[8147,1,"ΐ"],[[8148,8149],3],[[8150,8151],2],[8152,1,"ῐ"],[8153,1,"ῑ"],[8154,1,"ὶ"],[8155,1,"ί"],[8156,3],[8157,5," ̔̀"],[8158,5," ̔́"],[8159,5," ̔͂"],[[8160,8162],2],[8163,1,"ΰ"],[[8164,8167],2],[8168,1,"ῠ"],[8169,1,"ῡ"],[8170,1,"ὺ"],[8171,1,"ύ"],[8172,1,"ῥ"],[8173,5," ̈̀"],[8174,5," ̈́"],[8175,5,"`"],[[8176,8177],3],[8178,1,"ὼι"],[8179,1,"ωι"],[8180,1,"ώι"],[8181,3],[8182,2],[8183,1,"ῶι"],[8184,1,"ὸ"],[8185,1,"ό"],[8186,1,"ὼ"],[8187,1,"ώ"],[8188,1,"ωι"],[8189,5," ́"],[8190,5," ̔"],[8191,3],[[8192,8202],5," "],[8203,7],[[8204,8205],6,""],[[8206,8207],3],[8208,2],[8209,1,"‐"],[[8210,8214],2],[8215,5," ̳"],[[8216,8227],2],[[8228,8230],3],[8231,2],[[8232,8238],3],[8239,5," "],[[8240,8242],2],[8243,1,"′′"],[8244,1,"′′′"],[8245,2],[8246,1,"‵‵"],[8247,1,"‵‵‵"],[[8248,8251],2],[8252,5,"!!"],[8253,2],[8254,5," ̅"],[[8255,8262],2],[8263,5,"??"],[8264,5,"?!"],[8265,5,"!?"],[[8266,8269],2],[[8270,8274],2],[[8275,8276],2],[[8277,8278],2],[8279,1,"′′′′"],[[8280,8286],2],[8287,5," "],[8288,7],[[8289,8291],3],[8292,7],[8293,3],[[8294,8297],3],[[8298,8303],3],[8304,1,"0"],[8305,1,"i"],[[8306,8307],3],[8308,1,"4"],[8309,1,"5"],[8310,1,"6"],[8311,1,"7"],[8312,1,"8"],[8313,1,"9"],[8314,5,"+"],[8315,1,"−"],[8316,5,"="],[8317,5,"("],[8318,5,")"],[8319,1,"n"],[8320,1,"0"],[8321,1,"1"],[8322,1,"2"],[8323,1,"3"],[8324,1,"4"],[8325,1,"5"],[8326,1,"6"],[8327,1,"7"],[8328,1,"8"],[8329,1,"9"],[8330,5,"+"],[8331,1,"−"],[8332,5,"="],[8333,5,"("],[8334,5,")"],[8335,3],[8336,1,"a"],[8337,1,"e"],[8338,1,"o"],[8339,1,"x"],[8340,1,"ə"],[8341,1,"h"],[8342,1,"k"],[8343,1,"l"],[8344,1,"m"],[8345,1,"n"],[8346,1,"p"],[8347,1,"s"],[8348,1,"t"],[[8349,8351],3],[[8352,8359],2],[8360,1,"rs"],[[8361,8362],2],[8363,2],[8364,2],[[8365,8367],2],[[8368,8369],2],[[8370,8373],2],[[8374,8376],2],[8377,2],[8378,2],[[8379,8381],2],[8382,2],[8383,2],[8384,2],[[8385,8399],3],[[8400,8417],2],[[8418,8419],2],[[8420,8426],2],[8427,2],[[8428,8431],2],[8432,2],[[8433,8447],3],[8448,5,"a/c"],[8449,5,"a/s"],[8450,1,"c"],[8451,1,"°c"],[8452,2],[8453,5,"c/o"],[8454,5,"c/u"],[8455,1,"ɛ"],[8456,2],[8457,1,"°f"],[8458,1,"g"],[[8459,8462],1,"h"],[8463,1,"ħ"],[[8464,8465],1,"i"],[[8466,8467],1,"l"],[8468,2],[8469,1,"n"],[8470,1,"no"],[[8471,8472],2],[8473,1,"p"],[8474,1,"q"],[[8475,8477],1,"r"],[[8478,8479],2],[8480,1,"sm"],[8481,1,"tel"],[8482,1,"tm"],[8483,2],[8484,1,"z"],[8485,2],[8486,1,"ω"],[8487,2],[8488,1,"z"],[8489,2],[8490,1,"k"],[8491,1,"å"],[8492,1,"b"],[8493,1,"c"],[8494,2],[[8495,8496],1,"e"],[8497,1,"f"],[8498,3],[8499,1,"m"],[8500,1,"o"],[8501,1,"א"],[8502,1,"ב"],[8503,1,"ג"],[8504,1,"ד"],[8505,1,"i"],[8506,2],[8507,1,"fax"],[8508,1,"π"],[[8509,8510],1,"γ"],[8511,1,"π"],[8512,1,"∑"],[[8513,8516],2],[[8517,8518],1,"d"],[8519,1,"e"],[8520,1,"i"],[8521,1,"j"],[[8522,8523],2],[8524,2],[8525,2],[8526,2],[8527,2],[8528,1,"1⁄7"],[8529,1,"1⁄9"],[8530,1,"1⁄10"],[8531,1,"1⁄3"],[8532,1,"2⁄3"],[8533,1,"1⁄5"],[8534,1,"2⁄5"],[8535,1,"3⁄5"],[8536,1,"4⁄5"],[8537,1,"1⁄6"],[8538,1,"5⁄6"],[8539,1,"1⁄8"],[8540,1,"3⁄8"],[8541,1,"5⁄8"],[8542,1,"7⁄8"],[8543,1,"1⁄"],[8544,1,"i"],[8545,1,"ii"],[8546,1,"iii"],[8547,1,"iv"],[8548,1,"v"],[8549,1,"vi"],[8550,1,"vii"],[8551,1,"viii"],[8552,1,"ix"],[8553,1,"x"],[8554,1,"xi"],[8555,1,"xii"],[8556,1,"l"],[8557,1,"c"],[8558,1,"d"],[8559,1,"m"],[8560,1,"i"],[8561,1,"ii"],[8562,1,"iii"],[8563,1,"iv"],[8564,1,"v"],[8565,1,"vi"],[8566,1,"vii"],[8567,1,"viii"],[8568,1,"ix"],[8569,1,"x"],[8570,1,"xi"],[8571,1,"xii"],[8572,1,"l"],[8573,1,"c"],[8574,1,"d"],[8575,1,"m"],[[8576,8578],2],[8579,3],[8580,2],[[8581,8584],2],[8585,1,"0⁄3"],[[8586,8587],2],[[8588,8591],3],[[8592,8682],2],[[8683,8691],2],[[8692,8703],2],[[8704,8747],2],[8748,1,"∫∫"],[8749,1,"∫∫∫"],[8750,2],[8751,1,"∮∮"],[8752,1,"∮∮∮"],[[8753,8799],2],[8800,4],[[8801,8813],2],[[8814,8815],4],[[8816,8945],2],[[8946,8959],2],[8960,2],[8961,2],[[8962,9000],2],[9001,1,"〈"],[9002,1,"〉"],[[9003,9082],2],[9083,2],[9084,2],[[9085,9114],2],[[9115,9166],2],[[9167,9168],2],[[9169,9179],2],[[9180,9191],2],[9192,2],[[9193,9203],2],[[9204,9210],2],[[9211,9214],2],[9215,2],[[9216,9252],2],[[9253,9254],2],[[9255,9279],3],[[9280,9290],2],[[9291,9311],3],[9312,1,"1"],[9313,1,"2"],[9314,1,"3"],[9315,1,"4"],[9316,1,"5"],[9317,1,"6"],[9318,1,"7"],[9319,1,"8"],[9320,1,"9"],[9321,1,"10"],[9322,1,"11"],[9323,1,"12"],[9324,1,"13"],[9325,1,"14"],[9326,1,"15"],[9327,1,"16"],[9328,1,"17"],[9329,1,"18"],[9330,1,"19"],[9331,1,"20"],[9332,5,"(1)"],[9333,5,"(2)"],[9334,5,"(3)"],[9335,5,"(4)"],[9336,5,"(5)"],[9337,5,"(6)"],[9338,5,"(7)"],[9339,5,"(8)"],[9340,5,"(9)"],[9341,5,"(10)"],[9342,5,"(11)"],[9343,5,"(12)"],[9344,5,"(13)"],[9345,5,"(14)"],[9346,5,"(15)"],[9347,5,"(16)"],[9348,5,"(17)"],[9349,5,"(18)"],[9350,5,"(19)"],[9351,5,"(20)"],[[9352,9371],3],[9372,5,"(a)"],[9373,5,"(b)"],[9374,5,"(c)"],[9375,5,"(d)"],[9376,5,"(e)"],[9377,5,"(f)"],[9378,5,"(g)"],[9379,5,"(h)"],[9380,5,"(i)"],[9381,5,"(j)"],[9382,5,"(k)"],[9383,5,"(l)"],[9384,5,"(m)"],[9385,5,"(n)"],[9386,5,"(o)"],[9387,5,"(p)"],[9388,5,"(q)"],[9389,5,"(r)"],[9390,5,"(s)"],[9391,5,"(t)"],[9392,5,"(u)"],[9393,5,"(v)"],[9394,5,"(w)"],[9395,5,"(x)"],[9396,5,"(y)"],[9397,5,"(z)"],[9398,1,"a"],[9399,1,"b"],[9400,1,"c"],[9401,1,"d"],[9402,1,"e"],[9403,1,"f"],[9404,1,"g"],[9405,1,"h"],[9406,1,"i"],[9407,1,"j"],[9408,1,"k"],[9409,1,"l"],[9410,1,"m"],[9411,1,"n"],[9412,1,"o"],[9413,1,"p"],[9414,1,"q"],[9415,1,"r"],[9416,1,"s"],[9417,1,"t"],[9418,1,"u"],[9419,1,"v"],[9420,1,"w"],[9421,1,"x"],[9422,1,"y"],[9423,1,"z"],[9424,1,"a"],[9425,1,"b"],[9426,1,"c"],[9427,1,"d"],[9428,1,"e"],[9429,1,"f"],[9430,1,"g"],[9431,1,"h"],[9432,1,"i"],[9433,1,"j"],[9434,1,"k"],[9435,1,"l"],[9436,1,"m"],[9437,1,"n"],[9438,1,"o"],[9439,1,"p"],[9440,1,"q"],[9441,1,"r"],[9442,1,"s"],[9443,1,"t"],[9444,1,"u"],[9445,1,"v"],[9446,1,"w"],[9447,1,"x"],[9448,1,"y"],[9449,1,"z"],[9450,1,"0"],[[9451,9470],2],[9471,2],[[9472,9621],2],[[9622,9631],2],[[9632,9711],2],[[9712,9719],2],[[9720,9727],2],[[9728,9747],2],[[9748,9749],2],[[9750,9751],2],[9752,2],[9753,2],[[9754,9839],2],[[9840,9841],2],[[9842,9853],2],[[9854,9855],2],[[9856,9865],2],[[9866,9873],2],[[9874,9884],2],[9885,2],[[9886,9887],2],[[9888,9889],2],[[9890,9905],2],[9906,2],[[9907,9916],2],[[9917,9919],2],[[9920,9923],2],[[9924,9933],2],[9934,2],[[9935,9953],2],[9954,2],[9955,2],[[9956,9959],2],[[9960,9983],2],[9984,2],[[9985,9988],2],[9989,2],[[9990,9993],2],[[9994,9995],2],[[9996,10023],2],[10024,2],[[10025,10059],2],[10060,2],[10061,2],[10062,2],[[10063,10066],2],[[10067,10069],2],[10070,2],[10071,2],[[10072,10078],2],[[10079,10080],2],[[10081,10087],2],[[10088,10101],2],[[10102,10132],2],[[10133,10135],2],[[10136,10159],2],[10160,2],[[10161,10174],2],[10175,2],[[10176,10182],2],[[10183,10186],2],[10187,2],[10188,2],[10189,2],[[10190,10191],2],[[10192,10219],2],[[10220,10223],2],[[10224,10239],2],[[10240,10495],2],[[10496,10763],2],[10764,1,"∫∫∫∫"],[[10765,10867],2],[10868,5,"::="],[10869,5,"=="],[10870,5,"==="],[[10871,10971],2],[10972,1,"⫝̸"],[[10973,11007],2],[[11008,11021],2],[[11022,11027],2],[[11028,11034],2],[[11035,11039],2],[[11040,11043],2],[[11044,11084],2],[[11085,11087],2],[[11088,11092],2],[[11093,11097],2],[[11098,11123],2],[[11124,11125],3],[[11126,11157],2],[11158,3],[11159,2],[[11160,11193],2],[[11194,11196],2],[[11197,11208],2],[11209,2],[[11210,11217],2],[11218,2],[[11219,11243],2],[[11244,11247],2],[[11248,11262],2],[11263,2],[11264,1,"ⰰ"],[11265,1,"ⰱ"],[11266,1,"ⰲ"],[11267,1,"ⰳ"],[11268,1,"ⰴ"],[11269,1,"ⰵ"],[11270,1,"ⰶ"],[11271,1,"ⰷ"],[11272,1,"ⰸ"],[11273,1,"ⰹ"],[11274,1,"ⰺ"],[11275,1,"ⰻ"],[11276,1,"ⰼ"],[11277,1,"ⰽ"],[11278,1,"ⰾ"],[11279,1,"ⰿ"],[11280,1,"ⱀ"],[11281,1,"ⱁ"],[11282,1,"ⱂ"],[11283,1,"ⱃ"],[11284,1,"ⱄ"],[11285,1,"ⱅ"],[11286,1,"ⱆ"],[11287,1,"ⱇ"],[11288,1,"ⱈ"],[11289,1,"ⱉ"],[11290,1,"ⱊ"],[11291,1,"ⱋ"],[11292,1,"ⱌ"],[11293,1,"ⱍ"],[11294,1,"ⱎ"],[11295,1,"ⱏ"],[11296,1,"ⱐ"],[11297,1,"ⱑ"],[11298,1,"ⱒ"],[11299,1,"ⱓ"],[11300,1,"ⱔ"],[11301,1,"ⱕ"],[11302,1,"ⱖ"],[11303,1,"ⱗ"],[11304,1,"ⱘ"],[11305,1,"ⱙ"],[11306,1,"ⱚ"],[11307,1,"ⱛ"],[11308,1,"ⱜ"],[11309,1,"ⱝ"],[11310,1,"ⱞ"],[11311,1,"ⱟ"],[[11312,11358],2],[11359,2],[11360,1,"ⱡ"],[11361,2],[11362,1,"ɫ"],[11363,1,"ᵽ"],[11364,1,"ɽ"],[[11365,11366],2],[11367,1,"ⱨ"],[11368,2],[11369,1,"ⱪ"],[11370,2],[11371,1,"ⱬ"],[11372,2],[11373,1,"ɑ"],[11374,1,"ɱ"],[11375,1,"ɐ"],[11376,1,"ɒ"],[11377,2],[11378,1,"ⱳ"],[11379,2],[11380,2],[11381,1,"ⱶ"],[[11382,11383],2],[[11384,11387],2],[11388,1,"j"],[11389,1,"v"],[11390,1,"ȿ"],[11391,1,"ɀ"],[11392,1,"ⲁ"],[11393,2],[11394,1,"ⲃ"],[11395,2],[11396,1,"ⲅ"],[11397,2],[11398,1,"ⲇ"],[11399,2],[11400,1,"ⲉ"],[11401,2],[11402,1,"ⲋ"],[11403,2],[11404,1,"ⲍ"],[11405,2],[11406,1,"ⲏ"],[11407,2],[11408,1,"ⲑ"],[11409,2],[11410,1,"ⲓ"],[11411,2],[11412,1,"ⲕ"],[11413,2],[11414,1,"ⲗ"],[11415,2],[11416,1,"ⲙ"],[11417,2],[11418,1,"ⲛ"],[11419,2],[11420,1,"ⲝ"],[11421,2],[11422,1,"ⲟ"],[11423,2],[11424,1,"ⲡ"],[11425,2],[11426,1,"ⲣ"],[11427,2],[11428,1,"ⲥ"],[11429,2],[11430,1,"ⲧ"],[11431,2],[11432,1,"ⲩ"],[11433,2],[11434,1,"ⲫ"],[11435,2],[11436,1,"ⲭ"],[11437,2],[11438,1,"ⲯ"],[11439,2],[11440,1,"ⲱ"],[11441,2],[11442,1,"ⲳ"],[11443,2],[11444,1,"ⲵ"],[11445,2],[11446,1,"ⲷ"],[11447,2],[11448,1,"ⲹ"],[11449,2],[11450,1,"ⲻ"],[11451,2],[11452,1,"ⲽ"],[11453,2],[11454,1,"ⲿ"],[11455,2],[11456,1,"ⳁ"],[11457,2],[11458,1,"ⳃ"],[11459,2],[11460,1,"ⳅ"],[11461,2],[11462,1,"ⳇ"],[11463,2],[11464,1,"ⳉ"],[11465,2],[11466,1,"ⳋ"],[11467,2],[11468,1,"ⳍ"],[11469,2],[11470,1,"ⳏ"],[11471,2],[11472,1,"ⳑ"],[11473,2],[11474,1,"ⳓ"],[11475,2],[11476,1,"ⳕ"],[11477,2],[11478,1,"ⳗ"],[11479,2],[11480,1,"ⳙ"],[11481,2],[11482,1,"ⳛ"],[11483,2],[11484,1,"ⳝ"],[11485,2],[11486,1,"ⳟ"],[11487,2],[11488,1,"ⳡ"],[11489,2],[11490,1,"ⳣ"],[[11491,11492],2],[[11493,11498],2],[11499,1,"ⳬ"],[11500,2],[11501,1,"ⳮ"],[[11502,11505],2],[11506,1,"ⳳ"],[11507,2],[[11508,11512],3],[[11513,11519],2],[[11520,11557],2],[11558,3],[11559,2],[[11560,11564],3],[11565,2],[[11566,11567],3],[[11568,11621],2],[[11622,11623],2],[[11624,11630],3],[11631,1,"ⵡ"],[11632,2],[[11633,11646],3],[11647,2],[[11648,11670],2],[[11671,11679],3],[[11680,11686],2],[11687,3],[[11688,11694],2],[11695,3],[[11696,11702],2],[11703,3],[[11704,11710],2],[11711,3],[[11712,11718],2],[11719,3],[[11720,11726],2],[11727,3],[[11728,11734],2],[11735,3],[[11736,11742],2],[11743,3],[[11744,11775],2],[[11776,11799],2],[[11800,11803],2],[[11804,11805],2],[[11806,11822],2],[11823,2],[11824,2],[11825,2],[[11826,11835],2],[[11836,11842],2],[[11843,11844],2],[[11845,11849],2],[[11850,11854],2],[11855,2],[[11856,11858],2],[[11859,11869],2],[[11870,11903],3],[[11904,11929],2],[11930,3],[[11931,11934],2],[11935,1,"母"],[[11936,12018],2],[12019,1,"龟"],[[12020,12031],3],[12032,1,"一"],[12033,1,"丨"],[12034,1,"丶"],[12035,1,"丿"],[12036,1,"乙"],[12037,1,"亅"],[12038,1,"二"],[12039,1,"亠"],[12040,1,"人"],[12041,1,"儿"],[12042,1,"入"],[12043,1,"八"],[12044,1,"冂"],[12045,1,"冖"],[12046,1,"冫"],[12047,1,"几"],[12048,1,"凵"],[12049,1,"刀"],[12050,1,"力"],[12051,1,"勹"],[12052,1,"匕"],[12053,1,"匚"],[12054,1,"匸"],[12055,1,"十"],[12056,1,"卜"],[12057,1,"卩"],[12058,1,"厂"],[12059,1,"厶"],[12060,1,"又"],[12061,1,"口"],[12062,1,"囗"],[12063,1,"土"],[12064,1,"士"],[12065,1,"夂"],[12066,1,"夊"],[12067,1,"夕"],[12068,1,"大"],[12069,1,"女"],[12070,1,"子"],[12071,1,"宀"],[12072,1,"寸"],[12073,1,"小"],[12074,1,"尢"],[12075,1,"尸"],[12076,1,"屮"],[12077,1,"山"],[12078,1,"巛"],[12079,1,"工"],[12080,1,"己"],[12081,1,"巾"],[12082,1,"干"],[12083,1,"幺"],[12084,1,"广"],[12085,1,"廴"],[12086,1,"廾"],[12087,1,"弋"],[12088,1,"弓"],[12089,1,"彐"],[12090,1,"彡"],[12091,1,"彳"],[12092,1,"心"],[12093,1,"戈"],[12094,1,"戶"],[12095,1,"手"],[12096,1,"支"],[12097,1,"攴"],[12098,1,"文"],[12099,1,"斗"],[12100,1,"斤"],[12101,1,"方"],[12102,1,"无"],[12103,1,"日"],[12104,1,"曰"],[12105,1,"月"],[12106,1,"木"],[12107,1,"欠"],[12108,1,"止"],[12109,1,"歹"],[12110,1,"殳"],[12111,1,"毋"],[12112,1,"比"],[12113,1,"毛"],[12114,1,"氏"],[12115,1,"气"],[12116,1,"水"],[12117,1,"火"],[12118,1,"爪"],[12119,1,"父"],[12120,1,"爻"],[12121,1,"爿"],[12122,1,"片"],[12123,1,"牙"],[12124,1,"牛"],[12125,1,"犬"],[12126,1,"玄"],[12127,1,"玉"],[12128,1,"瓜"],[12129,1,"瓦"],[12130,1,"甘"],[12131,1,"生"],[12132,1,"用"],[12133,1,"田"],[12134,1,"疋"],[12135,1,"疒"],[12136,1,"癶"],[12137,1,"白"],[12138,1,"皮"],[12139,1,"皿"],[12140,1,"目"],[12141,1,"矛"],[12142,1,"矢"],[12143,1,"石"],[12144,1,"示"],[12145,1,"禸"],[12146,1,"禾"],[12147,1,"穴"],[12148,1,"立"],[12149,1,"竹"],[12150,1,"米"],[12151,1,"糸"],[12152,1,"缶"],[12153,1,"网"],[12154,1,"羊"],[12155,1,"羽"],[12156,1,"老"],[12157,1,"而"],[12158,1,"耒"],[12159,1,"耳"],[12160,1,"聿"],[12161,1,"肉"],[12162,1,"臣"],[12163,1,"自"],[12164,1,"至"],[12165,1,"臼"],[12166,1,"舌"],[12167,1,"舛"],[12168,1,"舟"],[12169,1,"艮"],[12170,1,"色"],[12171,1,"艸"],[12172,1,"虍"],[12173,1,"虫"],[12174,1,"血"],[12175,1,"行"],[12176,1,"衣"],[12177,1,"襾"],[12178,1,"見"],[12179,1,"角"],[12180,1,"言"],[12181,1,"谷"],[12182,1,"豆"],[12183,1,"豕"],[12184,1,"豸"],[12185,1,"貝"],[12186,1,"赤"],[12187,1,"走"],[12188,1,"足"],[12189,1,"身"],[12190,1,"車"],[12191,1,"辛"],[12192,1,"辰"],[12193,1,"辵"],[12194,1,"邑"],[12195,1,"酉"],[12196,1,"釆"],[12197,1,"里"],[12198,1,"金"],[12199,1,"長"],[12200,1,"門"],[12201,1,"阜"],[12202,1,"隶"],[12203,1,"隹"],[12204,1,"雨"],[12205,1,"靑"],[12206,1,"非"],[12207,1,"面"],[12208,1,"革"],[12209,1,"韋"],[12210,1,"韭"],[12211,1,"音"],[12212,1,"頁"],[12213,1,"風"],[12214,1,"飛"],[12215,1,"食"],[12216,1,"首"],[12217,1,"香"],[12218,1,"馬"],[12219,1,"骨"],[12220,1,"高"],[12221,1,"髟"],[12222,1,"鬥"],[12223,1,"鬯"],[12224,1,"鬲"],[12225,1,"鬼"],[12226,1,"魚"],[12227,1,"鳥"],[12228,1,"鹵"],[12229,1,"鹿"],[12230,1,"麥"],[12231,1,"麻"],[12232,1,"黃"],[12233,1,"黍"],[12234,1,"黑"],[12235,1,"黹"],[12236,1,"黽"],[12237,1,"鼎"],[12238,1,"鼓"],[12239,1,"鼠"],[12240,1,"鼻"],[12241,1,"齊"],[12242,1,"齒"],[12243,1,"龍"],[12244,1,"龜"],[12245,1,"龠"],[[12246,12271],3],[[12272,12283],3],[[12284,12287],3],[12288,5," "],[12289,2],[12290,1,"."],[[12291,12292],2],[[12293,12295],2],[[12296,12329],2],[[12330,12333],2],[[12334,12341],2],[12342,1,"〒"],[12343,2],[12344,1,"十"],[12345,1,"卄"],[12346,1,"卅"],[12347,2],[12348,2],[12349,2],[12350,2],[12351,2],[12352,3],[[12353,12436],2],[[12437,12438],2],[[12439,12440],3],[[12441,12442],2],[12443,5," ゙"],[12444,5," ゚"],[[12445,12446],2],[12447,1,"より"],[12448,2],[[12449,12542],2],[12543,1,"コト"],[[12544,12548],3],[[12549,12588],2],[12589,2],[12590,2],[12591,2],[12592,3],[12593,1,"ᄀ"],[12594,1,"ᄁ"],[12595,1,"ᆪ"],[12596,1,"ᄂ"],[12597,1,"ᆬ"],[12598,1,"ᆭ"],[12599,1,"ᄃ"],[12600,1,"ᄄ"],[12601,1,"ᄅ"],[12602,1,"ᆰ"],[12603,1,"ᆱ"],[12604,1,"ᆲ"],[12605,1,"ᆳ"],[12606,1,"ᆴ"],[12607,1,"ᆵ"],[12608,1,"ᄚ"],[12609,1,"ᄆ"],[12610,1,"ᄇ"],[12611,1,"ᄈ"],[12612,1,"ᄡ"],[12613,1,"ᄉ"],[12614,1,"ᄊ"],[12615,1,"ᄋ"],[12616,1,"ᄌ"],[12617,1,"ᄍ"],[12618,1,"ᄎ"],[12619,1,"ᄏ"],[12620,1,"ᄐ"],[12621,1,"ᄑ"],[12622,1,"ᄒ"],[12623,1,"ᅡ"],[12624,1,"ᅢ"],[12625,1,"ᅣ"],[12626,1,"ᅤ"],[12627,1,"ᅥ"],[12628,1,"ᅦ"],[12629,1,"ᅧ"],[12630,1,"ᅨ"],[12631,1,"ᅩ"],[12632,1,"ᅪ"],[12633,1,"ᅫ"],[12634,1,"ᅬ"],[12635,1,"ᅭ"],[12636,1,"ᅮ"],[12637,1,"ᅯ"],[12638,1,"ᅰ"],[12639,1,"ᅱ"],[12640,1,"ᅲ"],[12641,1,"ᅳ"],[12642,1,"ᅴ"],[12643,1,"ᅵ"],[12644,3],[12645,1,"ᄔ"],[12646,1,"ᄕ"],[12647,1,"ᇇ"],[12648,1,"ᇈ"],[12649,1,"ᇌ"],[12650,1,"ᇎ"],[12651,1,"ᇓ"],[12652,1,"ᇗ"],[12653,1,"ᇙ"],[12654,1,"ᄜ"],[12655,1,"ᇝ"],[12656,1,"ᇟ"],[12657,1,"ᄝ"],[12658,1,"ᄞ"],[12659,1,"ᄠ"],[12660,1,"ᄢ"],[12661,1,"ᄣ"],[12662,1,"ᄧ"],[12663,1,"ᄩ"],[12664,1,"ᄫ"],[12665,1,"ᄬ"],[12666,1,"ᄭ"],[12667,1,"ᄮ"],[12668,1,"ᄯ"],[12669,1,"ᄲ"],[12670,1,"ᄶ"],[12671,1,"ᅀ"],[12672,1,"ᅇ"],[12673,1,"ᅌ"],[12674,1,"ᇱ"],[12675,1,"ᇲ"],[12676,1,"ᅗ"],[12677,1,"ᅘ"],[12678,1,"ᅙ"],[12679,1,"ᆄ"],[12680,1,"ᆅ"],[12681,1,"ᆈ"],[12682,1,"ᆑ"],[12683,1,"ᆒ"],[12684,1,"ᆔ"],[12685,1,"ᆞ"],[12686,1,"ᆡ"],[12687,3],[[12688,12689],2],[12690,1,"一"],[12691,1,"二"],[12692,1,"三"],[12693,1,"四"],[12694,1,"上"],[12695,1,"中"],[12696,1,"下"],[12697,1,"甲"],[12698,1,"乙"],[12699,1,"丙"],[12700,1,"丁"],[12701,1,"天"],[12702,1,"地"],[12703,1,"人"],[[12704,12727],2],[[12728,12730],2],[[12731,12735],2],[[12736,12751],2],[[12752,12771],2],[[12772,12783],3],[[12784,12799],2],[12800,5,"(ᄀ)"],[12801,5,"(ᄂ)"],[12802,5,"(ᄃ)"],[12803,5,"(ᄅ)"],[12804,5,"(ᄆ)"],[12805,5,"(ᄇ)"],[12806,5,"(ᄉ)"],[12807,5,"(ᄋ)"],[12808,5,"(ᄌ)"],[12809,5,"(ᄎ)"],[12810,5,"(ᄏ)"],[12811,5,"(ᄐ)"],[12812,5,"(ᄑ)"],[12813,5,"(ᄒ)"],[12814,5,"(가)"],[12815,5,"(나)"],[12816,5,"(다)"],[12817,5,"(라)"],[12818,5,"(마)"],[12819,5,"(바)"],[12820,5,"(사)"],[12821,5,"(아)"],[12822,5,"(자)"],[12823,5,"(차)"],[12824,5,"(카)"],[12825,5,"(타)"],[12826,5,"(파)"],[12827,5,"(하)"],[12828,5,"(주)"],[12829,5,"(오전)"],[12830,5,"(오후)"],[12831,3],[12832,5,"(一)"],[12833,5,"(二)"],[12834,5,"(三)"],[12835,5,"(四)"],[12836,5,"(五)"],[12837,5,"(六)"],[12838,5,"(七)"],[12839,5,"(八)"],[12840,5,"(九)"],[12841,5,"(十)"],[12842,5,"(月)"],[12843,5,"(火)"],[12844,5,"(水)"],[12845,5,"(木)"],[12846,5,"(金)"],[12847,5,"(土)"],[12848,5,"(日)"],[12849,5,"(株)"],[12850,5,"(有)"],[12851,5,"(社)"],[12852,5,"(名)"],[12853,5,"(特)"],[12854,5,"(財)"],[12855,5,"(祝)"],[12856,5,"(労)"],[12857,5,"(代)"],[12858,5,"(呼)"],[12859,5,"(学)"],[12860,5,"(監)"],[12861,5,"(企)"],[12862,5,"(資)"],[12863,5,"(協)"],[12864,5,"(祭)"],[12865,5,"(休)"],[12866,5,"(自)"],[12867,5,"(至)"],[12868,1,"問"],[12869,1,"幼"],[12870,1,"文"],[12871,1,"箏"],[[12872,12879],2],[12880,1,"pte"],[12881,1,"21"],[12882,1,"22"],[12883,1,"23"],[12884,1,"24"],[12885,1,"25"],[12886,1,"26"],[12887,1,"27"],[12888,1,"28"],[12889,1,"29"],[12890,1,"30"],[12891,1,"31"],[12892,1,"32"],[12893,1,"33"],[12894,1,"34"],[12895,1,"35"],[12896,1,"ᄀ"],[12897,1,"ᄂ"],[12898,1,"ᄃ"],[12899,1,"ᄅ"],[12900,1,"ᄆ"],[12901,1,"ᄇ"],[12902,1,"ᄉ"],[12903,1,"ᄋ"],[12904,1,"ᄌ"],[12905,1,"ᄎ"],[12906,1,"ᄏ"],[12907,1,"ᄐ"],[12908,1,"ᄑ"],[12909,1,"ᄒ"],[12910,1,"가"],[12911,1,"나"],[12912,1,"다"],[12913,1,"라"],[12914,1,"마"],[12915,1,"바"],[12916,1,"사"],[12917,1,"아"],[12918,1,"자"],[12919,1,"차"],[12920,1,"카"],[12921,1,"타"],[12922,1,"파"],[12923,1,"하"],[12924,1,"참고"],[12925,1,"주의"],[12926,1,"우"],[12927,2],[12928,1,"一"],[12929,1,"二"],[12930,1,"三"],[12931,1,"四"],[12932,1,"五"],[12933,1,"六"],[12934,1,"七"],[12935,1,"八"],[12936,1,"九"],[12937,1,"十"],[12938,1,"月"],[12939,1,"火"],[12940,1,"水"],[12941,1,"木"],[12942,1,"金"],[12943,1,"土"],[12944,1,"日"],[12945,1,"株"],[12946,1,"有"],[12947,1,"社"],[12948,1,"名"],[12949,1,"特"],[12950,1,"財"],[12951,1,"祝"],[12952,1,"労"],[12953,1,"秘"],[12954,1,"男"],[12955,1,"女"],[12956,1,"適"],[12957,1,"優"],[12958,1,"印"],[12959,1,"注"],[12960,1,"項"],[12961,1,"休"],[12962,1,"写"],[12963,1,"正"],[12964,1,"上"],[12965,1,"中"],[12966,1,"下"],[12967,1,"左"],[12968,1,"右"],[12969,1,"医"],[12970,1,"宗"],[12971,1,"学"],[12972,1,"監"],[12973,1,"企"],[12974,1,"資"],[12975,1,"協"],[12976,1,"夜"],[12977,1,"36"],[12978,1,"37"],[12979,1,"38"],[12980,1,"39"],[12981,1,"40"],[12982,1,"41"],[12983,1,"42"],[12984,1,"43"],[12985,1,"44"],[12986,1,"45"],[12987,1,"46"],[12988,1,"47"],[12989,1,"48"],[12990,1,"49"],[12991,1,"50"],[12992,1,"1月"],[12993,1,"2月"],[12994,1,"3月"],[12995,1,"4月"],[12996,1,"5月"],[12997,1,"6月"],[12998,1,"7月"],[12999,1,"8月"],[13000,1,"9月"],[13001,1,"10月"],[13002,1,"11月"],[13003,1,"12月"],[13004,1,"hg"],[13005,1,"erg"],[13006,1,"ev"],[13007,1,"ltd"],[13008,1,"ア"],[13009,1,"イ"],[13010,1,"ウ"],[13011,1,"エ"],[13012,1,"オ"],[13013,1,"カ"],[13014,1,"キ"],[13015,1,"ク"],[13016,1,"ケ"],[13017,1,"コ"],[13018,1,"サ"],[13019,1,"シ"],[13020,1,"ス"],[13021,1,"セ"],[13022,1,"ソ"],[13023,1,"タ"],[13024,1,"チ"],[13025,1,"ツ"],[13026,1,"テ"],[13027,1,"ト"],[13028,1,"ナ"],[13029,1,"ニ"],[13030,1,"ヌ"],[13031,1,"ネ"],[13032,1,"ノ"],[13033,1,"ハ"],[13034,1,"ヒ"],[13035,1,"フ"],[13036,1,"ヘ"],[13037,1,"ホ"],[13038,1,"マ"],[13039,1,"ミ"],[13040,1,"ム"],[13041,1,"メ"],[13042,1,"モ"],[13043,1,"ヤ"],[13044,1,"ユ"],[13045,1,"ヨ"],[13046,1,"ラ"],[13047,1,"リ"],[13048,1,"ル"],[13049,1,"レ"],[13050,1,"ロ"],[13051,1,"ワ"],[13052,1,"ヰ"],[13053,1,"ヱ"],[13054,1,"ヲ"],[13055,1,"令和"],[13056,1,"アパート"],[13057,1,"アルファ"],[13058,1,"アンペア"],[13059,1,"アール"],[13060,1,"イニング"],[13061,1,"インチ"],[13062,1,"ウォン"],[13063,1,"エスクード"],[13064,1,"エーカー"],[13065,1,"オンス"],[13066,1,"オーム"],[13067,1,"カイリ"],[13068,1,"カラット"],[13069,1,"カロリー"],[13070,1,"ガロン"],[13071,1,"ガンマ"],[13072,1,"ギガ"],[13073,1,"ギニー"],[13074,1,"キュリー"],[13075,1,"ギルダー"],[13076,1,"キロ"],[13077,1,"キログラム"],[13078,1,"キロメートル"],[13079,1,"キロワット"],[13080,1,"グラム"],[13081,1,"グラムトン"],[13082,1,"クルゼイロ"],[13083,1,"クローネ"],[13084,1,"ケース"],[13085,1,"コルナ"],[13086,1,"コーポ"],[13087,1,"サイクル"],[13088,1,"サンチーム"],[13089,1,"シリング"],[13090,1,"センチ"],[13091,1,"セント"],[13092,1,"ダース"],[13093,1,"デシ"],[13094,1,"ドル"],[13095,1,"トン"],[13096,1,"ナノ"],[13097,1,"ノット"],[13098,1,"ハイツ"],[13099,1,"パーセント"],[13100,1,"パーツ"],[13101,1,"バーレル"],[13102,1,"ピアストル"],[13103,1,"ピクル"],[13104,1,"ピコ"],[13105,1,"ビル"],[13106,1,"ファラッド"],[13107,1,"フィート"],[13108,1,"ブッシェル"],[13109,1,"フラン"],[13110,1,"ヘクタール"],[13111,1,"ペソ"],[13112,1,"ペニヒ"],[13113,1,"ヘルツ"],[13114,1,"ペンス"],[13115,1,"ページ"],[13116,1,"ベータ"],[13117,1,"ポイント"],[13118,1,"ボルト"],[13119,1,"ホン"],[13120,1,"ポンド"],[13121,1,"ホール"],[13122,1,"ホーン"],[13123,1,"マイクロ"],[13124,1,"マイル"],[13125,1,"マッハ"],[13126,1,"マルク"],[13127,1,"マンション"],[13128,1,"ミクロン"],[13129,1,"ミリ"],[13130,1,"ミリバール"],[13131,1,"メガ"],[13132,1,"メガトン"],[13133,1,"メートル"],[13134,1,"ヤード"],[13135,1,"ヤール"],[13136,1,"ユアン"],[13137,1,"リットル"],[13138,1,"リラ"],[13139,1,"ルピー"],[13140,1,"ルーブル"],[13141,1,"レム"],[13142,1,"レントゲン"],[13143,1,"ワット"],[13144,1,"0点"],[13145,1,"1点"],[13146,1,"2点"],[13147,1,"3点"],[13148,1,"4点"],[13149,1,"5点"],[13150,1,"6点"],[13151,1,"7点"],[13152,1,"8点"],[13153,1,"9点"],[13154,1,"10点"],[13155,1,"11点"],[13156,1,"12点"],[13157,1,"13点"],[13158,1,"14点"],[13159,1,"15点"],[13160,1,"16点"],[13161,1,"17点"],[13162,1,"18点"],[13163,1,"19点"],[13164,1,"20点"],[13165,1,"21点"],[13166,1,"22点"],[13167,1,"23点"],[13168,1,"24点"],[13169,1,"hpa"],[13170,1,"da"],[13171,1,"au"],[13172,1,"bar"],[13173,1,"ov"],[13174,1,"pc"],[13175,1,"dm"],[13176,1,"dm2"],[13177,1,"dm3"],[13178,1,"iu"],[13179,1,"平成"],[13180,1,"昭和"],[13181,1,"大正"],[13182,1,"明治"],[13183,1,"株式会社"],[13184,1,"pa"],[13185,1,"na"],[13186,1,"μa"],[13187,1,"ma"],[13188,1,"ka"],[13189,1,"kb"],[13190,1,"mb"],[13191,1,"gb"],[13192,1,"cal"],[13193,1,"kcal"],[13194,1,"pf"],[13195,1,"nf"],[13196,1,"μf"],[13197,1,"μg"],[13198,1,"mg"],[13199,1,"kg"],[13200,1,"hz"],[13201,1,"khz"],[13202,1,"mhz"],[13203,1,"ghz"],[13204,1,"thz"],[13205,1,"μl"],[13206,1,"ml"],[13207,1,"dl"],[13208,1,"kl"],[13209,1,"fm"],[13210,1,"nm"],[13211,1,"μm"],[13212,1,"mm"],[13213,1,"cm"],[13214,1,"km"],[13215,1,"mm2"],[13216,1,"cm2"],[13217,1,"m2"],[13218,1,"km2"],[13219,1,"mm3"],[13220,1,"cm3"],[13221,1,"m3"],[13222,1,"km3"],[13223,1,"m∕s"],[13224,1,"m∕s2"],[13225,1,"pa"],[13226,1,"kpa"],[13227,1,"mpa"],[13228,1,"gpa"],[13229,1,"rad"],[13230,1,"rad∕s"],[13231,1,"rad∕s2"],[13232,1,"ps"],[13233,1,"ns"],[13234,1,"μs"],[13235,1,"ms"],[13236,1,"pv"],[13237,1,"nv"],[13238,1,"μv"],[13239,1,"mv"],[13240,1,"kv"],[13241,1,"mv"],[13242,1,"pw"],[13243,1,"nw"],[13244,1,"μw"],[13245,1,"mw"],[13246,1,"kw"],[13247,1,"mw"],[13248,1,"kω"],[13249,1,"mω"],[13250,3],[13251,1,"bq"],[13252,1,"cc"],[13253,1,"cd"],[13254,1,"c∕kg"],[13255,3],[13256,1,"db"],[13257,1,"gy"],[13258,1,"ha"],[13259,1,"hp"],[13260,1,"in"],[13261,1,"kk"],[13262,1,"km"],[13263,1,"kt"],[13264,1,"lm"],[13265,1,"ln"],[13266,1,"log"],[13267,1,"lx"],[13268,1,"mb"],[13269,1,"mil"],[13270,1,"mol"],[13271,1,"ph"],[13272,3],[13273,1,"ppm"],[13274,1,"pr"],[13275,1,"sr"],[13276,1,"sv"],[13277,1,"wb"],[13278,1,"v∕m"],[13279,1,"a∕m"],[13280,1,"1日"],[13281,1,"2日"],[13282,1,"3日"],[13283,1,"4日"],[13284,1,"5日"],[13285,1,"6日"],[13286,1,"7日"],[13287,1,"8日"],[13288,1,"9日"],[13289,1,"10日"],[13290,1,"11日"],[13291,1,"12日"],[13292,1,"13日"],[13293,1,"14日"],[13294,1,"15日"],[13295,1,"16日"],[13296,1,"17日"],[13297,1,"18日"],[13298,1,"19日"],[13299,1,"20日"],[13300,1,"21日"],[13301,1,"22日"],[13302,1,"23日"],[13303,1,"24日"],[13304,1,"25日"],[13305,1,"26日"],[13306,1,"27日"],[13307,1,"28日"],[13308,1,"29日"],[13309,1,"30日"],[13310,1,"31日"],[13311,1,"gal"],[[13312,19893],2],[[19894,19903],2],[[19904,19967],2],[[19968,40869],2],[[40870,40891],2],[[40892,40899],2],[[40900,40907],2],[40908,2],[[40909,40917],2],[[40918,40938],2],[[40939,40943],2],[[40944,40956],2],[[40957,40959],2],[[40960,42124],2],[[42125,42127],3],[[42128,42145],2],[[42146,42147],2],[[42148,42163],2],[42164,2],[[42165,42176],2],[42177,2],[[42178,42180],2],[42181,2],[42182,2],[[42183,42191],3],[[42192,42237],2],[[42238,42239],2],[[42240,42508],2],[[42509,42511],2],[[42512,42539],2],[[42540,42559],3],[42560,1,"ꙁ"],[42561,2],[42562,1,"ꙃ"],[42563,2],[42564,1,"ꙅ"],[42565,2],[42566,1,"ꙇ"],[42567,2],[42568,1,"ꙉ"],[42569,2],[42570,1,"ꙋ"],[42571,2],[42572,1,"ꙍ"],[42573,2],[42574,1,"ꙏ"],[42575,2],[42576,1,"ꙑ"],[42577,2],[42578,1,"ꙓ"],[42579,2],[42580,1,"ꙕ"],[42581,2],[42582,1,"ꙗ"],[42583,2],[42584,1,"ꙙ"],[42585,2],[42586,1,"ꙛ"],[42587,2],[42588,1,"ꙝ"],[42589,2],[42590,1,"ꙟ"],[42591,2],[42592,1,"ꙡ"],[42593,2],[42594,1,"ꙣ"],[42595,2],[42596,1,"ꙥ"],[42597,2],[42598,1,"ꙧ"],[42599,2],[42600,1,"ꙩ"],[42601,2],[42602,1,"ꙫ"],[42603,2],[42604,1,"ꙭ"],[[42605,42607],2],[[42608,42611],2],[[42612,42619],2],[[42620,42621],2],[42622,2],[42623,2],[42624,1,"ꚁ"],[42625,2],[42626,1,"ꚃ"],[42627,2],[42628,1,"ꚅ"],[42629,2],[42630,1,"ꚇ"],[42631,2],[42632,1,"ꚉ"],[42633,2],[42634,1,"ꚋ"],[42635,2],[42636,1,"ꚍ"],[42637,2],[42638,1,"ꚏ"],[42639,2],[42640,1,"ꚑ"],[42641,2],[42642,1,"ꚓ"],[42643,2],[42644,1,"ꚕ"],[42645,2],[42646,1,"ꚗ"],[42647,2],[42648,1,"ꚙ"],[42649,2],[42650,1,"ꚛ"],[42651,2],[42652,1,"ъ"],[42653,1,"ь"],[42654,2],[42655,2],[[42656,42725],2],[[42726,42735],2],[[42736,42737],2],[[42738,42743],2],[[42744,42751],3],[[42752,42774],2],[[42775,42778],2],[[42779,42783],2],[[42784,42785],2],[42786,1,"ꜣ"],[42787,2],[42788,1,"ꜥ"],[42789,2],[42790,1,"ꜧ"],[42791,2],[42792,1,"ꜩ"],[42793,2],[42794,1,"ꜫ"],[42795,2],[42796,1,"ꜭ"],[42797,2],[42798,1,"ꜯ"],[[42799,42801],2],[42802,1,"ꜳ"],[42803,2],[42804,1,"ꜵ"],[42805,2],[42806,1,"ꜷ"],[42807,2],[42808,1,"ꜹ"],[42809,2],[42810,1,"ꜻ"],[42811,2],[42812,1,"ꜽ"],[42813,2],[42814,1,"ꜿ"],[42815,2],[42816,1,"ꝁ"],[42817,2],[42818,1,"ꝃ"],[42819,2],[42820,1,"ꝅ"],[42821,2],[42822,1,"ꝇ"],[42823,2],[42824,1,"ꝉ"],[42825,2],[42826,1,"ꝋ"],[42827,2],[42828,1,"ꝍ"],[42829,2],[42830,1,"ꝏ"],[42831,2],[42832,1,"ꝑ"],[42833,2],[42834,1,"ꝓ"],[42835,2],[42836,1,"ꝕ"],[42837,2],[42838,1,"ꝗ"],[42839,2],[42840,1,"ꝙ"],[42841,2],[42842,1,"ꝛ"],[42843,2],[42844,1,"ꝝ"],[42845,2],[42846,1,"ꝟ"],[42847,2],[42848,1,"ꝡ"],[42849,2],[42850,1,"ꝣ"],[42851,2],[42852,1,"ꝥ"],[42853,2],[42854,1,"ꝧ"],[42855,2],[42856,1,"ꝩ"],[42857,2],[42858,1,"ꝫ"],[42859,2],[42860,1,"ꝭ"],[42861,2],[42862,1,"ꝯ"],[42863,2],[42864,1,"ꝯ"],[[42865,42872],2],[42873,1,"ꝺ"],[42874,2],[42875,1,"ꝼ"],[42876,2],[42877,1,"ᵹ"],[42878,1,"ꝿ"],[42879,2],[42880,1,"ꞁ"],[42881,2],[42882,1,"ꞃ"],[42883,2],[42884,1,"ꞅ"],[42885,2],[42886,1,"ꞇ"],[[42887,42888],2],[[42889,42890],2],[42891,1,"ꞌ"],[42892,2],[42893,1,"ɥ"],[42894,2],[42895,2],[42896,1,"ꞑ"],[42897,2],[42898,1,"ꞓ"],[42899,2],[[42900,42901],2],[42902,1,"ꞗ"],[42903,2],[42904,1,"ꞙ"],[42905,2],[42906,1,"ꞛ"],[42907,2],[42908,1,"ꞝ"],[42909,2],[42910,1,"ꞟ"],[42911,2],[42912,1,"ꞡ"],[42913,2],[42914,1,"ꞣ"],[42915,2],[42916,1,"ꞥ"],[42917,2],[42918,1,"ꞧ"],[42919,2],[42920,1,"ꞩ"],[42921,2],[42922,1,"ɦ"],[42923,1,"ɜ"],[42924,1,"ɡ"],[42925,1,"ɬ"],[42926,1,"ɪ"],[42927,2],[42928,1,"ʞ"],[42929,1,"ʇ"],[42930,1,"ʝ"],[42931,1,"ꭓ"],[42932,1,"ꞵ"],[42933,2],[42934,1,"ꞷ"],[42935,2],[42936,1,"ꞹ"],[42937,2],[42938,1,"ꞻ"],[42939,2],[42940,1,"ꞽ"],[42941,2],[42942,1,"ꞿ"],[42943,2],[42944,1,"ꟁ"],[42945,2],[42946,1,"ꟃ"],[42947,2],[42948,1,"ꞔ"],[42949,1,"ʂ"],[42950,1,"ᶎ"],[42951,1,"ꟈ"],[42952,2],[42953,1,"ꟊ"],[42954,2],[[42955,42959],3],[42960,1,"ꟑ"],[42961,2],[42962,3],[42963,2],[42964,3],[42965,2],[42966,1,"ꟗ"],[42967,2],[42968,1,"ꟙ"],[42969,2],[[42970,42993],3],[42994,1,"c"],[42995,1,"f"],[42996,1,"q"],[42997,1,"ꟶ"],[42998,2],[42999,2],[43000,1,"ħ"],[43001,1,"œ"],[43002,2],[[43003,43007],2],[[43008,43047],2],[[43048,43051],2],[43052,2],[[43053,43055],3],[[43056,43065],2],[[43066,43071],3],[[43072,43123],2],[[43124,43127],2],[[43128,43135],3],[[43136,43204],2],[43205,2],[[43206,43213],3],[[43214,43215],2],[[43216,43225],2],[[43226,43231],3],[[43232,43255],2],[[43256,43258],2],[43259,2],[43260,2],[43261,2],[[43262,43263],2],[[43264,43309],2],[[43310,43311],2],[[43312,43347],2],[[43348,43358],3],[43359,2],[[43360,43388],2],[[43389,43391],3],[[43392,43456],2],[[43457,43469],2],[43470,3],[[43471,43481],2],[[43482,43485],3],[[43486,43487],2],[[43488,43518],2],[43519,3],[[43520,43574],2],[[43575,43583],3],[[43584,43597],2],[[43598,43599],3],[[43600,43609],2],[[43610,43611],3],[[43612,43615],2],[[43616,43638],2],[[43639,43641],2],[[43642,43643],2],[[43644,43647],2],[[43648,43714],2],[[43715,43738],3],[[43739,43741],2],[[43742,43743],2],[[43744,43759],2],[[43760,43761],2],[[43762,43766],2],[[43767,43776],3],[[43777,43782],2],[[43783,43784],3],[[43785,43790],2],[[43791,43792],3],[[43793,43798],2],[[43799,43807],3],[[43808,43814],2],[43815,3],[[43816,43822],2],[43823,3],[[43824,43866],2],[43867,2],[43868,1,"ꜧ"],[43869,1,"ꬷ"],[43870,1,"ɫ"],[43871,1,"ꭒ"],[[43872,43875],2],[[43876,43877],2],[[43878,43879],2],[43880,2],[43881,1,"ʍ"],[[43882,43883],2],[[43884,43887],3],[43888,1,"Ꭰ"],[43889,1,"Ꭱ"],[43890,1,"Ꭲ"],[43891,1,"Ꭳ"],[43892,1,"Ꭴ"],[43893,1,"Ꭵ"],[43894,1,"Ꭶ"],[43895,1,"Ꭷ"],[43896,1,"Ꭸ"],[43897,1,"Ꭹ"],[43898,1,"Ꭺ"],[43899,1,"Ꭻ"],[43900,1,"Ꭼ"],[43901,1,"Ꭽ"],[43902,1,"Ꭾ"],[43903,1,"Ꭿ"],[43904,1,"Ꮀ"],[43905,1,"Ꮁ"],[43906,1,"Ꮂ"],[43907,1,"Ꮃ"],[43908,1,"Ꮄ"],[43909,1,"Ꮅ"],[43910,1,"Ꮆ"],[43911,1,"Ꮇ"],[43912,1,"Ꮈ"],[43913,1,"Ꮉ"],[43914,1,"Ꮊ"],[43915,1,"Ꮋ"],[43916,1,"Ꮌ"],[43917,1,"Ꮍ"],[43918,1,"Ꮎ"],[43919,1,"Ꮏ"],[43920,1,"Ꮐ"],[43921,1,"Ꮑ"],[43922,1,"Ꮒ"],[43923,1,"Ꮓ"],[43924,1,"Ꮔ"],[43925,1,"Ꮕ"],[43926,1,"Ꮖ"],[43927,1,"Ꮗ"],[43928,1,"Ꮘ"],[43929,1,"Ꮙ"],[43930,1,"Ꮚ"],[43931,1,"Ꮛ"],[43932,1,"Ꮜ"],[43933,1,"Ꮝ"],[43934,1,"Ꮞ"],[43935,1,"Ꮟ"],[43936,1,"Ꮠ"],[43937,1,"Ꮡ"],[43938,1,"Ꮢ"],[43939,1,"Ꮣ"],[43940,1,"Ꮤ"],[43941,1,"Ꮥ"],[43942,1,"Ꮦ"],[43943,1,"Ꮧ"],[43944,1,"Ꮨ"],[43945,1,"Ꮩ"],[43946,1,"Ꮪ"],[43947,1,"Ꮫ"],[43948,1,"Ꮬ"],[43949,1,"Ꮭ"],[43950,1,"Ꮮ"],[43951,1,"Ꮯ"],[43952,1,"Ꮰ"],[43953,1,"Ꮱ"],[43954,1,"Ꮲ"],[43955,1,"Ꮳ"],[43956,1,"Ꮴ"],[43957,1,"Ꮵ"],[43958,1,"Ꮶ"],[43959,1,"Ꮷ"],[43960,1,"Ꮸ"],[43961,1,"Ꮹ"],[43962,1,"Ꮺ"],[43963,1,"Ꮻ"],[43964,1,"Ꮼ"],[43965,1,"Ꮽ"],[43966,1,"Ꮾ"],[43967,1,"Ꮿ"],[[43968,44010],2],[44011,2],[[44012,44013],2],[[44014,44015],3],[[44016,44025],2],[[44026,44031],3],[[44032,55203],2],[[55204,55215],3],[[55216,55238],2],[[55239,55242],3],[[55243,55291],2],[[55292,55295],3],[[55296,57343],3],[[57344,63743],3],[63744,1,"豈"],[63745,1,"更"],[63746,1,"車"],[63747,1,"賈"],[63748,1,"滑"],[63749,1,"串"],[63750,1,"句"],[[63751,63752],1,"龜"],[63753,1,"契"],[63754,1,"金"],[63755,1,"喇"],[63756,1,"奈"],[63757,1,"懶"],[63758,1,"癩"],[63759,1,"羅"],[63760,1,"蘿"],[63761,1,"螺"],[63762,1,"裸"],[63763,1,"邏"],[63764,1,"樂"],[63765,1,"洛"],[63766,1,"烙"],[63767,1,"珞"],[63768,1,"落"],[63769,1,"酪"],[63770,1,"駱"],[63771,1,"亂"],[63772,1,"卵"],[63773,1,"欄"],[63774,1,"爛"],[63775,1,"蘭"],[63776,1,"鸞"],[63777,1,"嵐"],[63778,1,"濫"],[63779,1,"藍"],[63780,1,"襤"],[63781,1,"拉"],[63782,1,"臘"],[63783,1,"蠟"],[63784,1,"廊"],[63785,1,"朗"],[63786,1,"浪"],[63787,1,"狼"],[63788,1,"郎"],[63789,1,"來"],[63790,1,"冷"],[63791,1,"勞"],[63792,1,"擄"],[63793,1,"櫓"],[63794,1,"爐"],[63795,1,"盧"],[63796,1,"老"],[63797,1,"蘆"],[63798,1,"虜"],[63799,1,"路"],[63800,1,"露"],[63801,1,"魯"],[63802,1,"鷺"],[63803,1,"碌"],[63804,1,"祿"],[63805,1,"綠"],[63806,1,"菉"],[63807,1,"錄"],[63808,1,"鹿"],[63809,1,"論"],[63810,1,"壟"],[63811,1,"弄"],[63812,1,"籠"],[63813,1,"聾"],[63814,1,"牢"],[63815,1,"磊"],[63816,1,"賂"],[63817,1,"雷"],[63818,1,"壘"],[63819,1,"屢"],[63820,1,"樓"],[63821,1,"淚"],[63822,1,"漏"],[63823,1,"累"],[63824,1,"縷"],[63825,1,"陋"],[63826,1,"勒"],[63827,1,"肋"],[63828,1,"凜"],[63829,1,"凌"],[63830,1,"稜"],[63831,1,"綾"],[63832,1,"菱"],[63833,1,"陵"],[63834,1,"讀"],[63835,1,"拏"],[63836,1,"樂"],[63837,1,"諾"],[63838,1,"丹"],[63839,1,"寧"],[63840,1,"怒"],[63841,1,"率"],[63842,1,"異"],[63843,1,"北"],[63844,1,"磻"],[63845,1,"便"],[63846,1,"復"],[63847,1,"不"],[63848,1,"泌"],[63849,1,"數"],[63850,1,"索"],[63851,1,"參"],[63852,1,"塞"],[63853,1,"省"],[63854,1,"葉"],[63855,1,"說"],[63856,1,"殺"],[63857,1,"辰"],[63858,1,"沈"],[63859,1,"拾"],[63860,1,"若"],[63861,1,"掠"],[63862,1,"略"],[63863,1,"亮"],[63864,1,"兩"],[63865,1,"凉"],[63866,1,"梁"],[63867,1,"糧"],[63868,1,"良"],[63869,1,"諒"],[63870,1,"量"],[63871,1,"勵"],[63872,1,"呂"],[63873,1,"女"],[63874,1,"廬"],[63875,1,"旅"],[63876,1,"濾"],[63877,1,"礪"],[63878,1,"閭"],[63879,1,"驪"],[63880,1,"麗"],[63881,1,"黎"],[63882,1,"力"],[63883,1,"曆"],[63884,1,"歷"],[63885,1,"轢"],[63886,1,"年"],[63887,1,"憐"],[63888,1,"戀"],[63889,1,"撚"],[63890,1,"漣"],[63891,1,"煉"],[63892,1,"璉"],[63893,1,"秊"],[63894,1,"練"],[63895,1,"聯"],[63896,1,"輦"],[63897,1,"蓮"],[63898,1,"連"],[63899,1,"鍊"],[63900,1,"列"],[63901,1,"劣"],[63902,1,"咽"],[63903,1,"烈"],[63904,1,"裂"],[63905,1,"說"],[63906,1,"廉"],[63907,1,"念"],[63908,1,"捻"],[63909,1,"殮"],[63910,1,"簾"],[63911,1,"獵"],[63912,1,"令"],[63913,1,"囹"],[63914,1,"寧"],[63915,1,"嶺"],[63916,1,"怜"],[63917,1,"玲"],[63918,1,"瑩"],[63919,1,"羚"],[63920,1,"聆"],[63921,1,"鈴"],[63922,1,"零"],[63923,1,"靈"],[63924,1,"領"],[63925,1,"例"],[63926,1,"禮"],[63927,1,"醴"],[63928,1,"隸"],[63929,1,"惡"],[63930,1,"了"],[63931,1,"僚"],[63932,1,"寮"],[63933,1,"尿"],[63934,1,"料"],[63935,1,"樂"],[63936,1,"燎"],[63937,1,"療"],[63938,1,"蓼"],[63939,1,"遼"],[63940,1,"龍"],[63941,1,"暈"],[63942,1,"阮"],[63943,1,"劉"],[63944,1,"杻"],[63945,1,"柳"],[63946,1,"流"],[63947,1,"溜"],[63948,1,"琉"],[63949,1,"留"],[63950,1,"硫"],[63951,1,"紐"],[63952,1,"類"],[63953,1,"六"],[63954,1,"戮"],[63955,1,"陸"],[63956,1,"倫"],[63957,1,"崙"],[63958,1,"淪"],[63959,1,"輪"],[63960,1,"律"],[63961,1,"慄"],[63962,1,"栗"],[63963,1,"率"],[63964,1,"隆"],[63965,1,"利"],[63966,1,"吏"],[63967,1,"履"],[63968,1,"易"],[63969,1,"李"],[63970,1,"梨"],[63971,1,"泥"],[63972,1,"理"],[63973,1,"痢"],[63974,1,"罹"],[63975,1,"裏"],[63976,1,"裡"],[63977,1,"里"],[63978,1,"離"],[63979,1,"匿"],[63980,1,"溺"],[63981,1,"吝"],[63982,1,"燐"],[63983,1,"璘"],[63984,1,"藺"],[63985,1,"隣"],[63986,1,"鱗"],[63987,1,"麟"],[63988,1,"林"],[63989,1,"淋"],[63990,1,"臨"],[63991,1,"立"],[63992,1,"笠"],[63993,1,"粒"],[63994,1,"狀"],[63995,1,"炙"],[63996,1,"識"],[63997,1,"什"],[63998,1,"茶"],[63999,1,"刺"],[64000,1,"切"],[64001,1,"度"],[64002,1,"拓"],[64003,1,"糖"],[64004,1,"宅"],[64005,1,"洞"],[64006,1,"暴"],[64007,1,"輻"],[64008,1,"行"],[64009,1,"降"],[64010,1,"見"],[64011,1,"廓"],[64012,1,"兀"],[64013,1,"嗀"],[[64014,64015],2],[64016,1,"塚"],[64017,2],[64018,1,"晴"],[[64019,64020],2],[64021,1,"凞"],[64022,1,"猪"],[64023,1,"益"],[64024,1,"礼"],[64025,1,"神"],[64026,1,"祥"],[64027,1,"福"],[64028,1,"靖"],[64029,1,"精"],[64030,1,"羽"],[64031,2],[64032,1,"蘒"],[64033,2],[64034,1,"諸"],[[64035,64036],2],[64037,1,"逸"],[64038,1,"都"],[[64039,64041],2],[64042,1,"飯"],[64043,1,"飼"],[64044,1,"館"],[64045,1,"鶴"],[64046,1,"郞"],[64047,1,"隷"],[64048,1,"侮"],[64049,1,"僧"],[64050,1,"免"],[64051,1,"勉"],[64052,1,"勤"],[64053,1,"卑"],[64054,1,"喝"],[64055,1,"嘆"],[64056,1,"器"],[64057,1,"塀"],[64058,1,"墨"],[64059,1,"層"],[64060,1,"屮"],[64061,1,"悔"],[64062,1,"慨"],[64063,1,"憎"],[64064,1,"懲"],[64065,1,"敏"],[64066,1,"既"],[64067,1,"暑"],[64068,1,"梅"],[64069,1,"海"],[64070,1,"渚"],[64071,1,"漢"],[64072,1,"煮"],[64073,1,"爫"],[64074,1,"琢"],[64075,1,"碑"],[64076,1,"社"],[64077,1,"祉"],[64078,1,"祈"],[64079,1,"祐"],[64080,1,"祖"],[64081,1,"祝"],[64082,1,"禍"],[64083,1,"禎"],[64084,1,"穀"],[64085,1,"突"],[64086,1,"節"],[64087,1,"練"],[64088,1,"縉"],[64089,1,"繁"],[64090,1,"署"],[64091,1,"者"],[64092,1,"臭"],[[64093,64094],1,"艹"],[64095,1,"著"],[64096,1,"褐"],[64097,1,"視"],[64098,1,"謁"],[64099,1,"謹"],[64100,1,"賓"],[64101,1,"贈"],[64102,1,"辶"],[64103,1,"逸"],[64104,1,"難"],[64105,1,"響"],[64106,1,"頻"],[64107,1,"恵"],[64108,1,"𤋮"],[64109,1,"舘"],[[64110,64111],3],[64112,1,"並"],[64113,1,"况"],[64114,1,"全"],[64115,1,"侀"],[64116,1,"充"],[64117,1,"冀"],[64118,1,"勇"],[64119,1,"勺"],[64120,1,"喝"],[64121,1,"啕"],[64122,1,"喙"],[64123,1,"嗢"],[64124,1,"塚"],[64125,1,"墳"],[64126,1,"奄"],[64127,1,"奔"],[64128,1,"婢"],[64129,1,"嬨"],[64130,1,"廒"],[64131,1,"廙"],[64132,1,"彩"],[64133,1,"徭"],[64134,1,"惘"],[64135,1,"慎"],[64136,1,"愈"],[64137,1,"憎"],[64138,1,"慠"],[64139,1,"懲"],[64140,1,"戴"],[64141,1,"揄"],[64142,1,"搜"],[64143,1,"摒"],[64144,1,"敖"],[64145,1,"晴"],[64146,1,"朗"],[64147,1,"望"],[64148,1,"杖"],[64149,1,"歹"],[64150,1,"殺"],[64151,1,"流"],[64152,1,"滛"],[64153,1,"滋"],[64154,1,"漢"],[64155,1,"瀞"],[64156,1,"煮"],[64157,1,"瞧"],[64158,1,"爵"],[64159,1,"犯"],[64160,1,"猪"],[64161,1,"瑱"],[64162,1,"甆"],[64163,1,"画"],[64164,1,"瘝"],[64165,1,"瘟"],[64166,1,"益"],[64167,1,"盛"],[64168,1,"直"],[64169,1,"睊"],[64170,1,"着"],[64171,1,"磌"],[64172,1,"窱"],[64173,1,"節"],[64174,1,"类"],[64175,1,"絛"],[64176,1,"練"],[64177,1,"缾"],[64178,1,"者"],[64179,1,"荒"],[64180,1,"華"],[64181,1,"蝹"],[64182,1,"襁"],[64183,1,"覆"],[64184,1,"視"],[64185,1,"調"],[64186,1,"諸"],[64187,1,"請"],[64188,1,"謁"],[64189,1,"諾"],[64190,1,"諭"],[64191,1,"謹"],[64192,1,"變"],[64193,1,"贈"],[64194,1,"輸"],[64195,1,"遲"],[64196,1,"醙"],[64197,1,"鉶"],[64198,1,"陼"],[64199,1,"難"],[64200,1,"靖"],[64201,1,"韛"],[64202,1,"響"],[64203,1,"頋"],[64204,1,"頻"],[64205,1,"鬒"],[64206,1,"龜"],[64207,1,"𢡊"],[64208,1,"𢡄"],[64209,1,"𣏕"],[64210,1,"㮝"],[64211,1,"䀘"],[64212,1,"䀹"],[64213,1,"𥉉"],[64214,1,"𥳐"],[64215,1,"𧻓"],[64216,1,"齃"],[64217,1,"龎"],[[64218,64255],3],[64256,1,"ff"],[64257,1,"fi"],[64258,1,"fl"],[64259,1,"ffi"],[64260,1,"ffl"],[[64261,64262],1,"st"],[[64263,64274],3],[64275,1,"մն"],[64276,1,"մե"],[64277,1,"մի"],[64278,1,"վն"],[64279,1,"մխ"],[[64280,64284],3],[64285,1,"יִ"],[64286,2],[64287,1,"ײַ"],[64288,1,"ע"],[64289,1,"א"],[64290,1,"ד"],[64291,1,"ה"],[64292,1,"כ"],[64293,1,"ל"],[64294,1,"ם"],[64295,1,"ר"],[64296,1,"ת"],[64297,5,"+"],[64298,1,"שׁ"],[64299,1,"שׂ"],[64300,1,"שּׁ"],[64301,1,"שּׂ"],[64302,1,"אַ"],[64303,1,"אָ"],[64304,1,"אּ"],[64305,1,"בּ"],[64306,1,"גּ"],[64307,1,"דּ"],[64308,1,"הּ"],[64309,1,"וּ"],[64310,1,"זּ"],[64311,3],[64312,1,"טּ"],[64313,1,"יּ"],[64314,1,"ךּ"],[64315,1,"כּ"],[64316,1,"לּ"],[64317,3],[64318,1,"מּ"],[64319,3],[64320,1,"נּ"],[64321,1,"סּ"],[64322,3],[64323,1,"ףּ"],[64324,1,"פּ"],[64325,3],[64326,1,"צּ"],[64327,1,"קּ"],[64328,1,"רּ"],[64329,1,"שּ"],[64330,1,"תּ"],[64331,1,"וֹ"],[64332,1,"בֿ"],[64333,1,"כֿ"],[64334,1,"פֿ"],[64335,1,"אל"],[[64336,64337],1,"ٱ"],[[64338,64341],1,"ٻ"],[[64342,64345],1,"پ"],[[64346,64349],1,"ڀ"],[[64350,64353],1,"ٺ"],[[64354,64357],1,"ٿ"],[[64358,64361],1,"ٹ"],[[64362,64365],1,"ڤ"],[[64366,64369],1,"ڦ"],[[64370,64373],1,"ڄ"],[[64374,64377],1,"ڃ"],[[64378,64381],1,"چ"],[[64382,64385],1,"ڇ"],[[64386,64387],1,"ڍ"],[[64388,64389],1,"ڌ"],[[64390,64391],1,"ڎ"],[[64392,64393],1,"ڈ"],[[64394,64395],1,"ژ"],[[64396,64397],1,"ڑ"],[[64398,64401],1,"ک"],[[64402,64405],1,"گ"],[[64406,64409],1,"ڳ"],[[64410,64413],1,"ڱ"],[[64414,64415],1,"ں"],[[64416,64419],1,"ڻ"],[[64420,64421],1,"ۀ"],[[64422,64425],1,"ہ"],[[64426,64429],1,"ھ"],[[64430,64431],1,"ے"],[[64432,64433],1,"ۓ"],[[64434,64449],2],[64450,2],[[64451,64466],3],[[64467,64470],1,"ڭ"],[[64471,64472],1,"ۇ"],[[64473,64474],1,"ۆ"],[[64475,64476],1,"ۈ"],[64477,1,"ۇٴ"],[[64478,64479],1,"ۋ"],[[64480,64481],1,"ۅ"],[[64482,64483],1,"ۉ"],[[64484,64487],1,"ې"],[[64488,64489],1,"ى"],[[64490,64491],1,"ئا"],[[64492,64493],1,"ئە"],[[64494,64495],1,"ئو"],[[64496,64497],1,"ئۇ"],[[64498,64499],1,"ئۆ"],[[64500,64501],1,"ئۈ"],[[64502,64504],1,"ئې"],[[64505,64507],1,"ئى"],[[64508,64511],1,"ی"],[64512,1,"ئج"],[64513,1,"ئح"],[64514,1,"ئم"],[64515,1,"ئى"],[64516,1,"ئي"],[64517,1,"بج"],[64518,1,"بح"],[64519,1,"بخ"],[64520,1,"بم"],[64521,1,"بى"],[64522,1,"بي"],[64523,1,"تج"],[64524,1,"تح"],[64525,1,"تخ"],[64526,1,"تم"],[64527,1,"تى"],[64528,1,"تي"],[64529,1,"ثج"],[64530,1,"ثم"],[64531,1,"ثى"],[64532,1,"ثي"],[64533,1,"جح"],[64534,1,"جم"],[64535,1,"حج"],[64536,1,"حم"],[64537,1,"خج"],[64538,1,"خح"],[64539,1,"خم"],[64540,1,"سج"],[64541,1,"سح"],[64542,1,"سخ"],[64543,1,"سم"],[64544,1,"صح"],[64545,1,"صم"],[64546,1,"ضج"],[64547,1,"ضح"],[64548,1,"ضخ"],[64549,1,"ضم"],[64550,1,"طح"],[64551,1,"طم"],[64552,1,"ظم"],[64553,1,"عج"],[64554,1,"عم"],[64555,1,"غج"],[64556,1,"غم"],[64557,1,"فج"],[64558,1,"فح"],[64559,1,"فخ"],[64560,1,"فم"],[64561,1,"فى"],[64562,1,"في"],[64563,1,"قح"],[64564,1,"قم"],[64565,1,"قى"],[64566,1,"قي"],[64567,1,"كا"],[64568,1,"كج"],[64569,1,"كح"],[64570,1,"كخ"],[64571,1,"كل"],[64572,1,"كم"],[64573,1,"كى"],[64574,1,"كي"],[64575,1,"لج"],[64576,1,"لح"],[64577,1,"لخ"],[64578,1,"لم"],[64579,1,"لى"],[64580,1,"لي"],[64581,1,"مج"],[64582,1,"مح"],[64583,1,"مخ"],[64584,1,"مم"],[64585,1,"مى"],[64586,1,"مي"],[64587,1,"نج"],[64588,1,"نح"],[64589,1,"نخ"],[64590,1,"نم"],[64591,1,"نى"],[64592,1,"ني"],[64593,1,"هج"],[64594,1,"هم"],[64595,1,"هى"],[64596,1,"هي"],[64597,1,"يج"],[64598,1,"يح"],[64599,1,"يخ"],[64600,1,"يم"],[64601,1,"يى"],[64602,1,"يي"],[64603,1,"ذٰ"],[64604,1,"رٰ"],[64605,1,"ىٰ"],[64606,5," ٌّ"],[64607,5," ٍّ"],[64608,5," َّ"],[64609,5," ُّ"],[64610,5," ِّ"],[64611,5," ّٰ"],[64612,1,"ئر"],[64613,1,"ئز"],[64614,1,"ئم"],[64615,1,"ئن"],[64616,1,"ئى"],[64617,1,"ئي"],[64618,1,"بر"],[64619,1,"بز"],[64620,1,"بم"],[64621,1,"بن"],[64622,1,"بى"],[64623,1,"بي"],[64624,1,"تر"],[64625,1,"تز"],[64626,1,"تم"],[64627,1,"تن"],[64628,1,"تى"],[64629,1,"تي"],[64630,1,"ثر"],[64631,1,"ثز"],[64632,1,"ثم"],[64633,1,"ثن"],[64634,1,"ثى"],[64635,1,"ثي"],[64636,1,"فى"],[64637,1,"في"],[64638,1,"قى"],[64639,1,"قي"],[64640,1,"كا"],[64641,1,"كل"],[64642,1,"كم"],[64643,1,"كى"],[64644,1,"كي"],[64645,1,"لم"],[64646,1,"لى"],[64647,1,"لي"],[64648,1,"ما"],[64649,1,"مم"],[64650,1,"نر"],[64651,1,"نز"],[64652,1,"نم"],[64653,1,"نن"],[64654,1,"نى"],[64655,1,"ني"],[64656,1,"ىٰ"],[64657,1,"ير"],[64658,1,"يز"],[64659,1,"يم"],[64660,1,"ين"],[64661,1,"يى"],[64662,1,"يي"],[64663,1,"ئج"],[64664,1,"ئح"],[64665,1,"ئخ"],[64666,1,"ئم"],[64667,1,"ئه"],[64668,1,"بج"],[64669,1,"بح"],[64670,1,"بخ"],[64671,1,"بم"],[64672,1,"به"],[64673,1,"تج"],[64674,1,"تح"],[64675,1,"تخ"],[64676,1,"تم"],[64677,1,"ته"],[64678,1,"ثم"],[64679,1,"جح"],[64680,1,"جم"],[64681,1,"حج"],[64682,1,"حم"],[64683,1,"خج"],[64684,1,"خم"],[64685,1,"سج"],[64686,1,"سح"],[64687,1,"سخ"],[64688,1,"سم"],[64689,1,"صح"],[64690,1,"صخ"],[64691,1,"صم"],[64692,1,"ضج"],[64693,1,"ضح"],[64694,1,"ضخ"],[64695,1,"ضم"],[64696,1,"طح"],[64697,1,"ظم"],[64698,1,"عج"],[64699,1,"عم"],[64700,1,"غج"],[64701,1,"غم"],[64702,1,"فج"],[64703,1,"فح"],[64704,1,"فخ"],[64705,1,"فم"],[64706,1,"قح"],[64707,1,"قم"],[64708,1,"كج"],[64709,1,"كح"],[64710,1,"كخ"],[64711,1,"كل"],[64712,1,"كم"],[64713,1,"لج"],[64714,1,"لح"],[64715,1,"لخ"],[64716,1,"لم"],[64717,1,"له"],[64718,1,"مج"],[64719,1,"مح"],[64720,1,"مخ"],[64721,1,"مم"],[64722,1,"نج"],[64723,1,"نح"],[64724,1,"نخ"],[64725,1,"نم"],[64726,1,"نه"],[64727,1,"هج"],[64728,1,"هم"],[64729,1,"هٰ"],[64730,1,"يج"],[64731,1,"يح"],[64732,1,"يخ"],[64733,1,"يم"],[64734,1,"يه"],[64735,1,"ئم"],[64736,1,"ئه"],[64737,1,"بم"],[64738,1,"به"],[64739,1,"تم"],[64740,1,"ته"],[64741,1,"ثم"],[64742,1,"ثه"],[64743,1,"سم"],[64744,1,"سه"],[64745,1,"شم"],[64746,1,"شه"],[64747,1,"كل"],[64748,1,"كم"],[64749,1,"لم"],[64750,1,"نم"],[64751,1,"نه"],[64752,1,"يم"],[64753,1,"يه"],[64754,1,"ـَّ"],[64755,1,"ـُّ"],[64756,1,"ـِّ"],[64757,1,"طى"],[64758,1,"طي"],[64759,1,"عى"],[64760,1,"عي"],[64761,1,"غى"],[64762,1,"غي"],[64763,1,"سى"],[64764,1,"سي"],[64765,1,"شى"],[64766,1,"شي"],[64767,1,"حى"],[64768,1,"حي"],[64769,1,"جى"],[64770,1,"جي"],[64771,1,"خى"],[64772,1,"خي"],[64773,1,"صى"],[64774,1,"صي"],[64775,1,"ضى"],[64776,1,"ضي"],[64777,1,"شج"],[64778,1,"شح"],[64779,1,"شخ"],[64780,1,"شم"],[64781,1,"شر"],[64782,1,"سر"],[64783,1,"صر"],[64784,1,"ضر"],[64785,1,"طى"],[64786,1,"طي"],[64787,1,"عى"],[64788,1,"عي"],[64789,1,"غى"],[64790,1,"غي"],[64791,1,"سى"],[64792,1,"سي"],[64793,1,"شى"],[64794,1,"شي"],[64795,1,"حى"],[64796,1,"حي"],[64797,1,"جى"],[64798,1,"جي"],[64799,1,"خى"],[64800,1,"خي"],[64801,1,"صى"],[64802,1,"صي"],[64803,1,"ضى"],[64804,1,"ضي"],[64805,1,"شج"],[64806,1,"شح"],[64807,1,"شخ"],[64808,1,"شم"],[64809,1,"شر"],[64810,1,"سر"],[64811,1,"صر"],[64812,1,"ضر"],[64813,1,"شج"],[64814,1,"شح"],[64815,1,"شخ"],[64816,1,"شم"],[64817,1,"سه"],[64818,1,"شه"],[64819,1,"طم"],[64820,1,"سج"],[64821,1,"سح"],[64822,1,"سخ"],[64823,1,"شج"],[64824,1,"شح"],[64825,1,"شخ"],[64826,1,"طم"],[64827,1,"ظم"],[[64828,64829],1,"اً"],[[64830,64831],2],[[64832,64847],2],[64848,1,"تجم"],[[64849,64850],1,"تحج"],[64851,1,"تحم"],[64852,1,"تخم"],[64853,1,"تمج"],[64854,1,"تمح"],[64855,1,"تمخ"],[[64856,64857],1,"جمح"],[64858,1,"حمي"],[64859,1,"حمى"],[64860,1,"سحج"],[64861,1,"سجح"],[64862,1,"سجى"],[[64863,64864],1,"سمح"],[64865,1,"سمج"],[[64866,64867],1,"سمم"],[[64868,64869],1,"صحح"],[64870,1,"صمم"],[[64871,64872],1,"شحم"],[64873,1,"شجي"],[[64874,64875],1,"شمخ"],[[64876,64877],1,"شمم"],[64878,1,"ضحى"],[[64879,64880],1,"ضخم"],[[64881,64882],1,"طمح"],[64883,1,"طمم"],[64884,1,"طمي"],[64885,1,"عجم"],[[64886,64887],1,"عمم"],[64888,1,"عمى"],[64889,1,"غمم"],[64890,1,"غمي"],[64891,1,"غمى"],[[64892,64893],1,"فخم"],[64894,1,"قمح"],[64895,1,"قمم"],[64896,1,"لحم"],[64897,1,"لحي"],[64898,1,"لحى"],[[64899,64900],1,"لجج"],[[64901,64902],1,"لخم"],[[64903,64904],1,"لمح"],[64905,1,"محج"],[64906,1,"محم"],[64907,1,"محي"],[64908,1,"مجح"],[64909,1,"مجم"],[64910,1,"مخج"],[64911,1,"مخم"],[[64912,64913],3],[64914,1,"مجخ"],[64915,1,"همج"],[64916,1,"همم"],[64917,1,"نحم"],[64918,1,"نحى"],[[64919,64920],1,"نجم"],[64921,1,"نجى"],[64922,1,"نمي"],[64923,1,"نمى"],[[64924,64925],1,"يمم"],[64926,1,"بخي"],[64927,1,"تجي"],[64928,1,"تجى"],[64929,1,"تخي"],[64930,1,"تخى"],[64931,1,"تمي"],[64932,1,"تمى"],[64933,1,"جمي"],[64934,1,"جحى"],[64935,1,"جمى"],[64936,1,"سخى"],[64937,1,"صحي"],[64938,1,"شحي"],[64939,1,"ضحي"],[64940,1,"لجي"],[64941,1,"لمي"],[64942,1,"يحي"],[64943,1,"يجي"],[64944,1,"يمي"],[64945,1,"ممي"],[64946,1,"قمي"],[64947,1,"نحي"],[64948,1,"قمح"],[64949,1,"لحم"],[64950,1,"عمي"],[64951,1,"كمي"],[64952,1,"نجح"],[64953,1,"مخي"],[64954,1,"لجم"],[64955,1,"كمم"],[64956,1,"لجم"],[64957,1,"نجح"],[64958,1,"جحي"],[64959,1,"حجي"],[64960,1,"مجي"],[64961,1,"فمي"],[64962,1,"بحي"],[64963,1,"كمم"],[64964,1,"عجم"],[64965,1,"صمم"],[64966,1,"سخي"],[64967,1,"نجي"],[[64968,64974],3],[64975,2],[[64976,65007],3],[65008,1,"صلے"],[65009,1,"قلے"],[65010,1,"الله"],[65011,1,"اكبر"],[65012,1,"محمد"],[65013,1,"صلعم"],[65014,1,"رسول"],[65015,1,"عليه"],[65016,1,"وسلم"],[65017,1,"صلى"],[65018,5,"صلى الله عليه وسلم"],[65019,5,"جل جلاله"],[65020,1,"ریال"],[65021,2],[[65022,65023],2],[[65024,65039],7],[65040,5,","],[65041,1,"、"],[65042,3],[65043,5,":"],[65044,5,";"],[65045,5,"!"],[65046,5,"?"],[65047,1,"〖"],[65048,1,"〗"],[65049,3],[[65050,65055],3],[[65056,65059],2],[[65060,65062],2],[[65063,65069],2],[[65070,65071],2],[65072,3],[65073,1,"—"],[65074,1,"–"],[[65075,65076],5,"_"],[65077,5,"("],[65078,5,")"],[65079,5,"{"],[65080,5,"}"],[65081,1,"〔"],[65082,1,"〕"],[65083,1,"【"],[65084,1,"】"],[65085,1,"《"],[65086,1,"》"],[65087,1,"〈"],[65088,1,"〉"],[65089,1,"「"],[65090,1,"」"],[65091,1,"『"],[65092,1,"』"],[[65093,65094],2],[65095,5,"["],[65096,5,"]"],[[65097,65100],5," ̅"],[[65101,65103],5,"_"],[65104,5,","],[65105,1,"、"],[65106,3],[65107,3],[65108,5,";"],[65109,5,":"],[65110,5,"?"],[65111,5,"!"],[65112,1,"—"],[65113,5,"("],[65114,5,")"],[65115,5,"{"],[65116,5,"}"],[65117,1,"〔"],[65118,1,"〕"],[65119,5,"#"],[65120,5,"&"],[65121,5,"*"],[65122,5,"+"],[65123,1,"-"],[65124,5,"<"],[65125,5,">"],[65126,5,"="],[65127,3],[65128,5,"\\"],[65129,5,"$"],[65130,5,"%"],[65131,5,"@"],[[65132,65135],3],[65136,5," ً"],[65137,1,"ـً"],[65138,5," ٌ"],[65139,2],[65140,5," ٍ"],[65141,3],[65142,5," َ"],[65143,1,"ـَ"],[65144,5," ُ"],[65145,1,"ـُ"],[65146,5," ِ"],[65147,1,"ـِ"],[65148,5," ّ"],[65149,1,"ـّ"],[65150,5," ْ"],[65151,1,"ـْ"],[65152,1,"ء"],[[65153,65154],1,"آ"],[[65155,65156],1,"أ"],[[65157,65158],1,"ؤ"],[[65159,65160],1,"إ"],[[65161,65164],1,"ئ"],[[65165,65166],1,"ا"],[[65167,65170],1,"ب"],[[65171,65172],1,"ة"],[[65173,65176],1,"ت"],[[65177,65180],1,"ث"],[[65181,65184],1,"ج"],[[65185,65188],1,"ح"],[[65189,65192],1,"خ"],[[65193,65194],1,"د"],[[65195,65196],1,"ذ"],[[65197,65198],1,"ر"],[[65199,65200],1,"ز"],[[65201,65204],1,"س"],[[65205,65208],1,"ش"],[[65209,65212],1,"ص"],[[65213,65216],1,"ض"],[[65217,65220],1,"ط"],[[65221,65224],1,"ظ"],[[65225,65228],1,"ع"],[[65229,65232],1,"غ"],[[65233,65236],1,"ف"],[[65237,65240],1,"ق"],[[65241,65244],1,"ك"],[[65245,65248],1,"ل"],[[65249,65252],1,"م"],[[65253,65256],1,"ن"],[[65257,65260],1,"ه"],[[65261,65262],1,"و"],[[65263,65264],1,"ى"],[[65265,65268],1,"ي"],[[65269,65270],1,"لآ"],[[65271,65272],1,"لأ"],[[65273,65274],1,"لإ"],[[65275,65276],1,"لا"],[[65277,65278],3],[65279,7],[65280,3],[65281,5,"!"],[65282,5,"\""],[65283,5,"#"],[65284,5,"$"],[65285,5,"%"],[65286,5,"&"],[65287,5,"'"],[65288,5,"("],[65289,5,")"],[65290,5,"*"],[65291,5,"+"],[65292,5,","],[65293,1,"-"],[65294,1,"."],[65295,5,"/"],[65296,1,"0"],[65297,1,"1"],[65298,1,"2"],[65299,1,"3"],[65300,1,"4"],[65301,1,"5"],[65302,1,"6"],[65303,1,"7"],[65304,1,"8"],[65305,1,"9"],[65306,5,":"],[65307,5,";"],[65308,5,"<"],[65309,5,"="],[65310,5,">"],[65311,5,"?"],[65312,5,"@"],[65313,1,"a"],[65314,1,"b"],[65315,1,"c"],[65316,1,"d"],[65317,1,"e"],[65318,1,"f"],[65319,1,"g"],[65320,1,"h"],[65321,1,"i"],[65322,1,"j"],[65323,1,"k"],[65324,1,"l"],[65325,1,"m"],[65326,1,"n"],[65327,1,"o"],[65328,1,"p"],[65329,1,"q"],[65330,1,"r"],[65331,1,"s"],[65332,1,"t"],[65333,1,"u"],[65334,1,"v"],[65335,1,"w"],[65336,1,"x"],[65337,1,"y"],[65338,1,"z"],[65339,5,"["],[65340,5,"\\"],[65341,5,"]"],[65342,5,"^"],[65343,5,"_"],[65344,5,"`"],[65345,1,"a"],[65346,1,"b"],[65347,1,"c"],[65348,1,"d"],[65349,1,"e"],[65350,1,"f"],[65351,1,"g"],[65352,1,"h"],[65353,1,"i"],[65354,1,"j"],[65355,1,"k"],[65356,1,"l"],[65357,1,"m"],[65358,1,"n"],[65359,1,"o"],[65360,1,"p"],[65361,1,"q"],[65362,1,"r"],[65363,1,"s"],[65364,1,"t"],[65365,1,"u"],[65366,1,"v"],[65367,1,"w"],[65368,1,"x"],[65369,1,"y"],[65370,1,"z"],[65371,5,"{"],[65372,5,"|"],[65373,5,"}"],[65374,5,"~"],[65375,1,"⦅"],[65376,1,"⦆"],[65377,1,"."],[65378,1,"「"],[65379,1,"」"],[65380,1,"、"],[65381,1,"・"],[65382,1,"ヲ"],[65383,1,"ァ"],[65384,1,"ィ"],[65385,1,"ゥ"],[65386,1,"ェ"],[65387,1,"ォ"],[65388,1,"ャ"],[65389,1,"ュ"],[65390,1,"ョ"],[65391,1,"ッ"],[65392,1,"ー"],[65393,1,"ア"],[65394,1,"イ"],[65395,1,"ウ"],[65396,1,"エ"],[65397,1,"オ"],[65398,1,"カ"],[65399,1,"キ"],[65400,1,"ク"],[65401,1,"ケ"],[65402,1,"コ"],[65403,1,"サ"],[65404,1,"シ"],[65405,1,"ス"],[65406,1,"セ"],[65407,1,"ソ"],[65408,1,"タ"],[65409,1,"チ"],[65410,1,"ツ"],[65411,1,"テ"],[65412,1,"ト"],[65413,1,"ナ"],[65414,1,"ニ"],[65415,1,"ヌ"],[65416,1,"ネ"],[65417,1,"ノ"],[65418,1,"ハ"],[65419,1,"ヒ"],[65420,1,"フ"],[65421,1,"ヘ"],[65422,1,"ホ"],[65423,1,"マ"],[65424,1,"ミ"],[65425,1,"ム"],[65426,1,"メ"],[65427,1,"モ"],[65428,1,"ヤ"],[65429,1,"ユ"],[65430,1,"ヨ"],[65431,1,"ラ"],[65432,1,"リ"],[65433,1,"ル"],[65434,1,"レ"],[65435,1,"ロ"],[65436,1,"ワ"],[65437,1,"ン"],[65438,1,"゙"],[65439,1,"゚"],[65440,3],[65441,1,"ᄀ"],[65442,1,"ᄁ"],[65443,1,"ᆪ"],[65444,1,"ᄂ"],[65445,1,"ᆬ"],[65446,1,"ᆭ"],[65447,1,"ᄃ"],[65448,1,"ᄄ"],[65449,1,"ᄅ"],[65450,1,"ᆰ"],[65451,1,"ᆱ"],[65452,1,"ᆲ"],[65453,1,"ᆳ"],[65454,1,"ᆴ"],[65455,1,"ᆵ"],[65456,1,"ᄚ"],[65457,1,"ᄆ"],[65458,1,"ᄇ"],[65459,1,"ᄈ"],[65460,1,"ᄡ"],[65461,1,"ᄉ"],[65462,1,"ᄊ"],[65463,1,"ᄋ"],[65464,1,"ᄌ"],[65465,1,"ᄍ"],[65466,1,"ᄎ"],[65467,1,"ᄏ"],[65468,1,"ᄐ"],[65469,1,"ᄑ"],[65470,1,"ᄒ"],[[65471,65473],3],[65474,1,"ᅡ"],[65475,1,"ᅢ"],[65476,1,"ᅣ"],[65477,1,"ᅤ"],[65478,1,"ᅥ"],[65479,1,"ᅦ"],[[65480,65481],3],[65482,1,"ᅧ"],[65483,1,"ᅨ"],[65484,1,"ᅩ"],[65485,1,"ᅪ"],[65486,1,"ᅫ"],[65487,1,"ᅬ"],[[65488,65489],3],[65490,1,"ᅭ"],[65491,1,"ᅮ"],[65492,1,"ᅯ"],[65493,1,"ᅰ"],[65494,1,"ᅱ"],[65495,1,"ᅲ"],[[65496,65497],3],[65498,1,"ᅳ"],[65499,1,"ᅴ"],[65500,1,"ᅵ"],[[65501,65503],3],[65504,1,"¢"],[65505,1,"£"],[65506,1,"¬"],[65507,5," ̄"],[65508,1,"¦"],[65509,1,"¥"],[65510,1,"₩"],[65511,3],[65512,1,"│"],[65513,1,"←"],[65514,1,"↑"],[65515,1,"→"],[65516,1,"↓"],[65517,1,"■"],[65518,1,"○"],[[65519,65528],3],[[65529,65531],3],[65532,3],[65533,3],[[65534,65535],3],[[65536,65547],2],[65548,3],[[65549,65574],2],[65575,3],[[65576,65594],2],[65595,3],[[65596,65597],2],[65598,3],[[65599,65613],2],[[65614,65615],3],[[65616,65629],2],[[65630,65663],3],[[65664,65786],2],[[65787,65791],3],[[65792,65794],2],[[65795,65798],3],[[65799,65843],2],[[65844,65846],3],[[65847,65855],2],[[65856,65930],2],[[65931,65932],2],[[65933,65934],2],[65935,3],[[65936,65947],2],[65948,2],[[65949,65951],3],[65952,2],[[65953,65999],3],[[66000,66044],2],[66045,2],[[66046,66175],3],[[66176,66204],2],[[66205,66207],3],[[66208,66256],2],[[66257,66271],3],[66272,2],[[66273,66299],2],[[66300,66303],3],[[66304,66334],2],[66335,2],[[66336,66339],2],[[66340,66348],3],[[66349,66351],2],[[66352,66368],2],[66369,2],[[66370,66377],2],[66378,2],[[66379,66383],3],[[66384,66426],2],[[66427,66431],3],[[66432,66461],2],[66462,3],[66463,2],[[66464,66499],2],[[66500,66503],3],[[66504,66511],2],[[66512,66517],2],[[66518,66559],3],[66560,1,"𐐨"],[66561,1,"𐐩"],[66562,1,"𐐪"],[66563,1,"𐐫"],[66564,1,"𐐬"],[66565,1,"𐐭"],[66566,1,"𐐮"],[66567,1,"𐐯"],[66568,1,"𐐰"],[66569,1,"𐐱"],[66570,1,"𐐲"],[66571,1,"𐐳"],[66572,1,"𐐴"],[66573,1,"𐐵"],[66574,1,"𐐶"],[66575,1,"𐐷"],[66576,1,"𐐸"],[66577,1,"𐐹"],[66578,1,"𐐺"],[66579,1,"𐐻"],[66580,1,"𐐼"],[66581,1,"𐐽"],[66582,1,"𐐾"],[66583,1,"𐐿"],[66584,1,"𐑀"],[66585,1,"𐑁"],[66586,1,"𐑂"],[66587,1,"𐑃"],[66588,1,"𐑄"],[66589,1,"𐑅"],[66590,1,"𐑆"],[66591,1,"𐑇"],[66592,1,"𐑈"],[66593,1,"𐑉"],[66594,1,"𐑊"],[66595,1,"𐑋"],[66596,1,"𐑌"],[66597,1,"𐑍"],[66598,1,"𐑎"],[66599,1,"𐑏"],[[66600,66637],2],[[66638,66717],2],[[66718,66719],3],[[66720,66729],2],[[66730,66735],3],[66736,1,"𐓘"],[66737,1,"𐓙"],[66738,1,"𐓚"],[66739,1,"𐓛"],[66740,1,"𐓜"],[66741,1,"𐓝"],[66742,1,"𐓞"],[66743,1,"𐓟"],[66744,1,"𐓠"],[66745,1,"𐓡"],[66746,1,"𐓢"],[66747,1,"𐓣"],[66748,1,"𐓤"],[66749,1,"𐓥"],[66750,1,"𐓦"],[66751,1,"𐓧"],[66752,1,"𐓨"],[66753,1,"𐓩"],[66754,1,"𐓪"],[66755,1,"𐓫"],[66756,1,"𐓬"],[66757,1,"𐓭"],[66758,1,"𐓮"],[66759,1,"𐓯"],[66760,1,"𐓰"],[66761,1,"𐓱"],[66762,1,"𐓲"],[66763,1,"𐓳"],[66764,1,"𐓴"],[66765,1,"𐓵"],[66766,1,"𐓶"],[66767,1,"𐓷"],[66768,1,"𐓸"],[66769,1,"𐓹"],[66770,1,"𐓺"],[66771,1,"𐓻"],[[66772,66775],3],[[66776,66811],2],[[66812,66815],3],[[66816,66855],2],[[66856,66863],3],[[66864,66915],2],[[66916,66926],3],[66927,2],[66928,1,"𐖗"],[66929,1,"𐖘"],[66930,1,"𐖙"],[66931,1,"𐖚"],[66932,1,"𐖛"],[66933,1,"𐖜"],[66934,1,"𐖝"],[66935,1,"𐖞"],[66936,1,"𐖟"],[66937,1,"𐖠"],[66938,1,"𐖡"],[66939,3],[66940,1,"𐖣"],[66941,1,"𐖤"],[66942,1,"𐖥"],[66943,1,"𐖦"],[66944,1,"𐖧"],[66945,1,"𐖨"],[66946,1,"𐖩"],[66947,1,"𐖪"],[66948,1,"𐖫"],[66949,1,"𐖬"],[66950,1,"𐖭"],[66951,1,"𐖮"],[66952,1,"𐖯"],[66953,1,"𐖰"],[66954,1,"𐖱"],[66955,3],[66956,1,"𐖳"],[66957,1,"𐖴"],[66958,1,"𐖵"],[66959,1,"𐖶"],[66960,1,"𐖷"],[66961,1,"𐖸"],[66962,1,"𐖹"],[66963,3],[66964,1,"𐖻"],[66965,1,"𐖼"],[66966,3],[[66967,66977],2],[66978,3],[[66979,66993],2],[66994,3],[[66995,67001],2],[67002,3],[[67003,67004],2],[[67005,67071],3],[[67072,67382],2],[[67383,67391],3],[[67392,67413],2],[[67414,67423],3],[[67424,67431],2],[[67432,67455],3],[67456,2],[67457,1,"ː"],[67458,1,"ˑ"],[67459,1,"æ"],[67460,1,"ʙ"],[67461,1,"ɓ"],[67462,3],[67463,1,"ʣ"],[67464,1,"ꭦ"],[67465,1,"ʥ"],[67466,1,"ʤ"],[67467,1,"ɖ"],[67468,1,"ɗ"],[67469,1,"ᶑ"],[67470,1,"ɘ"],[67471,1,"ɞ"],[67472,1,"ʩ"],[67473,1,"ɤ"],[67474,1,"ɢ"],[67475,1,"ɠ"],[67476,1,"ʛ"],[67477,1,"ħ"],[67478,1,"ʜ"],[67479,1,"ɧ"],[67480,1,"ʄ"],[67481,1,"ʪ"],[67482,1,"ʫ"],[67483,1,"ɬ"],[67484,1,"𝼄"],[67485,1,"ꞎ"],[67486,1,"ɮ"],[67487,1,"𝼅"],[67488,1,"ʎ"],[67489,1,"𝼆"],[67490,1,"ø"],[67491,1,"ɶ"],[67492,1,"ɷ"],[67493,1,"q"],[67494,1,"ɺ"],[67495,1,"𝼈"],[67496,1,"ɽ"],[67497,1,"ɾ"],[67498,1,"ʀ"],[67499,1,"ʨ"],[67500,1,"ʦ"],[67501,1,"ꭧ"],[67502,1,"ʧ"],[67503,1,"ʈ"],[67504,1,"ⱱ"],[67505,3],[67506,1,"ʏ"],[67507,1,"ʡ"],[67508,1,"ʢ"],[67509,1,"ʘ"],[67510,1,"ǀ"],[67511,1,"ǁ"],[67512,1,"ǂ"],[67513,1,"𝼊"],[67514,1,"𝼞"],[[67515,67583],3],[[67584,67589],2],[[67590,67591],3],[67592,2],[67593,3],[[67594,67637],2],[67638,3],[[67639,67640],2],[[67641,67643],3],[67644,2],[[67645,67646],3],[67647,2],[[67648,67669],2],[67670,3],[[67671,67679],2],[[67680,67702],2],[[67703,67711],2],[[67712,67742],2],[[67743,67750],3],[[67751,67759],2],[[67760,67807],3],[[67808,67826],2],[67827,3],[[67828,67829],2],[[67830,67834],3],[[67835,67839],2],[[67840,67861],2],[[67862,67865],2],[[67866,67867],2],[[67868,67870],3],[67871,2],[[67872,67897],2],[[67898,67902],3],[67903,2],[[67904,67967],3],[[67968,68023],2],[[68024,68027],3],[[68028,68029],2],[[68030,68031],2],[[68032,68047],2],[[68048,68049],3],[[68050,68095],2],[[68096,68099],2],[68100,3],[[68101,68102],2],[[68103,68107],3],[[68108,68115],2],[68116,3],[[68117,68119],2],[68120,3],[[68121,68147],2],[[68148,68149],2],[[68150,68151],3],[[68152,68154],2],[[68155,68158],3],[68159,2],[[68160,68167],2],[68168,2],[[68169,68175],3],[[68176,68184],2],[[68185,68191],3],[[68192,68220],2],[[68221,68223],2],[[68224,68252],2],[[68253,68255],2],[[68256,68287],3],[[68288,68295],2],[68296,2],[[68297,68326],2],[[68327,68330],3],[[68331,68342],2],[[68343,68351],3],[[68352,68405],2],[[68406,68408],3],[[68409,68415],2],[[68416,68437],2],[[68438,68439],3],[[68440,68447],2],[[68448,68466],2],[[68467,68471],3],[[68472,68479],2],[[68480,68497],2],[[68498,68504],3],[[68505,68508],2],[[68509,68520],3],[[68521,68527],2],[[68528,68607],3],[[68608,68680],2],[[68681,68735],3],[68736,1,"𐳀"],[68737,1,"𐳁"],[68738,1,"𐳂"],[68739,1,"𐳃"],[68740,1,"𐳄"],[68741,1,"𐳅"],[68742,1,"𐳆"],[68743,1,"𐳇"],[68744,1,"𐳈"],[68745,1,"𐳉"],[68746,1,"𐳊"],[68747,1,"𐳋"],[68748,1,"𐳌"],[68749,1,"𐳍"],[68750,1,"𐳎"],[68751,1,"𐳏"],[68752,1,"𐳐"],[68753,1,"𐳑"],[68754,1,"𐳒"],[68755,1,"𐳓"],[68756,1,"𐳔"],[68757,1,"𐳕"],[68758,1,"𐳖"],[68759,1,"𐳗"],[68760,1,"𐳘"],[68761,1,"𐳙"],[68762,1,"𐳚"],[68763,1,"𐳛"],[68764,1,"𐳜"],[68765,1,"𐳝"],[68766,1,"𐳞"],[68767,1,"𐳟"],[68768,1,"𐳠"],[68769,1,"𐳡"],[68770,1,"𐳢"],[68771,1,"𐳣"],[68772,1,"𐳤"],[68773,1,"𐳥"],[68774,1,"𐳦"],[68775,1,"𐳧"],[68776,1,"𐳨"],[68777,1,"𐳩"],[68778,1,"𐳪"],[68779,1,"𐳫"],[68780,1,"𐳬"],[68781,1,"𐳭"],[68782,1,"𐳮"],[68783,1,"𐳯"],[68784,1,"𐳰"],[68785,1,"𐳱"],[68786,1,"𐳲"],[[68787,68799],3],[[68800,68850],2],[[68851,68857],3],[[68858,68863],2],[[68864,68903],2],[[68904,68911],3],[[68912,68921],2],[[68922,69215],3],[[69216,69246],2],[69247,3],[[69248,69289],2],[69290,3],[[69291,69292],2],[69293,2],[[69294,69295],3],[[69296,69297],2],[[69298,69372],3],[[69373,69375],2],[[69376,69404],2],[[69405,69414],2],[69415,2],[[69416,69423],3],[[69424,69456],2],[[69457,69465],2],[[69466,69487],3],[[69488,69509],2],[[69510,69513],2],[[69514,69551],3],[[69552,69572],2],[[69573,69579],2],[[69580,69599],3],[[69600,69622],2],[[69623,69631],3],[[69632,69702],2],[[69703,69709],2],[[69710,69713],3],[[69714,69733],2],[[69734,69743],2],[[69744,69749],2],[[69750,69758],3],[69759,2],[[69760,69818],2],[[69819,69820],2],[69821,3],[[69822,69825],2],[69826,2],[[69827,69836],3],[69837,3],[[69838,69839],3],[[69840,69864],2],[[69865,69871],3],[[69872,69881],2],[[69882,69887],3],[[69888,69940],2],[69941,3],[[69942,69951],2],[[69952,69955],2],[[69956,69958],2],[69959,2],[[69960,69967],3],[[69968,70003],2],[[70004,70005],2],[70006,2],[[70007,70015],3],[[70016,70084],2],[[70085,70088],2],[[70089,70092],2],[70093,2],[[70094,70095],2],[[70096,70105],2],[70106,2],[70107,2],[70108,2],[[70109,70111],2],[70112,3],[[70113,70132],2],[[70133,70143],3],[[70144,70161],2],[70162,3],[[70163,70199],2],[[70200,70205],2],[70206,2],[[70207,70209],2],[[70210,70271],3],[[70272,70278],2],[70279,3],[70280,2],[70281,3],[[70282,70285],2],[70286,3],[[70287,70301],2],[70302,3],[[70303,70312],2],[70313,2],[[70314,70319],3],[[70320,70378],2],[[70379,70383],3],[[70384,70393],2],[[70394,70399],3],[70400,2],[[70401,70403],2],[70404,3],[[70405,70412],2],[[70413,70414],3],[[70415,70416],2],[[70417,70418],3],[[70419,70440],2],[70441,3],[[70442,70448],2],[70449,3],[[70450,70451],2],[70452,3],[[70453,70457],2],[70458,3],[70459,2],[[70460,70468],2],[[70469,70470],3],[[70471,70472],2],[[70473,70474],3],[[70475,70477],2],[[70478,70479],3],[70480,2],[[70481,70486],3],[70487,2],[[70488,70492],3],[[70493,70499],2],[[70500,70501],3],[[70502,70508],2],[[70509,70511],3],[[70512,70516],2],[[70517,70655],3],[[70656,70730],2],[[70731,70735],2],[[70736,70745],2],[70746,2],[70747,2],[70748,3],[70749,2],[70750,2],[70751,2],[[70752,70753],2],[[70754,70783],3],[[70784,70853],2],[70854,2],[70855,2],[[70856,70863],3],[[70864,70873],2],[[70874,71039],3],[[71040,71093],2],[[71094,71095],3],[[71096,71104],2],[[71105,71113],2],[[71114,71127],2],[[71128,71133],2],[[71134,71167],3],[[71168,71232],2],[[71233,71235],2],[71236,2],[[71237,71247],3],[[71248,71257],2],[[71258,71263],3],[[71264,71276],2],[[71277,71295],3],[[71296,71351],2],[71352,2],[71353,2],[[71354,71359],3],[[71360,71369],2],[[71370,71423],3],[[71424,71449],2],[71450,2],[[71451,71452],3],[[71453,71467],2],[[71468,71471],3],[[71472,71481],2],[[71482,71487],2],[[71488,71494],2],[[71495,71679],3],[[71680,71738],2],[71739,2],[[71740,71839],3],[71840,1,"𑣀"],[71841,1,"𑣁"],[71842,1,"𑣂"],[71843,1,"𑣃"],[71844,1,"𑣄"],[71845,1,"𑣅"],[71846,1,"𑣆"],[71847,1,"𑣇"],[71848,1,"𑣈"],[71849,1,"𑣉"],[71850,1,"𑣊"],[71851,1,"𑣋"],[71852,1,"𑣌"],[71853,1,"𑣍"],[71854,1,"𑣎"],[71855,1,"𑣏"],[71856,1,"𑣐"],[71857,1,"𑣑"],[71858,1,"𑣒"],[71859,1,"𑣓"],[71860,1,"𑣔"],[71861,1,"𑣕"],[71862,1,"𑣖"],[71863,1,"𑣗"],[71864,1,"𑣘"],[71865,1,"𑣙"],[71866,1,"𑣚"],[71867,1,"𑣛"],[71868,1,"𑣜"],[71869,1,"𑣝"],[71870,1,"𑣞"],[71871,1,"𑣟"],[[71872,71913],2],[[71914,71922],2],[[71923,71934],3],[71935,2],[[71936,71942],2],[[71943,71944],3],[71945,2],[[71946,71947],3],[[71948,71955],2],[71956,3],[[71957,71958],2],[71959,3],[[71960,71989],2],[71990,3],[[71991,71992],2],[[71993,71994],3],[[71995,72003],2],[[72004,72006],2],[[72007,72015],3],[[72016,72025],2],[[72026,72095],3],[[72096,72103],2],[[72104,72105],3],[[72106,72151],2],[[72152,72153],3],[[72154,72161],2],[72162,2],[[72163,72164],2],[[72165,72191],3],[[72192,72254],2],[[72255,72262],2],[72263,2],[[72264,72271],3],[[72272,72323],2],[[72324,72325],2],[[72326,72345],2],[[72346,72348],2],[72349,2],[[72350,72354],2],[[72355,72367],3],[[72368,72383],2],[[72384,72440],2],[[72441,72447],3],[[72448,72457],2],[[72458,72703],3],[[72704,72712],2],[72713,3],[[72714,72758],2],[72759,3],[[72760,72768],2],[[72769,72773],2],[[72774,72783],3],[[72784,72793],2],[[72794,72812],2],[[72813,72815],3],[[72816,72817],2],[[72818,72847],2],[[72848,72849],3],[[72850,72871],2],[72872,3],[[72873,72886],2],[[72887,72959],3],[[72960,72966],2],[72967,3],[[72968,72969],2],[72970,3],[[72971,73014],2],[[73015,73017],3],[73018,2],[73019,3],[[73020,73021],2],[73022,3],[[73023,73031],2],[[73032,73039],3],[[73040,73049],2],[[73050,73055],3],[[73056,73061],2],[73062,3],[[73063,73064],2],[73065,3],[[73066,73102],2],[73103,3],[[73104,73105],2],[73106,3],[[73107,73112],2],[[73113,73119],3],[[73120,73129],2],[[73130,73439],3],[[73440,73462],2],[[73463,73464],2],[[73465,73471],3],[[73472,73488],2],[73489,3],[[73490,73530],2],[[73531,73533],3],[[73534,73538],2],[[73539,73551],2],[[73552,73561],2],[[73562,73647],3],[73648,2],[[73649,73663],3],[[73664,73713],2],[[73714,73726],3],[73727,2],[[73728,74606],2],[[74607,74648],2],[74649,2],[[74650,74751],3],[[74752,74850],2],[[74851,74862],2],[74863,3],[[74864,74867],2],[74868,2],[[74869,74879],3],[[74880,75075],2],[[75076,77711],3],[[77712,77808],2],[[77809,77810],2],[[77811,77823],3],[[77824,78894],2],[78895,2],[[78896,78904],3],[[78905,78911],3],[[78912,78933],2],[[78934,82943],3],[[82944,83526],2],[[83527,92159],3],[[92160,92728],2],[[92729,92735],3],[[92736,92766],2],[92767,3],[[92768,92777],2],[[92778,92781],3],[[92782,92783],2],[[92784,92862],2],[92863,3],[[92864,92873],2],[[92874,92879],3],[[92880,92909],2],[[92910,92911],3],[[92912,92916],2],[92917,2],[[92918,92927],3],[[92928,92982],2],[[92983,92991],2],[[92992,92995],2],[[92996,92997],2],[[92998,93007],3],[[93008,93017],2],[93018,3],[[93019,93025],2],[93026,3],[[93027,93047],2],[[93048,93052],3],[[93053,93071],2],[[93072,93759],3],[93760,1,"𖹠"],[93761,1,"𖹡"],[93762,1,"𖹢"],[93763,1,"𖹣"],[93764,1,"𖹤"],[93765,1,"𖹥"],[93766,1,"𖹦"],[93767,1,"𖹧"],[93768,1,"𖹨"],[93769,1,"𖹩"],[93770,1,"𖹪"],[93771,1,"𖹫"],[93772,1,"𖹬"],[93773,1,"𖹭"],[93774,1,"𖹮"],[93775,1,"𖹯"],[93776,1,"𖹰"],[93777,1,"𖹱"],[93778,1,"𖹲"],[93779,1,"𖹳"],[93780,1,"𖹴"],[93781,1,"𖹵"],[93782,1,"𖹶"],[93783,1,"𖹷"],[93784,1,"𖹸"],[93785,1,"𖹹"],[93786,1,"𖹺"],[93787,1,"𖹻"],[93788,1,"𖹼"],[93789,1,"𖹽"],[93790,1,"𖹾"],[93791,1,"𖹿"],[[93792,93823],2],[[93824,93850],2],[[93851,93951],3],[[93952,94020],2],[[94021,94026],2],[[94027,94030],3],[94031,2],[[94032,94078],2],[[94079,94087],2],[[94088,94094],3],[[94095,94111],2],[[94112,94175],3],[94176,2],[94177,2],[94178,2],[94179,2],[94180,2],[[94181,94191],3],[[94192,94193],2],[[94194,94207],3],[[94208,100332],2],[[100333,100337],2],[[100338,100343],2],[[100344,100351],3],[[100352,101106],2],[[101107,101589],2],[[101590,101631],3],[[101632,101640],2],[[101641,110575],3],[[110576,110579],2],[110580,3],[[110581,110587],2],[110588,3],[[110589,110590],2],[110591,3],[[110592,110593],2],[[110594,110878],2],[[110879,110882],2],[[110883,110897],3],[110898,2],[[110899,110927],3],[[110928,110930],2],[[110931,110932],3],[110933,2],[[110934,110947],3],[[110948,110951],2],[[110952,110959],3],[[110960,111355],2],[[111356,113663],3],[[113664,113770],2],[[113771,113775],3],[[113776,113788],2],[[113789,113791],3],[[113792,113800],2],[[113801,113807],3],[[113808,113817],2],[[113818,113819],3],[113820,2],[[113821,113822],2],[113823,2],[[113824,113827],7],[[113828,118527],3],[[118528,118573],2],[[118574,118575],3],[[118576,118598],2],[[118599,118607],3],[[118608,118723],2],[[118724,118783],3],[[118784,119029],2],[[119030,119039],3],[[119040,119078],2],[[119079,119080],3],[119081,2],[[119082,119133],2],[119134,1,"𝅗𝅥"],[119135,1,"𝅘𝅥"],[119136,1,"𝅘𝅥𝅮"],[119137,1,"𝅘𝅥𝅯"],[119138,1,"𝅘𝅥𝅰"],[119139,1,"𝅘𝅥𝅱"],[119140,1,"𝅘𝅥𝅲"],[[119141,119154],2],[[119155,119162],3],[[119163,119226],2],[119227,1,"𝆹𝅥"],[119228,1,"𝆺𝅥"],[119229,1,"𝆹𝅥𝅮"],[119230,1,"𝆺𝅥𝅮"],[119231,1,"𝆹𝅥𝅯"],[119232,1,"𝆺𝅥𝅯"],[[119233,119261],2],[[119262,119272],2],[[119273,119274],2],[[119275,119295],3],[[119296,119365],2],[[119366,119487],3],[[119488,119507],2],[[119508,119519],3],[[119520,119539],2],[[119540,119551],3],[[119552,119638],2],[[119639,119647],3],[[119648,119665],2],[[119666,119672],2],[[119673,119807],3],[119808,1,"a"],[119809,1,"b"],[119810,1,"c"],[119811,1,"d"],[119812,1,"e"],[119813,1,"f"],[119814,1,"g"],[119815,1,"h"],[119816,1,"i"],[119817,1,"j"],[119818,1,"k"],[119819,1,"l"],[119820,1,"m"],[119821,1,"n"],[119822,1,"o"],[119823,1,"p"],[119824,1,"q"],[119825,1,"r"],[119826,1,"s"],[119827,1,"t"],[119828,1,"u"],[119829,1,"v"],[119830,1,"w"],[119831,1,"x"],[119832,1,"y"],[119833,1,"z"],[119834,1,"a"],[119835,1,"b"],[119836,1,"c"],[119837,1,"d"],[119838,1,"e"],[119839,1,"f"],[119840,1,"g"],[119841,1,"h"],[119842,1,"i"],[119843,1,"j"],[119844,1,"k"],[119845,1,"l"],[119846,1,"m"],[119847,1,"n"],[119848,1,"o"],[119849,1,"p"],[119850,1,"q"],[119851,1,"r"],[119852,1,"s"],[119853,1,"t"],[119854,1,"u"],[119855,1,"v"],[119856,1,"w"],[119857,1,"x"],[119858,1,"y"],[119859,1,"z"],[119860,1,"a"],[119861,1,"b"],[119862,1,"c"],[119863,1,"d"],[119864,1,"e"],[119865,1,"f"],[119866,1,"g"],[119867,1,"h"],[119868,1,"i"],[119869,1,"j"],[119870,1,"k"],[119871,1,"l"],[119872,1,"m"],[119873,1,"n"],[119874,1,"o"],[119875,1,"p"],[119876,1,"q"],[119877,1,"r"],[119878,1,"s"],[119879,1,"t"],[119880,1,"u"],[119881,1,"v"],[119882,1,"w"],[119883,1,"x"],[119884,1,"y"],[119885,1,"z"],[119886,1,"a"],[119887,1,"b"],[119888,1,"c"],[119889,1,"d"],[119890,1,"e"],[119891,1,"f"],[119892,1,"g"],[119893,3],[119894,1,"i"],[119895,1,"j"],[119896,1,"k"],[119897,1,"l"],[119898,1,"m"],[119899,1,"n"],[119900,1,"o"],[119901,1,"p"],[119902,1,"q"],[119903,1,"r"],[119904,1,"s"],[119905,1,"t"],[119906,1,"u"],[119907,1,"v"],[119908,1,"w"],[119909,1,"x"],[119910,1,"y"],[119911,1,"z"],[119912,1,"a"],[119913,1,"b"],[119914,1,"c"],[119915,1,"d"],[119916,1,"e"],[119917,1,"f"],[119918,1,"g"],[119919,1,"h"],[119920,1,"i"],[119921,1,"j"],[119922,1,"k"],[119923,1,"l"],[119924,1,"m"],[119925,1,"n"],[119926,1,"o"],[119927,1,"p"],[119928,1,"q"],[119929,1,"r"],[119930,1,"s"],[119931,1,"t"],[119932,1,"u"],[119933,1,"v"],[119934,1,"w"],[119935,1,"x"],[119936,1,"y"],[119937,1,"z"],[119938,1,"a"],[119939,1,"b"],[119940,1,"c"],[119941,1,"d"],[119942,1,"e"],[119943,1,"f"],[119944,1,"g"],[119945,1,"h"],[119946,1,"i"],[119947,1,"j"],[119948,1,"k"],[119949,1,"l"],[119950,1,"m"],[119951,1,"n"],[119952,1,"o"],[119953,1,"p"],[119954,1,"q"],[119955,1,"r"],[119956,1,"s"],[119957,1,"t"],[119958,1,"u"],[119959,1,"v"],[119960,1,"w"],[119961,1,"x"],[119962,1,"y"],[119963,1,"z"],[119964,1,"a"],[119965,3],[119966,1,"c"],[119967,1,"d"],[[119968,119969],3],[119970,1,"g"],[[119971,119972],3],[119973,1,"j"],[119974,1,"k"],[[119975,119976],3],[119977,1,"n"],[119978,1,"o"],[119979,1,"p"],[119980,1,"q"],[119981,3],[119982,1,"s"],[119983,1,"t"],[119984,1,"u"],[119985,1,"v"],[119986,1,"w"],[119987,1,"x"],[119988,1,"y"],[119989,1,"z"],[119990,1,"a"],[119991,1,"b"],[119992,1,"c"],[119993,1,"d"],[119994,3],[119995,1,"f"],[119996,3],[119997,1,"h"],[119998,1,"i"],[119999,1,"j"],[120000,1,"k"],[120001,1,"l"],[120002,1,"m"],[120003,1,"n"],[120004,3],[120005,1,"p"],[120006,1,"q"],[120007,1,"r"],[120008,1,"s"],[120009,1,"t"],[120010,1,"u"],[120011,1,"v"],[120012,1,"w"],[120013,1,"x"],[120014,1,"y"],[120015,1,"z"],[120016,1,"a"],[120017,1,"b"],[120018,1,"c"],[120019,1,"d"],[120020,1,"e"],[120021,1,"f"],[120022,1,"g"],[120023,1,"h"],[120024,1,"i"],[120025,1,"j"],[120026,1,"k"],[120027,1,"l"],[120028,1,"m"],[120029,1,"n"],[120030,1,"o"],[120031,1,"p"],[120032,1,"q"],[120033,1,"r"],[120034,1,"s"],[120035,1,"t"],[120036,1,"u"],[120037,1,"v"],[120038,1,"w"],[120039,1,"x"],[120040,1,"y"],[120041,1,"z"],[120042,1,"a"],[120043,1,"b"],[120044,1,"c"],[120045,1,"d"],[120046,1,"e"],[120047,1,"f"],[120048,1,"g"],[120049,1,"h"],[120050,1,"i"],[120051,1,"j"],[120052,1,"k"],[120053,1,"l"],[120054,1,"m"],[120055,1,"n"],[120056,1,"o"],[120057,1,"p"],[120058,1,"q"],[120059,1,"r"],[120060,1,"s"],[120061,1,"t"],[120062,1,"u"],[120063,1,"v"],[120064,1,"w"],[120065,1,"x"],[120066,1,"y"],[120067,1,"z"],[120068,1,"a"],[120069,1,"b"],[120070,3],[120071,1,"d"],[120072,1,"e"],[120073,1,"f"],[120074,1,"g"],[[120075,120076],3],[120077,1,"j"],[120078,1,"k"],[120079,1,"l"],[120080,1,"m"],[120081,1,"n"],[120082,1,"o"],[120083,1,"p"],[120084,1,"q"],[120085,3],[120086,1,"s"],[120087,1,"t"],[120088,1,"u"],[120089,1,"v"],[120090,1,"w"],[120091,1,"x"],[120092,1,"y"],[120093,3],[120094,1,"a"],[120095,1,"b"],[120096,1,"c"],[120097,1,"d"],[120098,1,"e"],[120099,1,"f"],[120100,1,"g"],[120101,1,"h"],[120102,1,"i"],[120103,1,"j"],[120104,1,"k"],[120105,1,"l"],[120106,1,"m"],[120107,1,"n"],[120108,1,"o"],[120109,1,"p"],[120110,1,"q"],[120111,1,"r"],[120112,1,"s"],[120113,1,"t"],[120114,1,"u"],[120115,1,"v"],[120116,1,"w"],[120117,1,"x"],[120118,1,"y"],[120119,1,"z"],[120120,1,"a"],[120121,1,"b"],[120122,3],[120123,1,"d"],[120124,1,"e"],[120125,1,"f"],[120126,1,"g"],[120127,3],[120128,1,"i"],[120129,1,"j"],[120130,1,"k"],[120131,1,"l"],[120132,1,"m"],[120133,3],[120134,1,"o"],[[120135,120137],3],[120138,1,"s"],[120139,1,"t"],[120140,1,"u"],[120141,1,"v"],[120142,1,"w"],[120143,1,"x"],[120144,1,"y"],[120145,3],[120146,1,"a"],[120147,1,"b"],[120148,1,"c"],[120149,1,"d"],[120150,1,"e"],[120151,1,"f"],[120152,1,"g"],[120153,1,"h"],[120154,1,"i"],[120155,1,"j"],[120156,1,"k"],[120157,1,"l"],[120158,1,"m"],[120159,1,"n"],[120160,1,"o"],[120161,1,"p"],[120162,1,"q"],[120163,1,"r"],[120164,1,"s"],[120165,1,"t"],[120166,1,"u"],[120167,1,"v"],[120168,1,"w"],[120169,1,"x"],[120170,1,"y"],[120171,1,"z"],[120172,1,"a"],[120173,1,"b"],[120174,1,"c"],[120175,1,"d"],[120176,1,"e"],[120177,1,"f"],[120178,1,"g"],[120179,1,"h"],[120180,1,"i"],[120181,1,"j"],[120182,1,"k"],[120183,1,"l"],[120184,1,"m"],[120185,1,"n"],[120186,1,"o"],[120187,1,"p"],[120188,1,"q"],[120189,1,"r"],[120190,1,"s"],[120191,1,"t"],[120192,1,"u"],[120193,1,"v"],[120194,1,"w"],[120195,1,"x"],[120196,1,"y"],[120197,1,"z"],[120198,1,"a"],[120199,1,"b"],[120200,1,"c"],[120201,1,"d"],[120202,1,"e"],[120203,1,"f"],[120204,1,"g"],[120205,1,"h"],[120206,1,"i"],[120207,1,"j"],[120208,1,"k"],[120209,1,"l"],[120210,1,"m"],[120211,1,"n"],[120212,1,"o"],[120213,1,"p"],[120214,1,"q"],[120215,1,"r"],[120216,1,"s"],[120217,1,"t"],[120218,1,"u"],[120219,1,"v"],[120220,1,"w"],[120221,1,"x"],[120222,1,"y"],[120223,1,"z"],[120224,1,"a"],[120225,1,"b"],[120226,1,"c"],[120227,1,"d"],[120228,1,"e"],[120229,1,"f"],[120230,1,"g"],[120231,1,"h"],[120232,1,"i"],[120233,1,"j"],[120234,1,"k"],[120235,1,"l"],[120236,1,"m"],[120237,1,"n"],[120238,1,"o"],[120239,1,"p"],[120240,1,"q"],[120241,1,"r"],[120242,1,"s"],[120243,1,"t"],[120244,1,"u"],[120245,1,"v"],[120246,1,"w"],[120247,1,"x"],[120248,1,"y"],[120249,1,"z"],[120250,1,"a"],[120251,1,"b"],[120252,1,"c"],[120253,1,"d"],[120254,1,"e"],[120255,1,"f"],[120256,1,"g"],[120257,1,"h"],[120258,1,"i"],[120259,1,"j"],[120260,1,"k"],[120261,1,"l"],[120262,1,"m"],[120263,1,"n"],[120264,1,"o"],[120265,1,"p"],[120266,1,"q"],[120267,1,"r"],[120268,1,"s"],[120269,1,"t"],[120270,1,"u"],[120271,1,"v"],[120272,1,"w"],[120273,1,"x"],[120274,1,"y"],[120275,1,"z"],[120276,1,"a"],[120277,1,"b"],[120278,1,"c"],[120279,1,"d"],[120280,1,"e"],[120281,1,"f"],[120282,1,"g"],[120283,1,"h"],[120284,1,"i"],[120285,1,"j"],[120286,1,"k"],[120287,1,"l"],[120288,1,"m"],[120289,1,"n"],[120290,1,"o"],[120291,1,"p"],[120292,1,"q"],[120293,1,"r"],[120294,1,"s"],[120295,1,"t"],[120296,1,"u"],[120297,1,"v"],[120298,1,"w"],[120299,1,"x"],[120300,1,"y"],[120301,1,"z"],[120302,1,"a"],[120303,1,"b"],[120304,1,"c"],[120305,1,"d"],[120306,1,"e"],[120307,1,"f"],[120308,1,"g"],[120309,1,"h"],[120310,1,"i"],[120311,1,"j"],[120312,1,"k"],[120313,1,"l"],[120314,1,"m"],[120315,1,"n"],[120316,1,"o"],[120317,1,"p"],[120318,1,"q"],[120319,1,"r"],[120320,1,"s"],[120321,1,"t"],[120322,1,"u"],[120323,1,"v"],[120324,1,"w"],[120325,1,"x"],[120326,1,"y"],[120327,1,"z"],[120328,1,"a"],[120329,1,"b"],[120330,1,"c"],[120331,1,"d"],[120332,1,"e"],[120333,1,"f"],[120334,1,"g"],[120335,1,"h"],[120336,1,"i"],[120337,1,"j"],[120338,1,"k"],[120339,1,"l"],[120340,1,"m"],[120341,1,"n"],[120342,1,"o"],[120343,1,"p"],[120344,1,"q"],[120345,1,"r"],[120346,1,"s"],[120347,1,"t"],[120348,1,"u"],[120349,1,"v"],[120350,1,"w"],[120351,1,"x"],[120352,1,"y"],[120353,1,"z"],[120354,1,"a"],[120355,1,"b"],[120356,1,"c"],[120357,1,"d"],[120358,1,"e"],[120359,1,"f"],[120360,1,"g"],[120361,1,"h"],[120362,1,"i"],[120363,1,"j"],[120364,1,"k"],[120365,1,"l"],[120366,1,"m"],[120367,1,"n"],[120368,1,"o"],[120369,1,"p"],[120370,1,"q"],[120371,1,"r"],[120372,1,"s"],[120373,1,"t"],[120374,1,"u"],[120375,1,"v"],[120376,1,"w"],[120377,1,"x"],[120378,1,"y"],[120379,1,"z"],[120380,1,"a"],[120381,1,"b"],[120382,1,"c"],[120383,1,"d"],[120384,1,"e"],[120385,1,"f"],[120386,1,"g"],[120387,1,"h"],[120388,1,"i"],[120389,1,"j"],[120390,1,"k"],[120391,1,"l"],[120392,1,"m"],[120393,1,"n"],[120394,1,"o"],[120395,1,"p"],[120396,1,"q"],[120397,1,"r"],[120398,1,"s"],[120399,1,"t"],[120400,1,"u"],[120401,1,"v"],[120402,1,"w"],[120403,1,"x"],[120404,1,"y"],[120405,1,"z"],[120406,1,"a"],[120407,1,"b"],[120408,1,"c"],[120409,1,"d"],[120410,1,"e"],[120411,1,"f"],[120412,1,"g"],[120413,1,"h"],[120414,1,"i"],[120415,1,"j"],[120416,1,"k"],[120417,1,"l"],[120418,1,"m"],[120419,1,"n"],[120420,1,"o"],[120421,1,"p"],[120422,1,"q"],[120423,1,"r"],[120424,1,"s"],[120425,1,"t"],[120426,1,"u"],[120427,1,"v"],[120428,1,"w"],[120429,1,"x"],[120430,1,"y"],[120431,1,"z"],[120432,1,"a"],[120433,1,"b"],[120434,1,"c"],[120435,1,"d"],[120436,1,"e"],[120437,1,"f"],[120438,1,"g"],[120439,1,"h"],[120440,1,"i"],[120441,1,"j"],[120442,1,"k"],[120443,1,"l"],[120444,1,"m"],[120445,1,"n"],[120446,1,"o"],[120447,1,"p"],[120448,1,"q"],[120449,1,"r"],[120450,1,"s"],[120451,1,"t"],[120452,1,"u"],[120453,1,"v"],[120454,1,"w"],[120455,1,"x"],[120456,1,"y"],[120457,1,"z"],[120458,1,"a"],[120459,1,"b"],[120460,1,"c"],[120461,1,"d"],[120462,1,"e"],[120463,1,"f"],[120464,1,"g"],[120465,1,"h"],[120466,1,"i"],[120467,1,"j"],[120468,1,"k"],[120469,1,"l"],[120470,1,"m"],[120471,1,"n"],[120472,1,"o"],[120473,1,"p"],[120474,1,"q"],[120475,1,"r"],[120476,1,"s"],[120477,1,"t"],[120478,1,"u"],[120479,1,"v"],[120480,1,"w"],[120481,1,"x"],[120482,1,"y"],[120483,1,"z"],[120484,1,"ı"],[120485,1,"ȷ"],[[120486,120487],3],[120488,1,"α"],[120489,1,"β"],[120490,1,"γ"],[120491,1,"δ"],[120492,1,"ε"],[120493,1,"ζ"],[120494,1,"η"],[120495,1,"θ"],[120496,1,"ι"],[120497,1,"κ"],[120498,1,"λ"],[120499,1,"μ"],[120500,1,"ν"],[120501,1,"ξ"],[120502,1,"ο"],[120503,1,"π"],[120504,1,"ρ"],[120505,1,"θ"],[120506,1,"σ"],[120507,1,"τ"],[120508,1,"υ"],[120509,1,"φ"],[120510,1,"χ"],[120511,1,"ψ"],[120512,1,"ω"],[120513,1,"∇"],[120514,1,"α"],[120515,1,"β"],[120516,1,"γ"],[120517,1,"δ"],[120518,1,"ε"],[120519,1,"ζ"],[120520,1,"η"],[120521,1,"θ"],[120522,1,"ι"],[120523,1,"κ"],[120524,1,"λ"],[120525,1,"μ"],[120526,1,"ν"],[120527,1,"ξ"],[120528,1,"ο"],[120529,1,"π"],[120530,1,"ρ"],[[120531,120532],1,"σ"],[120533,1,"τ"],[120534,1,"υ"],[120535,1,"φ"],[120536,1,"χ"],[120537,1,"ψ"],[120538,1,"ω"],[120539,1,"∂"],[120540,1,"ε"],[120541,1,"θ"],[120542,1,"κ"],[120543,1,"φ"],[120544,1,"ρ"],[120545,1,"π"],[120546,1,"α"],[120547,1,"β"],[120548,1,"γ"],[120549,1,"δ"],[120550,1,"ε"],[120551,1,"ζ"],[120552,1,"η"],[120553,1,"θ"],[120554,1,"ι"],[120555,1,"κ"],[120556,1,"λ"],[120557,1,"μ"],[120558,1,"ν"],[120559,1,"ξ"],[120560,1,"ο"],[120561,1,"π"],[120562,1,"ρ"],[120563,1,"θ"],[120564,1,"σ"],[120565,1,"τ"],[120566,1,"υ"],[120567,1,"φ"],[120568,1,"χ"],[120569,1,"ψ"],[120570,1,"ω"],[120571,1,"∇"],[120572,1,"α"],[120573,1,"β"],[120574,1,"γ"],[120575,1,"δ"],[120576,1,"ε"],[120577,1,"ζ"],[120578,1,"η"],[120579,1,"θ"],[120580,1,"ι"],[120581,1,"κ"],[120582,1,"λ"],[120583,1,"μ"],[120584,1,"ν"],[120585,1,"ξ"],[120586,1,"ο"],[120587,1,"π"],[120588,1,"ρ"],[[120589,120590],1,"σ"],[120591,1,"τ"],[120592,1,"υ"],[120593,1,"φ"],[120594,1,"χ"],[120595,1,"ψ"],[120596,1,"ω"],[120597,1,"∂"],[120598,1,"ε"],[120599,1,"θ"],[120600,1,"κ"],[120601,1,"φ"],[120602,1,"ρ"],[120603,1,"π"],[120604,1,"α"],[120605,1,"β"],[120606,1,"γ"],[120607,1,"δ"],[120608,1,"ε"],[120609,1,"ζ"],[120610,1,"η"],[120611,1,"θ"],[120612,1,"ι"],[120613,1,"κ"],[120614,1,"λ"],[120615,1,"μ"],[120616,1,"ν"],[120617,1,"ξ"],[120618,1,"ο"],[120619,1,"π"],[120620,1,"ρ"],[120621,1,"θ"],[120622,1,"σ"],[120623,1,"τ"],[120624,1,"υ"],[120625,1,"φ"],[120626,1,"χ"],[120627,1,"ψ"],[120628,1,"ω"],[120629,1,"∇"],[120630,1,"α"],[120631,1,"β"],[120632,1,"γ"],[120633,1,"δ"],[120634,1,"ε"],[120635,1,"ζ"],[120636,1,"η"],[120637,1,"θ"],[120638,1,"ι"],[120639,1,"κ"],[120640,1,"λ"],[120641,1,"μ"],[120642,1,"ν"],[120643,1,"ξ"],[120644,1,"ο"],[120645,1,"π"],[120646,1,"ρ"],[[120647,120648],1,"σ"],[120649,1,"τ"],[120650,1,"υ"],[120651,1,"φ"],[120652,1,"χ"],[120653,1,"ψ"],[120654,1,"ω"],[120655,1,"∂"],[120656,1,"ε"],[120657,1,"θ"],[120658,1,"κ"],[120659,1,"φ"],[120660,1,"ρ"],[120661,1,"π"],[120662,1,"α"],[120663,1,"β"],[120664,1,"γ"],[120665,1,"δ"],[120666,1,"ε"],[120667,1,"ζ"],[120668,1,"η"],[120669,1,"θ"],[120670,1,"ι"],[120671,1,"κ"],[120672,1,"λ"],[120673,1,"μ"],[120674,1,"ν"],[120675,1,"ξ"],[120676,1,"ο"],[120677,1,"π"],[120678,1,"ρ"],[120679,1,"θ"],[120680,1,"σ"],[120681,1,"τ"],[120682,1,"υ"],[120683,1,"φ"],[120684,1,"χ"],[120685,1,"ψ"],[120686,1,"ω"],[120687,1,"∇"],[120688,1,"α"],[120689,1,"β"],[120690,1,"γ"],[120691,1,"δ"],[120692,1,"ε"],[120693,1,"ζ"],[120694,1,"η"],[120695,1,"θ"],[120696,1,"ι"],[120697,1,"κ"],[120698,1,"λ"],[120699,1,"μ"],[120700,1,"ν"],[120701,1,"ξ"],[120702,1,"ο"],[120703,1,"π"],[120704,1,"ρ"],[[120705,120706],1,"σ"],[120707,1,"τ"],[120708,1,"υ"],[120709,1,"φ"],[120710,1,"χ"],[120711,1,"ψ"],[120712,1,"ω"],[120713,1,"∂"],[120714,1,"ε"],[120715,1,"θ"],[120716,1,"κ"],[120717,1,"φ"],[120718,1,"ρ"],[120719,1,"π"],[120720,1,"α"],[120721,1,"β"],[120722,1,"γ"],[120723,1,"δ"],[120724,1,"ε"],[120725,1,"ζ"],[120726,1,"η"],[120727,1,"θ"],[120728,1,"ι"],[120729,1,"κ"],[120730,1,"λ"],[120731,1,"μ"],[120732,1,"ν"],[120733,1,"ξ"],[120734,1,"ο"],[120735,1,"π"],[120736,1,"ρ"],[120737,1,"θ"],[120738,1,"σ"],[120739,1,"τ"],[120740,1,"υ"],[120741,1,"φ"],[120742,1,"χ"],[120743,1,"ψ"],[120744,1,"ω"],[120745,1,"∇"],[120746,1,"α"],[120747,1,"β"],[120748,1,"γ"],[120749,1,"δ"],[120750,1,"ε"],[120751,1,"ζ"],[120752,1,"η"],[120753,1,"θ"],[120754,1,"ι"],[120755,1,"κ"],[120756,1,"λ"],[120757,1,"μ"],[120758,1,"ν"],[120759,1,"ξ"],[120760,1,"ο"],[120761,1,"π"],[120762,1,"ρ"],[[120763,120764],1,"σ"],[120765,1,"τ"],[120766,1,"υ"],[120767,1,"φ"],[120768,1,"χ"],[120769,1,"ψ"],[120770,1,"ω"],[120771,1,"∂"],[120772,1,"ε"],[120773,1,"θ"],[120774,1,"κ"],[120775,1,"φ"],[120776,1,"ρ"],[120777,1,"π"],[[120778,120779],1,"ϝ"],[[120780,120781],3],[120782,1,"0"],[120783,1,"1"],[120784,1,"2"],[120785,1,"3"],[120786,1,"4"],[120787,1,"5"],[120788,1,"6"],[120789,1,"7"],[120790,1,"8"],[120791,1,"9"],[120792,1,"0"],[120793,1,"1"],[120794,1,"2"],[120795,1,"3"],[120796,1,"4"],[120797,1,"5"],[120798,1,"6"],[120799,1,"7"],[120800,1,"8"],[120801,1,"9"],[120802,1,"0"],[120803,1,"1"],[120804,1,"2"],[120805,1,"3"],[120806,1,"4"],[120807,1,"5"],[120808,1,"6"],[120809,1,"7"],[120810,1,"8"],[120811,1,"9"],[120812,1,"0"],[120813,1,"1"],[120814,1,"2"],[120815,1,"3"],[120816,1,"4"],[120817,1,"5"],[120818,1,"6"],[120819,1,"7"],[120820,1,"8"],[120821,1,"9"],[120822,1,"0"],[120823,1,"1"],[120824,1,"2"],[120825,1,"3"],[120826,1,"4"],[120827,1,"5"],[120828,1,"6"],[120829,1,"7"],[120830,1,"8"],[120831,1,"9"],[[120832,121343],2],[[121344,121398],2],[[121399,121402],2],[[121403,121452],2],[[121453,121460],2],[121461,2],[[121462,121475],2],[121476,2],[[121477,121483],2],[[121484,121498],3],[[121499,121503],2],[121504,3],[[121505,121519],2],[[121520,122623],3],[[122624,122654],2],[[122655,122660],3],[[122661,122666],2],[[122667,122879],3],[[122880,122886],2],[122887,3],[[122888,122904],2],[[122905,122906],3],[[122907,122913],2],[122914,3],[[122915,122916],2],[122917,3],[[122918,122922],2],[[122923,122927],3],[122928,1,"а"],[122929,1,"б"],[122930,1,"в"],[122931,1,"г"],[122932,1,"д"],[122933,1,"е"],[122934,1,"ж"],[122935,1,"з"],[122936,1,"и"],[122937,1,"к"],[122938,1,"л"],[122939,1,"м"],[122940,1,"о"],[122941,1,"п"],[122942,1,"р"],[122943,1,"с"],[122944,1,"т"],[122945,1,"у"],[122946,1,"ф"],[122947,1,"х"],[122948,1,"ц"],[122949,1,"ч"],[122950,1,"ш"],[122951,1,"ы"],[122952,1,"э"],[122953,1,"ю"],[122954,1,"ꚉ"],[122955,1,"ә"],[122956,1,"і"],[122957,1,"ј"],[122958,1,"ө"],[122959,1,"ү"],[122960,1,"ӏ"],[122961,1,"а"],[122962,1,"б"],[122963,1,"в"],[122964,1,"г"],[122965,1,"д"],[122966,1,"е"],[122967,1,"ж"],[122968,1,"з"],[122969,1,"и"],[122970,1,"к"],[122971,1,"л"],[122972,1,"о"],[122973,1,"п"],[122974,1,"с"],[122975,1,"у"],[122976,1,"ф"],[122977,1,"х"],[122978,1,"ц"],[122979,1,"ч"],[122980,1,"ш"],[122981,1,"ъ"],[122982,1,"ы"],[122983,1,"ґ"],[122984,1,"і"],[122985,1,"ѕ"],[122986,1,"џ"],[122987,1,"ҫ"],[122988,1,"ꙑ"],[122989,1,"ұ"],[[122990,123022],3],[123023,2],[[123024,123135],3],[[123136,123180],2],[[123181,123183],3],[[123184,123197],2],[[123198,123199],3],[[123200,123209],2],[[123210,123213],3],[123214,2],[123215,2],[[123216,123535],3],[[123536,123566],2],[[123567,123583],3],[[123584,123641],2],[[123642,123646],3],[123647,2],[[123648,124111],3],[[124112,124153],2],[[124154,124895],3],[[124896,124902],2],[124903,3],[[124904,124907],2],[124908,3],[[124909,124910],2],[124911,3],[[124912,124926],2],[124927,3],[[124928,125124],2],[[125125,125126],3],[[125127,125135],2],[[125136,125142],2],[[125143,125183],3],[125184,1,"𞤢"],[125185,1,"𞤣"],[125186,1,"𞤤"],[125187,1,"𞤥"],[125188,1,"𞤦"],[125189,1,"𞤧"],[125190,1,"𞤨"],[125191,1,"𞤩"],[125192,1,"𞤪"],[125193,1,"𞤫"],[125194,1,"𞤬"],[125195,1,"𞤭"],[125196,1,"𞤮"],[125197,1,"𞤯"],[125198,1,"𞤰"],[125199,1,"𞤱"],[125200,1,"𞤲"],[125201,1,"𞤳"],[125202,1,"𞤴"],[125203,1,"𞤵"],[125204,1,"𞤶"],[125205,1,"𞤷"],[125206,1,"𞤸"],[125207,1,"𞤹"],[125208,1,"𞤺"],[125209,1,"𞤻"],[125210,1,"𞤼"],[125211,1,"𞤽"],[125212,1,"𞤾"],[125213,1,"𞤿"],[125214,1,"𞥀"],[125215,1,"𞥁"],[125216,1,"𞥂"],[125217,1,"𞥃"],[[125218,125258],2],[125259,2],[[125260,125263],3],[[125264,125273],2],[[125274,125277],3],[[125278,125279],2],[[125280,126064],3],[[126065,126132],2],[[126133,126208],3],[[126209,126269],2],[[126270,126463],3],[126464,1,"ا"],[126465,1,"ب"],[126466,1,"ج"],[126467,1,"د"],[126468,3],[126469,1,"و"],[126470,1,"ز"],[126471,1,"ح"],[126472,1,"ط"],[126473,1,"ي"],[126474,1,"ك"],[126475,1,"ل"],[126476,1,"م"],[126477,1,"ن"],[126478,1,"س"],[126479,1,"ع"],[126480,1,"ف"],[126481,1,"ص"],[126482,1,"ق"],[126483,1,"ر"],[126484,1,"ش"],[126485,1,"ت"],[126486,1,"ث"],[126487,1,"خ"],[126488,1,"ذ"],[126489,1,"ض"],[126490,1,"ظ"],[126491,1,"غ"],[126492,1,"ٮ"],[126493,1,"ں"],[126494,1,"ڡ"],[126495,1,"ٯ"],[126496,3],[126497,1,"ب"],[126498,1,"ج"],[126499,3],[126500,1,"ه"],[[126501,126502],3],[126503,1,"ح"],[126504,3],[126505,1,"ي"],[126506,1,"ك"],[126507,1,"ل"],[126508,1,"م"],[126509,1,"ن"],[126510,1,"س"],[126511,1,"ع"],[126512,1,"ف"],[126513,1,"ص"],[126514,1,"ق"],[126515,3],[126516,1,"ش"],[126517,1,"ت"],[126518,1,"ث"],[126519,1,"خ"],[126520,3],[126521,1,"ض"],[126522,3],[126523,1,"غ"],[[126524,126529],3],[126530,1,"ج"],[[126531,126534],3],[126535,1,"ح"],[126536,3],[126537,1,"ي"],[126538,3],[126539,1,"ل"],[126540,3],[126541,1,"ن"],[126542,1,"س"],[126543,1,"ع"],[126544,3],[126545,1,"ص"],[126546,1,"ق"],[126547,3],[126548,1,"ش"],[[126549,126550],3],[126551,1,"خ"],[126552,3],[126553,1,"ض"],[126554,3],[126555,1,"غ"],[126556,3],[126557,1,"ں"],[126558,3],[126559,1,"ٯ"],[126560,3],[126561,1,"ب"],[126562,1,"ج"],[126563,3],[126564,1,"ه"],[[126565,126566],3],[126567,1,"ح"],[126568,1,"ط"],[126569,1,"ي"],[126570,1,"ك"],[126571,3],[126572,1,"م"],[126573,1,"ن"],[126574,1,"س"],[126575,1,"ع"],[126576,1,"ف"],[126577,1,"ص"],[126578,1,"ق"],[126579,3],[126580,1,"ش"],[126581,1,"ت"],[126582,1,"ث"],[126583,1,"خ"],[126584,3],[126585,1,"ض"],[126586,1,"ظ"],[126587,1,"غ"],[126588,1,"ٮ"],[126589,3],[126590,1,"ڡ"],[126591,3],[126592,1,"ا"],[126593,1,"ب"],[126594,1,"ج"],[126595,1,"د"],[126596,1,"ه"],[126597,1,"و"],[126598,1,"ز"],[126599,1,"ح"],[126600,1,"ط"],[126601,1,"ي"],[126602,3],[126603,1,"ل"],[126604,1,"م"],[126605,1,"ن"],[126606,1,"س"],[126607,1,"ع"],[126608,1,"ف"],[126609,1,"ص"],[126610,1,"ق"],[126611,1,"ر"],[126612,1,"ش"],[126613,1,"ت"],[126614,1,"ث"],[126615,1,"خ"],[126616,1,"ذ"],[126617,1,"ض"],[126618,1,"ظ"],[126619,1,"غ"],[[126620,126624],3],[126625,1,"ب"],[126626,1,"ج"],[126627,1,"د"],[126628,3],[126629,1,"و"],[126630,1,"ز"],[126631,1,"ح"],[126632,1,"ط"],[126633,1,"ي"],[126634,3],[126635,1,"ل"],[126636,1,"م"],[126637,1,"ن"],[126638,1,"س"],[126639,1,"ع"],[126640,1,"ف"],[126641,1,"ص"],[126642,1,"ق"],[126643,1,"ر"],[126644,1,"ش"],[126645,1,"ت"],[126646,1,"ث"],[126647,1,"خ"],[126648,1,"ذ"],[126649,1,"ض"],[126650,1,"ظ"],[126651,1,"غ"],[[126652,126703],3],[[126704,126705],2],[[126706,126975],3],[[126976,127019],2],[[127020,127023],3],[[127024,127123],2],[[127124,127135],3],[[127136,127150],2],[[127151,127152],3],[[127153,127166],2],[127167,2],[127168,3],[[127169,127183],2],[127184,3],[[127185,127199],2],[[127200,127221],2],[[127222,127231],3],[127232,3],[127233,5,"0,"],[127234,5,"1,"],[127235,5,"2,"],[127236,5,"3,"],[127237,5,"4,"],[127238,5,"5,"],[127239,5,"6,"],[127240,5,"7,"],[127241,5,"8,"],[127242,5,"9,"],[[127243,127244],2],[[127245,127247],2],[127248,5,"(a)"],[127249,5,"(b)"],[127250,5,"(c)"],[127251,5,"(d)"],[127252,5,"(e)"],[127253,5,"(f)"],[127254,5,"(g)"],[127255,5,"(h)"],[127256,5,"(i)"],[127257,5,"(j)"],[127258,5,"(k)"],[127259,5,"(l)"],[127260,5,"(m)"],[127261,5,"(n)"],[127262,5,"(o)"],[127263,5,"(p)"],[127264,5,"(q)"],[127265,5,"(r)"],[127266,5,"(s)"],[127267,5,"(t)"],[127268,5,"(u)"],[127269,5,"(v)"],[127270,5,"(w)"],[127271,5,"(x)"],[127272,5,"(y)"],[127273,5,"(z)"],[127274,1,"〔s〕"],[127275,1,"c"],[127276,1,"r"],[127277,1,"cd"],[127278,1,"wz"],[127279,2],[127280,1,"a"],[127281,1,"b"],[127282,1,"c"],[127283,1,"d"],[127284,1,"e"],[127285,1,"f"],[127286,1,"g"],[127287,1,"h"],[127288,1,"i"],[127289,1,"j"],[127290,1,"k"],[127291,1,"l"],[127292,1,"m"],[127293,1,"n"],[127294,1,"o"],[127295,1,"p"],[127296,1,"q"],[127297,1,"r"],[127298,1,"s"],[127299,1,"t"],[127300,1,"u"],[127301,1,"v"],[127302,1,"w"],[127303,1,"x"],[127304,1,"y"],[127305,1,"z"],[127306,1,"hv"],[127307,1,"mv"],[127308,1,"sd"],[127309,1,"ss"],[127310,1,"ppv"],[127311,1,"wc"],[[127312,127318],2],[127319,2],[[127320,127326],2],[127327,2],[[127328,127337],2],[127338,1,"mc"],[127339,1,"md"],[127340,1,"mr"],[[127341,127343],2],[[127344,127352],2],[127353,2],[127354,2],[[127355,127356],2],[[127357,127358],2],[127359,2],[[127360,127369],2],[[127370,127373],2],[[127374,127375],2],[127376,1,"dj"],[[127377,127386],2],[[127387,127404],2],[127405,2],[[127406,127461],3],[[127462,127487],2],[127488,1,"ほか"],[127489,1,"ココ"],[127490,1,"サ"],[[127491,127503],3],[127504,1,"手"],[127505,1,"字"],[127506,1,"双"],[127507,1,"デ"],[127508,1,"二"],[127509,1,"多"],[127510,1,"解"],[127511,1,"天"],[127512,1,"交"],[127513,1,"映"],[127514,1,"無"],[127515,1,"料"],[127516,1,"前"],[127517,1,"後"],[127518,1,"再"],[127519,1,"新"],[127520,1,"初"],[127521,1,"終"],[127522,1,"生"],[127523,1,"販"],[127524,1,"声"],[127525,1,"吹"],[127526,1,"演"],[127527,1,"投"],[127528,1,"捕"],[127529,1,"一"],[127530,1,"三"],[127531,1,"遊"],[127532,1,"左"],[127533,1,"中"],[127534,1,"右"],[127535,1,"指"],[127536,1,"走"],[127537,1,"打"],[127538,1,"禁"],[127539,1,"空"],[127540,1,"合"],[127541,1,"満"],[127542,1,"有"],[127543,1,"月"],[127544,1,"申"],[127545,1,"割"],[127546,1,"営"],[127547,1,"配"],[[127548,127551],3],[127552,1,"〔本〕"],[127553,1,"〔三〕"],[127554,1,"〔二〕"],[127555,1,"〔安〕"],[127556,1,"〔点〕"],[127557,1,"〔打〕"],[127558,1,"〔盗〕"],[127559,1,"〔勝〕"],[127560,1,"〔敗〕"],[[127561,127567],3],[127568,1,"得"],[127569,1,"可"],[[127570,127583],3],[[127584,127589],2],[[127590,127743],3],[[127744,127776],2],[[127777,127788],2],[[127789,127791],2],[[127792,127797],2],[127798,2],[[127799,127868],2],[127869,2],[[127870,127871],2],[[127872,127891],2],[[127892,127903],2],[[127904,127940],2],[127941,2],[[127942,127946],2],[[127947,127950],2],[[127951,127955],2],[[127956,127967],2],[[127968,127984],2],[[127985,127991],2],[[127992,127999],2],[[128000,128062],2],[128063,2],[128064,2],[128065,2],[[128066,128247],2],[128248,2],[[128249,128252],2],[[128253,128254],2],[128255,2],[[128256,128317],2],[[128318,128319],2],[[128320,128323],2],[[128324,128330],2],[[128331,128335],2],[[128336,128359],2],[[128360,128377],2],[128378,2],[[128379,128419],2],[128420,2],[[128421,128506],2],[[128507,128511],2],[128512,2],[[128513,128528],2],[128529,2],[[128530,128532],2],[128533,2],[128534,2],[128535,2],[128536,2],[128537,2],[128538,2],[128539,2],[[128540,128542],2],[128543,2],[[128544,128549],2],[[128550,128551],2],[[128552,128555],2],[128556,2],[128557,2],[[128558,128559],2],[[128560,128563],2],[128564,2],[[128565,128576],2],[[128577,128578],2],[[128579,128580],2],[[128581,128591],2],[[128592,128639],2],[[128640,128709],2],[[128710,128719],2],[128720,2],[[128721,128722],2],[[128723,128724],2],[128725,2],[[128726,128727],2],[[128728,128731],3],[128732,2],[[128733,128735],2],[[128736,128748],2],[[128749,128751],3],[[128752,128755],2],[[128756,128758],2],[[128759,128760],2],[128761,2],[128762,2],[[128763,128764],2],[[128765,128767],3],[[128768,128883],2],[[128884,128886],2],[[128887,128890],3],[[128891,128895],2],[[128896,128980],2],[[128981,128984],2],[128985,2],[[128986,128991],3],[[128992,129003],2],[[129004,129007],3],[129008,2],[[129009,129023],3],[[129024,129035],2],[[129036,129039],3],[[129040,129095],2],[[129096,129103],3],[[129104,129113],2],[[129114,129119],3],[[129120,129159],2],[[129160,129167],3],[[129168,129197],2],[[129198,129199],3],[[129200,129201],2],[[129202,129279],3],[[129280,129291],2],[129292,2],[[129293,129295],2],[[129296,129304],2],[[129305,129310],2],[129311,2],[[129312,129319],2],[[129320,129327],2],[129328,2],[[129329,129330],2],[[129331,129342],2],[129343,2],[[129344,129355],2],[129356,2],[[129357,129359],2],[[129360,129374],2],[[129375,129387],2],[[129388,129392],2],[129393,2],[129394,2],[[129395,129398],2],[[129399,129400],2],[129401,2],[129402,2],[129403,2],[[129404,129407],2],[[129408,129412],2],[[129413,129425],2],[[129426,129431],2],[[129432,129442],2],[[129443,129444],2],[[129445,129450],2],[[129451,129453],2],[[129454,129455],2],[[129456,129465],2],[[129466,129471],2],[129472,2],[[129473,129474],2],[[129475,129482],2],[129483,2],[129484,2],[[129485,129487],2],[[129488,129510],2],[[129511,129535],2],[[129536,129619],2],[[129620,129631],3],[[129632,129645],2],[[129646,129647],3],[[129648,129651],2],[129652,2],[[129653,129655],2],[[129656,129658],2],[[129659,129660],2],[[129661,129663],3],[[129664,129666],2],[[129667,129670],2],[[129671,129672],2],[[129673,129679],3],[[129680,129685],2],[[129686,129704],2],[[129705,129708],2],[[129709,129711],2],[[129712,129718],2],[[129719,129722],2],[[129723,129725],2],[129726,3],[129727,2],[[129728,129730],2],[[129731,129733],2],[[129734,129741],3],[[129742,129743],2],[[129744,129750],2],[[129751,129753],2],[[129754,129755],2],[[129756,129759],3],[[129760,129767],2],[129768,2],[[129769,129775],3],[[129776,129782],2],[[129783,129784],2],[[129785,129791],3],[[129792,129938],2],[129939,3],[[129940,129994],2],[[129995,130031],3],[130032,1,"0"],[130033,1,"1"],[130034,1,"2"],[130035,1,"3"],[130036,1,"4"],[130037,1,"5"],[130038,1,"6"],[130039,1,"7"],[130040,1,"8"],[130041,1,"9"],[[130042,131069],3],[[131070,131071],3],[[131072,173782],2],[[173783,173789],2],[[173790,173791],2],[[173792,173823],3],[[173824,177972],2],[[177973,177976],2],[177977,2],[[177978,177983],3],[[177984,178205],2],[[178206,178207],3],[[178208,183969],2],[[183970,183983],3],[[183984,191456],2],[[191457,194559],3],[194560,1,"丽"],[194561,1,"丸"],[194562,1,"乁"],[194563,1,"𠄢"],[194564,1,"你"],[194565,1,"侮"],[194566,1,"侻"],[194567,1,"倂"],[194568,1,"偺"],[194569,1,"備"],[194570,1,"僧"],[194571,1,"像"],[194572,1,"㒞"],[194573,1,"𠘺"],[194574,1,"免"],[194575,1,"兔"],[194576,1,"兤"],[194577,1,"具"],[194578,1,"𠔜"],[194579,1,"㒹"],[194580,1,"內"],[194581,1,"再"],[194582,1,"𠕋"],[194583,1,"冗"],[194584,1,"冤"],[194585,1,"仌"],[194586,1,"冬"],[194587,1,"况"],[194588,1,"𩇟"],[194589,1,"凵"],[194590,1,"刃"],[194591,1,"㓟"],[194592,1,"刻"],[194593,1,"剆"],[194594,1,"割"],[194595,1,"剷"],[194596,1,"㔕"],[194597,1,"勇"],[194598,1,"勉"],[194599,1,"勤"],[194600,1,"勺"],[194601,1,"包"],[194602,1,"匆"],[194603,1,"北"],[194604,1,"卉"],[194605,1,"卑"],[194606,1,"博"],[194607,1,"即"],[194608,1,"卽"],[[194609,194611],1,"卿"],[194612,1,"𠨬"],[194613,1,"灰"],[194614,1,"及"],[194615,1,"叟"],[194616,1,"𠭣"],[194617,1,"叫"],[194618,1,"叱"],[194619,1,"吆"],[194620,1,"咞"],[194621,1,"吸"],[194622,1,"呈"],[194623,1,"周"],[194624,1,"咢"],[194625,1,"哶"],[194626,1,"唐"],[194627,1,"啓"],[194628,1,"啣"],[[194629,194630],1,"善"],[194631,1,"喙"],[194632,1,"喫"],[194633,1,"喳"],[194634,1,"嗂"],[194635,1,"圖"],[194636,1,"嘆"],[194637,1,"圗"],[194638,1,"噑"],[194639,1,"噴"],[194640,1,"切"],[194641,1,"壮"],[194642,1,"城"],[194643,1,"埴"],[194644,1,"堍"],[194645,1,"型"],[194646,1,"堲"],[194647,1,"報"],[194648,1,"墬"],[194649,1,"𡓤"],[194650,1,"売"],[194651,1,"壷"],[194652,1,"夆"],[194653,1,"多"],[194654,1,"夢"],[194655,1,"奢"],[194656,1,"𡚨"],[194657,1,"𡛪"],[194658,1,"姬"],[194659,1,"娛"],[194660,1,"娧"],[194661,1,"姘"],[194662,1,"婦"],[194663,1,"㛮"],[194664,3],[194665,1,"嬈"],[[194666,194667],1,"嬾"],[194668,1,"𡧈"],[194669,1,"寃"],[194670,1,"寘"],[194671,1,"寧"],[194672,1,"寳"],[194673,1,"𡬘"],[194674,1,"寿"],[194675,1,"将"],[194676,3],[194677,1,"尢"],[194678,1,"㞁"],[194679,1,"屠"],[194680,1,"屮"],[194681,1,"峀"],[194682,1,"岍"],[194683,1,"𡷤"],[194684,1,"嵃"],[194685,1,"𡷦"],[194686,1,"嵮"],[194687,1,"嵫"],[194688,1,"嵼"],[194689,1,"巡"],[194690,1,"巢"],[194691,1,"㠯"],[194692,1,"巽"],[194693,1,"帨"],[194694,1,"帽"],[194695,1,"幩"],[194696,1,"㡢"],[194697,1,"𢆃"],[194698,1,"㡼"],[194699,1,"庰"],[194700,1,"庳"],[194701,1,"庶"],[194702,1,"廊"],[194703,1,"𪎒"],[194704,1,"廾"],[[194705,194706],1,"𢌱"],[194707,1,"舁"],[[194708,194709],1,"弢"],[194710,1,"㣇"],[194711,1,"𣊸"],[194712,1,"𦇚"],[194713,1,"形"],[194714,1,"彫"],[194715,1,"㣣"],[194716,1,"徚"],[194717,1,"忍"],[194718,1,"志"],[194719,1,"忹"],[194720,1,"悁"],[194721,1,"㤺"],[194722,1,"㤜"],[194723,1,"悔"],[194724,1,"𢛔"],[194725,1,"惇"],[194726,1,"慈"],[194727,1,"慌"],[194728,1,"慎"],[194729,1,"慌"],[194730,1,"慺"],[194731,1,"憎"],[194732,1,"憲"],[194733,1,"憤"],[194734,1,"憯"],[194735,1,"懞"],[194736,1,"懲"],[194737,1,"懶"],[194738,1,"成"],[194739,1,"戛"],[194740,1,"扝"],[194741,1,"抱"],[194742,1,"拔"],[194743,1,"捐"],[194744,1,"𢬌"],[194745,1,"挽"],[194746,1,"拼"],[194747,1,"捨"],[194748,1,"掃"],[194749,1,"揤"],[194750,1,"𢯱"],[194751,1,"搢"],[194752,1,"揅"],[194753,1,"掩"],[194754,1,"㨮"],[194755,1,"摩"],[194756,1,"摾"],[194757,1,"撝"],[194758,1,"摷"],[194759,1,"㩬"],[194760,1,"敏"],[194761,1,"敬"],[194762,1,"𣀊"],[194763,1,"旣"],[194764,1,"書"],[194765,1,"晉"],[194766,1,"㬙"],[194767,1,"暑"],[194768,1,"㬈"],[194769,1,"㫤"],[194770,1,"冒"],[194771,1,"冕"],[194772,1,"最"],[194773,1,"暜"],[194774,1,"肭"],[194775,1,"䏙"],[194776,1,"朗"],[194777,1,"望"],[194778,1,"朡"],[194779,1,"杞"],[194780,1,"杓"],[194781,1,"𣏃"],[194782,1,"㭉"],[194783,1,"柺"],[194784,1,"枅"],[194785,1,"桒"],[194786,1,"梅"],[194787,1,"𣑭"],[194788,1,"梎"],[194789,1,"栟"],[194790,1,"椔"],[194791,1,"㮝"],[194792,1,"楂"],[194793,1,"榣"],[194794,1,"槪"],[194795,1,"檨"],[194796,1,"𣚣"],[194797,1,"櫛"],[194798,1,"㰘"],[194799,1,"次"],[194800,1,"𣢧"],[194801,1,"歔"],[194802,1,"㱎"],[194803,1,"歲"],[194804,1,"殟"],[194805,1,"殺"],[194806,1,"殻"],[194807,1,"𣪍"],[194808,1,"𡴋"],[194809,1,"𣫺"],[194810,1,"汎"],[194811,1,"𣲼"],[194812,1,"沿"],[194813,1,"泍"],[194814,1,"汧"],[194815,1,"洖"],[194816,1,"派"],[194817,1,"海"],[194818,1,"流"],[194819,1,"浩"],[194820,1,"浸"],[194821,1,"涅"],[194822,1,"𣴞"],[194823,1,"洴"],[194824,1,"港"],[194825,1,"湮"],[194826,1,"㴳"],[194827,1,"滋"],[194828,1,"滇"],[194829,1,"𣻑"],[194830,1,"淹"],[194831,1,"潮"],[194832,1,"𣽞"],[194833,1,"𣾎"],[194834,1,"濆"],[194835,1,"瀹"],[194836,1,"瀞"],[194837,1,"瀛"],[194838,1,"㶖"],[194839,1,"灊"],[194840,1,"災"],[194841,1,"灷"],[194842,1,"炭"],[194843,1,"𠔥"],[194844,1,"煅"],[194845,1,"𤉣"],[194846,1,"熜"],[194847,3],[194848,1,"爨"],[194849,1,"爵"],[194850,1,"牐"],[194851,1,"𤘈"],[194852,1,"犀"],[194853,1,"犕"],[194854,1,"𤜵"],[194855,1,"𤠔"],[194856,1,"獺"],[194857,1,"王"],[194858,1,"㺬"],[194859,1,"玥"],[[194860,194861],1,"㺸"],[194862,1,"瑇"],[194863,1,"瑜"],[194864,1,"瑱"],[194865,1,"璅"],[194866,1,"瓊"],[194867,1,"㼛"],[194868,1,"甤"],[194869,1,"𤰶"],[194870,1,"甾"],[194871,1,"𤲒"],[194872,1,"異"],[194873,1,"𢆟"],[194874,1,"瘐"],[194875,1,"𤾡"],[194876,1,"𤾸"],[194877,1,"𥁄"],[194878,1,"㿼"],[194879,1,"䀈"],[194880,1,"直"],[194881,1,"𥃳"],[194882,1,"𥃲"],[194883,1,"𥄙"],[194884,1,"𥄳"],[194885,1,"眞"],[[194886,194887],1,"真"],[194888,1,"睊"],[194889,1,"䀹"],[194890,1,"瞋"],[194891,1,"䁆"],[194892,1,"䂖"],[194893,1,"𥐝"],[194894,1,"硎"],[194895,1,"碌"],[194896,1,"磌"],[194897,1,"䃣"],[194898,1,"𥘦"],[194899,1,"祖"],[194900,1,"𥚚"],[194901,1,"𥛅"],[194902,1,"福"],[194903,1,"秫"],[194904,1,"䄯"],[194905,1,"穀"],[194906,1,"穊"],[194907,1,"穏"],[194908,1,"𥥼"],[[194909,194910],1,"𥪧"],[194911,3],[194912,1,"䈂"],[194913,1,"𥮫"],[194914,1,"篆"],[194915,1,"築"],[194916,1,"䈧"],[194917,1,"𥲀"],[194918,1,"糒"],[194919,1,"䊠"],[194920,1,"糨"],[194921,1,"糣"],[194922,1,"紀"],[194923,1,"𥾆"],[194924,1,"絣"],[194925,1,"䌁"],[194926,1,"緇"],[194927,1,"縂"],[194928,1,"繅"],[194929,1,"䌴"],[194930,1,"𦈨"],[194931,1,"𦉇"],[194932,1,"䍙"],[194933,1,"𦋙"],[194934,1,"罺"],[194935,1,"𦌾"],[194936,1,"羕"],[194937,1,"翺"],[194938,1,"者"],[194939,1,"𦓚"],[194940,1,"𦔣"],[194941,1,"聠"],[194942,1,"𦖨"],[194943,1,"聰"],[194944,1,"𣍟"],[194945,1,"䏕"],[194946,1,"育"],[194947,1,"脃"],[194948,1,"䐋"],[194949,1,"脾"],[194950,1,"媵"],[194951,1,"𦞧"],[194952,1,"𦞵"],[194953,1,"𣎓"],[194954,1,"𣎜"],[194955,1,"舁"],[194956,1,"舄"],[194957,1,"辞"],[194958,1,"䑫"],[194959,1,"芑"],[194960,1,"芋"],[194961,1,"芝"],[194962,1,"劳"],[194963,1,"花"],[194964,1,"芳"],[194965,1,"芽"],[194966,1,"苦"],[194967,1,"𦬼"],[194968,1,"若"],[194969,1,"茝"],[194970,1,"荣"],[194971,1,"莭"],[194972,1,"茣"],[194973,1,"莽"],[194974,1,"菧"],[194975,1,"著"],[194976,1,"荓"],[194977,1,"菊"],[194978,1,"菌"],[194979,1,"菜"],[194980,1,"𦰶"],[194981,1,"𦵫"],[194982,1,"𦳕"],[194983,1,"䔫"],[194984,1,"蓱"],[194985,1,"蓳"],[194986,1,"蔖"],[194987,1,"𧏊"],[194988,1,"蕤"],[194989,1,"𦼬"],[194990,1,"䕝"],[194991,1,"䕡"],[194992,1,"𦾱"],[194993,1,"𧃒"],[194994,1,"䕫"],[194995,1,"虐"],[194996,1,"虜"],[194997,1,"虧"],[194998,1,"虩"],[194999,1,"蚩"],[195000,1,"蚈"],[195001,1,"蜎"],[195002,1,"蛢"],[195003,1,"蝹"],[195004,1,"蜨"],[195005,1,"蝫"],[195006,1,"螆"],[195007,3],[195008,1,"蟡"],[195009,1,"蠁"],[195010,1,"䗹"],[195011,1,"衠"],[195012,1,"衣"],[195013,1,"𧙧"],[195014,1,"裗"],[195015,1,"裞"],[195016,1,"䘵"],[195017,1,"裺"],[195018,1,"㒻"],[195019,1,"𧢮"],[195020,1,"𧥦"],[195021,1,"䚾"],[195022,1,"䛇"],[195023,1,"誠"],[195024,1,"諭"],[195025,1,"變"],[195026,1,"豕"],[195027,1,"𧲨"],[195028,1,"貫"],[195029,1,"賁"],[195030,1,"贛"],[195031,1,"起"],[195032,1,"𧼯"],[195033,1,"𠠄"],[195034,1,"跋"],[195035,1,"趼"],[195036,1,"跰"],[195037,1,"𠣞"],[195038,1,"軔"],[195039,1,"輸"],[195040,1,"𨗒"],[195041,1,"𨗭"],[195042,1,"邔"],[195043,1,"郱"],[195044,1,"鄑"],[195045,1,"𨜮"],[195046,1,"鄛"],[195047,1,"鈸"],[195048,1,"鋗"],[195049,1,"鋘"],[195050,1,"鉼"],[195051,1,"鏹"],[195052,1,"鐕"],[195053,1,"𨯺"],[195054,1,"開"],[195055,1,"䦕"],[195056,1,"閷"],[195057,1,"𨵷"],[195058,1,"䧦"],[195059,1,"雃"],[195060,1,"嶲"],[195061,1,"霣"],[195062,1,"𩅅"],[195063,1,"𩈚"],[195064,1,"䩮"],[195065,1,"䩶"],[195066,1,"韠"],[195067,1,"𩐊"],[195068,1,"䪲"],[195069,1,"𩒖"],[[195070,195071],1,"頋"],[195072,1,"頩"],[195073,1,"𩖶"],[195074,1,"飢"],[195075,1,"䬳"],[195076,1,"餩"],[195077,1,"馧"],[195078,1,"駂"],[195079,1,"駾"],[195080,1,"䯎"],[195081,1,"𩬰"],[195082,1,"鬒"],[195083,1,"鱀"],[195084,1,"鳽"],[195085,1,"䳎"],[195086,1,"䳭"],[195087,1,"鵧"],[195088,1,"𪃎"],[195089,1,"䳸"],[195090,1,"𪄅"],[195091,1,"𪈎"],[195092,1,"𪊑"],[195093,1,"麻"],[195094,1,"䵖"],[195095,1,"黹"],[195096,1,"黾"],[195097,1,"鼅"],[195098,1,"鼏"],[195099,1,"鼖"],[195100,1,"鼻"],[195101,1,"𪘀"],[[195102,196605],3],[[196606,196607],3],[[196608,201546],2],[[201547,201551],3],[[201552,205743],2],[[205744,262141],3],[[262142,262143],3],[[262144,327677],3],[[327678,327679],3],[[327680,393213],3],[[393214,393215],3],[[393216,458749],3],[[458750,458751],3],[[458752,524285],3],[[524286,524287],3],[[524288,589821],3],[[589822,589823],3],[[589824,655357],3],[[655358,655359],3],[[655360,720893],3],[[720894,720895],3],[[720896,786429],3],[[786430,786431],3],[[786432,851965],3],[[851966,851967],3],[[851968,917501],3],[[917502,917503],3],[917504,3],[917505,3],[[917506,917535],3],[[917536,917631],3],[[917632,917759],3],[[917760,917999],7],[[918000,983037],3],[[983038,983039],3],[[983040,1048573],3],[[1048574,1048575],3],[[1048576,1114109],3],[[1114110,1114111],3]]
\ No newline at end of file
diff --git a/server/data-import/node_modules/tr46/lib/regexes.js b/server/data-import/node_modules/tr46/lib/regexes.js
deleted file mode 100644
index 14a5bf9859705c095782435a5a3d97fa16804693..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/tr46/lib/regexes.js
+++ /dev/null
@@ -1,29 +0,0 @@
-"use strict";
-
-const combiningMarks = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0898-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CF3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECE\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u180F\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10D24}-\u{10D27}\u{10EAB}\u{10EAC}\u{10EFD}-\u{10EFF}\u{10F46}-\u{10F50}\u{10F82}-\u{10F85}\u{11000}-\u{11002}\u{11038}-\u{11046}\u{11070}\u{11073}\u{11074}\u{1107F}-\u{11082}\u{110B0}-\u{110BA}\u{110C2}\u{11100}-\u{11102}\u{11127}-\u{11134}\u{11145}\u{11146}\u{11173}\u{11180}-\u{11182}\u{111B3}-\u{111C0}\u{111C9}-\u{111CC}\u{111CE}\u{111CF}\u{1122C}-\u{11237}\u{1123E}\u{11241}\u{112DF}-\u{112EA}\u{11300}-\u{11303}\u{1133B}\u{1133C}\u{1133E}-\u{11344}\u{11347}\u{11348}\u{1134B}-\u{1134D}\u{11357}\u{11362}\u{11363}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11435}-\u{11446}\u{1145E}\u{114B0}-\u{114C3}\u{115AF}-\u{115B5}\u{115B8}-\u{115C0}\u{115DC}\u{115DD}\u{11630}-\u{11640}\u{116AB}-\u{116B7}\u{1171D}-\u{1172B}\u{1182C}-\u{1183A}\u{11930}-\u{11935}\u{11937}\u{11938}\u{1193B}-\u{1193E}\u{11940}\u{11942}\u{11943}\u{119D1}-\u{119D7}\u{119DA}-\u{119E0}\u{119E4}\u{11A01}-\u{11A0A}\u{11A33}-\u{11A39}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A5B}\u{11A8A}-\u{11A99}\u{11C2F}-\u{11C36}\u{11C38}-\u{11C3F}\u{11C92}-\u{11CA7}\u{11CA9}-\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{11D8A}-\u{11D8E}\u{11D90}\u{11D91}\u{11D93}-\u{11D97}\u{11EF3}-\u{11EF6}\u{11F00}\u{11F01}\u{11F03}\u{11F34}-\u{11F3A}\u{11F3E}-\u{11F42}\u{13440}\u{13447}-\u{13455}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F4F}\u{16F51}-\u{16F87}\u{16F8F}-\u{16F92}\u{16FE4}\u{16FF0}\u{16FF1}\u{1BC9D}\u{1BC9E}\u{1CF00}-\u{1CF2D}\u{1CF30}-\u{1CF46}\u{1D165}-\u{1D169}\u{1D16D}-\u{1D172}\u{1D17B}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E08F}\u{1E130}-\u{1E136}\u{1E2AE}\u{1E2EC}-\u{1E2EF}\u{1E4EC}-\u{1E4EF}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{E0100}-\u{E01EF}]/u;
-const combiningClassVirama = /[\u094D\u09CD\u0A4D\u0ACD\u0B4D\u0BCD\u0C4D\u0CCD\u0D3B\u0D3C\u0D4D\u0DCA\u0E3A\u0EBA\u0F84\u1039\u103A\u1714\u1734\u17D2\u1A60\u1B44\u1BAA\u1BAB\u1BF2\u1BF3\u2D7F\uA806\uA8C4\uA953\uA9C0\uAAF6\uABED\u{10A3F}\u{11046}\u{1107F}\u{110B9}\u{11133}\u{11134}\u{111C0}\u{11235}\u{112EA}\u{1134D}\u{11442}\u{114C2}\u{115BF}\u{1163F}\u{116B6}\u{1172B}\u{11839}\u{119E0}\u{11A34}\u{11A47}\u{11A99}\u{11C3F}\u{11D44}\u{11D45}\u{11D97}]/u;
-const validZWNJ = /[\u0620\u0626\u0628\u062A-\u062E\u0633-\u063F\u0641-\u0647\u0649\u064A\u066E\u066F\u0678-\u0687\u069A-\u06BF\u06C1\u06C2\u06CC\u06CE\u06D0\u06D1\u06FA-\u06FC\u06FF\u0712-\u0714\u071A-\u071D\u071F-\u0727\u0729\u072B\u072D\u072E\u074E-\u0758\u075C-\u076A\u076D-\u0770\u0772\u0775-\u0777\u077A-\u077F\u07CA-\u07EA\u0841-\u0845\u0848\u084A-\u0853\u0855\u0860\u0862-\u0865\u0868\u08A0-\u08A9\u08AF\u08B0\u08B3\u08B4\u08B6-\u08B8\u08BA-\u08BD\u1807\u1820-\u1878\u1887-\u18A8\u18AA\uA840-\uA872\u{10AC0}-\u{10AC4}\u{10ACD}\u{10AD3}-\u{10ADC}\u{10ADE}-\u{10AE0}\u{10AEB}-\u{10AEE}\u{10B80}\u{10B82}\u{10B86}-\u{10B88}\u{10B8A}\u{10B8B}\u{10B8D}\u{10B90}\u{10BAD}\u{10BAE}\u{10D00}-\u{10D21}\u{10D23}\u{10F30}-\u{10F32}\u{10F34}-\u{10F44}\u{10F51}-\u{10F53}\u{1E900}-\u{1E943}][\xAD\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u061C\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u070F\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u200B\u200E\u200F\u202A-\u202E\u2060-\u2064\u206A-\u206F\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFEFF\uFFF9-\uFFFB\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10D24}-\u{10D27}\u{10F46}-\u{10F50}\u{11001}\u{11038}-\u{11046}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111C9}-\u{111CC}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133B}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{1145E}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{1182F}-\u{11837}\u{11839}\u{1183A}\u{119D4}-\u{119D7}\u{119DA}\u{119DB}\u{119E0}\u{11A01}-\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C3F}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{11D90}\u{11D91}\u{11D95}\u{11D97}\u{11EF3}\u{11EF4}\u{13430}-\u{13438}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F4F}\u{16F8F}-\u{16F92}\u{1BC9D}\u{1BC9E}\u{1BCA0}-\u{1BCA3}\u{1D167}-\u{1D169}\u{1D173}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E130}-\u{1E136}\u{1E2EC}-\u{1E2EF}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94B}\u{E0001}\u{E0020}-\u{E007F}\u{E0100}-\u{E01EF}]*\u200C[\xAD\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u061C\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u070F\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u200B\u200E\u200F\u202A-\u202E\u2060-\u2064\u206A-\u206F\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFEFF\uFFF9-\uFFFB\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10D24}-\u{10D27}\u{10F46}-\u{10F50}\u{11001}\u{11038}-\u{11046}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111C9}-\u{111CC}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133B}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{1145E}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{1182F}-\u{11837}\u{11839}\u{1183A}\u{119D4}-\u{119D7}\u{119DA}\u{119DB}\u{119E0}\u{11A01}-\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C3F}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{11D90}\u{11D91}\u{11D95}\u{11D97}\u{11EF3}\u{11EF4}\u{13430}-\u{13438}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F4F}\u{16F8F}-\u{16F92}\u{1BC9D}\u{1BC9E}\u{1BCA0}-\u{1BCA3}\u{1D167}-\u{1D169}\u{1D173}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E130}-\u{1E136}\u{1E2EC}-\u{1E2EF}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94B}\u{E0001}\u{E0020}-\u{E007F}\u{E0100}-\u{E01EF}]*[\u0620\u0622-\u063F\u0641-\u064A\u066E\u066F\u0671-\u0673\u0675-\u06D3\u06D5\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u077F\u07CA-\u07EA\u0840-\u0855\u0860\u0862-\u0865\u0867-\u086A\u08A0-\u08AC\u08AE-\u08B4\u08B6-\u08BD\u1807\u1820-\u1878\u1887-\u18A8\u18AA\uA840-\uA871\u{10AC0}-\u{10AC5}\u{10AC7}\u{10AC9}\u{10ACA}\u{10ACE}-\u{10AD6}\u{10AD8}-\u{10AE1}\u{10AE4}\u{10AEB}-\u{10AEF}\u{10B80}-\u{10B91}\u{10BA9}-\u{10BAE}\u{10D01}-\u{10D23}\u{10F30}-\u{10F44}\u{10F51}-\u{10F54}\u{1E900}-\u{1E943}]/u;
-const bidiDomain = /[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05EA\u05EF-\u05F4\u0600-\u0605\u0608\u060B\u060D\u061B-\u064A\u0660-\u0669\u066B-\u066F\u0671-\u06D5\u06DD\u06E5\u06E6\u06EE\u06EF\u06FA-\u070D\u070F\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u083E\u0840-\u0858\u085E\u0860-\u086A\u0870-\u088E\u0890\u0891\u08A0-\u08C9\u08E2\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBC2\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFC\uFE70-\uFE74\uFE76-\uFEFC\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10857}-\u{1089E}\u{108A7}-\u{108AF}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{108FB}-\u{1091B}\u{10920}-\u{10939}\u{1093F}\u{10980}-\u{109B7}\u{109BC}-\u{109CF}\u{109D2}-\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A40}-\u{10A48}\u{10A50}-\u{10A58}\u{10A60}-\u{10A9F}\u{10AC0}-\u{10AE4}\u{10AEB}-\u{10AF6}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B58}-\u{10B72}\u{10B78}-\u{10B91}\u{10B99}-\u{10B9C}\u{10BA9}-\u{10BAF}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10CFA}-\u{10D23}\u{10D30}-\u{10D39}\u{10E60}-\u{10E7E}\u{10E80}-\u{10EA9}\u{10EAD}\u{10EB0}\u{10EB1}\u{10F00}-\u{10F27}\u{10F30}-\u{10F45}\u{10F51}-\u{10F59}\u{10F70}-\u{10F81}\u{10F86}-\u{10F89}\u{10FB0}-\u{10FCB}\u{10FE0}-\u{10FF6}\u{1E800}-\u{1E8C4}\u{1E8C7}-\u{1E8CF}\u{1E900}-\u{1E943}\u{1E94B}\u{1E950}-\u{1E959}\u{1E95E}\u{1E95F}\u{1EC71}-\u{1ECB4}\u{1ED01}-\u{1ED3D}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}]/u;
-const bidiS1LTR = /[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02BB-\u02C1\u02D0\u02D1\u02E0-\u02E4\u02EE\u0370-\u0373\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0482\u048A-\u052F\u0531-\u0556\u0559-\u0589\u0903-\u0939\u093B\u093D-\u0940\u0949-\u094C\u094E-\u0950\u0958-\u0961\u0964-\u0980\u0982\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD-\u09C0\u09C7\u09C8\u09CB\u09CC\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09FA\u09FC\u09FD\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A40\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A76\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD-\u0AC0\u0AC9\u0ACB\u0ACC\u0AD0\u0AE0\u0AE1\u0AE6-\u0AF0\u0AF9\u0B02\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD0\u0BD7\u0BE6-\u0BF2\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C41-\u0C44\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C77\u0C7F\u0C80\u0C82-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD-\u0CC4\u0CC6-\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1-\u0CF3\u0D02-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D4E\u0D4F\u0D54-\u0D61\u0D66-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E4F-\u0E5B\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00-\u0F17\u0F1A-\u0F34\u0F36\u0F38\u0F3E-\u0F47\u0F49-\u0F6C\u0F7F\u0F85\u0F88-\u0F8C\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE-\u0FDA\u1000-\u102C\u1031\u1038\u103B\u103C\u103F-\u1057\u105A-\u105D\u1061-\u1070\u1075-\u1081\u1083\u1084\u1087-\u108C\u108E-\u109C\u109E-\u10C5\u10C7\u10CD\u10D0-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1360-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u167F\u1681-\u169A\u16A0-\u16F8\u1700-\u1711\u1715\u171F-\u1731\u1734-\u1736\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17B6\u17BE-\u17C5\u17C7\u17C8\u17D4-\u17DA\u17DC\u17E0-\u17E9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A19\u1A1A\u1A1E-\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1A80-\u1A89\u1A90-\u1A99\u1AA0-\u1AAD\u1B04-\u1B33\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B4C\u1B50-\u1B6A\u1B74-\u1B7E\u1B82-\u1BA1\u1BA6\u1BA7\u1BAA\u1BAE-\u1BE5\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1BFC-\u1C2B\u1C34\u1C35\u1C3B-\u1C49\u1C4D-\u1C88\u1C90-\u1CBA\u1CBD-\u1CC7\u1CD3\u1CE1\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5-\u1CF7\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200E\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u214F\u2160-\u2188\u2336-\u237A\u2395\u249C-\u24E9\u26AC\u2800-\u28FF\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D70\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u302E\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3190-\u31BF\u31F0-\u321C\u3220-\u324F\u3260-\u327B\u327F-\u32B0\u32C0-\u32CB\u32D0-\u3376\u337B-\u33DD\u33E0-\u33FE\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA60C\uA610-\uA62B\uA640-\uA66E\uA680-\uA69D\uA6A0-\uA6EF\uA6F2-\uA6F7\uA722-\uA787\uA789-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA824\uA827\uA830-\uA837\uA840-\uA873\uA880-\uA8C3\uA8CE-\uA8D9\uA8F2-\uA8FE\uA900-\uA925\uA92E-\uA946\uA952\uA953\uA95F-\uA97C\uA983-\uA9B2\uA9B4\uA9B5\uA9BA\uA9BB\uA9BE-\uA9CD\uA9CF-\uA9D9\uA9DE-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA2F\uAA30\uAA33\uAA34\uAA40-\uAA42\uAA44-\uAA4B\uAA4D\uAA50-\uAA59\uAA5C-\uAA7B\uAA7D-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAAEB\uAAEE-\uAAF5\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB69\uAB70-\uABE4\uABE6\uABE7\uABE9-\uABEC\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uD800-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10100}\u{10102}\u{10107}-\u{10133}\u{10137}-\u{1013F}\u{1018D}\u{1018E}\u{101D0}-\u{101FC}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{10300}-\u{10323}\u{1032D}-\u{1034A}\u{10350}-\u{10375}\u{10380}-\u{1039D}\u{1039F}-\u{103C3}\u{103C8}-\u{103D5}\u{10400}-\u{1049D}\u{104A0}-\u{104A9}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{1056F}-\u{1057A}\u{1057C}-\u{1058A}\u{1058C}-\u{10592}\u{10594}\u{10595}\u{10597}-\u{105A1}\u{105A3}-\u{105B1}\u{105B3}-\u{105B9}\u{105BB}\u{105BC}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{10780}-\u{10785}\u{10787}-\u{107B0}\u{107B2}-\u{107BA}\u{11000}\u{11002}-\u{11037}\u{11047}-\u{1104D}\u{11066}-\u{1106F}\u{11071}\u{11072}\u{11075}\u{11082}-\u{110B2}\u{110B7}\u{110B8}\u{110BB}-\u{110C1}\u{110CD}\u{110D0}-\u{110E8}\u{110F0}-\u{110F9}\u{11103}-\u{11126}\u{1112C}\u{11136}-\u{11147}\u{11150}-\u{11172}\u{11174}-\u{11176}\u{11182}-\u{111B5}\u{111BF}-\u{111C8}\u{111CD}\u{111CE}\u{111D0}-\u{111DF}\u{111E1}-\u{111F4}\u{11200}-\u{11211}\u{11213}-\u{1122E}\u{11232}\u{11233}\u{11235}\u{11238}-\u{1123D}\u{1123F}\u{11240}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A9}\u{112B0}-\u{112DE}\u{112E0}-\u{112E2}\u{112F0}-\u{112F9}\u{11302}\u{11303}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133D}-\u{1133F}\u{11341}-\u{11344}\u{11347}\u{11348}\u{1134B}-\u{1134D}\u{11350}\u{11357}\u{1135D}-\u{11363}\u{11400}-\u{11437}\u{11440}\u{11441}\u{11445}\u{11447}-\u{1145B}\u{1145D}\u{1145F}-\u{11461}\u{11480}-\u{114B2}\u{114B9}\u{114BB}-\u{114BE}\u{114C1}\u{114C4}-\u{114C7}\u{114D0}-\u{114D9}\u{11580}-\u{115B1}\u{115B8}-\u{115BB}\u{115BE}\u{115C1}-\u{115DB}\u{11600}-\u{11632}\u{1163B}\u{1163C}\u{1163E}\u{11641}-\u{11644}\u{11650}-\u{11659}\u{11680}-\u{116AA}\u{116AC}\u{116AE}\u{116AF}\u{116B6}\u{116B8}\u{116B9}\u{116C0}-\u{116C9}\u{11700}-\u{1171A}\u{11720}\u{11721}\u{11726}\u{11730}-\u{11746}\u{11800}-\u{1182E}\u{11838}\u{1183B}\u{118A0}-\u{118F2}\u{118FF}-\u{11906}\u{11909}\u{1190C}-\u{11913}\u{11915}\u{11916}\u{11918}-\u{11935}\u{11937}\u{11938}\u{1193D}\u{1193F}-\u{11942}\u{11944}-\u{11946}\u{11950}-\u{11959}\u{119A0}-\u{119A7}\u{119AA}-\u{119D3}\u{119DC}-\u{119DF}\u{119E1}-\u{119E4}\u{11A00}\u{11A07}\u{11A08}\u{11A0B}-\u{11A32}\u{11A39}\u{11A3A}\u{11A3F}-\u{11A46}\u{11A50}\u{11A57}\u{11A58}\u{11A5C}-\u{11A89}\u{11A97}\u{11A9A}-\u{11AA2}\u{11AB0}-\u{11AF8}\u{11B00}-\u{11B09}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C2F}\u{11C3E}-\u{11C45}\u{11C50}-\u{11C6C}\u{11C70}-\u{11C8F}\u{11CA9}\u{11CB1}\u{11CB4}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D30}\u{11D46}\u{11D50}-\u{11D59}\u{11D60}-\u{11D65}\u{11D67}\u{11D68}\u{11D6A}-\u{11D8E}\u{11D93}\u{11D94}\u{11D96}\u{11D98}\u{11DA0}-\u{11DA9}\u{11EE0}-\u{11EF2}\u{11EF5}-\u{11EF8}\u{11F02}-\u{11F10}\u{11F12}-\u{11F35}\u{11F3E}\u{11F3F}\u{11F41}\u{11F43}-\u{11F59}\u{11FB0}\u{11FC0}-\u{11FD4}\u{11FFF}-\u{12399}\u{12400}-\u{1246E}\u{12470}-\u{12474}\u{12480}-\u{12543}\u{12F90}-\u{12FF2}\u{13000}-\u{1343F}\u{13441}-\u{13446}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16A60}-\u{16A69}\u{16A6E}-\u{16ABE}\u{16AC0}-\u{16AC9}\u{16AD0}-\u{16AED}\u{16AF5}\u{16B00}-\u{16B2F}\u{16B37}-\u{16B45}\u{16B50}-\u{16B59}\u{16B5B}-\u{16B61}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16E40}-\u{16E9A}\u{16F00}-\u{16F4A}\u{16F50}-\u{16F87}\u{16F93}-\u{16F9F}\u{16FE0}\u{16FE1}\u{16FE3}\u{16FF0}\u{16FF1}\u{17000}-\u{187F7}\u{18800}-\u{18CD5}\u{18D00}-\u{18D08}\u{1AFF0}-\u{1AFF3}\u{1AFF5}-\u{1AFFB}\u{1AFFD}\u{1AFFE}\u{1B000}-\u{1B122}\u{1B132}\u{1B150}-\u{1B152}\u{1B155}\u{1B164}-\u{1B167}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1BC9C}\u{1BC9F}\u{1CF50}-\u{1CFC3}\u{1D000}-\u{1D0F5}\u{1D100}-\u{1D126}\u{1D129}-\u{1D166}\u{1D16A}-\u{1D172}\u{1D183}\u{1D184}\u{1D18C}-\u{1D1A9}\u{1D1AE}-\u{1D1E8}\u{1D2C0}-\u{1D2D3}\u{1D2E0}-\u{1D2F3}\u{1D360}-\u{1D378}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D6DA}\u{1D6DC}-\u{1D714}\u{1D716}-\u{1D74E}\u{1D750}-\u{1D788}\u{1D78A}-\u{1D7C2}\u{1D7C4}-\u{1D7CB}\u{1D800}-\u{1D9FF}\u{1DA37}-\u{1DA3A}\u{1DA6D}-\u{1DA74}\u{1DA76}-\u{1DA83}\u{1DA85}-\u{1DA8B}\u{1DF00}-\u{1DF1E}\u{1DF25}-\u{1DF2A}\u{1E030}-\u{1E06D}\u{1E100}-\u{1E12C}\u{1E137}-\u{1E13D}\u{1E140}-\u{1E149}\u{1E14E}\u{1E14F}\u{1E290}-\u{1E2AD}\u{1E2C0}-\u{1E2EB}\u{1E2F0}-\u{1E2F9}\u{1E4D0}-\u{1E4EB}\u{1E4F0}-\u{1E4F9}\u{1E7E0}-\u{1E7E6}\u{1E7E8}-\u{1E7EB}\u{1E7ED}\u{1E7EE}\u{1E7F0}-\u{1E7FE}\u{1F110}-\u{1F12E}\u{1F130}-\u{1F169}\u{1F170}-\u{1F1AC}\u{1F1E6}-\u{1F202}\u{1F210}-\u{1F23B}\u{1F240}-\u{1F248}\u{1F250}\u{1F251}\u{20000}-\u{2A6DF}\u{2A700}-\u{2B739}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}\u{30000}-\u{3134A}\u{31350}-\u{323AF}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]/u;
-const bidiS1RTL = /[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05EA\u05EF-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u070D\u070F\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u083E\u0840-\u0858\u085E\u0860-\u086A\u0870-\u088E\u08A0-\u08C9\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBC2\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFC\uFE70-\uFE74\uFE76-\uFEFC\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10857}-\u{1089E}\u{108A7}-\u{108AF}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{108FB}-\u{1091B}\u{10920}-\u{10939}\u{1093F}\u{10980}-\u{109B7}\u{109BC}-\u{109CF}\u{109D2}-\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A40}-\u{10A48}\u{10A50}-\u{10A58}\u{10A60}-\u{10A9F}\u{10AC0}-\u{10AE4}\u{10AEB}-\u{10AF6}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B58}-\u{10B72}\u{10B78}-\u{10B91}\u{10B99}-\u{10B9C}\u{10BA9}-\u{10BAF}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10CFA}-\u{10D23}\u{10E80}-\u{10EA9}\u{10EAD}\u{10EB0}\u{10EB1}\u{10F00}-\u{10F27}\u{10F30}-\u{10F45}\u{10F51}-\u{10F59}\u{10F70}-\u{10F81}\u{10F86}-\u{10F89}\u{10FB0}-\u{10FCB}\u{10FE0}-\u{10FF6}\u{1E800}-\u{1E8C4}\u{1E8C7}-\u{1E8CF}\u{1E900}-\u{1E943}\u{1E94B}\u{1E950}-\u{1E959}\u{1E95E}\u{1E95F}\u{1EC71}-\u{1ECB4}\u{1ED01}-\u{1ED3D}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}]/u;
-const bidiS2 = /^[\0-\x08\x0E-\x1B!-@\[-`\{-\x84\x86-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02B9\u02BA\u02C2-\u02CF\u02D2-\u02DF\u02E5-\u02ED\u02EF-\u036F\u0374\u0375\u037E\u0384\u0385\u0387\u03F6\u0483-\u0489\u058A\u058D-\u058F\u0591-\u05C7\u05D0-\u05EA\u05EF-\u05F4\u0600-\u070D\u070F-\u074A\u074D-\u07B1\u07C0-\u07FA\u07FD-\u082D\u0830-\u083E\u0840-\u085B\u085E\u0860-\u086A\u0870-\u088E\u0890\u0891\u0898-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09F2\u09F3\u09FB\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AF1\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B55\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0BF3-\u0BFA\u0C00\u0C04\u0C3C\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C78-\u0C7E\u0C81\u0CBC\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0D81\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E3F\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECE\u0F18\u0F19\u0F35\u0F37\u0F39-\u0F3D\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1390-\u1399\u1400\u169B\u169C\u1712-\u1714\u1732\u1733\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DB\u17DD\u17F0-\u17F9\u1800-\u180F\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1940\u1944\u1945\u19DE-\u19FF\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ACE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DFF\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u200B-\u200D\u200F-\u2027\u202F-\u205E\u2060-\u2064\u206A-\u2070\u2074-\u207E\u2080-\u208E\u20A0-\u20C0\u20D0-\u20F0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u2150-\u215F\u2189-\u218B\u2190-\u2335\u237B-\u2394\u2396-\u2426\u2440-\u244A\u2460-\u249B\u24EA-\u26AB\u26AD-\u27FF\u2900-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF9-\u2CFF\u2D7F\u2DE0-\u2E5D\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u3004\u3008-\u3020\u302A-\u302D\u3030\u3036\u3037\u303D-\u303F\u3099-\u309C\u30A0\u30FB\u31C0-\u31E3\u321D\u321E\u3250-\u325F\u327C-\u327E\u32B1-\u32BF\u32CC-\u32CF\u3377-\u337A\u33DE\u33DF\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA60D-\uA60F\uA66F-\uA67F\uA69E\uA69F\uA6F0\uA6F1\uA700-\uA721\uA788\uA802\uA806\uA80B\uA825\uA826\uA828-\uA82C\uA838\uA839\uA874-\uA877\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uAB6A\uAB6B\uABE5\uABE8\uABED\uFB1D-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBC2\uFBD3-\uFD8F\uFD92-\uFDC7\uFDCF\uFDF0-\uFE19\uFE20-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE74\uFE76-\uFEFC\uFEFF\uFF01-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFF9-\uFFFD\u{10101}\u{10140}-\u{1018C}\u{10190}-\u{1019C}\u{101A0}\u{101FD}\u{102E0}-\u{102FB}\u{10376}-\u{1037A}\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10857}-\u{1089E}\u{108A7}-\u{108AF}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{108FB}-\u{1091B}\u{1091F}-\u{10939}\u{1093F}\u{10980}-\u{109B7}\u{109BC}-\u{109CF}\u{109D2}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A38}-\u{10A3A}\u{10A3F}-\u{10A48}\u{10A50}-\u{10A58}\u{10A60}-\u{10A9F}\u{10AC0}-\u{10AE6}\u{10AEB}-\u{10AF6}\u{10B00}-\u{10B35}\u{10B39}-\u{10B55}\u{10B58}-\u{10B72}\u{10B78}-\u{10B91}\u{10B99}-\u{10B9C}\u{10BA9}-\u{10BAF}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10CFA}-\u{10D27}\u{10D30}-\u{10D39}\u{10E60}-\u{10E7E}\u{10E80}-\u{10EA9}\u{10EAB}-\u{10EAD}\u{10EB0}\u{10EB1}\u{10EFD}-\u{10F27}\u{10F30}-\u{10F59}\u{10F70}-\u{10F89}\u{10FB0}-\u{10FCB}\u{10FE0}-\u{10FF6}\u{11001}\u{11038}-\u{11046}\u{11052}-\u{11065}\u{11070}\u{11073}\u{11074}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{110C2}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111C9}-\u{111CC}\u{111CF}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{11241}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133B}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{1145E}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{11660}-\u{1166C}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{1182F}-\u{11837}\u{11839}\u{1183A}\u{1193B}\u{1193C}\u{1193E}\u{11943}\u{119D4}-\u{119D7}\u{119DA}\u{119DB}\u{119E0}\u{11A01}-\u{11A06}\u{11A09}\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{11D90}\u{11D91}\u{11D95}\u{11D97}\u{11EF3}\u{11EF4}\u{11F00}\u{11F01}\u{11F36}-\u{11F3A}\u{11F40}\u{11F42}\u{11FD5}-\u{11FF1}\u{13440}\u{13447}-\u{13455}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F4F}\u{16F8F}-\u{16F92}\u{16FE2}\u{16FE4}\u{1BC9D}\u{1BC9E}\u{1BCA0}-\u{1BCA3}\u{1CF00}-\u{1CF2D}\u{1CF30}-\u{1CF46}\u{1D167}-\u{1D169}\u{1D173}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D1E9}\u{1D1EA}\u{1D200}-\u{1D245}\u{1D300}-\u{1D356}\u{1D6DB}\u{1D715}\u{1D74F}\u{1D789}\u{1D7C3}\u{1D7CE}-\u{1D7FF}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E08F}\u{1E130}-\u{1E136}\u{1E2AE}\u{1E2EC}-\u{1E2EF}\u{1E2FF}\u{1E4EC}-\u{1E4EF}\u{1E800}-\u{1E8C4}\u{1E8C7}-\u{1E8D6}\u{1E900}-\u{1E94B}\u{1E950}-\u{1E959}\u{1E95E}\u{1E95F}\u{1EC71}-\u{1ECB4}\u{1ED01}-\u{1ED3D}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}\u{1EEF0}\u{1EEF1}\u{1F000}-\u{1F02B}\u{1F030}-\u{1F093}\u{1F0A0}-\u{1F0AE}\u{1F0B1}-\u{1F0BF}\u{1F0C1}-\u{1F0CF}\u{1F0D1}-\u{1F0F5}\u{1F100}-\u{1F10F}\u{1F12F}\u{1F16A}-\u{1F16F}\u{1F1AD}\u{1F260}-\u{1F265}\u{1F300}-\u{1F6D7}\u{1F6DC}-\u{1F6EC}\u{1F6F0}-\u{1F6FC}\u{1F700}-\u{1F776}\u{1F77B}-\u{1F7D9}\u{1F7E0}-\u{1F7EB}\u{1F7F0}\u{1F800}-\u{1F80B}\u{1F810}-\u{1F847}\u{1F850}-\u{1F859}\u{1F860}-\u{1F887}\u{1F890}-\u{1F8AD}\u{1F8B0}\u{1F8B1}\u{1F900}-\u{1FA53}\u{1FA60}-\u{1FA6D}\u{1FA70}-\u{1FA7C}\u{1FA80}-\u{1FA88}\u{1FA90}-\u{1FABD}\u{1FABF}-\u{1FAC5}\u{1FACE}-\u{1FADB}\u{1FAE0}-\u{1FAE8}\u{1FAF0}-\u{1FAF8}\u{1FB00}-\u{1FB92}\u{1FB94}-\u{1FBCA}\u{1FBF0}-\u{1FBF9}\u{E0001}\u{E0020}-\u{E007F}\u{E0100}-\u{E01EF}]*$/u;
-const bidiS3 = /[0-9\xB2\xB3\xB9\u05BE\u05C0\u05C3\u05C6\u05D0-\u05EA\u05EF-\u05F4\u0600-\u0605\u0608\u060B\u060D\u061B-\u064A\u0660-\u0669\u066B-\u066F\u0671-\u06D5\u06DD\u06E5\u06E6\u06EE-\u070D\u070F\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u083E\u0840-\u0858\u085E\u0860-\u086A\u0870-\u088E\u0890\u0891\u08A0-\u08C9\u08E2\u200F\u2070\u2074-\u2079\u2080-\u2089\u2488-\u249B\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBC2\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFC\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\u{102E1}-\u{102FB}\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10857}-\u{1089E}\u{108A7}-\u{108AF}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{108FB}-\u{1091B}\u{10920}-\u{10939}\u{1093F}\u{10980}-\u{109B7}\u{109BC}-\u{109CF}\u{109D2}-\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A40}-\u{10A48}\u{10A50}-\u{10A58}\u{10A60}-\u{10A9F}\u{10AC0}-\u{10AE4}\u{10AEB}-\u{10AF6}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B58}-\u{10B72}\u{10B78}-\u{10B91}\u{10B99}-\u{10B9C}\u{10BA9}-\u{10BAF}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10CFA}-\u{10D23}\u{10D30}-\u{10D39}\u{10E60}-\u{10E7E}\u{10E80}-\u{10EA9}\u{10EAD}\u{10EB0}\u{10EB1}\u{10F00}-\u{10F27}\u{10F30}-\u{10F45}\u{10F51}-\u{10F59}\u{10F70}-\u{10F81}\u{10F86}-\u{10F89}\u{10FB0}-\u{10FCB}\u{10FE0}-\u{10FF6}\u{1D7CE}-\u{1D7FF}\u{1E800}-\u{1E8C4}\u{1E8C7}-\u{1E8CF}\u{1E900}-\u{1E943}\u{1E94B}\u{1E950}-\u{1E959}\u{1E95E}\u{1E95F}\u{1EC71}-\u{1ECB4}\u{1ED01}-\u{1ED3D}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}\u{1F100}-\u{1F10A}\u{1FBF0}-\u{1FBF9}][\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0898-\u089F\u08CA-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B55\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3C\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0D81\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECE\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732\u1733\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u180F\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ACE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA82C\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10D24}-\u{10D27}\u{10EAB}\u{10EAC}\u{10EFD}-\u{10EFF}\u{10F46}-\u{10F50}\u{10F82}-\u{10F85}\u{11001}\u{11038}-\u{11046}\u{11070}\u{11073}\u{11074}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{110C2}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111C9}-\u{111CC}\u{111CF}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{11241}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133B}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{1145E}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{1182F}-\u{11837}\u{11839}\u{1183A}\u{1193B}\u{1193C}\u{1193E}\u{11943}\u{119D4}-\u{119D7}\u{119DA}\u{119DB}\u{119E0}\u{11A01}-\u{11A06}\u{11A09}\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{11D90}\u{11D91}\u{11D95}\u{11D97}\u{11EF3}\u{11EF4}\u{11F00}\u{11F01}\u{11F36}-\u{11F3A}\u{11F40}\u{11F42}\u{13440}\u{13447}-\u{13455}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F4F}\u{16F8F}-\u{16F92}\u{16FE4}\u{1BC9D}\u{1BC9E}\u{1CF00}-\u{1CF2D}\u{1CF30}-\u{1CF46}\u{1D167}-\u{1D169}\u{1D17B}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E08F}\u{1E130}-\u{1E136}\u{1E2AE}\u{1E2EC}-\u{1E2EF}\u{1E4EC}-\u{1E4EF}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{E0100}-\u{E01EF}]*$/u;
-const bidiS4EN = /[0-9\xB2\xB3\xB9\u06F0-\u06F9\u2070\u2074-\u2079\u2080-\u2089\u2488-\u249B\uFF10-\uFF19\u{102E1}-\u{102FB}\u{1D7CE}-\u{1D7FF}\u{1F100}-\u{1F10A}\u{1FBF0}-\u{1FBF9}]/u;
-const bidiS4AN = /[\u0600-\u0605\u0660-\u0669\u066B\u066C\u06DD\u0890\u0891\u08E2\u{10D30}-\u{10D39}\u{10E60}-\u{10E7E}]/u;
-const bidiS5 = /^[\0-\x08\x0E-\x1B!-\x84\x86-\u0377\u037A-\u037F\u0384-\u038A\u038C\u038E-\u03A1\u03A3-\u052F\u0531-\u0556\u0559-\u058A\u058D-\u058F\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0606\u0607\u0609\u060A\u060C\u060E-\u061A\u064B-\u065F\u066A\u0670\u06D6-\u06DC\u06DE-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07F6-\u07F9\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0898-\u089F\u08CA-\u08E1\u08E3-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A76\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AF1\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B77\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BFA\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3C-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C5D\u0C60-\u0C63\u0C66-\u0C6F\u0C77-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDD\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1-\u0CF3\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4F\u0D54-\u0D63\u0D66-\u0D7F\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4\u0E01-\u0E3A\u0E3F-\u0E5B\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECE\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00-\u0F47\u0F49-\u0F6C\u0F71-\u0F97\u0F99-\u0FBC\u0FBE-\u0FCC\u0FCE-\u0FDA\u1000-\u10C5\u10C7\u10CD\u10D0-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u137C\u1380-\u1399\u13A0-\u13F5\u13F8-\u13FD\u1400-\u167F\u1681-\u169C\u16A0-\u16F8\u1700-\u1715\u171F-\u1736\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17DD\u17E0-\u17E9\u17F0-\u17F9\u1800-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1940\u1944-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u19DE-\u1A1B\u1A1E-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA0-\u1AAD\u1AB0-\u1ACE\u1B00-\u1B4C\u1B50-\u1B7E\u1B80-\u1BF3\u1BFC-\u1C37\u1C3B-\u1C49\u1C4D-\u1C88\u1C90-\u1CBA\u1CBD-\u1CC7\u1CD0-\u1CFA\u1D00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u200B-\u200E\u2010-\u2027\u202F-\u205E\u2060-\u2064\u206A-\u2071\u2074-\u208E\u2090-\u209C\u20A0-\u20C0\u20D0-\u20F0\u2100-\u218B\u2190-\u2426\u2440-\u244A\u2460-\u2B73\u2B76-\u2B95\u2B97-\u2CF3\u2CF9-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D70\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2E5D\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303F\u3041-\u3096\u3099-\u30FF\u3105-\u312F\u3131-\u318E\u3190-\u31E3\u31F0-\u321E\u3220-\uA48C\uA490-\uA4C6\uA4D0-\uA62B\uA640-\uA6F7\uA700-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA82C\uA830-\uA839\uA840-\uA877\uA880-\uA8C5\uA8CE-\uA8D9\uA8E0-\uA953\uA95F-\uA97C\uA980-\uA9CD\uA9CF-\uA9D9\uA9DE-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA5C-\uAAC2\uAADB-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB6B\uAB70-\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uD800-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1E\uFB29\uFD3E-\uFD4F\uFDCF\uFDFD-\uFE19\uFE20-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFEFF\uFF01-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFF9-\uFFFD\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10100}-\u{10102}\u{10107}-\u{10133}\u{10137}-\u{1018E}\u{10190}-\u{1019C}\u{101A0}\u{101D0}-\u{101FD}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{102E0}-\u{102FB}\u{10300}-\u{10323}\u{1032D}-\u{1034A}\u{10350}-\u{1037A}\u{10380}-\u{1039D}\u{1039F}-\u{103C3}\u{103C8}-\u{103D5}\u{10400}-\u{1049D}\u{104A0}-\u{104A9}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{1056F}-\u{1057A}\u{1057C}-\u{1058A}\u{1058C}-\u{10592}\u{10594}\u{10595}\u{10597}-\u{105A1}\u{105A3}-\u{105B1}\u{105B3}-\u{105B9}\u{105BB}\u{105BC}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{10780}-\u{10785}\u{10787}-\u{107B0}\u{107B2}-\u{107BA}\u{1091F}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10B39}-\u{10B3F}\u{10D24}-\u{10D27}\u{10EAB}\u{10EAC}\u{10EFD}-\u{10EFF}\u{10F46}-\u{10F50}\u{10F82}-\u{10F85}\u{11000}-\u{1104D}\u{11052}-\u{11075}\u{1107F}-\u{110C2}\u{110CD}\u{110D0}-\u{110E8}\u{110F0}-\u{110F9}\u{11100}-\u{11134}\u{11136}-\u{11147}\u{11150}-\u{11176}\u{11180}-\u{111DF}\u{111E1}-\u{111F4}\u{11200}-\u{11211}\u{11213}-\u{11241}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A9}\u{112B0}-\u{112EA}\u{112F0}-\u{112F9}\u{11300}-\u{11303}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133B}-\u{11344}\u{11347}\u{11348}\u{1134B}-\u{1134D}\u{11350}\u{11357}\u{1135D}-\u{11363}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11400}-\u{1145B}\u{1145D}-\u{11461}\u{11480}-\u{114C7}\u{114D0}-\u{114D9}\u{11580}-\u{115B5}\u{115B8}-\u{115DD}\u{11600}-\u{11644}\u{11650}-\u{11659}\u{11660}-\u{1166C}\u{11680}-\u{116B9}\u{116C0}-\u{116C9}\u{11700}-\u{1171A}\u{1171D}-\u{1172B}\u{11730}-\u{11746}\u{11800}-\u{1183B}\u{118A0}-\u{118F2}\u{118FF}-\u{11906}\u{11909}\u{1190C}-\u{11913}\u{11915}\u{11916}\u{11918}-\u{11935}\u{11937}\u{11938}\u{1193B}-\u{11946}\u{11950}-\u{11959}\u{119A0}-\u{119A7}\u{119AA}-\u{119D7}\u{119DA}-\u{119E4}\u{11A00}-\u{11A47}\u{11A50}-\u{11AA2}\u{11AB0}-\u{11AF8}\u{11B00}-\u{11B09}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C36}\u{11C38}-\u{11C45}\u{11C50}-\u{11C6C}\u{11C70}-\u{11C8F}\u{11C92}-\u{11CA7}\u{11CA9}-\u{11CB6}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D47}\u{11D50}-\u{11D59}\u{11D60}-\u{11D65}\u{11D67}\u{11D68}\u{11D6A}-\u{11D8E}\u{11D90}\u{11D91}\u{11D93}-\u{11D98}\u{11DA0}-\u{11DA9}\u{11EE0}-\u{11EF8}\u{11F00}-\u{11F10}\u{11F12}-\u{11F3A}\u{11F3E}-\u{11F59}\u{11FB0}\u{11FC0}-\u{11FF1}\u{11FFF}-\u{12399}\u{12400}-\u{1246E}\u{12470}-\u{12474}\u{12480}-\u{12543}\u{12F90}-\u{12FF2}\u{13000}-\u{13455}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16A60}-\u{16A69}\u{16A6E}-\u{16ABE}\u{16AC0}-\u{16AC9}\u{16AD0}-\u{16AED}\u{16AF0}-\u{16AF5}\u{16B00}-\u{16B45}\u{16B50}-\u{16B59}\u{16B5B}-\u{16B61}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16E40}-\u{16E9A}\u{16F00}-\u{16F4A}\u{16F4F}-\u{16F87}\u{16F8F}-\u{16F9F}\u{16FE0}-\u{16FE4}\u{16FF0}\u{16FF1}\u{17000}-\u{187F7}\u{18800}-\u{18CD5}\u{18D00}-\u{18D08}\u{1AFF0}-\u{1AFF3}\u{1AFF5}-\u{1AFFB}\u{1AFFD}\u{1AFFE}\u{1B000}-\u{1B122}\u{1B132}\u{1B150}-\u{1B152}\u{1B155}\u{1B164}-\u{1B167}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1BC9C}-\u{1BCA3}\u{1CF00}-\u{1CF2D}\u{1CF30}-\u{1CF46}\u{1CF50}-\u{1CFC3}\u{1D000}-\u{1D0F5}\u{1D100}-\u{1D126}\u{1D129}-\u{1D1EA}\u{1D200}-\u{1D245}\u{1D2C0}-\u{1D2D3}\u{1D2E0}-\u{1D2F3}\u{1D300}-\u{1D356}\u{1D360}-\u{1D378}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D7CB}\u{1D7CE}-\u{1DA8B}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1DF00}-\u{1DF1E}\u{1DF25}-\u{1DF2A}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E030}-\u{1E06D}\u{1E08F}\u{1E100}-\u{1E12C}\u{1E130}-\u{1E13D}\u{1E140}-\u{1E149}\u{1E14E}\u{1E14F}\u{1E290}-\u{1E2AE}\u{1E2C0}-\u{1E2F9}\u{1E2FF}\u{1E4D0}-\u{1E4F9}\u{1E7E0}-\u{1E7E6}\u{1E7E8}-\u{1E7EB}\u{1E7ED}\u{1E7EE}\u{1E7F0}-\u{1E7FE}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{1EEF0}\u{1EEF1}\u{1F000}-\u{1F02B}\u{1F030}-\u{1F093}\u{1F0A0}-\u{1F0AE}\u{1F0B1}-\u{1F0BF}\u{1F0C1}-\u{1F0CF}\u{1F0D1}-\u{1F0F5}\u{1F100}-\u{1F1AD}\u{1F1E6}-\u{1F202}\u{1F210}-\u{1F23B}\u{1F240}-\u{1F248}\u{1F250}\u{1F251}\u{1F260}-\u{1F265}\u{1F300}-\u{1F6D7}\u{1F6DC}-\u{1F6EC}\u{1F6F0}-\u{1F6FC}\u{1F700}-\u{1F776}\u{1F77B}-\u{1F7D9}\u{1F7E0}-\u{1F7EB}\u{1F7F0}\u{1F800}-\u{1F80B}\u{1F810}-\u{1F847}\u{1F850}-\u{1F859}\u{1F860}-\u{1F887}\u{1F890}-\u{1F8AD}\u{1F8B0}\u{1F8B1}\u{1F900}-\u{1FA53}\u{1FA60}-\u{1FA6D}\u{1FA70}-\u{1FA7C}\u{1FA80}-\u{1FA88}\u{1FA90}-\u{1FABD}\u{1FABF}-\u{1FAC5}\u{1FACE}-\u{1FADB}\u{1FAE0}-\u{1FAE8}\u{1FAF0}-\u{1FAF8}\u{1FB00}-\u{1FB92}\u{1FB94}-\u{1FBCA}\u{1FBF0}-\u{1FBF9}\u{20000}-\u{2A6DF}\u{2A700}-\u{2B739}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}\u{30000}-\u{3134A}\u{31350}-\u{323AF}\u{E0001}\u{E0020}-\u{E007F}\u{E0100}-\u{E01EF}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]*$/u;
-const bidiS6 = /[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02BB-\u02C1\u02D0\u02D1\u02E0-\u02E4\u02EE\u0370-\u0373\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0482\u048A-\u052F\u0531-\u0556\u0559-\u0589\u06F0-\u06F9\u0903-\u0939\u093B\u093D-\u0940\u0949-\u094C\u094E-\u0950\u0958-\u0961\u0964-\u0980\u0982\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD-\u09C0\u09C7\u09C8\u09CB\u09CC\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09FA\u09FC\u09FD\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A40\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A76\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD-\u0AC0\u0AC9\u0ACB\u0ACC\u0AD0\u0AE0\u0AE1\u0AE6-\u0AF0\u0AF9\u0B02\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD0\u0BD7\u0BE6-\u0BF2\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C41-\u0C44\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C77\u0C7F\u0C80\u0C82-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD-\u0CC4\u0CC6-\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1-\u0CF3\u0D02-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D4E\u0D4F\u0D54-\u0D61\u0D66-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E4F-\u0E5B\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00-\u0F17\u0F1A-\u0F34\u0F36\u0F38\u0F3E-\u0F47\u0F49-\u0F6C\u0F7F\u0F85\u0F88-\u0F8C\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE-\u0FDA\u1000-\u102C\u1031\u1038\u103B\u103C\u103F-\u1057\u105A-\u105D\u1061-\u1070\u1075-\u1081\u1083\u1084\u1087-\u108C\u108E-\u109C\u109E-\u10C5\u10C7\u10CD\u10D0-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1360-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u167F\u1681-\u169A\u16A0-\u16F8\u1700-\u1711\u1715\u171F-\u1731\u1734-\u1736\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17B6\u17BE-\u17C5\u17C7\u17C8\u17D4-\u17DA\u17DC\u17E0-\u17E9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A19\u1A1A\u1A1E-\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1A80-\u1A89\u1A90-\u1A99\u1AA0-\u1AAD\u1B04-\u1B33\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B4C\u1B50-\u1B6A\u1B74-\u1B7E\u1B82-\u1BA1\u1BA6\u1BA7\u1BAA\u1BAE-\u1BE5\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1BFC-\u1C2B\u1C34\u1C35\u1C3B-\u1C49\u1C4D-\u1C88\u1C90-\u1CBA\u1CBD-\u1CC7\u1CD3\u1CE1\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5-\u1CF7\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200E\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u214F\u2160-\u2188\u2336-\u237A\u2395\u2488-\u24E9\u26AC\u2800-\u28FF\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D70\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u302E\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3190-\u31BF\u31F0-\u321C\u3220-\u324F\u3260-\u327B\u327F-\u32B0\u32C0-\u32CB\u32D0-\u3376\u337B-\u33DD\u33E0-\u33FE\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA60C\uA610-\uA62B\uA640-\uA66E\uA680-\uA69D\uA6A0-\uA6EF\uA6F2-\uA6F7\uA722-\uA787\uA789-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA824\uA827\uA830-\uA837\uA840-\uA873\uA880-\uA8C3\uA8CE-\uA8D9\uA8F2-\uA8FE\uA900-\uA925\uA92E-\uA946\uA952\uA953\uA95F-\uA97C\uA983-\uA9B2\uA9B4\uA9B5\uA9BA\uA9BB\uA9BE-\uA9CD\uA9CF-\uA9D9\uA9DE-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA2F\uAA30\uAA33\uAA34\uAA40-\uAA42\uAA44-\uAA4B\uAA4D\uAA50-\uAA59\uAA5C-\uAA7B\uAA7D-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAAEB\uAAEE-\uAAF5\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB69\uAB70-\uABE4\uABE6\uABE7\uABE9-\uABEC\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uD800-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10100}\u{10102}\u{10107}-\u{10133}\u{10137}-\u{1013F}\u{1018D}\u{1018E}\u{101D0}-\u{101FC}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{102E1}-\u{102FB}\u{10300}-\u{10323}\u{1032D}-\u{1034A}\u{10350}-\u{10375}\u{10380}-\u{1039D}\u{1039F}-\u{103C3}\u{103C8}-\u{103D5}\u{10400}-\u{1049D}\u{104A0}-\u{104A9}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{1056F}-\u{1057A}\u{1057C}-\u{1058A}\u{1058C}-\u{10592}\u{10594}\u{10595}\u{10597}-\u{105A1}\u{105A3}-\u{105B1}\u{105B3}-\u{105B9}\u{105BB}\u{105BC}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{10780}-\u{10785}\u{10787}-\u{107B0}\u{107B2}-\u{107BA}\u{11000}\u{11002}-\u{11037}\u{11047}-\u{1104D}\u{11066}-\u{1106F}\u{11071}\u{11072}\u{11075}\u{11082}-\u{110B2}\u{110B7}\u{110B8}\u{110BB}-\u{110C1}\u{110CD}\u{110D0}-\u{110E8}\u{110F0}-\u{110F9}\u{11103}-\u{11126}\u{1112C}\u{11136}-\u{11147}\u{11150}-\u{11172}\u{11174}-\u{11176}\u{11182}-\u{111B5}\u{111BF}-\u{111C8}\u{111CD}\u{111CE}\u{111D0}-\u{111DF}\u{111E1}-\u{111F4}\u{11200}-\u{11211}\u{11213}-\u{1122E}\u{11232}\u{11233}\u{11235}\u{11238}-\u{1123D}\u{1123F}\u{11240}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A9}\u{112B0}-\u{112DE}\u{112E0}-\u{112E2}\u{112F0}-\u{112F9}\u{11302}\u{11303}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133D}-\u{1133F}\u{11341}-\u{11344}\u{11347}\u{11348}\u{1134B}-\u{1134D}\u{11350}\u{11357}\u{1135D}-\u{11363}\u{11400}-\u{11437}\u{11440}\u{11441}\u{11445}\u{11447}-\u{1145B}\u{1145D}\u{1145F}-\u{11461}\u{11480}-\u{114B2}\u{114B9}\u{114BB}-\u{114BE}\u{114C1}\u{114C4}-\u{114C7}\u{114D0}-\u{114D9}\u{11580}-\u{115B1}\u{115B8}-\u{115BB}\u{115BE}\u{115C1}-\u{115DB}\u{11600}-\u{11632}\u{1163B}\u{1163C}\u{1163E}\u{11641}-\u{11644}\u{11650}-\u{11659}\u{11680}-\u{116AA}\u{116AC}\u{116AE}\u{116AF}\u{116B6}\u{116B8}\u{116B9}\u{116C0}-\u{116C9}\u{11700}-\u{1171A}\u{11720}\u{11721}\u{11726}\u{11730}-\u{11746}\u{11800}-\u{1182E}\u{11838}\u{1183B}\u{118A0}-\u{118F2}\u{118FF}-\u{11906}\u{11909}\u{1190C}-\u{11913}\u{11915}\u{11916}\u{11918}-\u{11935}\u{11937}\u{11938}\u{1193D}\u{1193F}-\u{11942}\u{11944}-\u{11946}\u{11950}-\u{11959}\u{119A0}-\u{119A7}\u{119AA}-\u{119D3}\u{119DC}-\u{119DF}\u{119E1}-\u{119E4}\u{11A00}\u{11A07}\u{11A08}\u{11A0B}-\u{11A32}\u{11A39}\u{11A3A}\u{11A3F}-\u{11A46}\u{11A50}\u{11A57}\u{11A58}\u{11A5C}-\u{11A89}\u{11A97}\u{11A9A}-\u{11AA2}\u{11AB0}-\u{11AF8}\u{11B00}-\u{11B09}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C2F}\u{11C3E}-\u{11C45}\u{11C50}-\u{11C6C}\u{11C70}-\u{11C8F}\u{11CA9}\u{11CB1}\u{11CB4}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D30}\u{11D46}\u{11D50}-\u{11D59}\u{11D60}-\u{11D65}\u{11D67}\u{11D68}\u{11D6A}-\u{11D8E}\u{11D93}\u{11D94}\u{11D96}\u{11D98}\u{11DA0}-\u{11DA9}\u{11EE0}-\u{11EF2}\u{11EF5}-\u{11EF8}\u{11F02}-\u{11F10}\u{11F12}-\u{11F35}\u{11F3E}\u{11F3F}\u{11F41}\u{11F43}-\u{11F59}\u{11FB0}\u{11FC0}-\u{11FD4}\u{11FFF}-\u{12399}\u{12400}-\u{1246E}\u{12470}-\u{12474}\u{12480}-\u{12543}\u{12F90}-\u{12FF2}\u{13000}-\u{1343F}\u{13441}-\u{13446}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16A60}-\u{16A69}\u{16A6E}-\u{16ABE}\u{16AC0}-\u{16AC9}\u{16AD0}-\u{16AED}\u{16AF5}\u{16B00}-\u{16B2F}\u{16B37}-\u{16B45}\u{16B50}-\u{16B59}\u{16B5B}-\u{16B61}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16E40}-\u{16E9A}\u{16F00}-\u{16F4A}\u{16F50}-\u{16F87}\u{16F93}-\u{16F9F}\u{16FE0}\u{16FE1}\u{16FE3}\u{16FF0}\u{16FF1}\u{17000}-\u{187F7}\u{18800}-\u{18CD5}\u{18D00}-\u{18D08}\u{1AFF0}-\u{1AFF3}\u{1AFF5}-\u{1AFFB}\u{1AFFD}\u{1AFFE}\u{1B000}-\u{1B122}\u{1B132}\u{1B150}-\u{1B152}\u{1B155}\u{1B164}-\u{1B167}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1BC9C}\u{1BC9F}\u{1CF50}-\u{1CFC3}\u{1D000}-\u{1D0F5}\u{1D100}-\u{1D126}\u{1D129}-\u{1D166}\u{1D16A}-\u{1D172}\u{1D183}\u{1D184}\u{1D18C}-\u{1D1A9}\u{1D1AE}-\u{1D1E8}\u{1D2C0}-\u{1D2D3}\u{1D2E0}-\u{1D2F3}\u{1D360}-\u{1D378}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D6DA}\u{1D6DC}-\u{1D714}\u{1D716}-\u{1D74E}\u{1D750}-\u{1D788}\u{1D78A}-\u{1D7C2}\u{1D7C4}-\u{1D7CB}\u{1D7CE}-\u{1D9FF}\u{1DA37}-\u{1DA3A}\u{1DA6D}-\u{1DA74}\u{1DA76}-\u{1DA83}\u{1DA85}-\u{1DA8B}\u{1DF00}-\u{1DF1E}\u{1DF25}-\u{1DF2A}\u{1E030}-\u{1E06D}\u{1E100}-\u{1E12C}\u{1E137}-\u{1E13D}\u{1E140}-\u{1E149}\u{1E14E}\u{1E14F}\u{1E290}-\u{1E2AD}\u{1E2C0}-\u{1E2EB}\u{1E2F0}-\u{1E2F9}\u{1E4D0}-\u{1E4EB}\u{1E4F0}-\u{1E4F9}\u{1E7E0}-\u{1E7E6}\u{1E7E8}-\u{1E7EB}\u{1E7ED}\u{1E7EE}\u{1E7F0}-\u{1E7FE}\u{1F100}-\u{1F10A}\u{1F110}-\u{1F12E}\u{1F130}-\u{1F169}\u{1F170}-\u{1F1AC}\u{1F1E6}-\u{1F202}\u{1F210}-\u{1F23B}\u{1F240}-\u{1F248}\u{1F250}\u{1F251}\u{1FBF0}-\u{1FBF9}\u{20000}-\u{2A6DF}\u{2A700}-\u{2B739}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}\u{30000}-\u{3134A}\u{31350}-\u{323AF}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}][\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0898-\u089F\u08CA-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B55\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3C\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0D81\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECE\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732\u1733\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u180F\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ACE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA82C\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10D24}-\u{10D27}\u{10EAB}\u{10EAC}\u{10EFD}-\u{10EFF}\u{10F46}-\u{10F50}\u{10F82}-\u{10F85}\u{11001}\u{11038}-\u{11046}\u{11070}\u{11073}\u{11074}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{110C2}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111C9}-\u{111CC}\u{111CF}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{11241}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133B}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{1145E}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{1182F}-\u{11837}\u{11839}\u{1183A}\u{1193B}\u{1193C}\u{1193E}\u{11943}\u{119D4}-\u{119D7}\u{119DA}\u{119DB}\u{119E0}\u{11A01}-\u{11A06}\u{11A09}\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{11D90}\u{11D91}\u{11D95}\u{11D97}\u{11EF3}\u{11EF4}\u{11F00}\u{11F01}\u{11F36}-\u{11F3A}\u{11F40}\u{11F42}\u{13440}\u{13447}-\u{13455}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F4F}\u{16F8F}-\u{16F92}\u{16FE4}\u{1BC9D}\u{1BC9E}\u{1CF00}-\u{1CF2D}\u{1CF30}-\u{1CF46}\u{1D167}-\u{1D169}\u{1D17B}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E08F}\u{1E130}-\u{1E136}\u{1E2AE}\u{1E2EC}-\u{1E2EF}\u{1E4EC}-\u{1E4EF}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{E0100}-\u{E01EF}]*$/u;
-
-module.exports = {
-  combiningMarks,
-  combiningClassVirama,
-  validZWNJ,
-  bidiDomain,
-  bidiS1LTR,
-  bidiS1RTL,
-  bidiS2,
-  bidiS3,
-  bidiS4EN,
-  bidiS4AN,
-  bidiS5,
-  bidiS6
-};
diff --git a/server/data-import/node_modules/tr46/lib/statusMapping.js b/server/data-import/node_modules/tr46/lib/statusMapping.js
deleted file mode 100644
index cfed6d6a787d48876410f22f2730d90912677999..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/tr46/lib/statusMapping.js
+++ /dev/null
@@ -1,11 +0,0 @@
-"use strict";
-
-module.exports.STATUS_MAPPING = {
-  mapped: 1,
-  valid: 2,
-  disallowed: 3,
-  disallowed_STD3_valid: 4,
-  disallowed_STD3_mapped: 5,
-  deviation: 6,
-  ignored: 7
-};
diff --git a/server/data-import/node_modules/tr46/package.json b/server/data-import/node_modules/tr46/package.json
deleted file mode 100644
index 1b59d72876b76d951785e69f5125dbac4ed24e9c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/tr46/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-  "name": "tr46",
-  "version": "4.1.1",
-  "engines": {
-    "node": ">=14"
-  },
-  "description": "An implementation of the Unicode UTS #46: Unicode IDNA Compatibility Processing",
-  "main": "index.js",
-  "files": [
-    "index.js",
-    "lib/"
-  ],
-  "scripts": {
-    "test": "mocha",
-    "lint": "eslint .",
-    "pretest": "node scripts/getLatestTests.js",
-    "prepublish": "node scripts/generateMappingTable.js && node scripts/generateRegexes.js"
-  },
-  "repository": "https://github.com/jsdom/tr46",
-  "keywords": [
-    "unicode",
-    "tr46",
-    "uts46",
-    "punycode",
-    "url",
-    "whatwg"
-  ],
-  "author": "Sebastian Mayr <npm@smayr.name>",
-  "contributors": [
-    "Timothy Gu <timothygu99@gmail.com>"
-  ],
-  "license": "MIT",
-  "dependencies": {
-    "punycode": "^2.3.0"
-  },
-  "devDependencies": {
-    "@domenic/eslint-config": "^3.0.0",
-    "@unicode/unicode-15.0.0": "^1.3.1",
-    "eslint": "^8.32.0",
-    "minipass-fetch": "^3.0.1",
-    "mocha": "^10.2.0",
-    "regenerate": "^1.4.2"
-  },
-  "unicodeVersion": "15.0.0"
-}
diff --git a/server/data-import/node_modules/webidl-conversions/LICENSE.md b/server/data-import/node_modules/webidl-conversions/LICENSE.md
deleted file mode 100644
index d4a994f50bfa1ecc19489f03822a6e728d3e2a49..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/webidl-conversions/LICENSE.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# The BSD 2-Clause License
-
-Copyright (c) 2014, Domenic Denicola
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/server/data-import/node_modules/webidl-conversions/README.md b/server/data-import/node_modules/webidl-conversions/README.md
deleted file mode 100644
index 16cc393157c6513a4e69f6453b7dcaf14516ffe4..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/webidl-conversions/README.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# Web IDL Type Conversions on JavaScript Values
-
-This package implements, in JavaScript, the algorithms to convert a given JavaScript value according to a given [Web IDL](http://heycam.github.io/webidl/) [type](http://heycam.github.io/webidl/#idl-types).
-
-The goal is that you should be able to write code like
-
-```js
-"use strict";
-const conversions = require("webidl-conversions");
-
-function doStuff(x, y) {
-    x = conversions["boolean"](x);
-    y = conversions["unsigned long"](y);
-    // actual algorithm code here
-}
-```
-
-and your function `doStuff` will behave the same as a Web IDL operation declared as
-
-```webidl
-undefined doStuff(boolean x, unsigned long y);
-```
-
-## API
-
-This package's main module's default export is an object with a variety of methods, each corresponding to a different Web IDL type. Each method, when invoked on a JavaScript value, will give back the new JavaScript value that results after passing through the Web IDL conversion rules. (See below for more details on what that means.) Alternately, the method could throw an error, if the Web IDL algorithm is specified to do so: for example `conversions["float"](NaN)` [will throw a `TypeError`](http://heycam.github.io/webidl/#es-float).
-
-Each method also accepts a second, optional, parameter for miscellaneous options. For conversion methods that throw errors, a string option `{ context }` may be provided to provide more information in the error message. (For example, `conversions["float"](NaN, { context: "Argument 1 of Interface's operation" })` will throw an error with message `"Argument 1 of Interface's operation is not a finite floating-point value."`)
-
-If we are dealing with multiple JavaScript realms (such as those created using Node.js' [vm](https://nodejs.org/api/vm.html) module or the HTML `iframe` element), and exceptions from another realm need to be thrown, one can supply an object option `globals` containing the following properties:
-
-```js
-{
-  globals: {
-    Number,
-    String,
-    TypeError
-  }
-}
-```
-
-Those specific functions will be used when throwing exceptions.
-
-Specific conversions may also accept other options, the details of which can be found below.
-
-## Conversions implemented
-
-Conversions for all of the basic types from the Web IDL specification are implemented:
-
-- [`any`](https://heycam.github.io/webidl/#es-any)
-- [`undefined`](https://heycam.github.io/webidl/#es-undefined)
-- [`boolean`](https://heycam.github.io/webidl/#es-boolean)
-- [Integer types](https://heycam.github.io/webidl/#es-integer-types), which can additionally be provided the boolean options `{ clamp, enforceRange }` as a second parameter
-- [`float`](https://heycam.github.io/webidl/#es-float), [`unrestricted float`](https://heycam.github.io/webidl/#es-unrestricted-float)
-- [`double`](https://heycam.github.io/webidl/#es-double), [`unrestricted double`](https://heycam.github.io/webidl/#es-unrestricted-double)
-- [`DOMString`](https://heycam.github.io/webidl/#es-DOMString), which can additionally be provided the boolean option `{ treatNullAsEmptyString }` as a second parameter
-- [`ByteString`](https://heycam.github.io/webidl/#es-ByteString), [`USVString`](https://heycam.github.io/webidl/#es-USVString)
-- [`object`](https://heycam.github.io/webidl/#es-object)
-- [Buffer source types](https://heycam.github.io/webidl/#es-buffer-source-types), which can additionally be provided with the boolean option `{ allowShared }` as a second parameter
-
-Additionally, for convenience, the following derived type definitions are implemented:
-
-- [`ArrayBufferView`](https://heycam.github.io/webidl/#ArrayBufferView), which can additionally be provided with the boolean option `{ allowShared }` as a second parameter
-- [`BufferSource`](https://heycam.github.io/webidl/#BufferSource)
-- [`DOMTimeStamp`](https://heycam.github.io/webidl/#DOMTimeStamp)
-
-Derived types, such as nullable types, promise types, sequences, records, etc. are not handled by this library. You may wish to investigate the [webidl2js](https://github.com/jsdom/webidl2js) project.
-
-### A note on the `long long` types
-
-The `long long` and `unsigned long long` Web IDL types can hold values that cannot be stored in JavaScript numbers. Conversions are still accurate as we make use of BigInt in the conversion process, but in the case of `unsigned long long` we simply cannot represent some possible output values in JavaScript. For example, converting the JavaScript number `-1` to a Web IDL `unsigned long long` is supposed to produce the Web IDL value `18446744073709551615`. Since we are representing our Web IDL values in JavaScript, we can't represent `18446744073709551615`, so we instead the best we could do is `18446744073709551616` as the output.
-
-To mitigate this, we could return the raw BigInt value from the conversion function, but right now it is not implemented. If your use case requires such precision, [file an issue](https://github.com/jsdom/webidl-conversions/issues/new).
-
-On the other hand, `long long` conversion is always accurate, since the input value can never be more precise than the output value.
-
-### A note on `BufferSource` types
-
-All of the `BufferSource` types will throw when the relevant `ArrayBuffer` has been detached. This technically is not part of the [specified conversion algorithm](https://heycam.github.io/webidl/#es-buffer-source-types), but instead part of the [getting a reference/getting a copy](https://heycam.github.io/webidl/#ref-for-dfn-get-buffer-source-reference%E2%91%A0) algorithms. We've consolidated them here for convenience and ease of implementation, but if there is a need to separate them in the future, please open an issue so we can investigate.
-
-## Background
-
-What's actually going on here, conceptually, is pretty weird. Let's try to explain.
-
-Web IDL, as part of its madness-inducing design, has its own type system. When people write algorithms in web platform specs, they usually operate on Web IDL values, i.e. instances of Web IDL types. For example, if they were specifying the algorithm for our `doStuff` operation above, they would treat `x` as a Web IDL value of [Web IDL type `boolean`](http://heycam.github.io/webidl/#idl-boolean). Crucially, they would _not_ treat `x` as a JavaScript variable whose value is either the JavaScript `true` or `false`. They're instead working in a different type system altogether, with its own rules.
-
-Separately from its type system, Web IDL defines a ["binding"](http://heycam.github.io/webidl/#ecmascript-binding) of the type system into JavaScript. This contains rules like: when you pass a JavaScript value to the JavaScript method that manifests a given Web IDL operation, how does that get converted into a Web IDL value? For example, a JavaScript `true` passed in the position of a Web IDL `boolean` argument becomes a Web IDL `true`. But, a JavaScript `true` passed in the position of a [Web IDL `unsigned long`](http://heycam.github.io/webidl/#idl-unsigned-long) becomes a Web IDL `1`. And so on.
-
-Finally, we have the actual implementation code. This is usually C++, although these days [some smart people are using Rust](https://github.com/servo/servo). The implementation, of course, has its own type system. So when they implement the Web IDL algorithms, they don't actually use Web IDL values, since those aren't "real" outside of specs. Instead, implementations apply the Web IDL binding rules in such a way as to convert incoming JavaScript values into C++ values. For example, if code in the browser called `doStuff(true, true)`, then the implementation code would eventually receive a C++ `bool` containing `true` and a C++ `uint32_t` containing `1`.
-
-The upside of all this is that implementations can abstract all the conversion logic away, letting Web IDL handle it, and focus on implementing the relevant methods in C++ with values of the correct type already provided. That is payoff of Web IDL, in a nutshell.
-
-And getting to that payoff is the goal of _this_ project—but for JavaScript implementations, instead of C++ ones. That is, this library is designed to make it easier for JavaScript developers to write functions that behave like a given Web IDL operation. So conceptually, the conversion pipeline, which in its general form is JavaScript values ↦ Web IDL values ↦ implementation-language values, in this case becomes JavaScript values ↦ Web IDL values ↦ JavaScript values. And that intermediate step is where all the logic is performed: a JavaScript `true` becomes a Web IDL `1` in an unsigned long context, which then becomes a JavaScript `1`.
-
-## Don't use this
-
-Seriously, why would you ever use this? You really shouldn't. Web IDL is … strange, and you shouldn't be emulating its semantics. If you're looking for a generic argument-processing library, you should find one with better rules than those from Web IDL. In general, your JavaScript should not be trying to become more like Web IDL; if anything, we should fix Web IDL to make it more like JavaScript.
-
-The _only_ people who should use this are those trying to create faithful implementations (or polyfills) of web platform interfaces defined in Web IDL. Its main consumer is the [jsdom](https://github.com/jsdom/jsdom) project.
diff --git a/server/data-import/node_modules/webidl-conversions/lib/index.js b/server/data-import/node_modules/webidl-conversions/lib/index.js
deleted file mode 100644
index 0229347c1327779c2cb2fc2ed82558a1fd0a7745..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/webidl-conversions/lib/index.js
+++ /dev/null
@@ -1,450 +0,0 @@
-"use strict";
-
-function makeException(ErrorType, message, options) {
-  if (options.globals) {
-    ErrorType = options.globals[ErrorType.name];
-  }
-  return new ErrorType(`${options.context ? options.context : "Value"} ${message}.`);
-}
-
-function toNumber(value, options) {
-  if (typeof value === "bigint") {
-    throw makeException(TypeError, "is a BigInt which cannot be converted to a number", options);
-  }
-  if (!options.globals) {
-    return Number(value);
-  }
-  return options.globals.Number(value);
-}
-
-// Round x to the nearest integer, choosing the even integer if it lies halfway between two.
-function evenRound(x) {
-  // There are four cases for numbers with fractional part being .5:
-  //
-  // case |     x     | floor(x) | round(x) | expected | x <> 0 | x % 1 | x & 1 |   example
-  //   1  |  2n + 0.5 |  2n      |  2n + 1  |  2n      |   >    |  0.5  |   0   |  0.5 ->  0
-  //   2  |  2n + 1.5 |  2n + 1  |  2n + 2  |  2n + 2  |   >    |  0.5  |   1   |  1.5 ->  2
-  //   3  | -2n - 0.5 | -2n - 1  | -2n      | -2n      |   <    | -0.5  |   0   | -0.5 ->  0
-  //   4  | -2n - 1.5 | -2n - 2  | -2n - 1  | -2n - 2  |   <    | -0.5  |   1   | -1.5 -> -2
-  // (where n is a non-negative integer)
-  //
-  // Branch here for cases 1 and 4
-  if ((x > 0 && (x % 1) === +0.5 && (x & 1) === 0) ||
-        (x < 0 && (x % 1) === -0.5 && (x & 1) === 1)) {
-    return censorNegativeZero(Math.floor(x));
-  }
-
-  return censorNegativeZero(Math.round(x));
-}
-
-function integerPart(n) {
-  return censorNegativeZero(Math.trunc(n));
-}
-
-function sign(x) {
-  return x < 0 ? -1 : 1;
-}
-
-function modulo(x, y) {
-  // https://tc39.github.io/ecma262/#eqn-modulo
-  // Note that http://stackoverflow.com/a/4467559/3191 does NOT work for large modulos
-  const signMightNotMatch = x % y;
-  if (sign(y) !== sign(signMightNotMatch)) {
-    return signMightNotMatch + y;
-  }
-  return signMightNotMatch;
-}
-
-function censorNegativeZero(x) {
-  return x === 0 ? 0 : x;
-}
-
-function createIntegerConversion(bitLength, { unsigned }) {
-  let lowerBound, upperBound;
-  if (unsigned) {
-    lowerBound = 0;
-    upperBound = 2 ** bitLength - 1;
-  } else {
-    lowerBound = -(2 ** (bitLength - 1));
-    upperBound = 2 ** (bitLength - 1) - 1;
-  }
-
-  const twoToTheBitLength = 2 ** bitLength;
-  const twoToOneLessThanTheBitLength = 2 ** (bitLength - 1);
-
-  return (value, options = {}) => {
-    let x = toNumber(value, options);
-    x = censorNegativeZero(x);
-
-    if (options.enforceRange) {
-      if (!Number.isFinite(x)) {
-        throw makeException(TypeError, "is not a finite number", options);
-      }
-
-      x = integerPart(x);
-
-      if (x < lowerBound || x > upperBound) {
-        throw makeException(
-          TypeError,
-          `is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`,
-          options
-        );
-      }
-
-      return x;
-    }
-
-    if (!Number.isNaN(x) && options.clamp) {
-      x = Math.min(Math.max(x, lowerBound), upperBound);
-      x = evenRound(x);
-      return x;
-    }
-
-    if (!Number.isFinite(x) || x === 0) {
-      return 0;
-    }
-    x = integerPart(x);
-
-    // Math.pow(2, 64) is not accurately representable in JavaScript, so try to avoid these per-spec operations if
-    // possible. Hopefully it's an optimization for the non-64-bitLength cases too.
-    if (x >= lowerBound && x <= upperBound) {
-      return x;
-    }
-
-    // These will not work great for bitLength of 64, but oh well. See the README for more details.
-    x = modulo(x, twoToTheBitLength);
-    if (!unsigned && x >= twoToOneLessThanTheBitLength) {
-      return x - twoToTheBitLength;
-    }
-    return x;
-  };
-}
-
-function createLongLongConversion(bitLength, { unsigned }) {
-  const upperBound = Number.MAX_SAFE_INTEGER;
-  const lowerBound = unsigned ? 0 : Number.MIN_SAFE_INTEGER;
-  const asBigIntN = unsigned ? BigInt.asUintN : BigInt.asIntN;
-
-  return (value, options = {}) => {
-    let x = toNumber(value, options);
-    x = censorNegativeZero(x);
-
-    if (options.enforceRange) {
-      if (!Number.isFinite(x)) {
-        throw makeException(TypeError, "is not a finite number", options);
-      }
-
-      x = integerPart(x);
-
-      if (x < lowerBound || x > upperBound) {
-        throw makeException(
-          TypeError,
-          `is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`,
-          options
-        );
-      }
-
-      return x;
-    }
-
-    if (!Number.isNaN(x) && options.clamp) {
-      x = Math.min(Math.max(x, lowerBound), upperBound);
-      x = evenRound(x);
-      return x;
-    }
-
-    if (!Number.isFinite(x) || x === 0) {
-      return 0;
-    }
-
-    let xBigInt = BigInt(integerPart(x));
-    xBigInt = asBigIntN(bitLength, xBigInt);
-    return Number(xBigInt);
-  };
-}
-
-exports.any = value => {
-  return value;
-};
-
-exports.undefined = () => {
-  return undefined;
-};
-
-exports.boolean = value => {
-  return Boolean(value);
-};
-
-exports.byte = createIntegerConversion(8, { unsigned: false });
-exports.octet = createIntegerConversion(8, { unsigned: true });
-
-exports.short = createIntegerConversion(16, { unsigned: false });
-exports["unsigned short"] = createIntegerConversion(16, { unsigned: true });
-
-exports.long = createIntegerConversion(32, { unsigned: false });
-exports["unsigned long"] = createIntegerConversion(32, { unsigned: true });
-
-exports["long long"] = createLongLongConversion(64, { unsigned: false });
-exports["unsigned long long"] = createLongLongConversion(64, { unsigned: true });
-
-exports.double = (value, options = {}) => {
-  const x = toNumber(value, options);
-
-  if (!Number.isFinite(x)) {
-    throw makeException(TypeError, "is not a finite floating-point value", options);
-  }
-
-  return x;
-};
-
-exports["unrestricted double"] = (value, options = {}) => {
-  const x = toNumber(value, options);
-
-  return x;
-};
-
-exports.float = (value, options = {}) => {
-  const x = toNumber(value, options);
-
-  if (!Number.isFinite(x)) {
-    throw makeException(TypeError, "is not a finite floating-point value", options);
-  }
-
-  if (Object.is(x, -0)) {
-    return x;
-  }
-
-  const y = Math.fround(x);
-
-  if (!Number.isFinite(y)) {
-    throw makeException(TypeError, "is outside the range of a single-precision floating-point value", options);
-  }
-
-  return y;
-};
-
-exports["unrestricted float"] = (value, options = {}) => {
-  const x = toNumber(value, options);
-
-  if (isNaN(x)) {
-    return x;
-  }
-
-  if (Object.is(x, -0)) {
-    return x;
-  }
-
-  return Math.fround(x);
-};
-
-exports.DOMString = (value, options = {}) => {
-  if (options.treatNullAsEmptyString && value === null) {
-    return "";
-  }
-
-  if (typeof value === "symbol") {
-    throw makeException(TypeError, "is a symbol, which cannot be converted to a string", options);
-  }
-
-  const StringCtor = options.globals ? options.globals.String : String;
-  return StringCtor(value);
-};
-
-exports.ByteString = (value, options = {}) => {
-  const x = exports.DOMString(value, options);
-  let c;
-  for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {
-    if (c > 255) {
-      throw makeException(TypeError, "is not a valid ByteString", options);
-    }
-  }
-
-  return x;
-};
-
-exports.USVString = (value, options = {}) => {
-  const S = exports.DOMString(value, options);
-  const n = S.length;
-  const U = [];
-  for (let i = 0; i < n; ++i) {
-    const c = S.charCodeAt(i);
-    if (c < 0xD800 || c > 0xDFFF) {
-      U.push(String.fromCodePoint(c));
-    } else if (0xDC00 <= c && c <= 0xDFFF) {
-      U.push(String.fromCodePoint(0xFFFD));
-    } else if (i === n - 1) {
-      U.push(String.fromCodePoint(0xFFFD));
-    } else {
-      const d = S.charCodeAt(i + 1);
-      if (0xDC00 <= d && d <= 0xDFFF) {
-        const a = c & 0x3FF;
-        const b = d & 0x3FF;
-        U.push(String.fromCodePoint((2 << 15) + ((2 << 9) * a) + b));
-        ++i;
-      } else {
-        U.push(String.fromCodePoint(0xFFFD));
-      }
-    }
-  }
-
-  return U.join("");
-};
-
-exports.object = (value, options = {}) => {
-  if (value === null || (typeof value !== "object" && typeof value !== "function")) {
-    throw makeException(TypeError, "is not an object", options);
-  }
-
-  return value;
-};
-
-const abByteLengthGetter =
-    Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength").get;
-const sabByteLengthGetter =
-    typeof SharedArrayBuffer === "function" ?
-      Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, "byteLength").get :
-      null;
-
-function isNonSharedArrayBuffer(value) {
-  try {
-    // This will throw on SharedArrayBuffers, but not detached ArrayBuffers.
-    // (The spec says it should throw, but the spec conflicts with implementations: https://github.com/tc39/ecma262/issues/678)
-    abByteLengthGetter.call(value);
-
-    return true;
-  } catch {
-    return false;
-  }
-}
-
-function isSharedArrayBuffer(value) {
-  try {
-    sabByteLengthGetter.call(value);
-    return true;
-  } catch {
-    return false;
-  }
-}
-
-function isArrayBufferDetached(value) {
-  try {
-    // eslint-disable-next-line no-new
-    new Uint8Array(value);
-    return false;
-  } catch {
-    return true;
-  }
-}
-
-exports.ArrayBuffer = (value, options = {}) => {
-  if (!isNonSharedArrayBuffer(value)) {
-    if (options.allowShared && !isSharedArrayBuffer(value)) {
-      throw makeException(TypeError, "is not an ArrayBuffer or SharedArrayBuffer", options);
-    }
-    throw makeException(TypeError, "is not an ArrayBuffer", options);
-  }
-  if (isArrayBufferDetached(value)) {
-    throw makeException(TypeError, "is a detached ArrayBuffer", options);
-  }
-
-  return value;
-};
-
-const dvByteLengthGetter =
-    Object.getOwnPropertyDescriptor(DataView.prototype, "byteLength").get;
-exports.DataView = (value, options = {}) => {
-  try {
-    dvByteLengthGetter.call(value);
-  } catch (e) {
-    throw makeException(TypeError, "is not a DataView", options);
-  }
-
-  if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {
-    throw makeException(TypeError, "is backed by a SharedArrayBuffer, which is not allowed", options);
-  }
-  if (isArrayBufferDetached(value.buffer)) {
-    throw makeException(TypeError, "is backed by a detached ArrayBuffer", options);
-  }
-
-  return value;
-};
-
-// Returns the unforgeable `TypedArray` constructor name or `undefined`,
-// if the `this` value isn't a valid `TypedArray` object.
-//
-// https://tc39.es/ecma262/#sec-get-%typedarray%.prototype-@@tostringtag
-const typedArrayNameGetter = Object.getOwnPropertyDescriptor(
-  Object.getPrototypeOf(Uint8Array).prototype,
-  Symbol.toStringTag
-).get;
-[
-  Int8Array,
-  Int16Array,
-  Int32Array,
-  Uint8Array,
-  Uint16Array,
-  Uint32Array,
-  Uint8ClampedArray,
-  Float32Array,
-  Float64Array
-].forEach(func => {
-  const { name } = func;
-  const article = /^[AEIOU]/u.test(name) ? "an" : "a";
-  exports[name] = (value, options = {}) => {
-    if (!ArrayBuffer.isView(value) || typedArrayNameGetter.call(value) !== name) {
-      throw makeException(TypeError, `is not ${article} ${name} object`, options);
-    }
-    if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {
-      throw makeException(TypeError, "is a view on a SharedArrayBuffer, which is not allowed", options);
-    }
-    if (isArrayBufferDetached(value.buffer)) {
-      throw makeException(TypeError, "is a view on a detached ArrayBuffer", options);
-    }
-
-    return value;
-  };
-});
-
-// Common definitions
-
-exports.ArrayBufferView = (value, options = {}) => {
-  if (!ArrayBuffer.isView(value)) {
-    throw makeException(TypeError, "is not a view on an ArrayBuffer or SharedArrayBuffer", options);
-  }
-
-  if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {
-    throw makeException(TypeError, "is a view on a SharedArrayBuffer, which is not allowed", options);
-  }
-
-  if (isArrayBufferDetached(value.buffer)) {
-    throw makeException(TypeError, "is a view on a detached ArrayBuffer", options);
-  }
-  return value;
-};
-
-exports.BufferSource = (value, options = {}) => {
-  if (ArrayBuffer.isView(value)) {
-    if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {
-      throw makeException(TypeError, "is a view on a SharedArrayBuffer, which is not allowed", options);
-    }
-
-    if (isArrayBufferDetached(value.buffer)) {
-      throw makeException(TypeError, "is a view on a detached ArrayBuffer", options);
-    }
-    return value;
-  }
-
-  if (!options.allowShared && !isNonSharedArrayBuffer(value)) {
-    throw makeException(TypeError, "is not an ArrayBuffer or a view on one", options);
-  }
-  if (options.allowShared && !isSharedArrayBuffer(value) && !isNonSharedArrayBuffer(value)) {
-    throw makeException(TypeError, "is not an ArrayBuffer, SharedArrayBuffer, or a view on one", options);
-  }
-  if (isArrayBufferDetached(value)) {
-    throw makeException(TypeError, "is a detached ArrayBuffer", options);
-  }
-
-  return value;
-};
-
-exports.DOMTimeStamp = exports["unsigned long long"];
diff --git a/server/data-import/node_modules/webidl-conversions/package.json b/server/data-import/node_modules/webidl-conversions/package.json
deleted file mode 100644
index 20747bb420aa2f97f0068421866b6a5be72b692c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/webidl-conversions/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "name": "webidl-conversions",
-  "version": "7.0.0",
-  "description": "Implements the WebIDL algorithms for converting to and from JavaScript values",
-  "main": "lib/index.js",
-  "scripts": {
-    "lint": "eslint .",
-    "test": "mocha test/*.js",
-    "test-no-sab": "mocha --parallel --jobs 2 --require test/helpers/delete-sab.js test/*.js",
-    "coverage": "nyc mocha test/*.js"
-  },
-  "_scripts_comments": {
-    "test-no-sab": "Node.js internals are broken by deleting SharedArrayBuffer if you run tests on the main thread. Using Mocha's parallel mode avoids this."
-  },
-  "repository": "jsdom/webidl-conversions",
-  "keywords": [
-    "webidl",
-    "web",
-    "types"
-  ],
-  "files": [
-    "lib/"
-  ],
-  "author": "Domenic Denicola <d@domenic.me> (https://domenic.me/)",
-  "license": "BSD-2-Clause",
-  "devDependencies": {
-    "@domenic/eslint-config": "^1.3.0",
-    "eslint": "^7.32.0",
-    "mocha": "^9.1.1",
-    "nyc": "^15.1.0"
-  },
-  "engines": {
-    "node": ">=12"
-  }
-}
diff --git a/server/data-import/node_modules/whatwg-url/LICENSE.txt b/server/data-import/node_modules/whatwg-url/LICENSE.txt
deleted file mode 100644
index 8e8c25c3a5d49b03f37fe4b66b0d84fde2b055dc..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/LICENSE.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sebastian Mayr
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/server/data-import/node_modules/whatwg-url/README.md b/server/data-import/node_modules/whatwg-url/README.md
deleted file mode 100644
index 07a5fa53ca6e7b3d7e1dfd35297e9eb665b12cf9..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/README.md
+++ /dev/null
@@ -1,106 +0,0 @@
-# whatwg-url
-
-whatwg-url is a full implementation of the WHATWG [URL Standard](https://url.spec.whatwg.org/). It can be used standalone, but it also exposes a lot of the internal algorithms that are useful for integrating a URL parser into a project like [jsdom](https://github.com/jsdom/jsdom).
-
-## Specification conformance
-
-whatwg-url is currently up to date with the URL spec up to commit [eee49fd](https://github.com/whatwg/url/commit/eee49fdf4f99d59f717cbeb0bce29fda930196d4).
-
-For `file:` URLs, whose [origin is left unspecified](https://url.spec.whatwg.org/#concept-url-origin), whatwg-url chooses to use a new opaque origin (which serializes to `"null"`).
-
-whatwg-url does not yet implement any encoding handling beyond UTF-8. That is, the _encoding override_ parameter does not exist in our API.
-
-## API
-
-### The `URL` and `URLSearchParams` classes
-
-The main API is provided by the [`URL`](https://url.spec.whatwg.org/#url-class) and [`URLSearchParams`](https://url.spec.whatwg.org/#interface-urlsearchparams) exports, which follows the spec's behavior in all ways (including e.g. `USVString` conversion). Most consumers of this library will want to use these.
-
-### Low-level URL Standard API
-
-The following methods are exported for use by places like jsdom that need to implement things like [`HTMLHyperlinkElementUtils`](https://html.spec.whatwg.org/#htmlhyperlinkelementutils). They mostly operate on or return an "internal URL" or ["URL record"](https://url.spec.whatwg.org/#concept-url) type.
-
-- [URL parser](https://url.spec.whatwg.org/#concept-url-parser): `parseURL(input, { baseURL })`
-- [Basic URL parser](https://url.spec.whatwg.org/#concept-basic-url-parser): `basicURLParse(input, { baseURL, url, stateOverride })`
-- [URL serializer](https://url.spec.whatwg.org/#concept-url-serializer): `serializeURL(urlRecord, excludeFragment)`
-- [Host serializer](https://url.spec.whatwg.org/#concept-host-serializer): `serializeHost(hostFromURLRecord)`
-- [URL path serializer](https://url.spec.whatwg.org/#url-path-serializer): `serializePath(urlRecord)`
-- [Serialize an integer](https://url.spec.whatwg.org/#serialize-an-integer): `serializeInteger(number)`
-- [Origin](https://url.spec.whatwg.org/#concept-url-origin) [serializer](https://html.spec.whatwg.org/multipage/origin.html#ascii-serialisation-of-an-origin): `serializeURLOrigin(urlRecord)`
-- [Set the username](https://url.spec.whatwg.org/#set-the-username): `setTheUsername(urlRecord, usernameString)`
-- [Set the password](https://url.spec.whatwg.org/#set-the-password): `setThePassword(urlRecord, passwordString)`
-- [Has an opaque path](https://url.spec.whatwg.org/#url-opaque-path): `hasAnOpaquePath(urlRecord)`
-- [Cannot have a username/password/port](https://url.spec.whatwg.org/#cannot-have-a-username-password-port): `cannotHaveAUsernamePasswordPort(urlRecord)`
-- [Percent decode bytes](https://url.spec.whatwg.org/#percent-decode): `percentDecodeBytes(uint8Array)`
-- [Percent decode a string](https://url.spec.whatwg.org/#percent-decode-string): `percentDecodeString(string)`
-
-The `stateOverride` parameter is one of the following strings:
-
-- [`"scheme start"`](https://url.spec.whatwg.org/#scheme-start-state)
-- [`"scheme"`](https://url.spec.whatwg.org/#scheme-state)
-- [`"no scheme"`](https://url.spec.whatwg.org/#no-scheme-state)
-- [`"special relative or authority"`](https://url.spec.whatwg.org/#special-relative-or-authority-state)
-- [`"path or authority"`](https://url.spec.whatwg.org/#path-or-authority-state)
-- [`"relative"`](https://url.spec.whatwg.org/#relative-state)
-- [`"relative slash"`](https://url.spec.whatwg.org/#relative-slash-state)
-- [`"special authority slashes"`](https://url.spec.whatwg.org/#special-authority-slashes-state)
-- [`"special authority ignore slashes"`](https://url.spec.whatwg.org/#special-authority-ignore-slashes-state)
-- [`"authority"`](https://url.spec.whatwg.org/#authority-state)
-- [`"host"`](https://url.spec.whatwg.org/#host-state)
-- [`"hostname"`](https://url.spec.whatwg.org/#hostname-state)
-- [`"port"`](https://url.spec.whatwg.org/#port-state)
-- [`"file"`](https://url.spec.whatwg.org/#file-state)
-- [`"file slash"`](https://url.spec.whatwg.org/#file-slash-state)
-- [`"file host"`](https://url.spec.whatwg.org/#file-host-state)
-- [`"path start"`](https://url.spec.whatwg.org/#path-start-state)
-- [`"path"`](https://url.spec.whatwg.org/#path-state)
-- [`"opaque path"`](https://url.spec.whatwg.org/#cannot-be-a-base-url-path-state)
-- [`"query"`](https://url.spec.whatwg.org/#query-state)
-- [`"fragment"`](https://url.spec.whatwg.org/#fragment-state)
-
-The URL record type has the following API:
-
-- [`scheme`](https://url.spec.whatwg.org/#concept-url-scheme)
-- [`username`](https://url.spec.whatwg.org/#concept-url-username)
-- [`password`](https://url.spec.whatwg.org/#concept-url-password)
-- [`host`](https://url.spec.whatwg.org/#concept-url-host)
-- [`port`](https://url.spec.whatwg.org/#concept-url-port)
-- [`path`](https://url.spec.whatwg.org/#concept-url-path) (as an array of strings, or a string)
-- [`query`](https://url.spec.whatwg.org/#concept-url-query)
-- [`fragment`](https://url.spec.whatwg.org/#concept-url-fragment)
-
-These properties should be treated with care, as in general changing them will cause the URL record to be in an inconsistent state until the appropriate invocation of `basicURLParse` is used to fix it up. You can see examples of this in the URL Standard, where there are many step sequences like "4. Set context object’s url’s fragment to the empty string. 5. Basic URL parse _input_ with context object’s url as _url_ and fragment state as _state override_." In between those two steps, a URL record is in an unusable state.
-
-The return value of "failure" in the spec is represented by `null`. That is, functions like `parseURL` and `basicURLParse` can return _either_ a URL record _or_ `null`.
-
-### `whatwg-url/webidl2js-wrapper` module
-
-This module exports the `URL` and `URLSearchParams` [interface wrappers API](https://github.com/jsdom/webidl2js#for-interfaces) generated by [webidl2js](https://github.com/jsdom/webidl2js).
-
-## Development instructions
-
-First, install [Node.js](https://nodejs.org/). Then, fetch the dependencies of whatwg-url, by running from this directory:
-
-    npm install
-
-To run tests:
-
-    npm test
-
-To generate a coverage report:
-
-    npm run coverage
-
-To build and run the live viewer:
-
-    npm run prepare
-    npm run build-live-viewer
-
-Serve the contents of the `live-viewer` directory using any web server.
-
-## Supporting whatwg-url
-
-The jsdom project (including whatwg-url) is a community-driven project maintained by a team of [volunteers](https://github.com/orgs/jsdom/people). You could support us by:
-
-- [Getting professional support for whatwg-url](https://tidelift.com/subscription/pkg/npm-whatwg-url?utm_source=npm-whatwg-url&utm_medium=referral&utm_campaign=readme) as part of a Tidelift subscription. Tidelift helps making open source sustainable for us while giving teams assurances for maintenance, licensing, and security.
-- Contributing directly to the project.
diff --git a/server/data-import/node_modules/whatwg-url/index.js b/server/data-import/node_modules/whatwg-url/index.js
deleted file mode 100644
index c470e48e4eb027ed07abf42a263e042e14a3f6bd..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-"use strict";
-
-const { URL, URLSearchParams } = require("./webidl2js-wrapper");
-const urlStateMachine = require("./lib/url-state-machine");
-const percentEncoding = require("./lib/percent-encoding");
-
-const sharedGlobalObject = { Array, Object, Promise, String, TypeError };
-URL.install(sharedGlobalObject, ["Window"]);
-URLSearchParams.install(sharedGlobalObject, ["Window"]);
-
-exports.URL = sharedGlobalObject.URL;
-exports.URLSearchParams = sharedGlobalObject.URLSearchParams;
-
-exports.parseURL = urlStateMachine.parseURL;
-exports.basicURLParse = urlStateMachine.basicURLParse;
-exports.serializeURL = urlStateMachine.serializeURL;
-exports.serializePath = urlStateMachine.serializePath;
-exports.serializeHost = urlStateMachine.serializeHost;
-exports.serializeInteger = urlStateMachine.serializeInteger;
-exports.serializeURLOrigin = urlStateMachine.serializeURLOrigin;
-exports.setTheUsername = urlStateMachine.setTheUsername;
-exports.setThePassword = urlStateMachine.setThePassword;
-exports.cannotHaveAUsernamePasswordPort = urlStateMachine.cannotHaveAUsernamePasswordPort;
-exports.hasAnOpaquePath = urlStateMachine.hasAnOpaquePath;
-
-exports.percentDecodeString = percentEncoding.percentDecodeString;
-exports.percentDecodeBytes = percentEncoding.percentDecodeBytes;
diff --git a/server/data-import/node_modules/whatwg-url/lib/Function.js b/server/data-import/node_modules/whatwg-url/lib/Function.js
deleted file mode 100644
index ea8712fd709baa510d595bd6d8b2f61d90bfd49f..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/lib/Function.js
+++ /dev/null
@@ -1,42 +0,0 @@
-"use strict";
-
-const conversions = require("webidl-conversions");
-const utils = require("./utils.js");
-
-exports.convert = (globalObject, value, { context = "The provided value" } = {}) => {
-  if (typeof value !== "function") {
-    throw new globalObject.TypeError(context + " is not a function");
-  }
-
-  function invokeTheCallbackFunction(...args) {
-    const thisArg = utils.tryWrapperForImpl(this);
-    let callResult;
-
-    for (let i = 0; i < args.length; i++) {
-      args[i] = utils.tryWrapperForImpl(args[i]);
-    }
-
-    callResult = Reflect.apply(value, thisArg, args);
-
-    callResult = conversions["any"](callResult, { context: context, globals: globalObject });
-
-    return callResult;
-  }
-
-  invokeTheCallbackFunction.construct = (...args) => {
-    for (let i = 0; i < args.length; i++) {
-      args[i] = utils.tryWrapperForImpl(args[i]);
-    }
-
-    let callResult = Reflect.construct(value, args);
-
-    callResult = conversions["any"](callResult, { context: context, globals: globalObject });
-
-    return callResult;
-  };
-
-  invokeTheCallbackFunction[utils.wrapperSymbol] = value;
-  invokeTheCallbackFunction.objectReference = value;
-
-  return invokeTheCallbackFunction;
-};
diff --git a/server/data-import/node_modules/whatwg-url/lib/URL-impl.js b/server/data-import/node_modules/whatwg-url/lib/URL-impl.js
deleted file mode 100644
index eb66cae5691514153c9cb3e7c85473cc2b8bffad..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/lib/URL-impl.js
+++ /dev/null
@@ -1,246 +0,0 @@
-"use strict";
-const usm = require("./url-state-machine");
-const urlencoded = require("./urlencoded");
-const URLSearchParams = require("./URLSearchParams");
-
-exports.implementation = class URLImpl {
-  // Unlike the spec, we duplicate some code between the constructor and canParse, because we want to give useful error
-  // messages in the constructor that distinguish between the different causes of failure.
-  constructor(globalObject, constructorArgs) {
-    const url = constructorArgs[0];
-    const base = constructorArgs[1];
-
-    let parsedBase = null;
-    if (base !== undefined) {
-      parsedBase = usm.basicURLParse(base);
-      if (parsedBase === null) {
-        throw new TypeError(`Invalid base URL: ${base}`);
-      }
-    }
-
-    const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });
-    if (parsedURL === null) {
-      throw new TypeError(`Invalid URL: ${url}`);
-    }
-
-    const query = parsedURL.query !== null ? parsedURL.query : "";
-
-    this._url = parsedURL;
-
-    // We cannot invoke the "new URLSearchParams object" algorithm without going through the constructor, which strips
-    // question mark by default. Therefore the doNotStripQMark hack is used.
-    this._query = URLSearchParams.createImpl(globalObject, [query], { doNotStripQMark: true });
-    this._query._url = this;
-  }
-
-  static canParse(url, base) {
-    let parsedBase = null;
-    if (base !== undefined) {
-      parsedBase = usm.basicURLParse(base);
-      if (parsedBase === null) {
-        return false;
-      }
-    }
-
-    const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });
-    if (parsedURL === null) {
-      return false;
-    }
-
-    return true;
-  }
-
-  get href() {
-    return usm.serializeURL(this._url);
-  }
-
-  set href(v) {
-    const parsedURL = usm.basicURLParse(v);
-    if (parsedURL === null) {
-      throw new TypeError(`Invalid URL: ${v}`);
-    }
-
-    this._url = parsedURL;
-
-    this._query._list.splice(0);
-    const { query } = parsedURL;
-    if (query !== null) {
-      this._query._list = urlencoded.parseUrlencodedString(query);
-    }
-  }
-
-  get origin() {
-    return usm.serializeURLOrigin(this._url);
-  }
-
-  get protocol() {
-    return `${this._url.scheme}:`;
-  }
-
-  set protocol(v) {
-    usm.basicURLParse(`${v}:`, { url: this._url, stateOverride: "scheme start" });
-  }
-
-  get username() {
-    return this._url.username;
-  }
-
-  set username(v) {
-    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
-      return;
-    }
-
-    usm.setTheUsername(this._url, v);
-  }
-
-  get password() {
-    return this._url.password;
-  }
-
-  set password(v) {
-    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
-      return;
-    }
-
-    usm.setThePassword(this._url, v);
-  }
-
-  get host() {
-    const url = this._url;
-
-    if (url.host === null) {
-      return "";
-    }
-
-    if (url.port === null) {
-      return usm.serializeHost(url.host);
-    }
-
-    return `${usm.serializeHost(url.host)}:${usm.serializeInteger(url.port)}`;
-  }
-
-  set host(v) {
-    if (usm.hasAnOpaquePath(this._url)) {
-      return;
-    }
-
-    usm.basicURLParse(v, { url: this._url, stateOverride: "host" });
-  }
-
-  get hostname() {
-    if (this._url.host === null) {
-      return "";
-    }
-
-    return usm.serializeHost(this._url.host);
-  }
-
-  set hostname(v) {
-    if (usm.hasAnOpaquePath(this._url)) {
-      return;
-    }
-
-    usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" });
-  }
-
-  get port() {
-    if (this._url.port === null) {
-      return "";
-    }
-
-    return usm.serializeInteger(this._url.port);
-  }
-
-  set port(v) {
-    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
-      return;
-    }
-
-    if (v === "") {
-      this._url.port = null;
-    } else {
-      usm.basicURLParse(v, { url: this._url, stateOverride: "port" });
-    }
-  }
-
-  get pathname() {
-    return usm.serializePath(this._url);
-  }
-
-  set pathname(v) {
-    if (usm.hasAnOpaquePath(this._url)) {
-      return;
-    }
-
-    this._url.path = [];
-    usm.basicURLParse(v, { url: this._url, stateOverride: "path start" });
-  }
-
-  get search() {
-    if (this._url.query === null || this._url.query === "") {
-      return "";
-    }
-
-    return `?${this._url.query}`;
-  }
-
-  set search(v) {
-    const url = this._url;
-
-    if (v === "") {
-      url.query = null;
-      this._query._list = [];
-      this._potentiallyStripTrailingSpacesFromAnOpaquePath();
-      return;
-    }
-
-    const input = v[0] === "?" ? v.substring(1) : v;
-    url.query = "";
-    usm.basicURLParse(input, { url, stateOverride: "query" });
-    this._query._list = urlencoded.parseUrlencodedString(input);
-  }
-
-  get searchParams() {
-    return this._query;
-  }
-
-  get hash() {
-    if (this._url.fragment === null || this._url.fragment === "") {
-      return "";
-    }
-
-    return `#${this._url.fragment}`;
-  }
-
-  set hash(v) {
-    if (v === "") {
-      this._url.fragment = null;
-      this._potentiallyStripTrailingSpacesFromAnOpaquePath();
-      return;
-    }
-
-    const input = v[0] === "#" ? v.substring(1) : v;
-    this._url.fragment = "";
-    usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" });
-  }
-
-  toJSON() {
-    return this.href;
-  }
-
-  _potentiallyStripTrailingSpacesFromAnOpaquePath() {
-    if (!usm.hasAnOpaquePath(this._url)) {
-      return;
-    }
-
-    if (this._url.fragment !== null) {
-      return;
-    }
-
-    if (this._url.query !== null) {
-      return;
-    }
-
-    this._url.path = this._url.path.replace(/\u0020+$/u, "");
-  }
-};
diff --git a/server/data-import/node_modules/whatwg-url/lib/URL.js b/server/data-import/node_modules/whatwg-url/lib/URL.js
deleted file mode 100644
index ea5e6166b3a99c5c67d25ccfbf2c1bf4a68cffb2..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/lib/URL.js
+++ /dev/null
@@ -1,471 +0,0 @@
-"use strict";
-
-const conversions = require("webidl-conversions");
-const utils = require("./utils.js");
-
-const implSymbol = utils.implSymbol;
-const ctorRegistrySymbol = utils.ctorRegistrySymbol;
-
-const interfaceName = "URL";
-
-exports.is = value => {
-  return utils.isObject(value) && utils.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;
-};
-exports.isImpl = value => {
-  return utils.isObject(value) && value instanceof Impl.implementation;
-};
-exports.convert = (globalObject, value, { context = "The provided value" } = {}) => {
-  if (exports.is(value)) {
-    return utils.implForWrapper(value);
-  }
-  throw new globalObject.TypeError(`${context} is not of type 'URL'.`);
-};
-
-function makeWrapper(globalObject, newTarget) {
-  let proto;
-  if (newTarget !== undefined) {
-    proto = newTarget.prototype;
-  }
-
-  if (!utils.isObject(proto)) {
-    proto = globalObject[ctorRegistrySymbol]["URL"].prototype;
-  }
-
-  return Object.create(proto);
-}
-
-exports.create = (globalObject, constructorArgs, privateData) => {
-  const wrapper = makeWrapper(globalObject);
-  return exports.setup(wrapper, globalObject, constructorArgs, privateData);
-};
-
-exports.createImpl = (globalObject, constructorArgs, privateData) => {
-  const wrapper = exports.create(globalObject, constructorArgs, privateData);
-  return utils.implForWrapper(wrapper);
-};
-
-exports._internalSetup = (wrapper, globalObject) => {};
-
-exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {
-  privateData.wrapper = wrapper;
-
-  exports._internalSetup(wrapper, globalObject);
-  Object.defineProperty(wrapper, implSymbol, {
-    value: new Impl.implementation(globalObject, constructorArgs, privateData),
-    configurable: true
-  });
-
-  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;
-  if (Impl.init) {
-    Impl.init(wrapper[implSymbol]);
-  }
-  return wrapper;
-};
-
-exports.new = (globalObject, newTarget) => {
-  const wrapper = makeWrapper(globalObject, newTarget);
-
-  exports._internalSetup(wrapper, globalObject);
-  Object.defineProperty(wrapper, implSymbol, {
-    value: Object.create(Impl.implementation.prototype),
-    configurable: true
-  });
-
-  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;
-  if (Impl.init) {
-    Impl.init(wrapper[implSymbol]);
-  }
-  return wrapper[implSymbol];
-};
-
-const exposed = new Set(["Window", "Worker"]);
-
-exports.install = (globalObject, globalNames) => {
-  if (!globalNames.some(globalName => exposed.has(globalName))) {
-    return;
-  }
-
-  const ctorRegistry = utils.initCtorRegistry(globalObject);
-  class URL {
-    constructor(url) {
-      if (arguments.length < 1) {
-        throw new globalObject.TypeError(
-          `Failed to construct 'URL': 1 argument required, but only ${arguments.length} present.`
-        );
-      }
-      const args = [];
-      {
-        let curArg = arguments[0];
-        curArg = conversions["USVString"](curArg, {
-          context: "Failed to construct 'URL': parameter 1",
-          globals: globalObject
-        });
-        args.push(curArg);
-      }
-      {
-        let curArg = arguments[1];
-        if (curArg !== undefined) {
-          curArg = conversions["USVString"](curArg, {
-            context: "Failed to construct 'URL': parameter 2",
-            globals: globalObject
-          });
-        }
-        args.push(curArg);
-      }
-      return exports.setup(Object.create(new.target.prototype), globalObject, args);
-    }
-
-    toJSON() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'toJSON' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol].toJSON();
-    }
-
-    get href() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get href' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol]["href"];
-    }
-
-    set href(V) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'set href' called on an object that is not a valid instance of URL.");
-      }
-
-      V = conversions["USVString"](V, {
-        context: "Failed to set the 'href' property on 'URL': The provided value",
-        globals: globalObject
-      });
-
-      esValue[implSymbol]["href"] = V;
-    }
-
-    toString() {
-      const esValue = this;
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'toString' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol]["href"];
-    }
-
-    get origin() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get origin' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol]["origin"];
-    }
-
-    get protocol() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get protocol' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol]["protocol"];
-    }
-
-    set protocol(V) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'set protocol' called on an object that is not a valid instance of URL.");
-      }
-
-      V = conversions["USVString"](V, {
-        context: "Failed to set the 'protocol' property on 'URL': The provided value",
-        globals: globalObject
-      });
-
-      esValue[implSymbol]["protocol"] = V;
-    }
-
-    get username() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get username' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol]["username"];
-    }
-
-    set username(V) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'set username' called on an object that is not a valid instance of URL.");
-      }
-
-      V = conversions["USVString"](V, {
-        context: "Failed to set the 'username' property on 'URL': The provided value",
-        globals: globalObject
-      });
-
-      esValue[implSymbol]["username"] = V;
-    }
-
-    get password() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get password' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol]["password"];
-    }
-
-    set password(V) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'set password' called on an object that is not a valid instance of URL.");
-      }
-
-      V = conversions["USVString"](V, {
-        context: "Failed to set the 'password' property on 'URL': The provided value",
-        globals: globalObject
-      });
-
-      esValue[implSymbol]["password"] = V;
-    }
-
-    get host() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get host' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol]["host"];
-    }
-
-    set host(V) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'set host' called on an object that is not a valid instance of URL.");
-      }
-
-      V = conversions["USVString"](V, {
-        context: "Failed to set the 'host' property on 'URL': The provided value",
-        globals: globalObject
-      });
-
-      esValue[implSymbol]["host"] = V;
-    }
-
-    get hostname() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get hostname' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol]["hostname"];
-    }
-
-    set hostname(V) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'set hostname' called on an object that is not a valid instance of URL.");
-      }
-
-      V = conversions["USVString"](V, {
-        context: "Failed to set the 'hostname' property on 'URL': The provided value",
-        globals: globalObject
-      });
-
-      esValue[implSymbol]["hostname"] = V;
-    }
-
-    get port() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get port' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol]["port"];
-    }
-
-    set port(V) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'set port' called on an object that is not a valid instance of URL.");
-      }
-
-      V = conversions["USVString"](V, {
-        context: "Failed to set the 'port' property on 'URL': The provided value",
-        globals: globalObject
-      });
-
-      esValue[implSymbol]["port"] = V;
-    }
-
-    get pathname() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get pathname' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol]["pathname"];
-    }
-
-    set pathname(V) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'set pathname' called on an object that is not a valid instance of URL.");
-      }
-
-      V = conversions["USVString"](V, {
-        context: "Failed to set the 'pathname' property on 'URL': The provided value",
-        globals: globalObject
-      });
-
-      esValue[implSymbol]["pathname"] = V;
-    }
-
-    get search() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get search' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol]["search"];
-    }
-
-    set search(V) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'set search' called on an object that is not a valid instance of URL.");
-      }
-
-      V = conversions["USVString"](V, {
-        context: "Failed to set the 'search' property on 'URL': The provided value",
-        globals: globalObject
-      });
-
-      esValue[implSymbol]["search"] = V;
-    }
-
-    get searchParams() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get searchParams' called on an object that is not a valid instance of URL.");
-      }
-
-      return utils.getSameObject(this, "searchParams", () => {
-        return utils.tryWrapperForImpl(esValue[implSymbol]["searchParams"]);
-      });
-    }
-
-    get hash() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get hash' called on an object that is not a valid instance of URL.");
-      }
-
-      return esValue[implSymbol]["hash"];
-    }
-
-    set hash(V) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'set hash' called on an object that is not a valid instance of URL.");
-      }
-
-      V = conversions["USVString"](V, {
-        context: "Failed to set the 'hash' property on 'URL': The provided value",
-        globals: globalObject
-      });
-
-      esValue[implSymbol]["hash"] = V;
-    }
-
-    static canParse(url) {
-      if (arguments.length < 1) {
-        throw new globalObject.TypeError(
-          `Failed to execute 'canParse' on 'URL': 1 argument required, but only ${arguments.length} present.`
-        );
-      }
-      const args = [];
-      {
-        let curArg = arguments[0];
-        curArg = conversions["USVString"](curArg, {
-          context: "Failed to execute 'canParse' on 'URL': parameter 1",
-          globals: globalObject
-        });
-        args.push(curArg);
-      }
-      {
-        let curArg = arguments[1];
-        if (curArg !== undefined) {
-          curArg = conversions["USVString"](curArg, {
-            context: "Failed to execute 'canParse' on 'URL': parameter 2",
-            globals: globalObject
-          });
-        }
-        args.push(curArg);
-      }
-      return Impl.implementation.canParse(...args);
-    }
-  }
-  Object.defineProperties(URL.prototype, {
-    toJSON: { enumerable: true },
-    href: { enumerable: true },
-    toString: { enumerable: true },
-    origin: { enumerable: true },
-    protocol: { enumerable: true },
-    username: { enumerable: true },
-    password: { enumerable: true },
-    host: { enumerable: true },
-    hostname: { enumerable: true },
-    port: { enumerable: true },
-    pathname: { enumerable: true },
-    search: { enumerable: true },
-    searchParams: { enumerable: true },
-    hash: { enumerable: true },
-    [Symbol.toStringTag]: { value: "URL", configurable: true }
-  });
-  Object.defineProperties(URL, { canParse: { enumerable: true } });
-  ctorRegistry[interfaceName] = URL;
-
-  Object.defineProperty(globalObject, interfaceName, {
-    configurable: true,
-    writable: true,
-    value: URL
-  });
-
-  if (globalNames.includes("Window")) {
-    Object.defineProperty(globalObject, "webkitURL", {
-      configurable: true,
-      writable: true,
-      value: URL
-    });
-  }
-};
-
-const Impl = require("./URL-impl.js");
diff --git a/server/data-import/node_modules/whatwg-url/lib/URLSearchParams-impl.js b/server/data-import/node_modules/whatwg-url/lib/URLSearchParams-impl.js
deleted file mode 100644
index 934c4ff14b4761a68870cdb770c1ed87c731ab2c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/lib/URLSearchParams-impl.js
+++ /dev/null
@@ -1,139 +0,0 @@
-"use strict";
-const urlencoded = require("./urlencoded");
-
-exports.implementation = class URLSearchParamsImpl {
-  constructor(globalObject, constructorArgs, { doNotStripQMark = false }) {
-    let init = constructorArgs[0];
-    this._list = [];
-    this._url = null;
-
-    if (!doNotStripQMark && typeof init === "string" && init[0] === "?") {
-      init = init.slice(1);
-    }
-
-    if (Array.isArray(init)) {
-      for (const pair of init) {
-        if (pair.length !== 2) {
-          throw new TypeError("Failed to construct 'URLSearchParams': parameter 1 sequence's element does not " +
-                              "contain exactly two elements.");
-        }
-        this._list.push([pair[0], pair[1]]);
-      }
-    } else if (typeof init === "object" && Object.getPrototypeOf(init) === null) {
-      for (const name of Object.keys(init)) {
-        const value = init[name];
-        this._list.push([name, value]);
-      }
-    } else {
-      this._list = urlencoded.parseUrlencodedString(init);
-    }
-  }
-
-  _updateSteps() {
-    if (this._url !== null) {
-      let serializedQuery = urlencoded.serializeUrlencoded(this._list);
-      if (serializedQuery === "") {
-        serializedQuery = null;
-      }
-
-      this._url._url.query = serializedQuery;
-
-      if (serializedQuery === null) {
-        this._url._potentiallyStripTrailingSpacesFromAnOpaquePath();
-      }
-    }
-  }
-
-  get size() {
-    return this._list.length;
-  }
-
-  append(name, value) {
-    this._list.push([name, value]);
-    this._updateSteps();
-  }
-
-  delete(name, value) {
-    let i = 0;
-    while (i < this._list.length) {
-      if (this._list[i][0] === name && (value === undefined || this._list[i][1] === value)) {
-        this._list.splice(i, 1);
-      } else {
-        i++;
-      }
-    }
-    this._updateSteps();
-  }
-
-  get(name) {
-    for (const tuple of this._list) {
-      if (tuple[0] === name) {
-        return tuple[1];
-      }
-    }
-    return null;
-  }
-
-  getAll(name) {
-    const output = [];
-    for (const tuple of this._list) {
-      if (tuple[0] === name) {
-        output.push(tuple[1]);
-      }
-    }
-    return output;
-  }
-
-  has(name, value) {
-    for (const tuple of this._list) {
-      if (tuple[0] === name && (value === undefined || tuple[1] === value)) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  set(name, value) {
-    let found = false;
-    let i = 0;
-    while (i < this._list.length) {
-      if (this._list[i][0] === name) {
-        if (found) {
-          this._list.splice(i, 1);
-        } else {
-          found = true;
-          this._list[i][1] = value;
-          i++;
-        }
-      } else {
-        i++;
-      }
-    }
-    if (!found) {
-      this._list.push([name, value]);
-    }
-    this._updateSteps();
-  }
-
-  sort() {
-    this._list.sort((a, b) => {
-      if (a[0] < b[0]) {
-        return -1;
-      }
-      if (a[0] > b[0]) {
-        return 1;
-      }
-      return 0;
-    });
-
-    this._updateSteps();
-  }
-
-  [Symbol.iterator]() {
-    return this._list[Symbol.iterator]();
-  }
-
-  toString() {
-    return urlencoded.serializeUrlencoded(this._list);
-  }
-};
diff --git a/server/data-import/node_modules/whatwg-url/lib/URLSearchParams.js b/server/data-import/node_modules/whatwg-url/lib/URLSearchParams.js
deleted file mode 100644
index a55587fa7d004644ebb6fb928420a06fe0ec3a13..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/lib/URLSearchParams.js
+++ /dev/null
@@ -1,505 +0,0 @@
-"use strict";
-
-const conversions = require("webidl-conversions");
-const utils = require("./utils.js");
-
-const Function = require("./Function.js");
-const newObjectInRealm = utils.newObjectInRealm;
-const implSymbol = utils.implSymbol;
-const ctorRegistrySymbol = utils.ctorRegistrySymbol;
-
-const interfaceName = "URLSearchParams";
-
-exports.is = value => {
-  return utils.isObject(value) && utils.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;
-};
-exports.isImpl = value => {
-  return utils.isObject(value) && value instanceof Impl.implementation;
-};
-exports.convert = (globalObject, value, { context = "The provided value" } = {}) => {
-  if (exports.is(value)) {
-    return utils.implForWrapper(value);
-  }
-  throw new globalObject.TypeError(`${context} is not of type 'URLSearchParams'.`);
-};
-
-exports.createDefaultIterator = (globalObject, target, kind) => {
-  const ctorRegistry = globalObject[ctorRegistrySymbol];
-  const iteratorPrototype = ctorRegistry["URLSearchParams Iterator"];
-  const iterator = Object.create(iteratorPrototype);
-  Object.defineProperty(iterator, utils.iterInternalSymbol, {
-    value: { target, kind, index: 0 },
-    configurable: true
-  });
-  return iterator;
-};
-
-function makeWrapper(globalObject, newTarget) {
-  let proto;
-  if (newTarget !== undefined) {
-    proto = newTarget.prototype;
-  }
-
-  if (!utils.isObject(proto)) {
-    proto = globalObject[ctorRegistrySymbol]["URLSearchParams"].prototype;
-  }
-
-  return Object.create(proto);
-}
-
-exports.create = (globalObject, constructorArgs, privateData) => {
-  const wrapper = makeWrapper(globalObject);
-  return exports.setup(wrapper, globalObject, constructorArgs, privateData);
-};
-
-exports.createImpl = (globalObject, constructorArgs, privateData) => {
-  const wrapper = exports.create(globalObject, constructorArgs, privateData);
-  return utils.implForWrapper(wrapper);
-};
-
-exports._internalSetup = (wrapper, globalObject) => {};
-
-exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {
-  privateData.wrapper = wrapper;
-
-  exports._internalSetup(wrapper, globalObject);
-  Object.defineProperty(wrapper, implSymbol, {
-    value: new Impl.implementation(globalObject, constructorArgs, privateData),
-    configurable: true
-  });
-
-  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;
-  if (Impl.init) {
-    Impl.init(wrapper[implSymbol]);
-  }
-  return wrapper;
-};
-
-exports.new = (globalObject, newTarget) => {
-  const wrapper = makeWrapper(globalObject, newTarget);
-
-  exports._internalSetup(wrapper, globalObject);
-  Object.defineProperty(wrapper, implSymbol, {
-    value: Object.create(Impl.implementation.prototype),
-    configurable: true
-  });
-
-  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;
-  if (Impl.init) {
-    Impl.init(wrapper[implSymbol]);
-  }
-  return wrapper[implSymbol];
-};
-
-const exposed = new Set(["Window", "Worker"]);
-
-exports.install = (globalObject, globalNames) => {
-  if (!globalNames.some(globalName => exposed.has(globalName))) {
-    return;
-  }
-
-  const ctorRegistry = utils.initCtorRegistry(globalObject);
-  class URLSearchParams {
-    constructor() {
-      const args = [];
-      {
-        let curArg = arguments[0];
-        if (curArg !== undefined) {
-          if (utils.isObject(curArg)) {
-            if (curArg[Symbol.iterator] !== undefined) {
-              if (!utils.isObject(curArg)) {
-                throw new globalObject.TypeError(
-                  "Failed to construct 'URLSearchParams': parameter 1" + " sequence" + " is not an iterable object."
-                );
-              } else {
-                const V = [];
-                const tmp = curArg;
-                for (let nextItem of tmp) {
-                  if (!utils.isObject(nextItem)) {
-                    throw new globalObject.TypeError(
-                      "Failed to construct 'URLSearchParams': parameter 1" +
-                        " sequence" +
-                        "'s element" +
-                        " is not an iterable object."
-                    );
-                  } else {
-                    const V = [];
-                    const tmp = nextItem;
-                    for (let nextItem of tmp) {
-                      nextItem = conversions["USVString"](nextItem, {
-                        context:
-                          "Failed to construct 'URLSearchParams': parameter 1" +
-                          " sequence" +
-                          "'s element" +
-                          "'s element",
-                        globals: globalObject
-                      });
-
-                      V.push(nextItem);
-                    }
-                    nextItem = V;
-                  }
-
-                  V.push(nextItem);
-                }
-                curArg = V;
-              }
-            } else {
-              if (!utils.isObject(curArg)) {
-                throw new globalObject.TypeError(
-                  "Failed to construct 'URLSearchParams': parameter 1" + " record" + " is not an object."
-                );
-              } else {
-                const result = Object.create(null);
-                for (const key of Reflect.ownKeys(curArg)) {
-                  const desc = Object.getOwnPropertyDescriptor(curArg, key);
-                  if (desc && desc.enumerable) {
-                    let typedKey = key;
-
-                    typedKey = conversions["USVString"](typedKey, {
-                      context: "Failed to construct 'URLSearchParams': parameter 1" + " record" + "'s key",
-                      globals: globalObject
-                    });
-
-                    let typedValue = curArg[key];
-
-                    typedValue = conversions["USVString"](typedValue, {
-                      context: "Failed to construct 'URLSearchParams': parameter 1" + " record" + "'s value",
-                      globals: globalObject
-                    });
-
-                    result[typedKey] = typedValue;
-                  }
-                }
-                curArg = result;
-              }
-            }
-          } else {
-            curArg = conversions["USVString"](curArg, {
-              context: "Failed to construct 'URLSearchParams': parameter 1",
-              globals: globalObject
-            });
-          }
-        } else {
-          curArg = "";
-        }
-        args.push(curArg);
-      }
-      return exports.setup(Object.create(new.target.prototype), globalObject, args);
-    }
-
-    append(name, value) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError(
-          "'append' called on an object that is not a valid instance of URLSearchParams."
-        );
-      }
-
-      if (arguments.length < 2) {
-        throw new globalObject.TypeError(
-          `Failed to execute 'append' on 'URLSearchParams': 2 arguments required, but only ${arguments.length} present.`
-        );
-      }
-      const args = [];
-      {
-        let curArg = arguments[0];
-        curArg = conversions["USVString"](curArg, {
-          context: "Failed to execute 'append' on 'URLSearchParams': parameter 1",
-          globals: globalObject
-        });
-        args.push(curArg);
-      }
-      {
-        let curArg = arguments[1];
-        curArg = conversions["USVString"](curArg, {
-          context: "Failed to execute 'append' on 'URLSearchParams': parameter 2",
-          globals: globalObject
-        });
-        args.push(curArg);
-      }
-      return utils.tryWrapperForImpl(esValue[implSymbol].append(...args));
-    }
-
-    delete(name) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError(
-          "'delete' called on an object that is not a valid instance of URLSearchParams."
-        );
-      }
-
-      if (arguments.length < 1) {
-        throw new globalObject.TypeError(
-          `Failed to execute 'delete' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`
-        );
-      }
-      const args = [];
-      {
-        let curArg = arguments[0];
-        curArg = conversions["USVString"](curArg, {
-          context: "Failed to execute 'delete' on 'URLSearchParams': parameter 1",
-          globals: globalObject
-        });
-        args.push(curArg);
-      }
-      {
-        let curArg = arguments[1];
-        if (curArg !== undefined) {
-          curArg = conversions["USVString"](curArg, {
-            context: "Failed to execute 'delete' on 'URLSearchParams': parameter 2",
-            globals: globalObject
-          });
-        }
-        args.push(curArg);
-      }
-      return utils.tryWrapperForImpl(esValue[implSymbol].delete(...args));
-    }
-
-    get(name) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'get' called on an object that is not a valid instance of URLSearchParams.");
-      }
-
-      if (arguments.length < 1) {
-        throw new globalObject.TypeError(
-          `Failed to execute 'get' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`
-        );
-      }
-      const args = [];
-      {
-        let curArg = arguments[0];
-        curArg = conversions["USVString"](curArg, {
-          context: "Failed to execute 'get' on 'URLSearchParams': parameter 1",
-          globals: globalObject
-        });
-        args.push(curArg);
-      }
-      return esValue[implSymbol].get(...args);
-    }
-
-    getAll(name) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError(
-          "'getAll' called on an object that is not a valid instance of URLSearchParams."
-        );
-      }
-
-      if (arguments.length < 1) {
-        throw new globalObject.TypeError(
-          `Failed to execute 'getAll' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`
-        );
-      }
-      const args = [];
-      {
-        let curArg = arguments[0];
-        curArg = conversions["USVString"](curArg, {
-          context: "Failed to execute 'getAll' on 'URLSearchParams': parameter 1",
-          globals: globalObject
-        });
-        args.push(curArg);
-      }
-      return utils.tryWrapperForImpl(esValue[implSymbol].getAll(...args));
-    }
-
-    has(name) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'has' called on an object that is not a valid instance of URLSearchParams.");
-      }
-
-      if (arguments.length < 1) {
-        throw new globalObject.TypeError(
-          `Failed to execute 'has' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`
-        );
-      }
-      const args = [];
-      {
-        let curArg = arguments[0];
-        curArg = conversions["USVString"](curArg, {
-          context: "Failed to execute 'has' on 'URLSearchParams': parameter 1",
-          globals: globalObject
-        });
-        args.push(curArg);
-      }
-      {
-        let curArg = arguments[1];
-        if (curArg !== undefined) {
-          curArg = conversions["USVString"](curArg, {
-            context: "Failed to execute 'has' on 'URLSearchParams': parameter 2",
-            globals: globalObject
-          });
-        }
-        args.push(curArg);
-      }
-      return esValue[implSymbol].has(...args);
-    }
-
-    set(name, value) {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'set' called on an object that is not a valid instance of URLSearchParams.");
-      }
-
-      if (arguments.length < 2) {
-        throw new globalObject.TypeError(
-          `Failed to execute 'set' on 'URLSearchParams': 2 arguments required, but only ${arguments.length} present.`
-        );
-      }
-      const args = [];
-      {
-        let curArg = arguments[0];
-        curArg = conversions["USVString"](curArg, {
-          context: "Failed to execute 'set' on 'URLSearchParams': parameter 1",
-          globals: globalObject
-        });
-        args.push(curArg);
-      }
-      {
-        let curArg = arguments[1];
-        curArg = conversions["USVString"](curArg, {
-          context: "Failed to execute 'set' on 'URLSearchParams': parameter 2",
-          globals: globalObject
-        });
-        args.push(curArg);
-      }
-      return utils.tryWrapperForImpl(esValue[implSymbol].set(...args));
-    }
-
-    sort() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError("'sort' called on an object that is not a valid instance of URLSearchParams.");
-      }
-
-      return utils.tryWrapperForImpl(esValue[implSymbol].sort());
-    }
-
-    toString() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError(
-          "'toString' called on an object that is not a valid instance of URLSearchParams."
-        );
-      }
-
-      return esValue[implSymbol].toString();
-    }
-
-    keys() {
-      if (!exports.is(this)) {
-        throw new globalObject.TypeError("'keys' called on an object that is not a valid instance of URLSearchParams.");
-      }
-      return exports.createDefaultIterator(globalObject, this, "key");
-    }
-
-    values() {
-      if (!exports.is(this)) {
-        throw new globalObject.TypeError(
-          "'values' called on an object that is not a valid instance of URLSearchParams."
-        );
-      }
-      return exports.createDefaultIterator(globalObject, this, "value");
-    }
-
-    entries() {
-      if (!exports.is(this)) {
-        throw new globalObject.TypeError(
-          "'entries' called on an object that is not a valid instance of URLSearchParams."
-        );
-      }
-      return exports.createDefaultIterator(globalObject, this, "key+value");
-    }
-
-    forEach(callback) {
-      if (!exports.is(this)) {
-        throw new globalObject.TypeError(
-          "'forEach' called on an object that is not a valid instance of URLSearchParams."
-        );
-      }
-      if (arguments.length < 1) {
-        throw new globalObject.TypeError(
-          "Failed to execute 'forEach' on 'iterable': 1 argument required, but only 0 present."
-        );
-      }
-      callback = Function.convert(globalObject, callback, {
-        context: "Failed to execute 'forEach' on 'iterable': The callback provided as parameter 1"
-      });
-      const thisArg = arguments[1];
-      let pairs = Array.from(this[implSymbol]);
-      let i = 0;
-      while (i < pairs.length) {
-        const [key, value] = pairs[i].map(utils.tryWrapperForImpl);
-        callback.call(thisArg, value, key, this);
-        pairs = Array.from(this[implSymbol]);
-        i++;
-      }
-    }
-
-    get size() {
-      const esValue = this !== null && this !== undefined ? this : globalObject;
-
-      if (!exports.is(esValue)) {
-        throw new globalObject.TypeError(
-          "'get size' called on an object that is not a valid instance of URLSearchParams."
-        );
-      }
-
-      return esValue[implSymbol]["size"];
-    }
-  }
-  Object.defineProperties(URLSearchParams.prototype, {
-    append: { enumerable: true },
-    delete: { enumerable: true },
-    get: { enumerable: true },
-    getAll: { enumerable: true },
-    has: { enumerable: true },
-    set: { enumerable: true },
-    sort: { enumerable: true },
-    toString: { enumerable: true },
-    keys: { enumerable: true },
-    values: { enumerable: true },
-    entries: { enumerable: true },
-    forEach: { enumerable: true },
-    size: { enumerable: true },
-    [Symbol.toStringTag]: { value: "URLSearchParams", configurable: true },
-    [Symbol.iterator]: { value: URLSearchParams.prototype.entries, configurable: true, writable: true }
-  });
-  ctorRegistry[interfaceName] = URLSearchParams;
-
-  ctorRegistry["URLSearchParams Iterator"] = Object.create(ctorRegistry["%IteratorPrototype%"], {
-    [Symbol.toStringTag]: {
-      configurable: true,
-      value: "URLSearchParams Iterator"
-    }
-  });
-  utils.define(ctorRegistry["URLSearchParams Iterator"], {
-    next() {
-      const internal = this && this[utils.iterInternalSymbol];
-      if (!internal) {
-        throw new globalObject.TypeError("next() called on a value that is not a URLSearchParams iterator object");
-      }
-
-      const { target, kind, index } = internal;
-      const values = Array.from(target[implSymbol]);
-      const len = values.length;
-      if (index >= len) {
-        return newObjectInRealm(globalObject, { value: undefined, done: true });
-      }
-
-      const pair = values[index];
-      internal.index = index + 1;
-      return newObjectInRealm(globalObject, utils.iteratorResult(pair.map(utils.tryWrapperForImpl), kind));
-    }
-  });
-
-  Object.defineProperty(globalObject, interfaceName, {
-    configurable: true,
-    writable: true,
-    value: URLSearchParams
-  });
-};
-
-const Impl = require("./URLSearchParams-impl.js");
diff --git a/server/data-import/node_modules/whatwg-url/lib/VoidFunction.js b/server/data-import/node_modules/whatwg-url/lib/VoidFunction.js
deleted file mode 100644
index 9a00672a7eefb56865c9ec5872c3d331bc8cd845..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/lib/VoidFunction.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-
-const conversions = require("webidl-conversions");
-const utils = require("./utils.js");
-
-exports.convert = (globalObject, value, { context = "The provided value" } = {}) => {
-  if (typeof value !== "function") {
-    throw new globalObject.TypeError(context + " is not a function");
-  }
-
-  function invokeTheCallbackFunction() {
-    const thisArg = utils.tryWrapperForImpl(this);
-    let callResult;
-
-    callResult = Reflect.apply(value, thisArg, []);
-  }
-
-  invokeTheCallbackFunction.construct = () => {
-    let callResult = Reflect.construct(value, []);
-  };
-
-  invokeTheCallbackFunction[utils.wrapperSymbol] = value;
-  invokeTheCallbackFunction.objectReference = value;
-
-  return invokeTheCallbackFunction;
-};
diff --git a/server/data-import/node_modules/whatwg-url/lib/encoding.js b/server/data-import/node_modules/whatwg-url/lib/encoding.js
deleted file mode 100644
index cb66b8f10aee1c8a6125c4553213917ea95aba59..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/lib/encoding.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-const utf8Encoder = new TextEncoder();
-const utf8Decoder = new TextDecoder("utf-8", { ignoreBOM: true });
-
-function utf8Encode(string) {
-  return utf8Encoder.encode(string);
-}
-
-function utf8DecodeWithoutBOM(bytes) {
-  return utf8Decoder.decode(bytes);
-}
-
-module.exports = {
-  utf8Encode,
-  utf8DecodeWithoutBOM
-};
diff --git a/server/data-import/node_modules/whatwg-url/lib/infra.js b/server/data-import/node_modules/whatwg-url/lib/infra.js
deleted file mode 100644
index 4a984a3b3a8ab614216364ffa243ff6b21657a37..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/lib/infra.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-
-// Note that we take code points as JS numbers, not JS strings.
-
-function isASCIIDigit(c) {
-  return c >= 0x30 && c <= 0x39;
-}
-
-function isASCIIAlpha(c) {
-  return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);
-}
-
-function isASCIIAlphanumeric(c) {
-  return isASCIIAlpha(c) || isASCIIDigit(c);
-}
-
-function isASCIIHex(c) {
-  return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);
-}
-
-module.exports = {
-  isASCIIDigit,
-  isASCIIAlpha,
-  isASCIIAlphanumeric,
-  isASCIIHex
-};
diff --git a/server/data-import/node_modules/whatwg-url/lib/percent-encoding.js b/server/data-import/node_modules/whatwg-url/lib/percent-encoding.js
deleted file mode 100644
index f8308673c8543542a0a24436205fd3f74a3c8e6c..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/lib/percent-encoding.js
+++ /dev/null
@@ -1,142 +0,0 @@
-"use strict";
-const { isASCIIHex } = require("./infra");
-const { utf8Encode } = require("./encoding");
-
-function p(char) {
-  return char.codePointAt(0);
-}
-
-// https://url.spec.whatwg.org/#percent-encode
-function percentEncode(c) {
-  let hex = c.toString(16).toUpperCase();
-  if (hex.length === 1) {
-    hex = `0${hex}`;
-  }
-
-  return `%${hex}`;
-}
-
-// https://url.spec.whatwg.org/#percent-decode
-function percentDecodeBytes(input) {
-  const output = new Uint8Array(input.byteLength);
-  let outputIndex = 0;
-  for (let i = 0; i < input.byteLength; ++i) {
-    const byte = input[i];
-    if (byte !== 0x25) {
-      output[outputIndex++] = byte;
-    } else if (byte === 0x25 && (!isASCIIHex(input[i + 1]) || !isASCIIHex(input[i + 2]))) {
-      output[outputIndex++] = byte;
-    } else {
-      const bytePoint = parseInt(String.fromCodePoint(input[i + 1], input[i + 2]), 16);
-      output[outputIndex++] = bytePoint;
-      i += 2;
-    }
-  }
-
-  return output.slice(0, outputIndex);
-}
-
-// https://url.spec.whatwg.org/#string-percent-decode
-function percentDecodeString(input) {
-  const bytes = utf8Encode(input);
-  return percentDecodeBytes(bytes);
-}
-
-// https://url.spec.whatwg.org/#c0-control-percent-encode-set
-function isC0ControlPercentEncode(c) {
-  return c <= 0x1F || c > 0x7E;
-}
-
-// https://url.spec.whatwg.org/#fragment-percent-encode-set
-const extraFragmentPercentEncodeSet = new Set([p(" "), p("\""), p("<"), p(">"), p("`")]);
-function isFragmentPercentEncode(c) {
-  return isC0ControlPercentEncode(c) || extraFragmentPercentEncodeSet.has(c);
-}
-
-// https://url.spec.whatwg.org/#query-percent-encode-set
-const extraQueryPercentEncodeSet = new Set([p(" "), p("\""), p("#"), p("<"), p(">")]);
-function isQueryPercentEncode(c) {
-  return isC0ControlPercentEncode(c) || extraQueryPercentEncodeSet.has(c);
-}
-
-// https://url.spec.whatwg.org/#special-query-percent-encode-set
-function isSpecialQueryPercentEncode(c) {
-  return isQueryPercentEncode(c) || c === p("'");
-}
-
-// https://url.spec.whatwg.org/#path-percent-encode-set
-const extraPathPercentEncodeSet = new Set([p("?"), p("`"), p("{"), p("}")]);
-function isPathPercentEncode(c) {
-  return isQueryPercentEncode(c) || extraPathPercentEncodeSet.has(c);
-}
-
-// https://url.spec.whatwg.org/#userinfo-percent-encode-set
-const extraUserinfoPercentEncodeSet =
-  new Set([p("/"), p(":"), p(";"), p("="), p("@"), p("["), p("\\"), p("]"), p("^"), p("|")]);
-function isUserinfoPercentEncode(c) {
-  return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);
-}
-
-// https://url.spec.whatwg.org/#component-percent-encode-set
-const extraComponentPercentEncodeSet = new Set([p("$"), p("%"), p("&"), p("+"), p(",")]);
-function isComponentPercentEncode(c) {
-  return isUserinfoPercentEncode(c) || extraComponentPercentEncodeSet.has(c);
-}
-
-// https://url.spec.whatwg.org/#application-x-www-form-urlencoded-percent-encode-set
-const extraURLEncodedPercentEncodeSet = new Set([p("!"), p("'"), p("("), p(")"), p("~")]);
-function isURLEncodedPercentEncode(c) {
-  return isComponentPercentEncode(c) || extraURLEncodedPercentEncodeSet.has(c);
-}
-
-// https://url.spec.whatwg.org/#code-point-percent-encode-after-encoding
-// https://url.spec.whatwg.org/#utf-8-percent-encode
-// Assuming encoding is always utf-8 allows us to trim one of the logic branches. TODO: support encoding.
-// The "-Internal" variant here has code points as JS strings. The external version used by other files has code points
-// as JS numbers, like the rest of the codebase.
-function utf8PercentEncodeCodePointInternal(codePoint, percentEncodePredicate) {
-  const bytes = utf8Encode(codePoint);
-  let output = "";
-  for (const byte of bytes) {
-    // Our percentEncodePredicate operates on bytes, not code points, so this is slightly different from the spec.
-    if (!percentEncodePredicate(byte)) {
-      output += String.fromCharCode(byte);
-    } else {
-      output += percentEncode(byte);
-    }
-  }
-
-  return output;
-}
-
-function utf8PercentEncodeCodePoint(codePoint, percentEncodePredicate) {
-  return utf8PercentEncodeCodePointInternal(String.fromCodePoint(codePoint), percentEncodePredicate);
-}
-
-// https://url.spec.whatwg.org/#string-percent-encode-after-encoding
-// https://url.spec.whatwg.org/#string-utf-8-percent-encode
-function utf8PercentEncodeString(input, percentEncodePredicate, spaceAsPlus = false) {
-  let output = "";
-  for (const codePoint of input) {
-    if (spaceAsPlus && codePoint === " ") {
-      output += "+";
-    } else {
-      output += utf8PercentEncodeCodePointInternal(codePoint, percentEncodePredicate);
-    }
-  }
-  return output;
-}
-
-module.exports = {
-  isC0ControlPercentEncode,
-  isFragmentPercentEncode,
-  isQueryPercentEncode,
-  isSpecialQueryPercentEncode,
-  isPathPercentEncode,
-  isUserinfoPercentEncode,
-  isURLEncodedPercentEncode,
-  percentDecodeString,
-  percentDecodeBytes,
-  utf8PercentEncodeString,
-  utf8PercentEncodeCodePoint
-};
diff --git a/server/data-import/node_modules/whatwg-url/lib/url-state-machine.js b/server/data-import/node_modules/whatwg-url/lib/url-state-machine.js
deleted file mode 100644
index 99033921455da9dbd60709a6dc5cd24e87e0aa04..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/lib/url-state-machine.js
+++ /dev/null
@@ -1,1247 +0,0 @@
-"use strict";
-const tr46 = require("tr46");
-
-const infra = require("./infra");
-const { utf8DecodeWithoutBOM } = require("./encoding");
-const { percentDecodeString, utf8PercentEncodeCodePoint, utf8PercentEncodeString, isC0ControlPercentEncode,
-  isFragmentPercentEncode, isQueryPercentEncode, isSpecialQueryPercentEncode, isPathPercentEncode,
-  isUserinfoPercentEncode } = require("./percent-encoding");
-
-function p(char) {
-  return char.codePointAt(0);
-}
-
-const specialSchemes = {
-  ftp: 21,
-  file: null,
-  http: 80,
-  https: 443,
-  ws: 80,
-  wss: 443
-};
-
-const failure = Symbol("failure");
-
-function countSymbols(str) {
-  return [...str].length;
-}
-
-function at(input, idx) {
-  const c = input[idx];
-  return isNaN(c) ? undefined : String.fromCodePoint(c);
-}
-
-function isSingleDot(buffer) {
-  return buffer === "." || buffer.toLowerCase() === "%2e";
-}
-
-function isDoubleDot(buffer) {
-  buffer = buffer.toLowerCase();
-  return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e";
-}
-
-function isWindowsDriveLetterCodePoints(cp1, cp2) {
-  return infra.isASCIIAlpha(cp1) && (cp2 === p(":") || cp2 === p("|"));
-}
-
-function isWindowsDriveLetterString(string) {
-  return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|");
-}
-
-function isNormalizedWindowsDriveLetterString(string) {
-  return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && string[1] === ":";
-}
-
-function containsForbiddenHostCodePoint(string) {
-  return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|<|>|\?|@|\[|\\|\]|\^|\|/u) !== -1;
-}
-
-function containsForbiddenDomainCodePoint(string) {
-  return containsForbiddenHostCodePoint(string) || string.search(/[\u0000-\u001F]|%|\u007F/u) !== -1;
-}
-
-function isSpecialScheme(scheme) {
-  return specialSchemes[scheme] !== undefined;
-}
-
-function isSpecial(url) {
-  return isSpecialScheme(url.scheme);
-}
-
-function isNotSpecial(url) {
-  return !isSpecialScheme(url.scheme);
-}
-
-function defaultPort(scheme) {
-  return specialSchemes[scheme];
-}
-
-function parseIPv4Number(input) {
-  if (input === "") {
-    return failure;
-  }
-
-  let R = 10;
-
-  if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") {
-    input = input.substring(2);
-    R = 16;
-  } else if (input.length >= 2 && input.charAt(0) === "0") {
-    input = input.substring(1);
-    R = 8;
-  }
-
-  if (input === "") {
-    return 0;
-  }
-
-  let regex = /[^0-7]/u;
-  if (R === 10) {
-    regex = /[^0-9]/u;
-  }
-  if (R === 16) {
-    regex = /[^0-9A-Fa-f]/u;
-  }
-
-  if (regex.test(input)) {
-    return failure;
-  }
-
-  return parseInt(input, R);
-}
-
-function parseIPv4(input) {
-  const parts = input.split(".");
-  if (parts[parts.length - 1] === "") {
-    if (parts.length > 1) {
-      parts.pop();
-    }
-  }
-
-  if (parts.length > 4) {
-    return failure;
-  }
-
-  const numbers = [];
-  for (const part of parts) {
-    const n = parseIPv4Number(part);
-    if (n === failure) {
-      return failure;
-    }
-
-    numbers.push(n);
-  }
-
-  for (let i = 0; i < numbers.length - 1; ++i) {
-    if (numbers[i] > 255) {
-      return failure;
-    }
-  }
-  if (numbers[numbers.length - 1] >= 256 ** (5 - numbers.length)) {
-    return failure;
-  }
-
-  let ipv4 = numbers.pop();
-  let counter = 0;
-
-  for (const n of numbers) {
-    ipv4 += n * 256 ** (3 - counter);
-    ++counter;
-  }
-
-  return ipv4;
-}
-
-function serializeIPv4(address) {
-  let output = "";
-  let n = address;
-
-  for (let i = 1; i <= 4; ++i) {
-    output = String(n % 256) + output;
-    if (i !== 4) {
-      output = `.${output}`;
-    }
-    n = Math.floor(n / 256);
-  }
-
-  return output;
-}
-
-function parseIPv6(input) {
-  const address = [0, 0, 0, 0, 0, 0, 0, 0];
-  let pieceIndex = 0;
-  let compress = null;
-  let pointer = 0;
-
-  input = Array.from(input, c => c.codePointAt(0));
-
-  if (input[pointer] === p(":")) {
-    if (input[pointer + 1] !== p(":")) {
-      return failure;
-    }
-
-    pointer += 2;
-    ++pieceIndex;
-    compress = pieceIndex;
-  }
-
-  while (pointer < input.length) {
-    if (pieceIndex === 8) {
-      return failure;
-    }
-
-    if (input[pointer] === p(":")) {
-      if (compress !== null) {
-        return failure;
-      }
-      ++pointer;
-      ++pieceIndex;
-      compress = pieceIndex;
-      continue;
-    }
-
-    let value = 0;
-    let length = 0;
-
-    while (length < 4 && infra.isASCIIHex(input[pointer])) {
-      value = value * 0x10 + parseInt(at(input, pointer), 16);
-      ++pointer;
-      ++length;
-    }
-
-    if (input[pointer] === p(".")) {
-      if (length === 0) {
-        return failure;
-      }
-
-      pointer -= length;
-
-      if (pieceIndex > 6) {
-        return failure;
-      }
-
-      let numbersSeen = 0;
-
-      while (input[pointer] !== undefined) {
-        let ipv4Piece = null;
-
-        if (numbersSeen > 0) {
-          if (input[pointer] === p(".") && numbersSeen < 4) {
-            ++pointer;
-          } else {
-            return failure;
-          }
-        }
-
-        if (!infra.isASCIIDigit(input[pointer])) {
-          return failure;
-        }
-
-        while (infra.isASCIIDigit(input[pointer])) {
-          const number = parseInt(at(input, pointer));
-          if (ipv4Piece === null) {
-            ipv4Piece = number;
-          } else if (ipv4Piece === 0) {
-            return failure;
-          } else {
-            ipv4Piece = ipv4Piece * 10 + number;
-          }
-          if (ipv4Piece > 255) {
-            return failure;
-          }
-          ++pointer;
-        }
-
-        address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;
-
-        ++numbersSeen;
-
-        if (numbersSeen === 2 || numbersSeen === 4) {
-          ++pieceIndex;
-        }
-      }
-
-      if (numbersSeen !== 4) {
-        return failure;
-      }
-
-      break;
-    } else if (input[pointer] === p(":")) {
-      ++pointer;
-      if (input[pointer] === undefined) {
-        return failure;
-      }
-    } else if (input[pointer] !== undefined) {
-      return failure;
-    }
-
-    address[pieceIndex] = value;
-    ++pieceIndex;
-  }
-
-  if (compress !== null) {
-    let swaps = pieceIndex - compress;
-    pieceIndex = 7;
-    while (pieceIndex !== 0 && swaps > 0) {
-      const temp = address[compress + swaps - 1];
-      address[compress + swaps - 1] = address[pieceIndex];
-      address[pieceIndex] = temp;
-      --pieceIndex;
-      --swaps;
-    }
-  } else if (compress === null && pieceIndex !== 8) {
-    return failure;
-  }
-
-  return address;
-}
-
-function serializeIPv6(address) {
-  let output = "";
-  const compress = findLongestZeroSequence(address);
-  let ignore0 = false;
-
-  for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {
-    if (ignore0 && address[pieceIndex] === 0) {
-      continue;
-    } else if (ignore0) {
-      ignore0 = false;
-    }
-
-    if (compress === pieceIndex) {
-      const separator = pieceIndex === 0 ? "::" : ":";
-      output += separator;
-      ignore0 = true;
-      continue;
-    }
-
-    output += address[pieceIndex].toString(16);
-
-    if (pieceIndex !== 7) {
-      output += ":";
-    }
-  }
-
-  return output;
-}
-
-function parseHost(input, isNotSpecialArg = false) {
-  if (input[0] === "[") {
-    if (input[input.length - 1] !== "]") {
-      return failure;
-    }
-
-    return parseIPv6(input.substring(1, input.length - 1));
-  }
-
-  if (isNotSpecialArg) {
-    return parseOpaqueHost(input);
-  }
-
-  const domain = utf8DecodeWithoutBOM(percentDecodeString(input));
-  const asciiDomain = domainToASCII(domain);
-  if (asciiDomain === failure) {
-    return failure;
-  }
-
-  if (containsForbiddenDomainCodePoint(asciiDomain)) {
-    return failure;
-  }
-
-  if (endsInANumber(asciiDomain)) {
-    return parseIPv4(asciiDomain);
-  }
-
-  return asciiDomain;
-}
-
-function endsInANumber(input) {
-  const parts = input.split(".");
-  if (parts[parts.length - 1] === "") {
-    if (parts.length === 1) {
-      return false;
-    }
-    parts.pop();
-  }
-
-  const last = parts[parts.length - 1];
-  if (parseIPv4Number(last) !== failure) {
-    return true;
-  }
-
-  if (/^[0-9]+$/u.test(last)) {
-    return true;
-  }
-
-  return false;
-}
-
-function parseOpaqueHost(input) {
-  if (containsForbiddenHostCodePoint(input)) {
-    return failure;
-  }
-
-  return utf8PercentEncodeString(input, isC0ControlPercentEncode);
-}
-
-function findLongestZeroSequence(arr) {
-  let maxIdx = null;
-  let maxLen = 1; // only find elements > 1
-  let currStart = null;
-  let currLen = 0;
-
-  for (let i = 0; i < arr.length; ++i) {
-    if (arr[i] !== 0) {
-      if (currLen > maxLen) {
-        maxIdx = currStart;
-        maxLen = currLen;
-      }
-
-      currStart = null;
-      currLen = 0;
-    } else {
-      if (currStart === null) {
-        currStart = i;
-      }
-      ++currLen;
-    }
-  }
-
-  // if trailing zeros
-  if (currLen > maxLen) {
-    return currStart;
-  }
-
-  return maxIdx;
-}
-
-function serializeHost(host) {
-  if (typeof host === "number") {
-    return serializeIPv4(host);
-  }
-
-  // IPv6 serializer
-  if (host instanceof Array) {
-    return `[${serializeIPv6(host)}]`;
-  }
-
-  return host;
-}
-
-function domainToASCII(domain, beStrict = false) {
-  const result = tr46.toASCII(domain, {
-    checkBidi: true,
-    checkHyphens: false,
-    checkJoiners: true,
-    useSTD3ASCIIRules: beStrict,
-    verifyDNSLength: beStrict
-  });
-  if (result === null || result === "") {
-    return failure;
-  }
-  return result;
-}
-
-function trimControlChars(url) {
-  return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/ug, "");
-}
-
-function trimTabAndNewline(url) {
-  return url.replace(/\u0009|\u000A|\u000D/ug, "");
-}
-
-function shortenPath(url) {
-  const { path } = url;
-  if (path.length === 0) {
-    return;
-  }
-  if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {
-    return;
-  }
-
-  path.pop();
-}
-
-function includesCredentials(url) {
-  return url.username !== "" || url.password !== "";
-}
-
-function cannotHaveAUsernamePasswordPort(url) {
-  return url.host === null || url.host === "" || url.scheme === "file";
-}
-
-function hasAnOpaquePath(url) {
-  return typeof url.path === "string";
-}
-
-function isNormalizedWindowsDriveLetter(string) {
-  return /^[A-Za-z]:$/u.test(string);
-}
-
-function URLStateMachine(input, base, encodingOverride, url, stateOverride) {
-  this.pointer = 0;
-  this.input = input;
-  this.base = base || null;
-  this.encodingOverride = encodingOverride || "utf-8";
-  this.stateOverride = stateOverride;
-  this.url = url;
-  this.failure = false;
-  this.parseError = false;
-
-  if (!this.url) {
-    this.url = {
-      scheme: "",
-      username: "",
-      password: "",
-      host: null,
-      port: null,
-      path: [],
-      query: null,
-      fragment: null
-    };
-
-    const res = trimControlChars(this.input);
-    if (res !== this.input) {
-      this.parseError = true;
-    }
-    this.input = res;
-  }
-
-  const res = trimTabAndNewline(this.input);
-  if (res !== this.input) {
-    this.parseError = true;
-  }
-  this.input = res;
-
-  this.state = stateOverride || "scheme start";
-
-  this.buffer = "";
-  this.atFlag = false;
-  this.arrFlag = false;
-  this.passwordTokenSeenFlag = false;
-
-  this.input = Array.from(this.input, c => c.codePointAt(0));
-
-  for (; this.pointer <= this.input.length; ++this.pointer) {
-    const c = this.input[this.pointer];
-    const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);
-
-    // exec state machine
-    const ret = this[`parse ${this.state}`](c, cStr);
-    if (!ret) {
-      break; // terminate algorithm
-    } else if (ret === failure) {
-      this.failure = true;
-      break;
-    }
-  }
-}
-
-URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) {
-  if (infra.isASCIIAlpha(c)) {
-    this.buffer += cStr.toLowerCase();
-    this.state = "scheme";
-  } else if (!this.stateOverride) {
-    this.state = "no scheme";
-    --this.pointer;
-  } else {
-    this.parseError = true;
-    return failure;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) {
-  if (infra.isASCIIAlphanumeric(c) || c === p("+") || c === p("-") || c === p(".")) {
-    this.buffer += cStr.toLowerCase();
-  } else if (c === p(":")) {
-    if (this.stateOverride) {
-      if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {
-        return false;
-      }
-
-      if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {
-        return false;
-      }
-
-      if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") {
-        return false;
-      }
-
-      if (this.url.scheme === "file" && this.url.host === "") {
-        return false;
-      }
-    }
-    this.url.scheme = this.buffer;
-    if (this.stateOverride) {
-      if (this.url.port === defaultPort(this.url.scheme)) {
-        this.url.port = null;
-      }
-      return false;
-    }
-    this.buffer = "";
-    if (this.url.scheme === "file") {
-      if (this.input[this.pointer + 1] !== p("/") || this.input[this.pointer + 2] !== p("/")) {
-        this.parseError = true;
-      }
-      this.state = "file";
-    } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {
-      this.state = "special relative or authority";
-    } else if (isSpecial(this.url)) {
-      this.state = "special authority slashes";
-    } else if (this.input[this.pointer + 1] === p("/")) {
-      this.state = "path or authority";
-      ++this.pointer;
-    } else {
-      this.url.path = "";
-      this.state = "opaque path";
-    }
-  } else if (!this.stateOverride) {
-    this.buffer = "";
-    this.state = "no scheme";
-    this.pointer = -1;
-  } else {
-    this.parseError = true;
-    return failure;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) {
-  if (this.base === null || (hasAnOpaquePath(this.base) && c !== p("#"))) {
-    return failure;
-  } else if (hasAnOpaquePath(this.base) && c === p("#")) {
-    this.url.scheme = this.base.scheme;
-    this.url.path = this.base.path;
-    this.url.query = this.base.query;
-    this.url.fragment = "";
-    this.state = "fragment";
-  } else if (this.base.scheme === "file") {
-    this.state = "file";
-    --this.pointer;
-  } else {
-    this.state = "relative";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) {
-  if (c === p("/") && this.input[this.pointer + 1] === p("/")) {
-    this.state = "special authority ignore slashes";
-    ++this.pointer;
-  } else {
-    this.parseError = true;
-    this.state = "relative";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) {
-  if (c === p("/")) {
-    this.state = "authority";
-  } else {
-    this.state = "path";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse relative"] = function parseRelative(c) {
-  this.url.scheme = this.base.scheme;
-  if (c === p("/")) {
-    this.state = "relative slash";
-  } else if (isSpecial(this.url) && c === p("\\")) {
-    this.parseError = true;
-    this.state = "relative slash";
-  } else {
-    this.url.username = this.base.username;
-    this.url.password = this.base.password;
-    this.url.host = this.base.host;
-    this.url.port = this.base.port;
-    this.url.path = this.base.path.slice();
-    this.url.query = this.base.query;
-    if (c === p("?")) {
-      this.url.query = "";
-      this.state = "query";
-    } else if (c === p("#")) {
-      this.url.fragment = "";
-      this.state = "fragment";
-    } else if (!isNaN(c)) {
-      this.url.query = null;
-      this.url.path.pop();
-      this.state = "path";
-      --this.pointer;
-    }
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) {
-  if (isSpecial(this.url) && (c === p("/") || c === p("\\"))) {
-    if (c === p("\\")) {
-      this.parseError = true;
-    }
-    this.state = "special authority ignore slashes";
-  } else if (c === p("/")) {
-    this.state = "authority";
-  } else {
-    this.url.username = this.base.username;
-    this.url.password = this.base.password;
-    this.url.host = this.base.host;
-    this.url.port = this.base.port;
-    this.state = "path";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) {
-  if (c === p("/") && this.input[this.pointer + 1] === p("/")) {
-    this.state = "special authority ignore slashes";
-    ++this.pointer;
-  } else {
-    this.parseError = true;
-    this.state = "special authority ignore slashes";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) {
-  if (c !== p("/") && c !== p("\\")) {
-    this.state = "authority";
-    --this.pointer;
-  } else {
-    this.parseError = true;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) {
-  if (c === p("@")) {
-    this.parseError = true;
-    if (this.atFlag) {
-      this.buffer = `%40${this.buffer}`;
-    }
-    this.atFlag = true;
-
-    // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars
-    const len = countSymbols(this.buffer);
-    for (let pointer = 0; pointer < len; ++pointer) {
-      const codePoint = this.buffer.codePointAt(pointer);
-
-      if (codePoint === p(":") && !this.passwordTokenSeenFlag) {
-        this.passwordTokenSeenFlag = true;
-        continue;
-      }
-      const encodedCodePoints = utf8PercentEncodeCodePoint(codePoint, isUserinfoPercentEncode);
-      if (this.passwordTokenSeenFlag) {
-        this.url.password += encodedCodePoints;
-      } else {
-        this.url.username += encodedCodePoints;
-      }
-    }
-    this.buffer = "";
-  } else if (isNaN(c) || c === p("/") || c === p("?") || c === p("#") ||
-             (isSpecial(this.url) && c === p("\\"))) {
-    if (this.atFlag && this.buffer === "") {
-      this.parseError = true;
-      return failure;
-    }
-    this.pointer -= countSymbols(this.buffer) + 1;
-    this.buffer = "";
-    this.state = "host";
-  } else {
-    this.buffer += cStr;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse hostname"] =
-URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) {
-  if (this.stateOverride && this.url.scheme === "file") {
-    --this.pointer;
-    this.state = "file host";
-  } else if (c === p(":") && !this.arrFlag) {
-    if (this.buffer === "") {
-      this.parseError = true;
-      return failure;
-    }
-
-    if (this.stateOverride === "hostname") {
-      return false;
-    }
-
-    const host = parseHost(this.buffer, isNotSpecial(this.url));
-    if (host === failure) {
-      return failure;
-    }
-
-    this.url.host = host;
-    this.buffer = "";
-    this.state = "port";
-  } else if (isNaN(c) || c === p("/") || c === p("?") || c === p("#") ||
-             (isSpecial(this.url) && c === p("\\"))) {
-    --this.pointer;
-    if (isSpecial(this.url) && this.buffer === "") {
-      this.parseError = true;
-      return failure;
-    } else if (this.stateOverride && this.buffer === "" &&
-               (includesCredentials(this.url) || this.url.port !== null)) {
-      this.parseError = true;
-      return false;
-    }
-
-    const host = parseHost(this.buffer, isNotSpecial(this.url));
-    if (host === failure) {
-      return failure;
-    }
-
-    this.url.host = host;
-    this.buffer = "";
-    this.state = "path start";
-    if (this.stateOverride) {
-      return false;
-    }
-  } else {
-    if (c === p("[")) {
-      this.arrFlag = true;
-    } else if (c === p("]")) {
-      this.arrFlag = false;
-    }
-    this.buffer += cStr;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) {
-  if (infra.isASCIIDigit(c)) {
-    this.buffer += cStr;
-  } else if (isNaN(c) || c === p("/") || c === p("?") || c === p("#") ||
-             (isSpecial(this.url) && c === p("\\")) ||
-             this.stateOverride) {
-    if (this.buffer !== "") {
-      const port = parseInt(this.buffer);
-      if (port > 2 ** 16 - 1) {
-        this.parseError = true;
-        return failure;
-      }
-      this.url.port = port === defaultPort(this.url.scheme) ? null : port;
-      this.buffer = "";
-    }
-    if (this.stateOverride) {
-      return false;
-    }
-    this.state = "path start";
-    --this.pointer;
-  } else {
-    this.parseError = true;
-    return failure;
-  }
-
-  return true;
-};
-
-const fileOtherwiseCodePoints = new Set([p("/"), p("\\"), p("?"), p("#")]);
-
-function startsWithWindowsDriveLetter(input, pointer) {
-  const length = input.length - pointer;
-  return length >= 2 &&
-    isWindowsDriveLetterCodePoints(input[pointer], input[pointer + 1]) &&
-    (length === 2 || fileOtherwiseCodePoints.has(input[pointer + 2]));
-}
-
-URLStateMachine.prototype["parse file"] = function parseFile(c) {
-  this.url.scheme = "file";
-  this.url.host = "";
-
-  if (c === p("/") || c === p("\\")) {
-    if (c === p("\\")) {
-      this.parseError = true;
-    }
-    this.state = "file slash";
-  } else if (this.base !== null && this.base.scheme === "file") {
-    this.url.host = this.base.host;
-    this.url.path = this.base.path.slice();
-    this.url.query = this.base.query;
-    if (c === p("?")) {
-      this.url.query = "";
-      this.state = "query";
-    } else if (c === p("#")) {
-      this.url.fragment = "";
-      this.state = "fragment";
-    } else if (!isNaN(c)) {
-      this.url.query = null;
-      if (!startsWithWindowsDriveLetter(this.input, this.pointer)) {
-        shortenPath(this.url);
-      } else {
-        this.parseError = true;
-        this.url.path = [];
-      }
-
-      this.state = "path";
-      --this.pointer;
-    }
-  } else {
-    this.state = "path";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) {
-  if (c === p("/") || c === p("\\")) {
-    if (c === p("\\")) {
-      this.parseError = true;
-    }
-    this.state = "file host";
-  } else {
-    if (this.base !== null && this.base.scheme === "file") {
-      if (!startsWithWindowsDriveLetter(this.input, this.pointer) &&
-          isNormalizedWindowsDriveLetterString(this.base.path[0])) {
-        this.url.path.push(this.base.path[0]);
-      }
-      this.url.host = this.base.host;
-    }
-    this.state = "path";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) {
-  if (isNaN(c) || c === p("/") || c === p("\\") || c === p("?") || c === p("#")) {
-    --this.pointer;
-    if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {
-      this.parseError = true;
-      this.state = "path";
-    } else if (this.buffer === "") {
-      this.url.host = "";
-      if (this.stateOverride) {
-        return false;
-      }
-      this.state = "path start";
-    } else {
-      let host = parseHost(this.buffer, isNotSpecial(this.url));
-      if (host === failure) {
-        return failure;
-      }
-      if (host === "localhost") {
-        host = "";
-      }
-      this.url.host = host;
-
-      if (this.stateOverride) {
-        return false;
-      }
-
-      this.buffer = "";
-      this.state = "path start";
-    }
-  } else {
-    this.buffer += cStr;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse path start"] = function parsePathStart(c) {
-  if (isSpecial(this.url)) {
-    if (c === p("\\")) {
-      this.parseError = true;
-    }
-    this.state = "path";
-
-    if (c !== p("/") && c !== p("\\")) {
-      --this.pointer;
-    }
-  } else if (!this.stateOverride && c === p("?")) {
-    this.url.query = "";
-    this.state = "query";
-  } else if (!this.stateOverride && c === p("#")) {
-    this.url.fragment = "";
-    this.state = "fragment";
-  } else if (c !== undefined) {
-    this.state = "path";
-    if (c !== p("/")) {
-      --this.pointer;
-    }
-  } else if (this.stateOverride && this.url.host === null) {
-    this.url.path.push("");
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse path"] = function parsePath(c) {
-  if (isNaN(c) || c === p("/") || (isSpecial(this.url) && c === p("\\")) ||
-      (!this.stateOverride && (c === p("?") || c === p("#")))) {
-    if (isSpecial(this.url) && c === p("\\")) {
-      this.parseError = true;
-    }
-
-    if (isDoubleDot(this.buffer)) {
-      shortenPath(this.url);
-      if (c !== p("/") && !(isSpecial(this.url) && c === p("\\"))) {
-        this.url.path.push("");
-      }
-    } else if (isSingleDot(this.buffer) && c !== p("/") &&
-               !(isSpecial(this.url) && c === p("\\"))) {
-      this.url.path.push("");
-    } else if (!isSingleDot(this.buffer)) {
-      if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {
-        this.buffer = `${this.buffer[0]}:`;
-      }
-      this.url.path.push(this.buffer);
-    }
-    this.buffer = "";
-    if (c === p("?")) {
-      this.url.query = "";
-      this.state = "query";
-    }
-    if (c === p("#")) {
-      this.url.fragment = "";
-      this.state = "fragment";
-    }
-  } else {
-    // TODO: If c is not a URL code point and not "%", parse error.
-
-    if (c === p("%") &&
-      (!infra.isASCIIHex(this.input[this.pointer + 1]) ||
-        !infra.isASCIIHex(this.input[this.pointer + 2]))) {
-      this.parseError = true;
-    }
-
-    this.buffer += utf8PercentEncodeCodePoint(c, isPathPercentEncode);
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse opaque path"] = function parseOpaquePath(c) {
-  if (c === p("?")) {
-    this.url.query = "";
-    this.state = "query";
-  } else if (c === p("#")) {
-    this.url.fragment = "";
-    this.state = "fragment";
-  } else {
-    // TODO: Add: not a URL code point
-    if (!isNaN(c) && c !== p("%")) {
-      this.parseError = true;
-    }
-
-    if (c === p("%") &&
-        (!infra.isASCIIHex(this.input[this.pointer + 1]) ||
-         !infra.isASCIIHex(this.input[this.pointer + 2]))) {
-      this.parseError = true;
-    }
-
-    if (!isNaN(c)) {
-      this.url.path += utf8PercentEncodeCodePoint(c, isC0ControlPercentEncode);
-    }
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) {
-  if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") {
-    this.encodingOverride = "utf-8";
-  }
-
-  if ((!this.stateOverride && c === p("#")) || isNaN(c)) {
-    const queryPercentEncodePredicate = isSpecial(this.url) ? isSpecialQueryPercentEncode : isQueryPercentEncode;
-    this.url.query += utf8PercentEncodeString(this.buffer, queryPercentEncodePredicate);
-
-    this.buffer = "";
-
-    if (c === p("#")) {
-      this.url.fragment = "";
-      this.state = "fragment";
-    }
-  } else if (!isNaN(c)) {
-    // TODO: If c is not a URL code point and not "%", parse error.
-
-    if (c === p("%") &&
-      (!infra.isASCIIHex(this.input[this.pointer + 1]) ||
-        !infra.isASCIIHex(this.input[this.pointer + 2]))) {
-      this.parseError = true;
-    }
-
-    this.buffer += cStr;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse fragment"] = function parseFragment(c) {
-  if (!isNaN(c)) {
-    // TODO: If c is not a URL code point and not "%", parse error.
-    if (c === p("%") &&
-      (!infra.isASCIIHex(this.input[this.pointer + 1]) ||
-        !infra.isASCIIHex(this.input[this.pointer + 2]))) {
-      this.parseError = true;
-    }
-
-    this.url.fragment += utf8PercentEncodeCodePoint(c, isFragmentPercentEncode);
-  }
-
-  return true;
-};
-
-function serializeURL(url, excludeFragment) {
-  let output = `${url.scheme}:`;
-  if (url.host !== null) {
-    output += "//";
-
-    if (url.username !== "" || url.password !== "") {
-      output += url.username;
-      if (url.password !== "") {
-        output += `:${url.password}`;
-      }
-      output += "@";
-    }
-
-    output += serializeHost(url.host);
-
-    if (url.port !== null) {
-      output += `:${url.port}`;
-    }
-  }
-
-  if (url.host === null && !hasAnOpaquePath(url) && url.path.length > 1 && url.path[0] === "") {
-    output += "/.";
-  }
-  output += serializePath(url);
-
-  if (url.query !== null) {
-    output += `?${url.query}`;
-  }
-
-  if (!excludeFragment && url.fragment !== null) {
-    output += `#${url.fragment}`;
-  }
-
-  return output;
-}
-
-function serializeOrigin(tuple) {
-  let result = `${tuple.scheme}://`;
-  result += serializeHost(tuple.host);
-
-  if (tuple.port !== null) {
-    result += `:${tuple.port}`;
-  }
-
-  return result;
-}
-
-function serializePath(url) {
-  if (hasAnOpaquePath(url)) {
-    return url.path;
-  }
-
-  let output = "";
-  for (const segment of url.path) {
-    output += `/${segment}`;
-  }
-  return output;
-}
-
-module.exports.serializeURL = serializeURL;
-
-module.exports.serializePath = serializePath;
-
-module.exports.serializeURLOrigin = function (url) {
-  // https://url.spec.whatwg.org/#concept-url-origin
-  switch (url.scheme) {
-    case "blob": {
-      const pathURL = module.exports.parseURL(serializePath(url));
-      if (pathURL === null) {
-        return "null";
-      }
-      if (pathURL.scheme !== "http" && pathURL.scheme !== "https") {
-        return "null";
-      }
-      return module.exports.serializeURLOrigin(pathURL);
-    }
-    case "ftp":
-    case "http":
-    case "https":
-    case "ws":
-    case "wss":
-      return serializeOrigin({
-        scheme: url.scheme,
-        host: url.host,
-        port: url.port
-      });
-    case "file":
-      // The spec says:
-      // > Unfortunate as it is, this is left as an exercise to the reader. When in doubt, return a new opaque origin.
-      // Browsers tested so far:
-      // - Chrome says "file://", but treats file: URLs as cross-origin for most (all?) purposes; see e.g.
-      //   https://bugs.chromium.org/p/chromium/issues/detail?id=37586
-      // - Firefox says "null", but treats file: URLs as same-origin sometimes based on directory stuff; see
-      //   https://developer.mozilla.org/en-US/docs/Archive/Misc_top_level/Same-origin_policy_for_file:_URIs
-      return "null";
-    default:
-      // serializing an opaque origin returns "null"
-      return "null";
-  }
-};
-
-module.exports.basicURLParse = function (input, options) {
-  if (options === undefined) {
-    options = {};
-  }
-
-  const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);
-  if (usm.failure) {
-    return null;
-  }
-
-  return usm.url;
-};
-
-module.exports.setTheUsername = function (url, username) {
-  url.username = utf8PercentEncodeString(username, isUserinfoPercentEncode);
-};
-
-module.exports.setThePassword = function (url, password) {
-  url.password = utf8PercentEncodeString(password, isUserinfoPercentEncode);
-};
-
-module.exports.serializeHost = serializeHost;
-
-module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;
-
-module.exports.hasAnOpaquePath = hasAnOpaquePath;
-
-module.exports.serializeInteger = function (integer) {
-  return String(integer);
-};
-
-module.exports.parseURL = function (input, options) {
-  if (options === undefined) {
-    options = {};
-  }
-
-  // We don't handle blobs, so this just delegates:
-  return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });
-};
diff --git a/server/data-import/node_modules/whatwg-url/lib/urlencoded.js b/server/data-import/node_modules/whatwg-url/lib/urlencoded.js
deleted file mode 100644
index e72306374282f8ec6e9b34848945f24bf2ccc3d7..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/lib/urlencoded.js
+++ /dev/null
@@ -1,106 +0,0 @@
-"use strict";
-const { utf8Encode, utf8DecodeWithoutBOM } = require("./encoding");
-const { percentDecodeBytes, utf8PercentEncodeString, isURLEncodedPercentEncode } = require("./percent-encoding");
-
-function p(char) {
-  return char.codePointAt(0);
-}
-
-// https://url.spec.whatwg.org/#concept-urlencoded-parser
-function parseUrlencoded(input) {
-  const sequences = strictlySplitByteSequence(input, p("&"));
-  const output = [];
-  for (const bytes of sequences) {
-    if (bytes.length === 0) {
-      continue;
-    }
-
-    let name, value;
-    const indexOfEqual = bytes.indexOf(p("="));
-
-    if (indexOfEqual >= 0) {
-      name = bytes.slice(0, indexOfEqual);
-      value = bytes.slice(indexOfEqual + 1);
-    } else {
-      name = bytes;
-      value = new Uint8Array(0);
-    }
-
-    name = replaceByteInByteSequence(name, 0x2B, 0x20);
-    value = replaceByteInByteSequence(value, 0x2B, 0x20);
-
-    const nameString = utf8DecodeWithoutBOM(percentDecodeBytes(name));
-    const valueString = utf8DecodeWithoutBOM(percentDecodeBytes(value));
-
-    output.push([nameString, valueString]);
-  }
-  return output;
-}
-
-// https://url.spec.whatwg.org/#concept-urlencoded-string-parser
-function parseUrlencodedString(input) {
-  return parseUrlencoded(utf8Encode(input));
-}
-
-// https://url.spec.whatwg.org/#concept-urlencoded-serializer
-function serializeUrlencoded(tuples, encodingOverride = undefined) {
-  let encoding = "utf-8";
-  if (encodingOverride !== undefined) {
-    // TODO "get the output encoding", i.e. handle encoding labels vs. names.
-    encoding = encodingOverride;
-  }
-
-  let output = "";
-  for (const [i, tuple] of tuples.entries()) {
-    // TODO: handle encoding override
-
-    const name = utf8PercentEncodeString(tuple[0], isURLEncodedPercentEncode, true);
-
-    let value = tuple[1];
-    if (tuple.length > 2 && tuple[2] !== undefined) {
-      if (tuple[2] === "hidden" && name === "_charset_") {
-        value = encoding;
-      } else if (tuple[2] === "file") {
-        // value is a File object
-        value = value.name;
-      }
-    }
-
-    value = utf8PercentEncodeString(value, isURLEncodedPercentEncode, true);
-
-    if (i !== 0) {
-      output += "&";
-    }
-    output += `${name}=${value}`;
-  }
-  return output;
-}
-
-function strictlySplitByteSequence(buf, cp) {
-  const list = [];
-  let last = 0;
-  let i = buf.indexOf(cp);
-  while (i >= 0) {
-    list.push(buf.slice(last, i));
-    last = i + 1;
-    i = buf.indexOf(cp, last);
-  }
-  if (last !== buf.length) {
-    list.push(buf.slice(last));
-  }
-  return list;
-}
-
-function replaceByteInByteSequence(buf, from, to) {
-  let i = buf.indexOf(from);
-  while (i >= 0) {
-    buf[i] = to;
-    i = buf.indexOf(from, i + 1);
-  }
-  return buf;
-}
-
-module.exports = {
-  parseUrlencodedString,
-  serializeUrlencoded
-};
diff --git a/server/data-import/node_modules/whatwg-url/lib/utils.js b/server/data-import/node_modules/whatwg-url/lib/utils.js
deleted file mode 100644
index 3af17706fd62a069a0dac854c4f50839c358fa0d..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/lib/utils.js
+++ /dev/null
@@ -1,190 +0,0 @@
-"use strict";
-
-// Returns "Type(value) is Object" in ES terminology.
-function isObject(value) {
-  return (typeof value === "object" && value !== null) || typeof value === "function";
-}
-
-const hasOwn = Function.prototype.call.bind(Object.prototype.hasOwnProperty);
-
-// Like `Object.assign`, but using `[[GetOwnProperty]]` and `[[DefineOwnProperty]]`
-// instead of `[[Get]]` and `[[Set]]` and only allowing objects
-function define(target, source) {
-  for (const key of Reflect.ownKeys(source)) {
-    const descriptor = Reflect.getOwnPropertyDescriptor(source, key);
-    if (descriptor && !Reflect.defineProperty(target, key, descriptor)) {
-      throw new TypeError(`Cannot redefine property: ${String(key)}`);
-    }
-  }
-}
-
-function newObjectInRealm(globalObject, object) {
-  const ctorRegistry = initCtorRegistry(globalObject);
-  return Object.defineProperties(
-    Object.create(ctorRegistry["%Object.prototype%"]),
-    Object.getOwnPropertyDescriptors(object)
-  );
-}
-
-const wrapperSymbol = Symbol("wrapper");
-const implSymbol = Symbol("impl");
-const sameObjectCaches = Symbol("SameObject caches");
-const ctorRegistrySymbol = Symbol.for("[webidl2js] constructor registry");
-
-const AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () {}).prototype);
-
-function initCtorRegistry(globalObject) {
-  if (hasOwn(globalObject, ctorRegistrySymbol)) {
-    return globalObject[ctorRegistrySymbol];
-  }
-
-  const ctorRegistry = Object.create(null);
-
-  // In addition to registering all the WebIDL2JS-generated types in the constructor registry,
-  // we also register a few intrinsics that we make use of in generated code, since they are not
-  // easy to grab from the globalObject variable.
-  ctorRegistry["%Object.prototype%"] = globalObject.Object.prototype;
-  ctorRegistry["%IteratorPrototype%"] = Object.getPrototypeOf(
-    Object.getPrototypeOf(new globalObject.Array()[Symbol.iterator]())
-  );
-
-  try {
-    ctorRegistry["%AsyncIteratorPrototype%"] = Object.getPrototypeOf(
-      Object.getPrototypeOf(
-        globalObject.eval("(async function* () {})").prototype
-      )
-    );
-  } catch {
-    ctorRegistry["%AsyncIteratorPrototype%"] = AsyncIteratorPrototype;
-  }
-
-  globalObject[ctorRegistrySymbol] = ctorRegistry;
-  return ctorRegistry;
-}
-
-function getSameObject(wrapper, prop, creator) {
-  if (!wrapper[sameObjectCaches]) {
-    wrapper[sameObjectCaches] = Object.create(null);
-  }
-
-  if (prop in wrapper[sameObjectCaches]) {
-    return wrapper[sameObjectCaches][prop];
-  }
-
-  wrapper[sameObjectCaches][prop] = creator();
-  return wrapper[sameObjectCaches][prop];
-}
-
-function wrapperForImpl(impl) {
-  return impl ? impl[wrapperSymbol] : null;
-}
-
-function implForWrapper(wrapper) {
-  return wrapper ? wrapper[implSymbol] : null;
-}
-
-function tryWrapperForImpl(impl) {
-  const wrapper = wrapperForImpl(impl);
-  return wrapper ? wrapper : impl;
-}
-
-function tryImplForWrapper(wrapper) {
-  const impl = implForWrapper(wrapper);
-  return impl ? impl : wrapper;
-}
-
-const iterInternalSymbol = Symbol("internal");
-
-function isArrayIndexPropName(P) {
-  if (typeof P !== "string") {
-    return false;
-  }
-  const i = P >>> 0;
-  if (i === 2 ** 32 - 1) {
-    return false;
-  }
-  const s = `${i}`;
-  if (P !== s) {
-    return false;
-  }
-  return true;
-}
-
-const byteLengthGetter =
-    Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength").get;
-function isArrayBuffer(value) {
-  try {
-    byteLengthGetter.call(value);
-    return true;
-  } catch (e) {
-    return false;
-  }
-}
-
-function iteratorResult([key, value], kind) {
-  let result;
-  switch (kind) {
-    case "key":
-      result = key;
-      break;
-    case "value":
-      result = value;
-      break;
-    case "key+value":
-      result = [key, value];
-      break;
-  }
-  return { value: result, done: false };
-}
-
-const supportsPropertyIndex = Symbol("supports property index");
-const supportedPropertyIndices = Symbol("supported property indices");
-const supportsPropertyName = Symbol("supports property name");
-const supportedPropertyNames = Symbol("supported property names");
-const indexedGet = Symbol("indexed property get");
-const indexedSetNew = Symbol("indexed property set new");
-const indexedSetExisting = Symbol("indexed property set existing");
-const namedGet = Symbol("named property get");
-const namedSetNew = Symbol("named property set new");
-const namedSetExisting = Symbol("named property set existing");
-const namedDelete = Symbol("named property delete");
-
-const asyncIteratorNext = Symbol("async iterator get the next iteration result");
-const asyncIteratorReturn = Symbol("async iterator return steps");
-const asyncIteratorInit = Symbol("async iterator initialization steps");
-const asyncIteratorEOI = Symbol("async iterator end of iteration");
-
-module.exports = exports = {
-  isObject,
-  hasOwn,
-  define,
-  newObjectInRealm,
-  wrapperSymbol,
-  implSymbol,
-  getSameObject,
-  ctorRegistrySymbol,
-  initCtorRegistry,
-  wrapperForImpl,
-  implForWrapper,
-  tryWrapperForImpl,
-  tryImplForWrapper,
-  iterInternalSymbol,
-  isArrayBuffer,
-  isArrayIndexPropName,
-  supportsPropertyIndex,
-  supportedPropertyIndices,
-  supportsPropertyName,
-  supportedPropertyNames,
-  indexedGet,
-  indexedSetNew,
-  indexedSetExisting,
-  namedGet,
-  namedSetNew,
-  namedSetExisting,
-  namedDelete,
-  asyncIteratorNext,
-  asyncIteratorReturn,
-  asyncIteratorInit,
-  asyncIteratorEOI,
-  iteratorResult
-};
diff --git a/server/data-import/node_modules/whatwg-url/package.json b/server/data-import/node_modules/whatwg-url/package.json
deleted file mode 100644
index eb02627e7648b07bcc34bd8c9b0cc21cba2ec162..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/package.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "name": "whatwg-url",
-  "version": "13.0.0",
-  "description": "An implementation of the WHATWG URL Standard's URL API and parsing machinery",
-  "main": "index.js",
-  "files": [
-    "index.js",
-    "webidl2js-wrapper.js",
-    "lib/*.js"
-  ],
-  "author": "Sebastian Mayr <github@smayr.name>",
-  "license": "MIT",
-  "repository": "jsdom/whatwg-url",
-  "dependencies": {
-    "tr46": "^4.1.1",
-    "webidl-conversions": "^7.0.0"
-  },
-  "devDependencies": {
-    "@domenic/eslint-config": "^3.0.0",
-    "benchmark": "^2.1.4",
-    "domexception": "^4.0.0",
-    "esbuild": "^0.17.19",
-    "eslint": "^8.41.0",
-    "jest": "^29.5.0",
-    "minipass-fetch": "^3.0.3",
-    "webidl2js": "^17.1.0"
-  },
-  "engines": {
-    "node": ">=16"
-  },
-  "scripts": {
-    "coverage": "jest --coverage",
-    "lint": "eslint .",
-    "prepare": "node scripts/transform.js",
-    "pretest": "node scripts/get-latest-platform-tests.js && node scripts/transform.js",
-    "build-live-viewer": "esbuild --bundle --format=esm --sourcemap --outfile=live-viewer/whatwg-url.mjs index.js",
-    "test": "jest"
-  },
-  "jest": {
-    "collectCoverageFrom": [
-      "lib/**/*.js",
-      "!lib/utils.js"
-    ],
-    "coverageDirectory": "coverage",
-    "coverageReporters": [
-      "lcov",
-      "text-summary"
-    ],
-    "testEnvironment": "node",
-    "testMatch": [
-      "<rootDir>/test/**/*.js"
-    ],
-    "testPathIgnorePatterns": [
-      "^<rootDir>/test/testharness.js$",
-      "^<rootDir>/test/web-platform-tests/"
-    ]
-  }
-}
diff --git a/server/data-import/node_modules/whatwg-url/webidl2js-wrapper.js b/server/data-import/node_modules/whatwg-url/webidl2js-wrapper.js
deleted file mode 100644
index b731ace5f49f0afd309c120d6410f7dc2c4aeb60..0000000000000000000000000000000000000000
--- a/server/data-import/node_modules/whatwg-url/webidl2js-wrapper.js
+++ /dev/null
@@ -1,7 +0,0 @@
-"use strict";
-
-const URL = require("./lib/URL");
-const URLSearchParams = require("./lib/URLSearchParams");
-
-exports.URL = URL;
-exports.URLSearchParams = URLSearchParams;
diff --git a/server/data-import/data/.DS_Store b/server/data/.DS_Store
similarity index 100%
rename from server/data-import/data/.DS_Store
rename to server/data/.DS_Store
diff --git a/server/data/actorinfo.json b/server/data/actorinfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..046142c669782904e11814255846713db6472594
--- /dev/null
+++ b/server/data/actorinfo.json
@@ -0,0 +1 @@
+{"version":"2024-02-13","curators":"Katerina Vrotsou, Nico","data_source":"https://www.kaggle.com/datasets/yondu23/actor-and-actresses-information","data":[{"_id":"nm3485845","name":"Adam Driver","gender":"M","nationality":"American","birthyear":1983,"age":40},{"_id":"nm0010734","name":"Amy Adams","gender":"F","nationality":"American","birthyear":1974,"age":49},{"_id":"nm7363531","name":"Andra Day","gender":"F","nationality":"American","birthyear":1984,"age":39},{"_id":"nm1940449","name":"Andrew Garfield","gender":"M","nationality":"English","birthyear":1983,"age":40},{"_id":"nm0000164","name":"Anthony Hopkins","gender":"M","nationality":"Welsh","birthyear":1937,"age":86},{"_id":"nm0000104","name":"Antonio Banderas","gender":"M","nationality":"Spanish","birthyear":1960,"age":63},{"_id":"nm1212722","name":"Benedict Cumberbatch","gender":"M","nationality":"English","birthyear":1976,"age":47},{"_id":"nm0177896","name":"Bradley Cooper","gender":"M","nationality":"American","birthyear":1974,"age":49},{"_id":"nm0488953","name":"Brie Larson","gender":"F","nationality":"American","birthyear":1989,"age":34},{"_id":"nm0001136","name":"Bruce Dern","gender":"M","nationality":"American","birthyear":1936,"age":87},{"_id":"nm0186505","name":"Bryan Cranston","gender":"M","nationality":"American","birthyear":1956,"age":67},{"_id":"nm1659547","name":"Carey Mulligan","gender":"F","nationality":"English","birthyear":1985,"age":38},{"_id":"nm0000729","name":"Casey Affleck","gender":"M","nationality":"American","birthyear":1975,"age":48},{"_id":"nm0000949","name":"Cate Blanchett","gender":"F","nationality":"Australian","birthyear":1969,"age":54},{"_id":"nm0000234","name":"Charlize Theron","gender":"F","nationality":"South African","birthyear":1975,"age":48},{"_id":"nm0001648","name":"Charlotte Rampling","gender":"F","nationality":"English","birthyear":1946,"age":77},{"_id":"nm0252230","name":"Chiwetel Ejiofor","gender":"M","nationality":"English","birthyear":1977,"age":46},{"_id":"nm0000288","name":"Christian Bale","gender":"M","nationality":"Welsh","birthyear":1974,"age":49},{"_id":"nm7248827","name":"Cynthia Erivo","gender":"F","nationality":"English","birthyear":1986,"age":37},{"_id":"nm0000358","name":"Daniel Day-Lewis","gender":"M","nationality":"English","birthyear":1957,"age":66},{"_id":"nm2257207","name":"Daniel Kaluuya","gender":"M","nationality":"English","birthyear":1989,"age":34},{"_id":"nm0000243","name":"Denzel Washington","gender":"M","nationality":"American","birthyear":1954,"age":69},{"_id":"nm1519666","name":"Eddie Redmayne","gender":"M","nationality":"English","birthyear":1981,"age":42},{"_id":"nm1297015","name":"Emma Stone","gender":"F","nationality":"American","birthyear":1988,"age":35},{"_id":"nm0428065","name":"Felicity Jones","gender":"F","nationality":"English","birthyear":1983,"age":40},{"_id":"nm0000531","name":"Frances McDormand","gender":"F","nationality":"American","birthyear":1957,"age":66},{"_id":"nm0000198","name":"Gary Oldman","gender":"M","nationality":"English","birthyear":1958,"age":65},{"_id":"nm0000335","name":"Glenn Close","gender":"F","nationality":"American","birthyear":1946,"age":77},{"_id":"nm0413168","name":"Hugh Jackman","gender":"M","nationality":"Australian","birthyear":1968,"age":55},{"_id":"nm0001376","name":"Isabelle Huppert","gender":"F","nationality":"French","birthyear":1952,"age":71},{"_id":"nm2225369","name":"Jennifer Lawrence","gender":"F","nationality":"American","birthyear":1990,"age":33},{"_id":"nm0001618","name":"Joaquin Phoenix","gender":"M","nationality":"American","birthyear":1974,"age":49},{"_id":"nm0000596","name":"Jonathan Pryce","gender":"M","nationality":"Welsh","birthyear":1947,"age":76},{"_id":"nm0001132","name":"Judi Dench","gender":"F","nationality":"British","birthyear":1934,"age":89},{"_id":"nm0000194","name":"Julianne Moore","gender":"F","nationality":"American","birthyear":1960,"age":63},{"_id":"nm3078932","name":"Lady Gaga","gender":"F","nationality":"American","birthyear":1986,"age":37},{"_id":"nm0000138","name":"Leonardo DiCaprio","gender":"M","nationality":"American","birthyear":1974,"age":49},{"_id":"nm3053338","name":"Margot Robbie","gender":"F","nationality":"Australian","birthyear":1990,"age":33},{"_id":"nm0182839","name":"Marion Cotillard","gender":"F","nationality":"French","birthyear":1975,"age":48},{"_id":"nm0000354","name":"Matt Damon","gender":"M","nationality":"American","birthyear":1970,"age":53},{"_id":"nm0000190","name":"Matthew McConaughey","gender":"M","nationality":"American","birthyear":1969,"age":54},{"_id":"nm0565250","name":"Melissa McCarthy","gender":"F","nationality":"American","birthyear":1970,"age":53},{"_id":"nm0000658","name":"Meryl Streep","gender":"F","nationality":"American","birthyear":1949,"age":74},{"_id":"nm1055413","name":"Michael Fassbender","gender":"M","nationality":"Irish-German","birthyear":1977,"age":46},{"_id":"nm0000474","name":"Michael Keaton","gender":"M","nationality":"American","birthyear":1951,"age":72},{"_id":"nm0000204","name":"Natalie Portman","gender":"F","nationality":"Israeli-American","birthyear":1981,"age":42},{"_id":"nm1469236","name":"Olivia Colman","gender":"F","nationality":"British","birthyear":1974,"age":49},{"_id":"nm1785339","name":"Rami Malek","gender":"M","nationality":"American","birthyear":1981,"age":42},{"_id":"nm0000702","name":"Reese Witherspoon","gender":"F","nationality":"American","birthyear":1975,"age":48},{"_id":"nm0000250","name":"Renée Zellweger","gender":"F","nationality":"American","birthyear":1969,"age":54},{"_id":"nm1981893","name":"Riz Ahmed","gender":"M","nationality":"British","birthyear":1982,"age":41},{"_id":"nm0683253","name":"Rosamund Pike","gender":"F","nationality":"British","birthyear":1978,"age":45},{"_id":"nm1550948","name":"Ruth Negga","gender":"F","nationality":"Ethiopian","birthyear":1981,"age":42},{"_id":"nm0331516","name":"Ryan Gosling","gender":"M","nationality":"Canadian","birthyear":1980,"age":43},{"_id":"nm1020089","name":"Sally Hawkins","gender":"F","nationality":"British","birthyear":1976,"age":47},{"_id":"nm0000113","name":"Sandra Bullock","gender":"F","nationality":"American","birthyear":1964,"age":59},{"_id":"nm1519680","name":"Saoirse Ronan","gender":"F","nationality":"Irish","birthyear":1994,"age":29},{"_id":"nm0424060","name":"Scarlett Johansson","gender":"F","nationality":"American","birthyear":1984,"age":39},{"_id":"nm0136797","name":"Steve Carell","gender":"M","nationality":"American","birthyear":1962,"age":61},{"_id":"nm3081796","name":"Steven Yeun","gender":"M","nationality":"South Korean","birthyear":1983,"age":40},{"_id":"nm3154303","name":"Timothée Chalamet","gender":"M","nationality":"American","birthyear":1995,"age":28},{"_id":"nm3948952","name":"Vanessa Kirby","gender":"F","nationality":"British","birthyear":1988,"age":35},{"_id":"nm0001557","name":"Viggo Mortensen","gender":"M","nationality":"American","birthyear":1958,"age":65},{"_id":"nm0205626","name":"Viola Davis","gender":"F","nationality":"American","birthyear":1965,"age":58},{"_id":"nm0000353","name":"Willem Dafoe","gender":"M","nationality":"American","birthyear":1955,"age":68},{"_id":"nm0592135","name":"Lin-Manuel Miranda","gender":"M","nationality":"American","birthyear":1979,"age":44},{"_id":"nm1421814","name":"Suriya","gender":"M","nationality":"Indian","birthyear":1975,"age":48},{"_id":"nm1886602","name":"Miles Teller","gender":"M","nationality":"American","birthyear":1986,"age":37},{"_id":"nm0865918","name":"Éric Toledano","gender":"M","nationality":"French","birthyear":1971,"age":52},{"_id":"nm9862858","name":"Zain Al Rafeea","gender":"M","nationality":"Syrian","birthyear":2004,"age":19},{"_id":"nm1126340","name":"Ryûnosuke Kamiki","gender":"M","nationality":"Japanese","birthyear":1993,"age":30},{"_id":"nm0451148","name":"Aamir Khan","gender":"M","nationality":"Indian","birthyear":1964,"age":59},{"_id":"nm0709056","name":"Peter Ramsey","gender":"M","nationality":"American","birthyear":1962,"age":61},{"_id":"nm0751648","name":"Joe Russo","gender":"M","nationality":"American","birthyear":1971,"age":52},{"_id":"nm2937122","name":"Adrian Molina","gender":"M","nationality":"American","birthyear":1985,"age":38},{"_id":"nm0004937","name":"Jamie Foxx","gender":"M","nationality":"American","birthyear":1967,"age":56},{"_id":"nm1244760","name":"Amole Gupte","gender":"M","nationality":"Indian","birthyear":1975,"age":48},{"_id":"nm0123785","name":"Ben Burtt","gender":"M","nationality":"American","birthyear":1948,"age":75},{"_id":"nm2835616","name":"Dean-Charles Chapman","gender":"M","nationality":"English","birthyear":1997,"age":26},{"_id":"nm1628153","name":"Anand Gandhi","gender":"M","nationality":"Indian","birthyear":1981,"age":42},{"_id":"nm4731677","name":"Ayushmann Khurrana","gender":"M","nationality":"Indian","birthyear":1984,"age":39},{"_id":"nm0482320","name":"Mohanlal","gender":"M","nationality":"Indian","birthyear":1960,"age":63},{"_id":"nm0586568","name":"Mads Mikkelsen","gender":"M","nationality":"Danish","birthyear":1966,"age":57},{"_id":"nm1818216","name":"Payman Maadi","gender":"M","nationality":"Iranian","birthyear":1971,"age":52},{"_id":"nm0044073","name":"Lubna Azabal","gender":"F","nationality":"Belgian","birthyear":1971,"age":52},{"_id":"nm0000093","name":"Brad Pitt","gender":"M","nationality":"American","birthyear":1964,"age":59},{"_id":"nm3818286","name":"Sushant Singh Rajput","gender":"M","nationality":"Indian","birthyear":1988,"age":35},{"_id":"nm5817249","name":"Vicky Kaushal","gender":"F","nationality":"Indian","birthyear":1989,"age":34},{"_id":"nm5232139","name":"Yash","gender":"M","nationality":"Indian","birthyear":1987,"age":36},{"_id":"nm0451234","name":"Irrfan Khan","gender":"M","nationality":"Indian","birthyear":1968,"age":55},{"_id":"nm1659141","name":"Prabhas","gender":"M","nationality":"Indian","birthyear":1980,"age":43},{"_id":"nm3582089","name":"Carlos Martínez López","gender":"M","nationality":"Spanish","birthyear":1991,"age":32},{"_id":"nm0222426","name":"Ajay Devgn","gender":"M","nationality":"Indian","birthyear":1969,"age":54},{"_id":"nm2144007","name":"Kangana Ranaut","gender":"F","nationality":"Indian","birthyear":1987,"age":36},{"_id":"nm0880407","name":"Lembit Ulfsak","gender":"M","nationality":"Estonian","birthyear":1953,"age":70},{"_id":"nm1027719","name":"Farhan Akhtar","gender":"M","nationality":"Indian","birthyear":1974,"age":49},{"_id":"nm0048075","name":"Manoj Bajpayee","gender":"M","nationality":"Indian","birthyear":1969,"age":54},{"_id":"nm3888054","name":"Rajat Barmecha","gender":"M","nationality":"Indian","birthyear":1989,"age":34},{"_id":"nm0201857","name":"Ricardo Darín","gender":"M","nationality":"Argentine","birthyear":1957,"age":66},{"_id":"nm0362766","name":"Tom Hardy","gender":"M","nationality":"British","birthyear":1978,"age":45},{"_id":"nm0677037","name":"Bob Peterson","gender":"M","nationality":"American","birthyear":1966,"age":57},{"_id":"nm0451321","name":"Shah Rukh Khan","gender":"M","nationality":"Indian","birthyear":1966,"age":57},{"_id":"nm0000158","name":"Tom Hanks","gender":"M","nationality":"American","birthyear":1956,"age":67},{"_id":"nm4374524","name":"Noémie Merlant","gender":"F","nationality":"French","birthyear":1989,"age":34},{"_id":"nm3966456","name":"Taapsee Pannu","gender":"F","nationality":"Indian","birthyear":1988,"age":35},{"_id":"nm0997115","name":"Miyu Irino","gender":"M","nationality":"Japanese","birthyear":1989,"age":34},{"_id":"nm1832584","name":"Mario Casas","gender":"M","nationality":"Spanish","birthyear":1986,"age":37},{"_id":"nm1195119","name":"Kim Min-hee","gender":"F","nationality":"South Korean","birthyear":1982,"age":41},{"_id":"nm0234237","name":"Anne Dorval","gender":"F","nationality":"Canadian","birthyear":1962,"age":61},{"_id":"nm1372788","name":"Shahid Kapoor","gender":"M","nationality":"Indian","birthyear":1981,"age":42},{"_id":"nm0334882","name":"Darío Grandinetti","gender":"M","nationality":"Argentine","birthyear":1959,"age":64},{"_id":"nm5358492","name":"Kemp Powers","gender":"M","nationality":"American","birthyear":1974,"age":49},{"_id":"nm0082211","name":"Haluk Bilginer","gender":"M","nationality":"Turkish","birthyear":1955,"age":68},{"_id":"nm0712546","name":"Paresh Rawal","gender":"M","nationality":"Indian","birthyear":1956,"age":67},{"_id":"nm0000146","name":"Ralph Fiennes","gender":"M","nationality":"British","birthyear":1963,"age":60},{"_id":"nm0000255","name":"Ben Affleck","gender":"M","nationality":"American","birthyear":1972,"age":51},{"_id":"nm0594497","name":"Aoi Miyazaki","gender":"F","nationality":"Japanese","birthyear":1986,"age":37},{"_id":"nm0215455","name":"Ronnie Del Carmen","gender":"M","nationality":"Filipino","birthyear":1961,"age":62},{"_id":"nm1633541","name":"Ranbir Kapoor","gender":"M","nationality":"Indian","birthyear":1983,"age":40},{"_id":"nm0117709","name":"Daniel Brühl","gender":"M","nationality":"German","birthyear":1978,"age":45},{"_id":"nm0749263","name":"Mark Ruffalo","gender":"M","nationality":"American","birthyear":1968,"age":55},{"_id":"nm5146515","name":"David Rawle","gender":"M","nationality":"Irish","birthyear":2002,"age":21},{"_id":"nm1799038","name":"Vidya Balan","gender":"F","nationality":"Indian","birthyear":1979,"age":44},{"_id":"nm0004335","name":"Hrithik Roshan","gender":"M","nationality":"Indian","birthyear":1974,"age":49},{"_id":"nm0451600","name":"Anupam Kher","gender":"M","nationality":"Indian","birthyear":1956,"age":67},{"_id":"nm0000142","name":"Clint Eastwood","gender":"M","nationality":"American","birthyear":1930,"age":93},{"_id":"nm0705356","name":"Daniel Radcliffe","gender":"M","nationality":"English","birthyear":1989,"age":34},{"_id":"nm0609403","name":"Masahiro Motoki","gender":"M","nationality":"Japanese","birthyear":1967,"age":56},{"_id":"nm0000152","name":"Richard Gere","gender":"M","nationality":"American","birthyear":1950,"age":73},{"_id":"nm0001057","name":"Toni Collette","gender":"F","nationality":"Australian","birthyear":1973,"age":50},{"_id":"nm0761498","name":"Chris Sanders","gender":"M","nationality":"American","birthyear":1961,"age":62},{"_id":"nm0386472","name":"Emile Hirsch","gender":"M","nationality":"American","birthyear":1985,"age":38},{"_id":"nm0001054","name":"Joel Coen","gender":"M","nationality":"American","birthyear":1955,"age":68},{"_id":"nm0474774","name":"Akshay Kumar","gender":"M","nationality":"Indian","birthyear":1968,"age":55},{"_id":"nm0006795","name":"Salman Khan","gender":"M","nationality":"Indian","birthyear":1966,"age":57},{"_id":"nm2353862","name":"Dev Patel","gender":"M","nationality":"English","birthyear":1991,"age":32},{"_id":"nm0601781","name":"Rich Moore","gender":"M","nationality":"American","birthyear":1968,"age":55},{"_id":"nm1631269","name":"Chloë Grace Moretz","gender":"F","nationality":"American","birthyear":1997,"age":26},{"_id":"nm5016878","name":"Jacob Tremblay","gender":"M","nationality":"Canadian","birthyear":2007,"age":16},{"_id":"nm1994146","name":"Vijay Varma","gender":"M","nationality":"Indian","birthyear":1986,"age":37},{"_id":"nm3299397","name":"Iko Uwais","gender":"M","nationality":"Indonesian","birthyear":1984,"age":39},{"_id":"nm0695435","name":"Chris Pratt","gender":"M","nationality":"American","birthyear":1980,"age":43},{"_id":"nm0001230","name":"Harrison Ford","gender":"M","nationality":"American","birthyear":1943,"age":80},{"_id":"nm0503567","name":"Logan Lerman","gender":"M","nationality":"American","birthyear":1992,"age":31},{"_id":"nm0609944","name":"Wagner Moura","gender":"M","nationality":"Brazilian","birthyear":1977,"age":46},{"_id":"nm0000147","name":"Colin Firth","gender":"M","nationality":"English","birthyear":1961,"age":62},{"_id":"nm0005351","name":"Ryan Reynolds","gender":"M","nationality":"Canadian","birthyear":1977,"age":46},{"_id":"nm0267042","name":"Golshifteh Farahani","gender":"F","nationality":"Iranian","birthyear":1984,"age":39},{"_id":"nm1867717","name":"Abhay Deol","gender":"M","nationality":"Indian","birthyear":1977,"age":46},{"_id":"nm0947447","name":"Donnie Yen","gender":"M","nationality":"Chinese","birthyear":1964,"age":59},{"_id":"nm0849164","name":"Loveleen Tandan","gender":"F","nationality":"Indian","birthyear":1977,"age":46},{"_id":"nm0000375","name":"Robert Downey Jr.","gender":"M","nationality":"American","birthyear":1965,"age":58},{"_id":"nm2277869","name":"Marjane Satrapi","gender":"F","nationality":"Iranian","birthyear":1971,"age":52},{"_id":"nm0684342","name":"Jan Pinkava","gender":"M","nationality":"Czech","birthyear":1964,"age":59},{"_id":"nm0000849","name":"Javier Bardem","gender":"M","nationality":"Spanish","birthyear":1970,"age":53},{"_id":"nm0185819","name":"Daniel Craig","gender":"M","nationality":"English","birthyear":1968,"age":55},{"_id":"nm1410940","name":"Lily Franky","gender":"M","nationality":"Japanese","birthyear":1954,"age":69},{"_id":"nm2309517","name":"Armie Hammer","gender":"M","nationality":"American","birthyear":1986,"age":37},{"_id":"nm0000554","name":"Sam Neill","gender":"M","nationality":"New Zealander","birthyear":1947,"age":76},{"_id":"nm6916321","name":"Ferdia Walsh-Peelo","gender":"M","nationality":"Irish","birthyear":2000,"age":23},{"_id":"nm1165110","name":"Chris Hemsworth","gender":"M","nationality":"Australian","birthyear":1984,"age":39},{"_id":"nm0350453","name":"Jake Gyllenhaal","gender":"M","nationality":"American","birthyear":1981,"age":42},{"_id":"nm9877392","name":"Roman Griffin Davis","gender":"M","nationality":"British","birthyear":2008,"age":15},{"_id":"nm5397459","name":"Daisy Ridley","gender":"F","nationality":"English","birthyear":1992,"age":31},{"_id":"nm0000160","name":"Ethan Hawke","gender":"M","nationality":"American","birthyear":1971,"age":52},{"_id":"nm0001772","name":"Patrick Stewart","gender":"M","nationality":"British","birthyear":1940,"age":83},{"_id":"nm1959252","name":"Muhammet Uzuner","gender":"M","nationality":"Turkish","birthyear":1965,"age":58},{"_id":"nm0241121","name":"Jean Dujardin","gender":"M","nationality":"French","birthyear":1973,"age":50},{"_id":"nm0000129","name":"Tom Cruise","gender":"M","nationality":"American","birthyear":1962,"age":61},{"_id":"nm0004462","name":"Jean-Louis Trintignant","gender":"M","nationality":"French","birthyear":1931,"age":92},{"_id":"nm0000134","name":"Robert De Niro","gender":"M","nationality":"American","birthyear":1943,"age":80},{"_id":"nm2588665","name":"Tahar Rahim","gender":"M","nationality":"French","birthyear":1982,"age":41},{"_id":"nm0005377","name":"Sam Rockwell","gender":"M","nationality":"American","birthyear":1969,"age":54},{"_id":"nm2968765","name":"Kåre Hedebrant","gender":"M","nationality":"Swedish","birthyear":1995,"age":28},{"_id":"nm1663205","name":"Sharlto Copley","gender":"M","nationality":"South African","birthyear":1974,"age":49},{"_id":"nm0000620","name":"Mickey Rourke","gender":"M","nationality":"American","birthyear":1951,"age":72},{"_id":"nm1294664","name":"Ellar Coltrane","gender":"M","nationality":"American","birthyear":1993,"age":30},{"_id":"nm1671512","name":"Anamaria Marinca","gender":"F","nationality":"Romanian","birthyear":1977,"age":46},{"_id":"nm1517976","name":"Chris Pine","gender":"M","nationality":"American","birthyear":1979,"age":44},{"_id":"nm0268199","name":"Colin Farrell","gender":"M","nationality":"Irish","birthyear":1975,"age":48},{"_id":"nm4139037","name":"Suraj Sharma","gender":"M","nationality":"Indian","birthyear":1992,"age":31},{"_id":"nm0000123","name":"George Clooney","gender":"M","nationality":"American","birthyear":1960,"age":63},{"_id":"nm1017633","name":"Alia Bhatt","gender":"M","nationality":"Indian","birthyear":1992,"age":31},{"_id":"nm1486911","name":"Shahab Hosseini","gender":"F","nationality":"Iranian","birthyear":1973,"age":50},{"_id":"nm7887725","name":"Fionn Whitehead","gender":"M","nationality":"English","birthyear":1996,"age":27},{"_id":"nm0061484","name":"Giuseppe Battiston","gender":"M","nationality":"Italian","birthyear":1967,"age":56},{"_id":"nm0378245","name":"Taraji P. Henson","gender":"M","nationality":"American","birthyear":1969,"age":54},{"_id":"nm0924210","name":"Ben Whishaw","gender":"F","nationality":"English","birthyear":1979,"age":44},{"_id":"nm3435612","name":"Roland Møller","gender":"M","nationality":"Danish","birthyear":1971,"age":52},{"_id":"nm0000168","name":"Samuel L. Jackson","gender":"M","nationality":"American","birthyear":1947,"age":76},{"_id":"nm0631490","name":"Bill Nighy","gender":"M","nationality":"English","birthyear":1948,"age":75},{"_id":"nm0067367","name":"Bérénice Bejo","gender":"M","nationality":"Argentine","birthyear":1975,"age":48},{"_id":"nm0785842","name":"Toni Servillo","gender":"M","nationality":"Italian","birthyear":1958,"age":65},{"_id":"nm1727304","name":"Domhnall Gleeson","gender":"F","nationality":"Irish","birthyear":1982,"age":41},{"_id":"nm0030417","name":"Hideaki Anno","gender":"M","nationality":"Japanese","birthyear":1959,"age":64},{"_id":"nm0001691","name":"Geoffrey Rush","gender":"M","nationality":"Australian","birthyear":1950,"age":73},{"_id":"nm4442068","name":"Jared Gilman","gender":"M","nationality":"American","birthyear":1997,"age":26},{"_id":"nm0059431","name":"Jay Baruchel","gender":"F","nationality":"Canadian","birthyear":1981,"age":42},{"_id":"nm0559381","name":"Takako Matsu","gender":"M","nationality":"Japanese","birthyear":1976,"age":47},{"_id":"nm0496932","name":"Lee Byung-Hun","gender":"M","nationality":"South Korean","birthyear":1969,"age":54},{"_id":"nm1047193","name":"Won Bin","gender":"M","nationality":"South Korean","birthyear":1976,"age":47},{"_id":"nm6578009","name":"O'Shea Jackson Jr.","gender":"M","nationality":"American","birthyear":1990,"age":33},{"_id":"nm1067547","name":"Hye-ja Kim","gender":"F","nationality":"South Korean","birthyear":1940,"age":83},{"_id":"nm2412823","name":"Kim Yoon-seok","gender":"M","nationality":"South Korean","birthyear":1967,"age":56},{"_id":"nm0005212","name":"Ian McKellen","gender":"M","nationality":"British","birthyear":1938,"age":85},{"_id":"nm3041056","name":"Christian Friedel","gender":"M","nationality":"German","birthyear":1978,"age":45},{"_id":"nm0000242","name":"Mark Wahlberg","gender":"F","nationality":"American","birthyear":1970,"age":53},{"_id":"nm0000553","name":"Liam Neeson","gender":"M","nationality":"Irish","birthyear":1951,"age":72},{"_id":"nm2633535","name":"Asa Butterfield","gender":"M","nationality":"English","birthyear":1996,"age":27},{"_id":"nm0293509","name":"Martin Freeman","gender":"M","nationality":"British","birthyear":1970,"age":53},{"_id":"nm0205811","name":"Baki Davrak","gender":"M","nationality":"Turkish","birthyear":1970,"age":53},{"_id":"nm0461136","name":"Keira Knightley","gender":"M","nationality":"British","birthyear":1984,"age":39},{"_id":"nm0941777","name":"Sam Worthington","gender":"M","nationality":"Australian","birthyear":1975,"age":48},{"_id":"nm0001467","name":"Jared Leto","gender":"M","nationality":"American","birthyear":1970,"age":53},{"_id":"nm0670408","name":"Simon Pegg","gender":"M","nationality":"British","birthyear":1969,"age":54},{"_id":"nm4853066","name":"Josh O'Connor","gender":"M","nationality":"British","birthyear":1989,"age":34},{"_id":"nm2080328","name":"Kelsey Asbille","gender":"F","nationality":"American","birthyear":1990,"age":33},{"_id":"nm0489858","name":"Rolf Lassgård","gender":"M","nationality":"Swedish","birthyear":1954,"age":69},{"_id":"nm0169806","name":"Taika Waititi","gender":"M","nationality":"New Zealander","birthyear":1974,"age":49},{"_id":"nm0948488","name":"Hiromasa Yonebayashi","gender":"M","nationality":"Japanese","birthyear":1972,"age":51},{"_id":"nm0940362","name":"Shailene Woodley","gender":"M","nationality":"American","birthyear":1990,"age":33},{"_id":"nm3287038","name":"Thomas Mann","gender":"F","nationality":"American","birthyear":1990,"age":33},{"_id":"nm2244205","name":"Léa Seydoux","gender":"M","nationality":"French","birthyear":1984,"age":39},{"_id":"nm2815326","name":"Amit Sadh","gender":"M","nationality":"Indian","birthyear":1982,"age":41},{"_id":"nm0046424","name":"Veerle Baetens","gender":"M","nationality":"Belgian","birthyear":1977,"age":46},{"_id":"nm0000604","name":"John C. Reilly","gender":"F","nationality":"American","birthyear":1964,"age":59},{"_id":"nm0000313","name":"Jeff Bridges","gender":"M","nationality":"American","birthyear":1948,"age":75},{"_id":"nm0004778","name":"Adrien Brody","gender":"M","nationality":"American","birthyear":1973,"age":50},{"_id":"nm0005562","name":"Owen Wilson","gender":"M","nationality":"American","birthyear":1968,"age":55},{"_id":"nm6781688","name":"Abraham Attah","gender":"M","nationality":"Ghanaian","birthyear":2002,"age":21},{"_id":"nm0251986","name":"Jesse Eisenberg","gender":"M","nationality":"American","birthyear":1984,"age":39},{"_id":"nm0564215","name":"James McAvoy","gender":"M","nationality":"Scottish","birthyear":1980,"age":43},{"_id":"nm0302108","name":"Zach Galifianakis","gender":"M","nationality":"American","birthyear":1970,"age":53},{"_id":"nm0221046","name":"Zooey Deschanel","gender":"F","nationality":"American","birthyear":1980,"age":43},{"_id":"nm0001449","name":"Frank Langella","gender":"M","nationality":"American","birthyear":1939,"age":84},{"_id":"nm0001401","name":"Angelina Jolie","gender":"F","nationality":"American","birthyear":1976,"age":47},{"_id":"nm1630992","name":"Madeline Carroll","gender":"F","nationality":"American","birthyear":1996,"age":27},{"_id":"nm2539953","name":"Alicia Vikander","gender":"F","nationality":"Swedish","birthyear":1989,"age":34},{"_id":"nm0727165","name":"Sam Riley","gender":"M","nationality":"British","birthyear":1981,"age":42},{"_id":"nm0397174","name":"Byron Howard","gender":"M","nationality":"American","birthyear":1968,"age":55},{"_id":"nm0000128","name":"Russell Crowe","gender":"M","nationality":"New Zealander","birthyear":1964,"age":59},{"_id":"nm0266824","name":"Dakota Fanning","gender":"F","nationality":"American","birthyear":1994,"age":29},{"_id":"nm0158626","name":"John Cho","gender":"M","nationality":"American","birthyear":1973,"age":50},{"_id":"nm3539159","name":"Maryana Spivak","gender":"F","nationality":"Russian","birthyear":1980,"age":43},{"_id":"nm7737419","name":"Brooklynn Prince","gender":"F","nationality":"American","birthyear":2011,"age":12},{"_id":"nm0430107","name":"Michael B. Jordan","gender":"M","nationality":"American","birthyear":1987,"age":36},{"_id":"nm1521134","name":"Chris Evans","gender":"M","nationality":"American","birthyear":1981,"age":42},{"_id":"nm4663937","name":"Laia Costa","gender":"F","nationality":"Spanish","birthyear":1986,"age":37},{"_id":"nm5052065","name":"Ansel Elgort","gender":"M","nationality":"American","birthyear":1994,"age":29},{"_id":"nm0000982","name":"Josh Brolin","gender":"M","nationality":"American","birthyear":1968,"age":55},{"_id":"nm0005266","name":"Craig T. Nelson","gender":"M","nationality":"American","birthyear":1945,"age":78},{"_id":"nm0615780","name":"John Musker","gender":"M","nationality":"American","birthyear":1953,"age":70},{"_id":"nm1289434","name":"Emily Blunt","gender":"F","nationality":"English","birthyear":1983,"age":40},{"_id":"nm0148516","name":"Aleksey Serebryakov","gender":"M","nationality":"Russian","birthyear":1967,"age":56},{"_id":"nm0180580","name":"Jose Coronado","gender":"M","nationality":"Spanish","birthyear":1958,"age":65},{"_id":"nm0688132","name":"Amy Poehler","gender":"F","nationality":"American","birthyear":1972,"age":51},{"_id":"nm0675409","name":"Mikael Persbrandt","gender":"M","nationality":"Swedish","birthyear":1964,"age":59},{"_id":"nm0719208","name":"Chris Renaud","gender":"M","nationality":"American","birthyear":1967,"age":56},{"_id":"nm0330687","name":"Joseph Gordon-Levitt","gender":"M","nationality":"American","birthyear":1981,"age":42},{"_id":"nm1093951","name":"Aaron Taylor-Johnson","gender":"M","nationality":"English","birthyear":1991,"age":32},{"_id":"nm0869088","name":"Luis Tosar","gender":"M","nationality":"Spanish","birthyear":1972,"age":51},{"_id":"nm0900915","name":"Jürgen Vogel","gender":"M","nationality":"German","birthyear":1969,"age":54},{"_id":"nm2466842","name":"Quinton Aaron","gender":"M","nationality":"American","birthyear":1986,"age":37},{"_id":"nm0420955","name":"Richard Jenkins","gender":"M","nationality":"American","birthyear":1948,"age":75},{"_id":"nm0000226","name":"Will Smith","gender":"M","nationality":"American","birthyear":1969,"age":54},{"_id":"nm0915208","name":"Naomi Watts","gender":"F","nationality":"British","birthyear":1969,"age":54},{"_id":"nm1214435","name":"Charlie Cox","gender":"M","nationality":"English","birthyear":1983,"age":40},{"_id":"nm0000151","name":"Morgan Freeman","gender":"M","nationality":"American","birthyear":1937,"age":86},{"_id":"nm0355097","name":"Jackie Earle Haley","gender":"M","nationality":"American","birthyear":1962,"age":61},{"_id":"nm5611121","name":"Millie Bobby Brown","gender":"F","nationality":"British","birthyear":2004,"age":19},{"_id":"nm6016511","name":"Finn Wolfhard","gender":"M","nationality":"Canadian","birthyear":2003,"age":20},{"_id":"nm7415871","name":"Noah Jupe","gender":"M","nationality":"British","birthyear":2006,"age":17},{"_id":"nm3220568","name":"Elsie Fisher","gender":"F","nationality":"American","birthyear":2004,"age":19},{"_id":"nm5085683","name":"Mckenna Grace","gender":"F","nationality":"American","birthyear":2007,"age":16},{"_id":"nm5421877","name":"Julian Dennison","gender":"M","nationality":"New Zealander","birthyear":2003,"age":20},{"_id":"nm5623883","name":"Phillipa Soo","gender":"F","nationality":"American","birthyear":1990,"age":33},{"_id":"nm1310525","name":"Lee Sun-kyun","gender":"M","nationality":"South Korean","birthyear":1975,"age":48},{"_id":"nm0534856","name":"Madhavan","gender":"M","nationality":"Indian","birthyear":1971,"age":52},{"_id":"nm0004266","name":"Anne Hathaway","gender":"F","nationality":"American","birthyear":1983,"age":40},{"_id":"nm0799777","name":"J.K. Simmons","gender":"M","nationality":"American","birthyear":1955,"age":68},{"_id":"nm0167388","name":"François Cluzet","gender":"M","nationality":"French","birthyear":1956,"age":67},{"_id":"nm1002038","name":"Çetin Tekindor","gender":"M","nationality":"Turkish","birthyear":1957,"age":66},{"_id":"nm4759838","name":"Mone Kamishiraishi","gender":"F","nationality":"Japanese","birthyear":1998,"age":25},{"_id":"nm2799219","name":"Sakshi Tanwar","gender":"F","nationality":"Indian","birthyear":1974,"age":49},{"_id":"nm0745247","name":"Rodney Rothman","gender":"M","nationality":"American","birthyear":1975,"age":48},{"_id":"nm5645519","name":"Anthony Gonzalez","gender":"M","nationality":"American","birthyear":2005,"age":18},{"_id":"nm0910607","name":"Christoph Waltz","gender":"M","nationality":"Austrian-German","birthyear":1957,"age":66},{"_id":"nm2594301","name":"Darsheel Safary","gender":"M","nationality":"Indian","birthyear":1998,"age":25},{"_id":"nm2264184","name":"Elissa Knight","gender":"F","nationality":"American","birthyear":1976,"age":47},{"_id":"nm1126657","name":"George MacKay","gender":"M","nationality":"British","birthyear":1993,"age":30},{"_id":"nm4205110","name":"Adesh Prasad","gender":"M","nationality":"Indian","birthyear":1996,"age":27},{"_id":"nm0007102","name":"Tabu","gender":"F","nationality":"Indian","birthyear":1972,"age":51},{"_id":"nm0576169","name":"Meena","gender":"F","nationality":"Indian","birthyear":1978,"age":45},{"_id":"nm0488917","name":"Thomas Bo Larsen","gender":"M","nationality":"Danish","birthyear":1971,"age":52},{"_id":"nm0368689","name":"Leila Hatami","gender":"F","nationality":"Iranian","birthyear":1974,"age":49},{"_id":"nm0246386","name":"Mélissa Désormeaux-Poulin","gender":"F","nationality":"Canadian","birthyear":1978,"age":45},{"_id":"nm9651809","name":"Nisa Sofiya Aksongur","gender":"F","nationality":"Turkish","birthyear":2010,"age":13},{"_id":"nm1208167","name":"Diane Kruger","gender":"F","nationality":"German","birthyear":1977,"age":46},{"_id":"nm3601766","name":"Shraddha Kapoor","gender":"F","nationality":"Indian","birthyear":1988,"age":35},{"_id":"nm8635807","name":"Srinidhi Shetty","gender":"F","nationality":"Indian","birthyear":1993,"age":30},{"_id":"nm0991810","name":"Mahershala Ali","gender":"M","nationality":"American","birthyear":1974,"age":49},{"_id":"nm0000437","name":"Woody Harrelson","gender":"M","nationality":"American","birthyear":1962,"age":61},{"_id":"nm1234298","name":"Konkona Sen Sharma","gender":"F","nationality":"Indian","birthyear":1980,"age":43},{"_id":"nm2281292","name":"Rana Daggubati","gender":"M","nationality":"Indian","birthyear":1985,"age":38},{"_id":"nm0005403","name":"Jason Schwartzman","gender":"M","nationality":"American","birthyear":1981,"age":42},{"_id":"nm1328152","name":"Shriya Saran","gender":"F","nationality":"Indian","birthyear":1983,"age":40},{"_id":"nm3822770","name":"Rajkummar Rao","gender":"M","nationality":"Indian","birthyear":1985,"age":38},{"_id":"nm2128238","name":"Sonam Kapoor","gender":"F","nationality":"Indian","birthyear":1986,"age":37},{"_id":"nm3190246","name":"Richa Chadha","gender":"F","nationality":"Indian","birthyear":1987,"age":36},{"_id":"nm0747172","name":"Ronit Roy","gender":"M","nationality":"Indian","birthyear":1966,"age":57},{"_id":"nm2977124","name":"Mahie Gill","gender":"F","nationality":"Indian","birthyear":1976,"age":47},{"_id":"nm0897845","name":"Soledad Villamil","gender":"F","nationality":"Argentine","birthyear":1971,"age":52},{"_id":"nm0000560","name":"Nick Nolte","gender":"M","nationality":"American","birthyear":1941,"age":82},{"_id":"nm0607865","name":"Emily Mortimer","gender":"F","nationality":"British","birthyear":1972,"age":51},{"_id":"nm0757855","name":"Zoe Saldana","gender":"F","nationality":"American/Dominican","birthyear":1979,"age":44},{"_id":"nm0001631","name":"Sarah Polley","gender":"F","nationality":"Canadian","birthyear":1979,"age":44},{"_id":"nm0296545","name":"Nick Frost","gender":"M","nationality":"British","birthyear":1973,"age":50},{"_id":"nm0211920","name":"Marina de Tavira","gender":"F","nationality":"Mexican","birthyear":1975,"age":48},{"_id":"nm2649764","name":"Alec Secareanu","gender":"M","nationality":"Romanian","birthyear":1986,"age":37},{"_id":"nm0719637","name":"Jeremy Renner","gender":"M","nationality":"American","birthyear":1972,"age":51},{"_id":"nm4129745","name":"Allison Williams","gender":"F","nationality":"American","birthyear":1989,"age":34},{"_id":"nm0147147","name":"Henry Cavill","gender":"M","nationality":"British","birthyear":1984,"age":39},{"_id":"nm2560232","name":"Bahar Pars","gender":"F","nationality":"Iranian","birthyear":1975,"age":48},{"_id":"nm1318596","name":"Jemaine Clement","gender":"M","nationality":"New Zealander","birthyear":1975,"age":48},{"_id":"nm3268918","name":"Sara Takatsuki","gender":"F","nationality":"Japanese","birthyear":2002,"age":21},{"_id":"nm5473782","name":"Taron Egerton","gender":"M","nationality":"British","birthyear":1990,"age":33},{"_id":"nm5518972","name":"RJ Cyler","gender":"M","nationality":"American","birthyear":1996,"age":27},{"_id":"nm2650819","name":"Adèle Exarchopoulos","gender":"F","nationality":"French","birthyear":1994,"age":29},{"_id":"nm0374949","name":"Johan Heldenbergh","gender":"M","nationality":"Belgian","birthyear":1968,"age":55},{"_id":"nm3668216","name":"Nargis Fakhri","gender":"F","nationality":"American/Pakistani","birthyear":1980,"age":43},{"_id":"nm0287182","name":"Will Forte","gender":"M","nationality":"American","birthyear":1971,"age":52},{"_id":"nm1442113","name":"Jack McBrayer","gender":"M","nationality":"American","birthyear":1974,"age":49},{"_id":"nm3237775","name":"Mackenzie Foy","gender":"F","nationality":"American","birthyear":2001,"age":22},{"_id":"nm0376716","name":"Christina Hendricks","gender":"F","nationality":"American","birthyear":1975,"age":48},{"_id":"nm1046097","name":"Rachel McAdams","gender":"F","nationality":"Canadian","birthyear":1979,"age":44},{"_id":"nm0704270","name":"Zachary Quinto","gender":"M","nationality":"American","birthyear":1978,"age":45},{"_id":"nm7636995","name":"Emmanuel Affadzi","gender":"M","nationality":"Ghanaian","birthyear":1992,"age":31},{"_id":"nm0914612","name":"Emma Watson","gender":"F","nationality":"British","birthyear":1991,"age":32},{"_id":"nm0790688","name":"Michael Sheen","gender":"M","nationality":"Welsh","birthyear":1969,"age":54},{"_id":"nm0272173","name":"Colm Feore","gender":"M","nationality":"Canadian/Irish","birthyear":1959,"age":64},{"_id":"nm2786608","name":"Callan McAuliffe","gender":"M","nationality":"Australian","birthyear":1996,"age":27},{"_id":"nm0608090","name":"Samantha Morton","gender":"F","nationality":"British","birthyear":1978,"age":45},{"_id":"nm0601553","name":"Mandy Moore","gender":"F","nationality":"American","birthyear":1985,"age":38},{"_id":"nm0000159","name":"Teri Hatcher","gender":"F","nationality":"American","birthyear":1965,"age":58},{"_id":"nm0005226","name":"Debra Messing","gender":"F","nationality":"American","birthyear":1969,"age":54},{"_id":"nm3729612","name":"Aleksey Rozin","gender":"M","nationality":"Russian","birthyear":1971,"age":52},{"_id":"nm8458915","name":"Bria Vinaite","gender":"F","nationality":"Lithuanian/American","birthyear":1994,"age":29},{"_id":"nm5789377","name":"Zack Gottsagen","gender":"M","nationality":"American","birthyear":1986,"age":37},{"_id":"nm1035643","name":"Frederick Lau","gender":"M","nationality":"German","birthyear":1990,"age":33},{"_id":"nm7322144","name":"Doga Zeynep Doguslu","gender":"F","nationality":"Turkish","birthyear":2002,"age":21},{"_id":"nm1256532","name":"Jon Bernthal","gender":"M","nationality":"American","birthyear":1977,"age":46},{"_id":"nm0753314","name":"Mark Rylance","gender":"M","nationality":"English","birthyear":1960,"age":63},{"_id":"nm0000456","name":"Holly Hunter","gender":"F","nationality":"American","birthyear":1959,"age":64},{"_id":"nm2320658","name":"Don Hall","gender":"M","nationality":"American","birthyear":1971,"age":52},{"_id":"nm0000230","name":"Sylvester Stallone","gender":"M","nationality":"American","birthyear":1946,"age":77},{"_id":"nm1956600","name":"Elena Lyadova","gender":"F","nationality":"Russian","birthyear":1986,"age":37},{"_id":"nm0004936","name":"Ben Foster","gender":"M","nationality":"American","birthyear":1981,"age":42},{"_id":"nm0176869","name":"Steve Coogan","gender":"M","nationality":"English","birthyear":1967,"age":56},{"_id":"nm0005392","name":"Keri Russell","gender":"F","nationality":"American","birthyear":1976,"age":47},{"_id":"nm1281229","name":"Hugo Silva","gender":"M","nationality":"Spanish","birthyear":1978,"age":45},{"_id":"nm1146705","name":"Ananda George","gender":"M","nationality":"British","birthyear":1971,"age":52},{"_id":"nm0671567","name":"Michael Peña","gender":"M","nationality":"American","birthyear":1976,"age":47},{"_id":"nm1541331","name":"Mirai Shida","gender":"F","nationality":"Japanese","birthyear":1994,"age":29},{"_id":"nm0245988","name":"Trine Dyrholm","gender":"F","nationality":"Danish","birthyear":1973,"age":50},{"_id":"nm0736622","name":"Seth Rogen","gender":"M","nationality":"Canadian","birthyear":1983,"age":40},{"_id":"nm0000115","name":"Nicolas Cage","gender":"M","nationality":"American","birthyear":1964,"age":59},{"_id":"nm2975962","name":"Alberto Ammann","gender":"M","nationality":"Argentine-Spanish","birthyear":1979,"age":44},{"_id":"nm0000705","name":"Robin Wright","gender":"F","nationality":"American","birthyear":1966,"age":57},{"_id":"nm0025745","name":"Elena Anaya","gender":"F","nationality":"Spanish","birthyear":1976,"age":47},{"_id":"nm0000179","name":"Jude Law","gender":"M","nationality":"English","birthyear":1973,"age":50},{"_id":"nm1896736","name":"Haaz Sleiman","gender":"M","nationality":"Lebanese","birthyear":1977,"age":46},{"_id":"nm0206257","name":"Rosario Dawson","gender":"F","nationality":"American","birthyear":1980,"age":43},{"_id":"nm0000132","name":"Claire Danes","gender":"F","nationality":"American","birthyear":1980,"age":43},{"_id":"nm3322957","name":"Evan McGuire","gender":"M","nationality":"Irish","birthyear":1997,"age":26},{"_id":"nm0000438","name":"Ed Harris","gender":"M","nationality":"American","birthyear":1951,"age":72},{"_id":"nm0856500","name":"Sylvie Testud","gender":"F","nationality":"French","birthyear":1973,"age":50},{"_id":"nm0933940","name":"Patrick Wilson","gender":"M","nationality":"American","birthyear":1974,"age":49}]}
\ No newline at end of file
diff --git a/server/data/bechdel.json b/server/data/bechdel.json
new file mode 100644
index 0000000000000000000000000000000000000000..f587f8a26c7262f4897df0fb11ad2f5c09df59ef
--- /dev/null
+++ b/server/data/bechdel.json
@@ -0,0 +1 @@
+{"version":"2024-02-13","curators":"Katerina Vrotsou, Nico","data_source":"https://www.kaggle.com/datasets/treelunar/bechdel-test-movies-as-of-feb-28-2023","data":[{"_id":"9602","normalized_imdb_id":3155794,"title":"Passage de Venus","year":1874,"rating":0,"dubious":false,"date":"2021-04-02 20:58"},{"_id":"9804","normalized_imdb_id":14495706,"title":"La Rosace Magique","year":1877,"rating":0,"dubious":false,"date":"2021-05-11 00:11"},{"_id":"9603","normalized_imdb_id":2221420,"title":"Sallie Gardner at a Gallop","year":1878,"rating":0,"dubious":false,"date":"2021-04-03 02:25"},{"_id":"9806","normalized_imdb_id":12592084,"title":"Le singe musicien","year":1878,"rating":0,"dubious":false,"date":"2021-05-11 23:38"},{"_id":"9816","normalized_imdb_id":7816420,"title":"Athlete Swinging a Pick","year":1881,"rating":0,"dubious":false,"date":"2021-05-13 01:32"},{"_id":"9831","normalized_imdb_id":5459794,"title":"Buffalo Running","year":1883,"rating":0,"dubious":false,"date":"2021-05-16 00:04"},{"_id":"9832","normalized_imdb_id":8588366,"title":"L'homme machine","year":1885,"rating":0,"dubious":false,"date":"2021-05-16 00:05"},{"_id":"9614","normalized_imdb_id":2075247,"title":"Man Walking Around the Corner","year":1887,"rating":0,"dubious":false,"date":"2021-04-03 19:00"},{"_id":"9836","normalized_imdb_id":8133192,"title":"Cockatoo Flying","year":1887,"rating":0,"dubious":false,"date":"2021-05-17 00:51"},{"_id":"9837","normalized_imdb_id":7411790,"title":"Child Carrying Flowers to Woman","year":1887,"rating":0,"dubious":false,"date":"2021-05-17 00:54"},{"_id":"9838","normalized_imdb_id":7541160,"title":"Jumping Over a Man's Back-Leapfrog","year":1887,"rating":0,"dubious":false,"date":"2021-05-17 18:51"},{"_id":"9841","normalized_imdb_id":7754902,"title":"Man Riding Jumping Horse","year":1887,"rating":0,"dubious":false,"date":"2021-05-20 01:01"},{"_id":"9902","normalized_imdb_id":8361552,"title":"Baboon Climbing a Pole","year":1887,"rating":0,"dubious":false,"date":"2021-06-18 01:20"},{"_id":"8040","normalized_imdb_id":392728,"title":"Roundhay Garden Scene","year":1888,"rating":0,"dubious":false,"date":"2018-02-08 10:24"},{"_id":"9615","normalized_imdb_id":1758563,"title":"Accordion Player","year":1888,"rating":0,"dubious":false,"date":"2021-04-03 19:01"},{"_id":"9616","normalized_imdb_id":343112,"title":"Traffic Crossing Leeds Bridge","year":1888,"rating":0,"dubious":false,"date":"2021-04-04 00:12"},{"_id":"9675","normalized_imdb_id":3274100,"title":"Pferd und Reiter Springen uber ein Hindernis","year":1888,"rating":0,"dubious":false,"date":"2021-04-23 19:51"},{"_id":"9947","normalized_imdb_id":2116853,"title":"Brighton Street Scene","year":1888,"rating":0,"dubious":false,"date":"2021-07-07 12:01"},{"_id":"9619","normalized_imdb_id":466876,"title":"Leisurely Pedestrians, Open Topped Buses and Hansom Cabs with Trotting Horses","year":1889,"rating":0,"dubious":false,"date":"2021-04-04 02:15"},{"_id":"9945","normalized_imdb_id":2116898,"title":"Hyde Park Corner","year":1889,"rating":0,"dubious":false,"date":"2021-07-07 10:53"},{"_id":"9617","normalized_imdb_id":361921,"title":"Monkeyshines, No. 1","year":1890,"rating":0,"dubious":false,"date":"2021-04-04 00:15"},{"_id":"9618","normalized_imdb_id":416046,"title":"Monkeyshines, No. 2","year":1890,"rating":0,"dubious":false,"date":"2021-04-04 00:16"},{"_id":"9621","normalized_imdb_id":1202028,"title":"London's Trafalgar Square","year":1890,"rating":0,"dubious":false,"date":"2021-04-04 15:19"},{"_id":"9678","normalized_imdb_id":416047,"title":"Monkeyshines, No. 3","year":1890,"rating":0,"dubious":false,"date":"2021-04-24 19:06"},{"_id":"9946","normalized_imdb_id":5285442,"title":"Mosquinha","year":1890,"rating":0,"dubious":false,"date":"2021-07-07 10:54"},{"_id":"9944","normalized_imdb_id":2116968,"title":"Traffic in King's Road, Chelsea","year":1890,"rating":0,"dubious":false,"date":"2021-07-06 02:03"},{"_id":"9626","normalized_imdb_id":241373,"title":"Dickson Greeting","year":1891,"rating":0,"dubious":false,"date":"2021-04-06 01:56"},{"_id":"9628","normalized_imdb_id":241715,"title":"Men Boxing","year":1891,"rating":0,"dubious":false,"date":"2021-04-07 00:45"},{"_id":"9629","normalized_imdb_id":241763,"title":"Newark Athlete","year":1891,"rating":0,"dubious":false,"date":"2021-04-07 00:47"},{"_id":"9792","normalized_imdb_id":241393,"title":"Duncan and Another, Blacksmith Shop","year":1891,"rating":0,"dubious":false,"date":"2021-05-06 02:01"},{"_id":"9793","normalized_imdb_id":241392,"title":"Duncan Smoking","year":1891,"rating":0,"dubious":false,"date":"2021-05-06 02:02"},{"_id":"9794","normalized_imdb_id":241394,"title":"Duncan or Devonald with Muslin Cloud","year":1891,"rating":0,"dubious":false,"date":"2021-05-06 02:03"},{"_id":"9795","normalized_imdb_id":241735,"title":"Monkey and Another, Boxing","year":1891,"rating":0,"dubious":false,"date":"2021-05-07 00:34"},{"_id":"9800","normalized_imdb_id":3201916,"title":"Je vous aime","year":1891,"rating":0,"dubious":false,"date":"2021-05-08 23:17"},{"_id":"9802","normalized_imdb_id":3508566,"title":"La vague","year":1891,"rating":0,"dubious":false,"date":"2021-05-10 02:09"},{"_id":"9943","normalized_imdb_id":5447082,"title":"Two Fencers","year":1891,"rating":0,"dubious":false,"date":"2021-07-06 02:00"},{"_id":"5433","normalized_imdb_id":3,"title":"Pauvre Pierrot","year":1892,"rating":0,"dubious":false,"date":"2014-05-02 10:01"},{"_id":"9631","normalized_imdb_id":4,"title":"Un bon bock","year":1892,"rating":0,"dubious":false,"date":"2021-04-08 00:25"},{"_id":"9632","normalized_imdb_id":2,"title":"Le clown et ses chiens","year":1892,"rating":0,"dubious":false,"date":"2021-04-09 01:16"},{"_id":"9951","normalized_imdb_id":241446,"title":"Fencing","year":1892,"rating":0,"dubious":false,"date":"2021-07-09 17:38"},{"_id":"9952","normalized_imdb_id":234520,"title":"Le prince de Galles","year":1892,"rating":0,"dubious":false,"date":"2021-07-09 17:40"},{"_id":"9948","normalized_imdb_id":242148,"title":"Wrestling","year":1892,"rating":0,"dubious":false,"date":"2021-07-07 12:02"},{"_id":"9986","normalized_imdb_id":241266,"title":"Boxing","year":1892,"rating":0,"dubious":false,"date":"2021-07-27 01:30"},{"_id":"9583","normalized_imdb_id":5,"title":"Blacksmith Scene","year":1893,"rating":0,"dubious":false,"date":"2021-03-24 20:33"},{"_id":"9636","normalized_imdb_id":229217,"title":"Annabelle Butterfly Dance","year":1894,"rating":0,"dubious":false,"date":"2021-04-10 00:22"},{"_id":"9642","normalized_imdb_id":8419312,"title":"Edison Kinetoscope Records: Annie Oakley","year":1894,"rating":0,"dubious":false,"date":"2021-04-10 22:06"},{"_id":"9646","normalized_imdb_id":15,"title":"Autour d'une cabine","year":1894,"rating":0,"dubious":false,"date":"2021-04-11 20:03"},{"_id":"9648","normalized_imdb_id":229235,"title":"Barbershop, The","year":1894,"rating":0,"dubious":false,"date":"2021-04-13 01:50"},{"_id":"9649","normalized_imdb_id":309396,"title":"Bucking Broncho","year":1894,"rating":0,"dubious":false,"date":"2021-04-14 20:08"},{"_id":"9650","normalized_imdb_id":309402,"title":"Buffalo Dance","year":1894,"rating":0,"dubious":false,"date":"2021-04-16 01:19"},{"_id":"9651","normalized_imdb_id":1,"title":"Carmencita","year":1894,"rating":0,"dubious":false,"date":"2021-04-16 20:53"},{"_id":"9652","normalized_imdb_id":8,"title":"Edison Kinetoscopic Record of a Sneeze","year":1894,"rating":0,"dubious":false,"date":"2021-04-17 00:03"},{"_id":"9654","normalized_imdb_id":177707,"title":"Dickson Experimental Sound Film","year":1894,"rating":0,"dubious":false,"date":"2021-04-18 00:25"},{"_id":"9655","normalized_imdb_id":6,"title":"Chinese Opium Den","year":1894,"rating":0,"dubious":false,"date":"2021-04-18 02:39"},{"_id":"9656","normalized_imdb_id":7,"title":"Corbett and Courtney Before the Kinetograph","year":1894,"rating":0,"dubious":false,"date":"2021-04-18 18:46"},{"_id":"9662","normalized_imdb_id":2049440,"title":"Falling Cat","year":1894,"rating":0,"dubious":false,"date":"2021-04-20 00:15"},{"_id":"9663","normalized_imdb_id":312728,"title":"Glenroy Bros., No. 2","year":1894,"rating":0,"dubious":false,"date":"2021-04-21 01:31"},{"_id":"9664","normalized_imdb_id":256782,"title":"Glenroy Brothers","year":1894,"rating":0,"dubious":false,"date":"2021-04-21 01:32"},{"_id":"9668","normalized_imdb_id":203646,"title":"Leonard-Cushing Fight","year":1894,"rating":0,"dubious":false,"date":"2021-04-21 23:33"},{"_id":"9671","normalized_imdb_id":277115,"title":"Luis Martinetti, Contortionist","year":1894,"rating":0,"dubious":false,"date":"2021-04-23 02:54"},{"_id":"9673","normalized_imdb_id":2161519,"title":"Sandow No. 2","year":1894,"rating":0,"dubious":false,"date":"2021-04-23 17:05"},{"_id":"9674","normalized_imdb_id":2161521,"title":"Sandow No. 3","year":1894,"rating":0,"dubious":false,"date":"2021-04-23 17:05"},{"_id":"9681","normalized_imdb_id":413219,"title":"Reve au coin du feu","year":1894,"rating":0,"dubious":false,"date":"2021-04-26 01:08"},{"_id":"9779","normalized_imdb_id":9,"title":"Miss Jerry","year":1894,"rating":0,"dubious":false,"date":"2021-05-02 01:59"},{"_id":"5444","normalized_imdb_id":14,"title":"Tables Turned on the Gardener","year":1895,"rating":0,"dubious":false,"date":"2014-05-04 13:11"},{"_id":"6200","normalized_imdb_id":132134,"title":"Execution of Mary, Queen of Scots, The","year":1895,"rating":0,"dubious":false,"date":"2015-04-13 01:54"},{"_id":"9679","normalized_imdb_id":11,"title":"Akrobatisches Potpourri","year":1895,"rating":1,"dubious":true,"date":"2021-04-24 19:08"},{"_id":"9683","normalized_imdb_id":154152,"title":"Annabelle Serpentine Dance","year":1895,"rating":0,"dubious":false,"date":"2021-04-26 21:59"},{"_id":"9714","normalized_imdb_id":17,"title":"Italienischer Bauerntanz","year":1895,"rating":0,"dubious":false,"date":"2021-04-29 01:31"},{"_id":"9715","normalized_imdb_id":29,"title":"Baby's Dinner","year":1895,"rating":1,"dubious":true,"date":"2021-04-29 01:35"},{"_id":"9766","normalized_imdb_id":477266,"title":"Billy Edwards and the Unknown","year":1895,"rating":0,"dubious":false,"date":"2021-04-30 23:25"},{"_id":"9767","normalized_imdb_id":22,"title":"Blacksmith Scene","year":1895,"rating":0,"dubious":false,"date":"2021-04-30 23:27"},{"_id":"9787","normalized_imdb_id":16,"title":"Barque sortant du port","year":1895,"rating":0,"dubious":false,"date":"2021-05-03 00:29"},{"_id":"4982","normalized_imdb_id":91,"title":"House of the Devil, The","year":1896,"rating":0,"dubious":false,"date":"2013-12-25 14:31"},{"_id":"5406","normalized_imdb_id":131,"title":"Une nuit terrible","year":1896,"rating":0,"dubious":false,"date":"2014-04-20 02:04"},{"_id":"5445","normalized_imdb_id":223341,"title":"La fee aux choux","year":1896,"rating":0,"dubious":false,"date":"2014-05-04 13:18"},{"_id":"6199","normalized_imdb_id":12,"title":"Arrival of a Train, The","year":1896,"rating":0,"dubious":false,"date":"2015-04-13 01:53"},{"_id":"9672","normalized_imdb_id":1428455,"title":"Sandow","year":1896,"rating":0,"dubious":false,"date":"2021-04-23 17:04"},{"_id":"9949","normalized_imdb_id":1672718,"title":"Alger: rue Bab-Azoun","year":1896,"rating":0,"dubious":false,"date":"2021-07-09 02:49"},{"_id":"9950","normalized_imdb_id":1736599,"title":"Lassage des boeufs pour le labour","year":1896,"rating":0,"dubious":false,"date":"2021-07-09 02:51"},{"_id":"9901","normalized_imdb_id":222137,"title":"Lancement d'un navire","year":1896,"rating":0,"dubious":false,"date":"2021-06-18 01:19"},{"_id":"9328","normalized_imdb_id":41,"title":"Bataille de neige","year":1897,"rating":0,"dubious":false,"date":"2020-11-13 18:26"},{"_id":"4978","normalized_imdb_id":135696,"title":"Four Heads Are Better Than One","year":1898,"rating":0,"dubious":false,"date":"2013-12-24 19:58"},{"_id":"5411","normalized_imdb_id":224240,"title":"Temptation of St. Anthony, The","year":1898,"rating":0,"dubious":false,"date":"2014-04-22 01:55"},{"_id":"4994","normalized_imdb_id":246,"title":"A Turn of the Century Illusionist","year":1899,"rating":0,"dubious":false,"date":"2013-12-26 20:42"},{"_id":"5914","normalized_imdb_id":230,"title":"Cinderella","year":1899,"rating":3,"dubious":false,"date":"2014-11-12 06:46"},{"_id":"1594","normalized_imdb_id":291476,"title":"Sherlock Holmes Baffled","year":1900,"rating":0,"dubious":false,"date":"2010-09-22 16:36"},{"_id":"4271","normalized_imdb_id":300,"title":"Enchanted Drawing, The","year":1900,"rating":0,"dubious":false,"date":"2013-06-26 10:38"},{"_id":"4343","normalized_imdb_id":304,"title":"Grandma's Reading Glass","year":1900,"rating":0,"dubious":false,"date":"2013-07-13 02:47"},{"_id":"4344","normalized_imdb_id":272,"title":"As Seen Through A Telescope (a.k.a The Professor and His Field Glass)","year":1900,"rating":0,"dubious":false,"date":"2013-07-13 02:54"},{"_id":"4345","normalized_imdb_id":257654,"title":"Explosion of a Motor Car (a.k.a The Dlights of Automobiling)","year":1900,"rating":0,"dubious":false,"date":"2013-07-13 03:02"},{"_id":"4346","normalized_imdb_id":306,"title":"Hamlet ( Le Duel d'Hamlet)","year":1900,"rating":0,"dubious":false,"date":"2013-07-13 03:10"},{"_id":"4993","normalized_imdb_id":135453,"title":"One-Man Band, The","year":1900,"rating":0,"dubious":false,"date":"2013-12-26 20:40"},{"_id":"5069","normalized_imdb_id":377995,"title":"Grandma Threading Her Needle","year":1900,"rating":0,"dubious":false,"date":"2014-01-14 01:17"},{"_id":"5072","normalized_imdb_id":230746,"title":"Searching Ruins on Broadway, Galveston, for Dead Bodies","year":1900,"rating":0,"dubious":false,"date":"2014-01-14 06:24"},{"_id":"5438","normalized_imdb_id":313,"title":"Let Me Dream Again","year":1900,"rating":0,"dubious":false,"date":"2014-05-03 18:33"},{"_id":"5446","normalized_imdb_id":227438,"title":"Doctor and the Monkey, The","year":1900,"rating":0,"dubious":false,"date":"2014-05-04 13:37"},{"_id":"4995","normalized_imdb_id":359,"title":"L'homme a la tete en caoutchouc","year":1901,"rating":0,"dubious":false,"date":"2013-12-26 20:47"},{"_id":"5437","normalized_imdb_id":258104,"title":"Reve et realite","year":1901,"rating":0,"dubious":false,"date":"2014-05-03 18:31"},{"_id":"5500","normalized_imdb_id":131934,"title":"Bluebeard","year":1901,"rating":0,"dubious":false,"date":"2014-05-26 00:31"},{"_id":"1252","normalized_imdb_id":417,"title":"Le voyage dans la lune","year":1902,"rating":0,"dubious":false,"date":"2010-07-23 00:26"},{"_id":"5431","normalized_imdb_id":229024,"title":"Gulliver's Travels","year":1902,"rating":0,"dubious":false,"date":"2014-05-02 09:44"},{"_id":"5443","normalized_imdb_id":413,"title":"Mephistopheles' School of Magic","year":1902,"rating":0,"dubious":false,"date":"2014-05-04 13:03"},{"_id":"1319","normalized_imdb_id":439,"title":"Great Train Robbery, The","year":1903,"rating":0,"dubious":false,"date":"2010-07-25 09:05"},{"_id":"5002","normalized_imdb_id":135180,"title":"Infernal Boiling Pot, The","year":1903,"rating":0,"dubious":false,"date":"2013-12-28 21:28"},{"_id":"5063","normalized_imdb_id":455,"title":"Music Lover, The","year":1903,"rating":0,"dubious":false,"date":"2014-01-12 00:18"},{"_id":"5064","normalized_imdb_id":223755,"title":"Monster, The","year":1903,"rating":0,"dubious":false,"date":"2014-01-12 00:22"},{"_id":"5683","normalized_imdb_id":189498,"title":"Enchanted Well, The","year":1903,"rating":0,"dubious":false,"date":"2014-08-09 02:12"},{"_id":"5224","normalized_imdb_id":215664,"title":"Cook in Trouble, The","year":1904,"rating":0,"dubious":false,"date":"2014-03-03 18:13"},{"_id":"5404","normalized_imdb_id":135179,"title":"Living Playing Cards, The","year":1904,"rating":0,"dubious":false,"date":"2014-04-20 01:53"},{"_id":"5601","normalized_imdb_id":135631,"title":"Untamable Whiskers, The","year":1904,"rating":0,"dubious":false,"date":"2014-06-29 17:15"},{"_id":"6135","normalized_imdb_id":499,"title":"Le voyage a travers l'impossible","year":1904,"rating":0,"dubious":false,"date":"2015-03-07 23:28"},{"_id":"5003","normalized_imdb_id":135690,"title":"Scheming Gambler's Paradise, The","year":1905,"rating":0,"dubious":false,"date":"2013-12-28 21:35"},{"_id":"5602","normalized_imdb_id":215575,"title":"Black Imp, The","year":1905,"rating":0,"dubious":false,"date":"2014-06-29 17:41"},{"_id":"1349","normalized_imdb_id":574,"title":"Story of the Kelly Gang, The","year":1906,"rating":1,"dubious":false,"date":"2010-07-26 21:01"},{"_id":"5024","normalized_imdb_id":216016,"title":"Mysterious Retort, The","year":1906,"rating":0,"dubious":false,"date":"2014-01-01 21:29"},{"_id":"5435","normalized_imdb_id":554,"title":"Humorous Phases of Funny Faces","year":1906,"rating":0,"dubious":false,"date":"2014-05-03 09:39"},{"_id":"5603","normalized_imdb_id":135122,"title":"Hilarious Posters, The","year":1906,"rating":0,"dubious":false,"date":"2014-06-30 01:06"},{"_id":"5684","normalized_imdb_id":567,"title":"400 Tricks of the Devil, The","year":1906,"rating":0,"dubious":false,"date":"2014-08-09 02:46"},{"_id":"6206","normalized_imdb_id":449172,"title":"A Funny Shave","year":1906,"rating":0,"dubious":false,"date":"2015-04-16 00:37"},{"_id":"7215","normalized_imdb_id":1260944,"title":"Consequence of Feminism, The","year":1906,"rating":0,"dubious":false,"date":"2016-10-19 17:33"},{"_id":"5223","normalized_imdb_id":215737,"title":"Eclipse: Courtship of the Sun and Moon, The","year":1907,"rating":0,"dubious":false,"date":"2014-03-03 18:06"},{"_id":"5615","normalized_imdb_id":215817,"title":"Good Glue Sticks","year":1907,"rating":0,"dubious":false,"date":"2014-07-06 01:37"},{"_id":"6231","normalized_imdb_id":1802750,"title":"Unusual Cooking","year":1908,"rating":0,"dubious":false,"date":"2015-05-04 01:25"},{"_id":"5635","normalized_imdb_id":127948,"title":"Devilish Tenant, The","year":1909,"rating":0,"dubious":false,"date":"2014-07-14 01:23"},{"_id":"6211","normalized_imdb_id":277596,"title":"Le barometre de la fidelite","year":1909,"rating":1,"dubious":false,"date":"2015-04-19 20:26"},{"_id":"1464","normalized_imdb_id":232821,"title":"Tilly the Tomboy Visits the Poor","year":1910,"rating":3,"dubious":false,"date":"2010-08-11 21:09"},{"_id":"4983","normalized_imdb_id":486978,"title":"Mobilier fidele","year":1910,"rating":0,"dubious":false,"date":"2013-12-25 14:38"},{"_id":"5685","normalized_imdb_id":1515725,"title":"A Trip to Mars","year":1910,"rating":0,"dubious":false,"date":"2014-08-09 03:17"},{"_id":"2003","normalized_imdb_id":2101,"title":"Cleopatra","year":1912,"rating":2,"dubious":false,"date":"2011-02-07 06:12"},{"_id":"2005","normalized_imdb_id":2281,"title":"Invaders, The","year":1912,"rating":0,"dubious":false,"date":"2011-02-08 01:32"},{"_id":"5357","normalized_imdb_id":277865,"title":"Max and the Donkey","year":1912,"rating":0,"dubious":false,"date":"2014-04-03 12:51"},{"_id":"5364","normalized_imdb_id":3512,"title":"Voyage of the Bourrichon Family, The","year":1913,"rating":0,"dubious":false,"date":"2014-04-04 21:52"},{"_id":"5915","normalized_imdb_id":3424,"title":"Suspense","year":1913,"rating":0,"dubious":false,"date":"2014-11-12 06:50"},{"_id":"4457","normalized_imdb_id":3973,"title":"A Florida Enchantment","year":1914,"rating":2,"dubious":true,"date":"2013-08-10 05:01"},{"_id":"1258","normalized_imdb_id":4972,"title":"Birth of a Nation, The","year":1915,"rating":2,"dubious":false,"date":"2010-07-23 00:46"},{"_id":"2008","normalized_imdb_id":6745,"title":"Gretchen the Greenhorn","year":1916,"rating":3,"dubious":false,"date":"2011-02-08 06:49"},{"_id":"2014","normalized_imdb_id":279914,"title":"Lady Windermere's Fan","year":1916,"rating":3,"dubious":false,"date":"2011-02-10 07:06"},{"_id":"5368","normalized_imdb_id":7507,"title":"Vagabond, The","year":1916,"rating":0,"dubious":false,"date":"2014-04-07 07:12"},{"_id":"5944","normalized_imdb_id":6864,"title":"Intolerance: Love's Struggle Throughout the Ages","year":1916,"rating":0,"dubious":false,"date":"2014-11-24 21:07"},{"_id":"7004","normalized_imdb_id":7361,"title":"Snow White","year":1916,"rating":3,"dubious":false,"date":"2016-07-28 10:24"},{"_id":"1981","normalized_imdb_id":8652,"title":"A Tale of Two Cities","year":1917,"rating":3,"dubious":false,"date":"2011-02-04 19:35"},{"_id":"1993","normalized_imdb_id":8499,"title":"Rebecca of Sunnybrook Farm","year":1917,"rating":3,"dubious":false,"date":"2011-02-05 20:38"},{"_id":"1994","normalized_imdb_id":8443,"title":"Poor Little Rich Girl, The","year":1917,"rating":3,"dubious":false,"date":"2011-02-05 22:14"},{"_id":"2015","normalized_imdb_id":8519,"title":"A Romance of the Redwoods","year":1917,"rating":0,"dubious":false,"date":"2011-02-10 07:07"},{"_id":"2019","normalized_imdb_id":8489,"title":"Raffles, the Amateur Cracksman","year":1917,"rating":2,"dubious":true,"date":"2011-02-11 21:49"},{"_id":"1996","normalized_imdb_id":9682,"title":"Tarzan of the Apes","year":1918,"rating":3,"dubious":false,"date":"2011-02-05 23:23"},{"_id":"2007","normalized_imdb_id":9652,"title":"Stella Maris","year":1918,"rating":3,"dubious":false,"date":"2011-02-08 06:03"},{"_id":"5441","normalized_imdb_id":8844,"title":"Are Crooks Dishonest?","year":1918,"rating":0,"dubious":false,"date":"2014-05-04 12:57"},{"_id":"7108","normalized_imdb_id":10281,"title":"Ich mochte kein Mann sein","year":1918,"rating":3,"dubious":true,"date":"2016-09-08 21:11"},{"_id":"2018","normalized_imdb_id":10879,"title":"When the Clouds Roll by","year":1919,"rating":3,"dubious":true,"date":"2011-02-11 21:47"},{"_id":"2588","normalized_imdb_id":9968,"title":"Broken Blossoms or The Yellow Man and the Girl","year":1919,"rating":0,"dubious":false,"date":"2011-08-02 02:19"},{"_id":"1306","normalized_imdb_id":10323,"title":"Cabinet of Dr. Caligari, The","year":1920,"rating":0,"dubious":false,"date":"2010-07-25 08:41"},{"_id":"1991","normalized_imdb_id":11588,"title":"Pollyanna","year":1920,"rating":3,"dubious":false,"date":"2011-02-05 19:26"},{"_id":"5948","normalized_imdb_id":11870,"title":"Within Our Gates","year":1920,"rating":3,"dubious":false,"date":"2014-11-26 18:13"},{"_id":"1263","normalized_imdb_id":12532,"title":"Orphans of the Storm","year":1921,"rating":3,"dubious":false,"date":"2010-07-23 00:52"},{"_id":"3945","normalized_imdb_id":12349,"title":"Kid, The","year":1921,"rating":0,"dubious":false,"date":"2013-03-01 08:25"},{"_id":"4204","normalized_imdb_id":11979,"title":"Blot, The","year":1921,"rating":3,"dubious":false,"date":"2013-06-04 13:54"},{"_id":"5898","normalized_imdb_id":12364,"title":"Körkarlen (The Phantom Carriage)","year":1921,"rating":2,"dubious":false,"date":"2014-11-04 10:56"},{"_id":"1307","normalized_imdb_id":13442,"title":"Nosferatu, eine Symphonie des Grauens","year":1922,"rating":2,"dubious":false,"date":"2010-07-25 08:43"},{"_id":"1631","normalized_imdb_id":13496,"title":"Phantom, The","year":1922,"rating":2,"dubious":false,"date":"2010-10-04 06:22"},{"_id":"1778","normalized_imdb_id":13428,"title":"Nathan der Weise","year":1922,"rating":2,"dubious":false,"date":"2010-11-25 20:51"},{"_id":"2001","normalized_imdb_id":13367,"title":"Man from Beyond, The","year":1922,"rating":1,"dubious":false,"date":"2011-02-07 04:38"},{"_id":"3800","normalized_imdb_id":13257,"title":"Häxan: Witchcraft Through the Ages","year":1922,"rating":3,"dubious":false,"date":"2013-01-03 15:24"},{"_id":"5361","normalized_imdb_id":12543,"title":"Paleface, The","year":1922,"rating":0,"dubious":false,"date":"2014-04-04 15:34"},{"_id":"5901","normalized_imdb_id":13427,"title":"Nanook of the North","year":1922,"rating":1,"dubious":false,"date":"2014-11-05 07:55"},{"_id":"5958","normalized_imdb_id":13140,"title":"Foolish Wives","year":1922,"rating":3,"dubious":false,"date":"2014-12-02 11:56"},{"_id":"5967","normalized_imdb_id":13086,"title":"Dr. Mabuse, der Spieler - Ein Bild der Zeit","year":1922,"rating":3,"dubious":false,"date":"2014-12-07 19:42"},{"_id":"1961","normalized_imdb_id":14429,"title":"Safety Last!","year":1923,"rating":0,"dubious":false,"date":"2011-02-04 00:31"},{"_id":"1967","normalized_imdb_id":14611,"title":"Why Worry?","year":1923,"rating":0,"dubious":false,"date":"2011-02-04 03:26"},{"_id":"1998","normalized_imdb_id":14469,"title":"Silent Command, The","year":1923,"rating":2,"dubious":false,"date":"2011-02-06 22:07"},{"_id":"5888","normalized_imdb_id":13626,"title":"La souriante Madame Beudet","year":1923,"rating":3,"dubious":false,"date":"2014-10-31 12:43"},{"_id":"5949","normalized_imdb_id":14341,"title":"Our Hospitality","year":1923,"rating":0,"dubious":false,"date":"2014-11-27 09:49"},{"_id":"8947","normalized_imdb_id":14624,"title":"A Woman of Paris","year":1923,"rating":2,"dubious":false,"date":"2020-01-03 22:10"},{"_id":"1337","normalized_imdb_id":15175,"title":"Die Nibelungen","year":1924,"rating":2,"dubious":false,"date":"2010-07-26 03:13"},{"_id":"1338","normalized_imdb_id":15174,"title":"Kriemhild's Revenge","year":1924,"rating":2,"dubious":false,"date":"2010-07-26 03:16"},{"_id":"1264","normalized_imdb_id":15400,"title":"Thief of Bagdad, The","year":1924,"rating":0,"dubious":false,"date":"2010-07-23 00:53"},{"_id":"1960","normalized_imdb_id":15498,"title":"Wild Oranges","year":1924,"rating":0,"dubious":false,"date":"2011-02-04 00:16"},{"_id":"2009","normalized_imdb_id":15163,"title":"Navigator, The","year":1924,"rating":0,"dubious":false,"date":"2011-02-09 01:22"},{"_id":"2011","normalized_imdb_id":15324,"title":"Sherlock Jr.","year":1924,"rating":0,"dubious":false,"date":"2011-02-09 03:32"},{"_id":"2016","normalized_imdb_id":14945,"title":"Girl Shy","year":1924,"rating":0,"dubious":false,"date":"2011-02-10 07:09"},{"_id":"2020","normalized_imdb_id":15116,"title":"Manhandled","year":1924,"rating":3,"dubious":false,"date":"2011-02-11 21:50"},{"_id":"2413","normalized_imdb_id":1764657,"title":"Great White Silence, The","year":1924,"rating":0,"dubious":false,"date":"2011-06-18 21:51"},{"_id":"6209","normalized_imdb_id":13845,"title":"Help!","year":1924,"rating":0,"dubious":false,"date":"2015-04-19 16:58"},{"_id":"8458","normalized_imdb_id":15881,"title":"Greed","year":1924,"rating":3,"dubious":false,"date":"2018-10-28 18:03"},{"_id":"1305","normalized_imdb_id":16220,"title":"Phantom of the Opera, The","year":1925,"rating":2,"dubious":false,"date":"2010-07-25 08:39"},{"_id":"1308","normalized_imdb_id":15648,"title":"Battleship Potemkin","year":1925,"rating":0,"dubious":false,"date":"2010-07-25 08:46"},{"_id":"1309","normalized_imdb_id":15864,"title":"Gold Rush, The","year":1925,"rating":0,"dubious":false,"date":"2010-07-25 08:47"},{"_id":"1978","normalized_imdb_id":15863,"title":"Go West","year":1925,"rating":0,"dubious":false,"date":"2011-02-04 15:33"},{"_id":"2012","normalized_imdb_id":15841,"title":"Freshman, The","year":1925,"rating":0,"dubious":false,"date":"2011-02-09 05:12"},{"_id":"3077","normalized_imdb_id":16332,"title":"Seven Chances","year":1925,"rating":0,"dubious":true,"date":"2012-02-27 19:13"},{"_id":"5514","normalized_imdb_id":16039,"title":"Lost World, The","year":1925,"rating":2,"dubious":true,"date":"2014-05-30 07:47"},{"_id":"5962","normalized_imdb_id":15624,"title":"Big Parade, The","year":1925,"rating":2,"dubious":false,"date":"2014-12-04 21:08"},{"_id":"5991","normalized_imdb_id":15361,"title":"Stachka","year":1925,"rating":0,"dubious":false,"date":"2014-12-18 11:17"},{"_id":"1334","normalized_imdb_id":17449,"title":"Temptress, The","year":1926,"rating":1,"dubious":false,"date":"2010-07-26 02:23"},{"_id":"1260","normalized_imdb_id":16884,"title":"Flesh and the Devil","year":1926,"rating":1,"dubious":false,"date":"2010-07-23 00:49"},{"_id":"1310","normalized_imdb_id":17925,"title":"General, The","year":1926,"rating":0,"dubious":false,"date":"2010-07-25 08:49"},{"_id":"1966","normalized_imdb_id":16895,"title":"For Heaven's Sake","year":1926,"rating":0,"dubious":false,"date":"2011-02-04 03:19"},{"_id":"3217","normalized_imdb_id":17410,"title":"So's Your Old Man","year":1926,"rating":3,"dubious":false,"date":"2012-04-30 13:20"},{"_id":"5974","normalized_imdb_id":15532,"title":"Die Abenteuer des Prinzen Achmed","year":1926,"rating":1,"dubious":false,"date":"2014-12-09 09:43"},{"_id":"1227","normalized_imdb_id":18033,"title":"It","year":1927,"rating":3,"dubious":false,"date":"2010-07-22 21:25"},{"_id":"1267","normalized_imdb_id":17136,"title":"Metropolis","year":1927,"rating":1,"dubious":false,"date":"2010-07-23 00:56"},{"_id":"1312","normalized_imdb_id":18192,"title":"Abel Gance's Napoleon","year":1927,"rating":2,"dubious":false,"date":"2010-07-25 08:52"},{"_id":"1311","normalized_imdb_id":18528,"title":"Unknown, The","year":1927,"rating":0,"dubious":false,"date":"2010-07-25 08:50"},{"_id":"1632","normalized_imdb_id":18455,"title":"Sunrise: A Song of Two Humans","year":1927,"rating":2,"dubious":false,"date":"2010-10-04 06:24"},{"_id":"1964","normalized_imdb_id":18051,"title":"Kid Brother, The","year":1927,"rating":0,"dubious":false,"date":"2011-02-04 00:45"},{"_id":"1982","normalized_imdb_id":18199,"title":"Nevada","year":1927,"rating":0,"dubious":false,"date":"2011-02-04 19:53"},{"_id":"2010","normalized_imdb_id":18183,"title":"My Best Girl","year":1927,"rating":3,"dubious":false,"date":"2011-02-09 02:42"},{"_id":"3118","normalized_imdb_id":18578,"title":"Wings","year":1927,"rating":1,"dubious":false,"date":"2012-03-14 04:02"},{"_id":"5975","normalized_imdb_id":18037,"title":"Jazz Singer, The","year":1927,"rating":1,"dubious":false,"date":"2014-12-09 13:55"},{"_id":"7324","normalized_imdb_id":17825,"title":"Downhill [When Boys Leave Home]","year":1927,"rating":1,"dubious":false,"date":"2016-12-13 12:50"},{"_id":"1314","normalized_imdb_id":19254,"title":"Passion of Joan of Arc, The","year":1928,"rating":0,"dubious":false,"date":"2010-07-25 08:56"},{"_id":"1963","normalized_imdb_id":19412,"title":"Speedy","year":1928,"rating":0,"dubious":false,"date":"2011-02-04 00:43"},{"_id":"1968","normalized_imdb_id":18773,"title":"Circus, The","year":1928,"rating":0,"dubious":false,"date":"2011-02-04 03:44"},{"_id":"1970","normalized_imdb_id":18742,"title":"Cameraman, The","year":1928,"rating":0,"dubious":false,"date":"2011-02-04 04:02"},{"_id":"1971","normalized_imdb_id":19421,"title":"Steamboat Bill, Jr.","year":1928,"rating":0,"dubious":false,"date":"2011-02-04 04:39"},{"_id":"1972","normalized_imdb_id":19304,"title":"Racket, The","year":1928,"rating":0,"dubious":false,"date":"2011-02-04 05:01"},{"_id":"1977","normalized_imdb_id":18684,"title":"Beggars of Life","year":1928,"rating":0,"dubious":false,"date":"2011-02-04 15:19"},{"_id":"1979","normalized_imdb_id":19290,"title":"Power of the Press, The","year":1928,"rating":1,"dubious":false,"date":"2011-02-04 16:09"},{"_id":"1980","normalized_imdb_id":18937,"title":"A Girl in Every Port","year":1928,"rating":0,"dubious":false,"date":"2011-02-04 16:33"},{"_id":"2013","normalized_imdb_id":19258,"title":"Patsy, The","year":1928,"rating":3,"dubious":false,"date":"2011-02-09 07:01"},{"_id":"2017","normalized_imdb_id":19571,"title":"While the City Sleeps","year":1928,"rating":2,"dubious":false,"date":"2011-02-11 21:46"},{"_id":"2021","normalized_imdb_id":19130,"title":"Man Who Laughs, The","year":1928,"rating":2,"dubious":false,"date":"2011-02-11 21:51"},{"_id":"5912","normalized_imdb_id":18806,"title":"Crowd, The","year":1928,"rating":1,"dubious":false,"date":"2014-11-10 14:45"},{"_id":"5984","normalized_imdb_id":18839,"title":"Docks of New York, The","year":1928,"rating":2,"dubious":true,"date":"2014-12-15 14:38"},{"_id":"9314","normalized_imdb_id":19237,"title":"Our Dancing Daughters","year":1928,"rating":2,"dubious":false,"date":"2020-10-23 03:25"},{"_id":"1313","normalized_imdb_id":20530,"title":"Un chien andalou","year":1929,"rating":0,"dubious":false,"date":"2010-07-25 08:54"},{"_id":"1953","normalized_imdb_id":19777,"title":"Cocoanuts, The","year":1929,"rating":2,"dubious":false,"date":"2011-02-03 17:39"},{"_id":"1962","normalized_imdb_id":20572,"title":"Welcome Danger","year":1929,"rating":0,"dubious":false,"date":"2011-02-04 00:39"},{"_id":"3897","normalized_imdb_id":19760,"title":"Man with a Movie Camera","year":1929,"rating":0,"dubious":false,"date":"2013-02-14 21:51"},{"_id":"5979","normalized_imdb_id":19702,"title":"Blackmail","year":1929,"rating":2,"dubious":false,"date":"2014-12-12 19:23"},{"_id":"6046","normalized_imdb_id":20286,"title":"Throw of the Dice","year":1929,"rating":0,"dubious":false,"date":"2015-01-14 21:00"},{"_id":"7287","normalized_imdb_id":21015,"title":"Juno and the Paycock [The Shame of Mary Boyle]","year":1929,"rating":3,"dubious":false,"date":"2016-11-22 12:03"},{"_id":"8464","normalized_imdb_id":19729,"title":"Broadway Melody","year":1929,"rating":3,"dubious":false,"date":"2018-11-01 23:24"},{"_id":"1315","normalized_imdb_id":20697,"title":"Blue Angel, The","year":1930,"rating":1,"dubious":false,"date":"2010-07-25 08:57"},{"_id":"1316","normalized_imdb_id":20629,"title":"All Quiet on the Western Front","year":1930,"rating":0,"dubious":false,"date":"2010-07-25 09:00"},{"_id":"1326","normalized_imdb_id":20641,"title":"Anna Christie","year":1930,"rating":3,"dubious":false,"date":"2010-07-26 02:10"},{"_id":"3713","normalized_imdb_id":21040,"title":"Ladies of Leisure","year":1930,"rating":3,"dubious":false,"date":"2012-12-06 01:25"},{"_id":"3871","normalized_imdb_id":21577,"title":"L'Age d'Or","year":1930,"rating":0,"dubious":false,"date":"2013-02-05 10:01"},{"_id":"3865","normalized_imdb_id":21156,"title":"Morocco","year":1930,"rating":1,"dubious":false,"date":"2013-01-31 03:11"},{"_id":"3927","normalized_imdb_id":21148,"title":"Min and Bill","year":1930,"rating":3,"dubious":false,"date":"2013-02-22 17:25"},{"_id":"4253","normalized_imdb_id":20670,"title":"Be Yourself","year":1930,"rating":2,"dubious":false,"date":"2013-06-20 22:04"},{"_id":"6782","normalized_imdb_id":20668,"title":"Bat Whispers, The","year":1930,"rating":3,"dubious":false,"date":"2016-03-18 20:50"},{"_id":"7291","normalized_imdb_id":21165,"title":"Murder!","year":1930,"rating":3,"dubious":false,"date":"2016-11-23 13:56"},{"_id":"8463","normalized_imdb_id":20640,"title":"Animal Crackers","year":1930,"rating":3,"dubious":false,"date":"2018-11-01 23:19"},{"_id":"610","normalized_imdb_id":22100,"title":"M","year":1931,"rating":3,"dubious":false,"date":"2009-12-28 04:11"},{"_id":"628","normalized_imdb_id":22183,"title":"Mädchen in Uniform","year":1931,"rating":3,"dubious":false,"date":"2009-12-31 10:35"},{"_id":"636","normalized_imdb_id":22208,"title":"Night Nurse","year":1931,"rating":3,"dubious":false,"date":"2010-01-10 15:10"},{"_id":"1317","normalized_imdb_id":21884,"title":"Frankenstein","year":1931,"rating":1,"dubious":false,"date":"2010-07-25 09:02"},{"_id":"1327","normalized_imdb_id":20642,"title":"Anna Christie","year":1931,"rating":3,"dubious":false,"date":"2010-07-26 02:13"},{"_id":"1333","normalized_imdb_id":23196,"title":"Mata Hari","year":1931,"rating":3,"dubious":false,"date":"2010-07-26 02:20"},{"_id":"1633","normalized_imdb_id":22458,"title":"Tabu: A Story of the South Seas","year":1931,"rating":0,"dubious":false,"date":"2010-10-04 06:26"},{"_id":"1828","normalized_imdb_id":22000,"title":"Indiscreet","year":1931,"rating":3,"dubious":false,"date":"2010-12-05 19:21"},{"_id":"1956","normalized_imdb_id":22054,"title":"Last Flight, The","year":1931,"rating":0,"dubious":false,"date":"2011-02-03 22:56"},{"_id":"1974","normalized_imdb_id":22251,"title":"Pardon Us","year":1931,"rating":0,"dubious":false,"date":"2011-02-04 05:29"},{"_id":"1985","normalized_imdb_id":21814,"title":"Dracula","year":1931,"rating":2,"dubious":false,"date":"2011-02-05 01:19"},{"_id":"2384","normalized_imdb_id":22158,"title":"Monkey Business","year":1931,"rating":1,"dubious":false,"date":"2011-06-10 21:34"},{"_id":"2705","normalized_imdb_id":21749,"title":"City Lights","year":1931,"rating":3,"dubious":false,"date":"2011-09-23 17:50"},{"_id":"4243","normalized_imdb_id":22074,"title":"Smiling Lieutenant, The","year":1931,"rating":2,"dubious":false,"date":"2013-06-14 20:15"},{"_id":"5741","normalized_imdb_id":21735,"title":"Cheat, The","year":1931,"rating":3,"dubious":true,"date":"2014-09-14 01:27"},{"_id":"5934","normalized_imdb_id":22286,"title":"Public Enemy, The","year":1931,"rating":3,"dubious":true,"date":"2014-11-21 16:07"},{"_id":"6030","normalized_imdb_id":21739,"title":"La Chienne","year":1931,"rating":3,"dubious":false,"date":"2015-01-08 08:31"},{"_id":"6031","normalized_imdb_id":22599,"title":"A Nous la Liberte","year":1931,"rating":1,"dubious":false,"date":"2015-01-08 11:25"},{"_id":"6043","normalized_imdb_id":21079,"title":"Little Caesar","year":1931,"rating":1,"dubious":false,"date":"2015-01-13 13:26"},{"_id":"7294","normalized_imdb_id":22395,"title":"Skin Game, The","year":1931,"rating":3,"dubious":false,"date":"2016-11-24 15:35"},{"_id":"7296","normalized_imdb_id":23395,"title":"Rich and Strange [East of Shanghai]","year":1931,"rating":2,"dubious":false,"date":"2016-11-25 10:24"},{"_id":"8213","normalized_imdb_id":21815,"title":"Dracula","year":1931,"rating":3,"dubious":false,"date":"2018-05-16 13:38"},{"_id":"8467","normalized_imdb_id":21746,"title":"Cimarron","year":1931,"rating":3,"dubious":false,"date":"2018-11-02 23:39"},{"_id":"8557","normalized_imdb_id":21985,"title":"Hyppolit a lakaj","year":1931,"rating":1,"dubious":false,"date":"2018-12-14 23:59"},{"_id":"9095","normalized_imdb_id":22397,"title":"Skippy","year":1931,"rating":3,"dubious":true,"date":"2020-04-27 15:19"},{"_id":"9110","normalized_imdb_id":21730,"title":"Champ, The","year":1931,"rating":1,"dubious":false,"date":"2020-05-03 16:23"},{"_id":"1318","normalized_imdb_id":23042,"title":"I Am a Fugitive from a Chain Gang","year":1932,"rating":1,"dubious":false,"date":"2010-07-25 09:04"},{"_id":"1328","normalized_imdb_id":22958,"title":"Grand Hotel","year":1932,"rating":3,"dubious":false,"date":"2010-07-26 02:15"},{"_id":"1983","normalized_imdb_id":22614,"title":"Age of Consent, The","year":1932,"rating":2,"dubious":false,"date":"2011-02-04 20:30"},{"_id":"2383","normalized_imdb_id":23027,"title":"Horse Feathers","year":1932,"rating":1,"dubious":false,"date":"2011-06-10 21:34"},{"_id":"2550","normalized_imdb_id":23694,"title":"White Zombie","year":1932,"rating":0,"dubious":false,"date":"2011-07-19 00:42"},{"_id":"2767","normalized_imdb_id":22718,"title":"Boudu Saved from Drowning","year":1932,"rating":1,"dubious":false,"date":"2011-10-15 19:54"},{"_id":"3530","normalized_imdb_id":23634,"title":"I Was Born, But...","year":1932,"rating":1,"dubious":false,"date":"2012-09-15 21:07"},{"_id":"3658","normalized_imdb_id":23238,"title":"Most Dangerous Game, The","year":1932,"rating":0,"dubious":false,"date":"2012-11-05 15:07"},{"_id":"3659","normalized_imdb_id":22913,"title":"Freaks","year":1932,"rating":2,"dubious":false,"date":"2012-11-05 18:09"},{"_id":"3844","normalized_imdb_id":24188,"title":"Island of Lost Souls","year":1932,"rating":1,"dubious":false,"date":"2013-01-20 12:01"},{"_id":"4775","normalized_imdb_id":23293,"title":"Old Dark House, The","year":1932,"rating":3,"dubious":false,"date":"2013-11-04 01:52"},{"_id":"5742","normalized_imdb_id":23213,"title":"Merrily We Go to Hell","year":1932,"rating":3,"dubious":true,"date":"2014-09-14 01:57"},{"_id":"5783","normalized_imdb_id":22940,"title":"Girl from Calgary, The","year":1932,"rating":2,"dubious":false,"date":"2014-09-26 19:05"},{"_id":"5910","normalized_imdb_id":23649,"title":"Vampyr","year":1932,"rating":3,"dubious":false,"date":"2014-11-09 15:43"},{"_id":"5929","normalized_imdb_id":23458,"title":"Shanghai Express","year":1932,"rating":3,"dubious":false,"date":"2014-11-19 21:25"},{"_id":"6051","normalized_imdb_id":23590,"title":"Three on a Match","year":1932,"rating":3,"dubious":false,"date":"2015-01-18 01:53"},{"_id":"6052","normalized_imdb_id":23158,"title":"Love Me Tonight","year":1932,"rating":2,"dubious":true,"date":"2015-01-18 09:53"},{"_id":"6063","normalized_imdb_id":23427,"title":"Scarface","year":1932,"rating":1,"dubious":false,"date":"2015-01-25 12:00"},{"_id":"6092","normalized_imdb_id":23385,"title":"Red-Headed Woman","year":1932,"rating":3,"dubious":false,"date":"2015-02-03 04:25"},{"_id":"6176","normalized_imdb_id":23935,"title":"Death Kiss, The","year":1932,"rating":1,"dubious":false,"date":"2015-03-30 00:15"},{"_id":"6852","normalized_imdb_id":23582,"title":"Thirteen Women","year":1932,"rating":3,"dubious":false,"date":"2016-04-25 17:13"},{"_id":"6990","normalized_imdb_id":22694,"title":"Blue Light (Das Blaue Licht), The","year":1932,"rating":1,"dubious":false,"date":"2016-07-21 23:17"},{"_id":"7301","normalized_imdb_id":23285,"title":"Number 17","year":1932,"rating":0,"dubious":false,"date":"2016-11-28 09:19"},{"_id":"802","normalized_imdb_id":24028,"title":"Footlight Parade","year":1933,"rating":3,"dubious":false,"date":"2010-05-13 19:56"},{"_id":"1330","normalized_imdb_id":24481,"title":"Queen Christina","year":1933,"rating":3,"dubious":false,"date":"2010-07-26 02:17"},{"_id":"1248","normalized_imdb_id":24473,"title":"Private Life of Henry VIII., The","year":1933,"rating":1,"dubious":false,"date":"2010-07-23 00:19"},{"_id":"2229","normalized_imdb_id":24216,"title":"King Kong","year":1933,"rating":0,"dubious":false,"date":"2011-04-23 19:11"},{"_id":"2231","normalized_imdb_id":24264,"title":"Little Women","year":1933,"rating":3,"dubious":false,"date":"2011-04-23 19:16"},{"_id":"3188","normalized_imdb_id":23753,"title":"Alice in Wonderland","year":1933,"rating":3,"dubious":false,"date":"2012-04-16 16:01"},{"_id":"3210","normalized_imdb_id":24727,"title":"Vampire Bat, The","year":1933,"rating":3,"dubious":false,"date":"2012-04-30 04:30"},{"_id":"4335","normalized_imdb_id":24034,"title":"42nd Street","year":1933,"rating":3,"dubious":true,"date":"2013-07-12 09:28"},{"_id":"5029","normalized_imdb_id":23932,"title":"Day of Reckoning","year":1933,"rating":3,"dubious":false,"date":"2014-01-02 21:16"},{"_id":"5185","normalized_imdb_id":23969,"title":"Duck Soup","year":1933,"rating":1,"dubious":false,"date":"2014-02-19 17:52"},{"_id":"5752","normalized_imdb_id":24679,"title":"Tomorrow at Seven","year":1933,"rating":3,"dubious":true,"date":"2014-09-16 22:23"},{"_id":"5916","normalized_imdb_id":24069,"title":"Gold Diggers of 1933","year":1933,"rating":3,"dubious":false,"date":"2014-11-12 09:50"},{"_id":"6056","normalized_imdb_id":24008,"title":"Female","year":1933,"rating":3,"dubious":false,"date":"2015-01-19 04:26"},{"_id":"6193","normalized_imdb_id":24625,"title":"A Study in Scarlet","year":1933,"rating":3,"dubious":true,"date":"2015-04-08 22:45"},{"_id":"6205","normalized_imdb_id":24432,"title":"Peanut Vendor, The","year":1933,"rating":0,"dubious":false,"date":"2015-04-16 00:33"},{"_id":"7450","normalized_imdb_id":24184,"title":"Invisible Man, The","year":1933,"rating":1,"dubious":false,"date":"2017-02-16 15:47"},{"_id":"7528","normalized_imdb_id":23775,"title":"Baby Face","year":1933,"rating":3,"dubious":false,"date":"2017-03-24 00:09"},{"_id":"8346","normalized_imdb_id":23940,"title":"Design for Living","year":1933,"rating":1,"dubious":false,"date":"2018-07-28 06:08"},{"_id":"8477","normalized_imdb_id":23876,"title":"Cavalcade","year":1933,"rating":3,"dubious":false,"date":"2018-11-06 19:04"},{"_id":"621","normalized_imdb_id":25316,"title":"It Happened One Night","year":1934,"rating":3,"dubious":false,"date":"2009-12-28 23:20"},{"_id":"1324","normalized_imdb_id":24961,"title":"Cat's-Paw, The","year":1934,"rating":1,"dubious":false,"date":"2010-07-26 02:06"},{"_id":"1325","normalized_imdb_id":25746,"title":"Scarlet Empress, The","year":1934,"rating":3,"dubious":false,"date":"2010-07-26 02:08"},{"_id":"1329","normalized_imdb_id":25617,"title":"Painted Veil, The","year":1934,"rating":1,"dubious":false,"date":"2010-07-26 02:16"},{"_id":"1246","normalized_imdb_id":25004,"title":"Count of Monte Cristo, The","year":1934,"rating":1,"dubious":false,"date":"2010-07-23 00:14"},{"_id":"1270","normalized_imdb_id":24991,"title":"Cleopatra","year":1934,"rating":1,"dubious":false,"date":"2010-07-23 01:02"},{"_id":"1379","normalized_imdb_id":25586,"title":"Of Human Bondage","year":1934,"rating":1,"dubious":false,"date":"2010-07-27 05:38"},{"_id":"1795","normalized_imdb_id":24844,"title":"L'atalante","year":1934,"rating":0,"dubious":false,"date":"2010-11-30 23:36"},{"_id":"1969","normalized_imdb_id":25423,"title":"Lost Patrol, The","year":1934,"rating":0,"dubious":false,"date":"2011-02-04 03:56"},{"_id":"4443","normalized_imdb_id":25822,"title":"Spitfire","year":1934,"rating":3,"dubious":false,"date":"2013-08-05 14:41"},{"_id":"4702","normalized_imdb_id":25465,"title":"Maniac","year":1934,"rating":3,"dubious":false,"date":"2013-10-17 01:01"},{"_id":"5319","normalized_imdb_id":24831,"title":"Anne of Green Gables","year":1934,"rating":3,"dubious":false,"date":"2014-03-24 16:49"},{"_id":"5523","normalized_imdb_id":25424,"title":"Lost in the Stratosphere","year":1934,"rating":2,"dubious":false,"date":"2014-06-02 08:58"},{"_id":"5821","normalized_imdb_id":25755,"title":"Search for Beauty","year":1934,"rating":3,"dubious":false,"date":"2014-10-08 23:14"},{"_id":"6772","normalized_imdb_id":25091,"title":"Evelyn Prentice","year":1934,"rating":3,"dubious":false,"date":"2016-03-12 19:01"},{"_id":"7304","normalized_imdb_id":25452,"title":"Man Who Knew Too Much, The","year":1934,"rating":3,"dubious":false,"date":"2016-11-29 12:05"},{"_id":"7999","normalized_imdb_id":25301,"title":"Imitation of Life","year":1934,"rating":3,"dubious":false,"date":"2018-01-10 10:35"},{"_id":"8653","normalized_imdb_id":25543,"title":"Mystery Liner","year":1934,"rating":0,"dubious":false,"date":"2019-02-26 06:28"},{"_id":"595","normalized_imdb_id":27125,"title":"Top Hat","year":1935,"rating":2,"dubious":false,"date":"2009-12-27 22:00"},{"_id":"1242","normalized_imdb_id":26029,"title":"39 Steps, The","year":1935,"rating":3,"dubious":false,"date":"2010-07-22 23:41"},{"_id":"1261","normalized_imdb_id":26071,"title":"Anna Karenina","year":1935,"rating":2,"dubious":false,"date":"2010-07-23 00:50"},{"_id":"1361","normalized_imdb_id":26752,"title":"Mutiny on the Bounty","year":1935,"rating":1,"dubious":false,"date":"2010-07-27 04:34"},{"_id":"1685","normalized_imdb_id":26768,"title":"Naughty Marietta","year":1935,"rating":3,"dubious":false,"date":"2010-10-23 05:30"},{"_id":"2362","normalized_imdb_id":26942,"title":"Roberta","year":1935,"rating":3,"dubious":false,"date":"2011-05-29 23:35"},{"_id":"2756","normalized_imdb_id":26667,"title":"Magnificent Obsession","year":1935,"rating":3,"dubious":false,"date":"2011-10-13 02:09"},{"_id":"3881","normalized_imdb_id":26778,"title":"A Night At The Opera","year":1935,"rating":1,"dubious":false,"date":"2013-02-07 06:04"},{"_id":"3891","normalized_imdb_id":26138,"title":"Bride of Frankenstein, The","year":1935,"rating":3,"dubious":false,"date":"2013-02-11 11:06"},{"_id":"5750","normalized_imdb_id":26599,"title":"Lady in Scarlet, The","year":1935,"rating":2,"dubious":false,"date":"2014-09-15 22:31"},{"_id":"5913","normalized_imdb_id":26939,"title":"Riverside Murder, The","year":1935,"rating":2,"dubious":true,"date":"2014-11-11 00:36"},{"_id":"7998","normalized_imdb_id":26663,"title":"Mad Love","year":1935,"rating":2,"dubious":false,"date":"2018-01-09 23:47"},{"_id":"596","normalized_imdb_id":28333,"title":"Swing Time","year":1936,"rating":1,"dubious":false,"date":"2009-12-27 22:01"},{"_id":"1323","normalized_imdb_id":27977,"title":"Modern Times","year":1936,"rating":0,"dubious":false,"date":"2010-07-26 02:04"},{"_id":"1237","normalized_imdb_id":27438,"title":"Charge of the Light Brigade, The","year":1936,"rating":1,"dubious":false,"date":"2010-07-22 23:34"},{"_id":"1359","normalized_imdb_id":28216,"title":"San Francisco","year":1936,"rating":1,"dubious":false,"date":"2010-07-27 04:31"},{"_id":"1360","normalized_imdb_id":28505,"title":"Wife vs. Secretary","year":1936,"rating":2,"dubious":false,"date":"2010-07-27 04:32"},{"_id":"1369","normalized_imdb_id":28096,"title":"Petrified Forest, The","year":1936,"rating":3,"dubious":false,"date":"2010-07-27 05:20"},{"_id":"1992","normalized_imdb_id":27996,"title":"Mr. Deeds Goes to Town","year":1936,"rating":3,"dubious":false,"date":"2011-02-05 20:21"},{"_id":"2363","normalized_imdb_id":27387,"title":"Born to Dance","year":1936,"rating":3,"dubious":false,"date":"2011-05-29 23:39"},{"_id":"2554","normalized_imdb_id":28174,"title":"Revolt of the Zombies","year":1936,"rating":0,"dubious":false,"date":"2011-07-19 22:22"},{"_id":"2699","normalized_imdb_id":27562,"title":"Earthworm Tractors","year":1936,"rating":1,"dubious":false,"date":"2011-09-21 02:18"},{"_id":"2853","normalized_imdb_id":28021,"title":"Osaka Elegy","year":1936,"rating":3,"dubious":false,"date":"2011-11-19 17:34"},{"_id":"3280","normalized_imdb_id":28355,"title":"Theodora Goes Wild","year":1936,"rating":3,"dubious":false,"date":"2012-05-22 01:29"},{"_id":"3401","normalized_imdb_id":27698,"title":"Great Ziegfeld, The","year":1936,"rating":3,"dubious":false,"date":"2012-07-07 08:11"},{"_id":"3548","normalized_imdb_id":29207,"title":"Mandarin Mystery, The","year":1936,"rating":3,"dubious":true,"date":"2012-09-25 10:41"},{"_id":"3560","normalized_imdb_id":27752,"title":"Only Son, The","year":1936,"rating":3,"dubious":false,"date":"2012-09-29 18:33"},{"_id":"3598","normalized_imdb_id":28683,"title":"Camille","year":1936,"rating":3,"dubious":false,"date":"2012-10-15 18:22"},{"_id":"4010","normalized_imdb_id":28092,"title":"Pennies from Heaven","year":1936,"rating":3,"dubious":false,"date":"2013-03-24 06:52"},{"_id":"4069","normalized_imdb_id":28203,"title":"Romeo and Juliet","year":1936,"rating":3,"dubious":true,"date":"2013-04-17 16:17"},{"_id":"4143","normalized_imdb_id":27407,"title":"Bullets or Ballots","year":1936,"rating":3,"dubious":false,"date":"2013-05-20 02:54"},{"_id":"5852","normalized_imdb_id":28010,"title":"My Man Godfrey","year":1936,"rating":2,"dubious":false,"date":"2014-10-19 22:01"},{"_id":"5926","normalized_imdb_id":28212,"title":"Sabotage","year":1936,"rating":3,"dubious":false,"date":"2014-11-18 10:10"},{"_id":"6096","normalized_imdb_id":27652,"title":"Fury","year":1936,"rating":2,"dubious":false,"date":"2015-02-04 03:12"},{"_id":"6174","normalized_imdb_id":28000,"title":"Murder at Glen Athol","year":1936,"rating":3,"dubious":false,"date":"2015-03-29 15:21"},{"_id":"6210","normalized_imdb_id":3427056,"title":"Il caso Valdemar","year":1936,"rating":0,"dubious":false,"date":"2015-04-19 18:29"},{"_id":"7227","normalized_imdb_id":28356,"title":"These Three","year":1936,"rating":2,"dubious":true,"date":"2016-10-29 08:32"},{"_id":"7308","normalized_imdb_id":28231,"title":"Secret Agent","year":1936,"rating":3,"dubious":false,"date":"2016-12-01 11:36"},{"_id":"7992","normalized_imdb_id":27545,"title":"Dracula's Daughter","year":1936,"rating":3,"dubious":false,"date":"2018-01-08 10:52"},{"_id":"597","normalized_imdb_id":29546,"title":"Shall We Dance","year":1937,"rating":1,"dubious":false,"date":"2009-12-27 22:02"},{"_id":"631","normalized_imdb_id":29604,"title":"Stage Door","year":1937,"rating":3,"dubious":true,"date":"2010-01-03 22:11"},{"_id":"795","normalized_imdb_id":29608,"title":"Stella Dallas","year":1937,"rating":3,"dubious":false,"date":"2010-05-13 18:54"},{"_id":"1332","normalized_imdb_id":28739,"title":"Conquest","year":1937,"rating":2,"dubious":false,"date":"2010-07-26 02:19"},{"_id":"1335","normalized_imdb_id":29682,"title":"Topper","year":1937,"rating":2,"dubious":false,"date":"2010-07-26 02:27"},{"_id":"1336","normalized_imdb_id":29162,"title":"Lost Horizon","year":1937,"rating":2,"dubious":false,"date":"2010-07-26 02:29"},{"_id":"1240","normalized_imdb_id":29442,"title":"Prisoner of Zenda, The","year":1937,"rating":1,"dubious":false,"date":"2010-07-22 23:37"},{"_id":"1244","normalized_imdb_id":29087,"title":"Knight Without Armor","year":1937,"rating":2,"dubious":false,"date":"2010-07-23 00:08"},{"_id":"1358","normalized_imdb_id":29377,"title":"Parnell","year":1937,"rating":2,"dubious":false,"date":"2010-07-27 04:30"},{"_id":"1976","normalized_imdb_id":29583,"title":"Snow White and the Seven Dwarfs","year":1937,"rating":3,"dubious":true,"date":"2011-02-04 07:11"},{"_id":"2382","normalized_imdb_id":28772,"title":"A Day at the Races","year":1937,"rating":2,"dubious":false,"date":"2011-06-10 21:34"},{"_id":"3968","normalized_imdb_id":29322,"title":"Nothing Sacred","year":1937,"rating":0,"dubious":false,"date":"2013-03-10 23:40"},{"_id":"4255","normalized_imdb_id":29192,"title":"Make Way for Tomorrow","year":1937,"rating":3,"dubious":false,"date":"2013-06-21 03:44"},{"_id":"5617","normalized_imdb_id":29565,"title":"Murder at the Baskervilles (Silver Blaze)","year":1937,"rating":1,"dubious":false,"date":"2014-07-07 05:38"},{"_id":"5740","normalized_imdb_id":29453,"title":"Pepe le Moko","year":1937,"rating":2,"dubious":true,"date":"2014-09-14 01:12"},{"_id":"6554","normalized_imdb_id":28597,"title":"Awful Truth, The","year":1937,"rating":3,"dubious":false,"date":"2015-11-23 08:28"},{"_id":"7317","normalized_imdb_id":29811,"title":"Girl Was Young, The","year":1937,"rating":3,"dubious":false,"date":"2016-12-07 11:30"},{"_id":"7877","normalized_imdb_id":29217,"title":"Marked Woman","year":1937,"rating":3,"dubious":false,"date":"2017-10-30 21:45"},{"_id":"8473","normalized_imdb_id":27552,"title":"Bizarre, Bizarre","year":1937,"rating":3,"dubious":false,"date":"2018-11-05 13:21"},{"_id":"8478","normalized_imdb_id":29146,"title":"Life of Emile Zola, The","year":1937,"rating":1,"dubious":false,"date":"2018-11-06 19:14"},{"_id":"594","normalized_imdb_id":29971,"title":"Carefree","year":1938,"rating":2,"dubious":false,"date":"2009-12-27 21:59"},{"_id":"620","normalized_imdb_id":30341,"title":"Lady Vanishes, The","year":1938,"rating":3,"dubious":false,"date":"2009-12-28 23:19"},{"_id":"994","normalized_imdb_id":30241,"title":"Holiday","year":1938,"rating":3,"dubious":false,"date":"2010-06-28 15:00"},{"_id":"1238","normalized_imdb_id":30044,"title":"Dawn Patrol, The","year":1938,"rating":0,"dubious":false,"date":"2010-07-22 23:35"},{"_id":"1367","normalized_imdb_id":30287,"title":"Jezebel","year":1938,"rating":2,"dubious":false,"date":"2010-07-27 04:56"},{"_id":"1378","normalized_imdb_id":30755,"title":"Sisters, The","year":1938,"rating":2,"dubious":false,"date":"2010-07-27 05:36"},{"_id":"2467","normalized_imdb_id":29942,"title":"Boys Town","year":1938,"rating":0,"dubious":false,"date":"2011-06-29 19:07"},{"_id":"2590","normalized_imdb_id":30473,"title":"Mr. Wong, Detective","year":1938,"rating":1,"dubious":false,"date":"2011-08-03 14:24"},{"_id":"3103","normalized_imdb_id":29843,"title":"Adventures of Robin Hood, The","year":1938,"rating":2,"dubious":false,"date":"2012-03-09 20:50"},{"_id":"3283","normalized_imdb_id":29929,"title":"Bluebeard's Eighth Wife","year":1938,"rating":2,"dubious":false,"date":"2012-05-24 13:43"},{"_id":"3400","normalized_imdb_id":29947,"title":"Bringing Up Baby","year":1938,"rating":3,"dubious":false,"date":"2012-07-07 05:59"},{"_id":"3951","normalized_imdb_id":30149,"title":"Four Daughters","year":1938,"rating":3,"dubious":false,"date":"2013-03-04 05:45"},{"_id":"4495","normalized_imdb_id":30396,"title":"Mad Miss Manton, The","year":1938,"rating":3,"dubious":false,"date":"2013-08-20 18:34"},{"_id":"6042","normalized_imdb_id":30127,"title":"Baker's Wife, The","year":1938,"rating":1,"dubious":false,"date":"2015-01-13 09:20"},{"_id":"7290","normalized_imdb_id":29870,"title":"Angels with Dirty Faces","year":1938,"rating":1,"dubious":true,"date":"2016-11-23 12:38"},{"_id":"174","normalized_imdb_id":32138,"title":"Wizard of Oz, The","year":1939,"rating":3,"dubious":false,"date":"2008-09-03 21:13"},{"_id":"291","normalized_imdb_id":31381,"title":"Gone with the Wind","year":1939,"rating":3,"dubious":false,"date":"2009-03-02 14:31"},{"_id":"383","normalized_imdb_id":31235,"title":"Dodge City","year":1939,"rating":2,"dubious":false,"date":"2009-07-28 04:37"},{"_id":"588","normalized_imdb_id":32143,"title":"Women, The","year":1939,"rating":3,"dubious":false,"date":"2009-12-27 21:46"},{"_id":"593","normalized_imdb_id":31971,"title":"Stagecoach","year":1939,"rating":3,"dubious":false,"date":"2009-12-27 21:58"},{"_id":"1239","normalized_imdb_id":32145,"title":"Wuthering Heights","year":1939,"rating":2,"dubious":false,"date":"2010-07-22 23:36"},{"_id":"1245","normalized_imdb_id":31385,"title":"Goodbye, Mr. Chips","year":1939,"rating":2,"dubious":false,"date":"2010-07-23 00:12"},{"_id":"1259","normalized_imdb_id":31725,"title":"Ninotchka","year":1939,"rating":3,"dubious":false,"date":"2010-07-23 00:47"},{"_id":"1368","normalized_imdb_id":31516,"title":"Juarez","year":1939,"rating":2,"dubious":false,"date":"2010-07-27 05:18"},{"_id":"1370","normalized_imdb_id":31210,"title":"Dark Victory","year":1939,"rating":3,"dubious":false,"date":"2010-07-27 05:22"},{"_id":"1371","normalized_imdb_id":31826,"title":"Essex and Elizabeth","year":1939,"rating":2,"dubious":false,"date":"2010-07-27 05:23"},{"_id":"1382","normalized_imdb_id":32155,"title":"Young Mr. Lincoln","year":1939,"rating":2,"dubious":false,"date":"2010-07-27 05:41"},{"_id":"1383","normalized_imdb_id":31507,"title":"Jesse James","year":1939,"rating":2,"dubious":false,"date":"2010-07-27 05:43"},{"_id":"1384","normalized_imdb_id":31252,"title":"Drums Along the Mohawk","year":1939,"rating":2,"dubious":false,"date":"2010-07-27 05:44"},{"_id":"1385","normalized_imdb_id":31981,"title":"Story of Alexander Graham Bell, The","year":1939,"rating":2,"dubious":false,"date":"2010-07-27 05:45"},{"_id":"1973","normalized_imdb_id":31322,"title":"Flying Deuces, The","year":1939,"rating":0,"dubious":false,"date":"2011-02-04 05:27"},{"_id":"2086","normalized_imdb_id":31455,"title":"Hunchback of Notre Dame, The","year":1939,"rating":0,"dubious":false,"date":"2011-03-03 23:51"},{"_id":"2372","normalized_imdb_id":31060,"title":"At the Circus","year":1939,"rating":2,"dubious":false,"date":"2011-06-05 23:12"},{"_id":"2555","normalized_imdb_id":31387,"title":"Gorilla, The","year":1939,"rating":3,"dubious":false,"date":"2011-07-20 00:28"},{"_id":"2622","normalized_imdb_id":31680,"title":"Mr. Wong in Chinatown","year":1939,"rating":1,"dubious":false,"date":"2011-08-16 16:49"},{"_id":"2851","normalized_imdb_id":31742,"title":"Of Mice and Men","year":1939,"rating":1,"dubious":false,"date":"2011-11-19 16:48"},{"_id":"3089","normalized_imdb_id":31885,"title":"Rules of the Game, The","year":1939,"rating":3,"dubious":false,"date":"2012-03-04 12:14"},{"_id":"3723","normalized_imdb_id":31066,"title":"Babes in Arms","year":1939,"rating":3,"dubious":false,"date":"2012-12-06 21:07"},{"_id":"5634","normalized_imdb_id":31225,"title":"Destry Rides Again","year":1939,"rating":3,"dubious":false,"date":"2014-07-13 20:43"},{"_id":"5763","normalized_imdb_id":31709,"title":"Nancy Drew... Reporter","year":1939,"rating":3,"dubious":false,"date":"2014-09-19 21:48"},{"_id":"5863","normalized_imdb_id":31022,"title":"Adventures of Sherlock Holmes, The","year":1939,"rating":3,"dubious":false,"date":"2014-10-23 00:31"},{"_id":"5946","normalized_imdb_id":31679,"title":"Mr. Smith Goes to Washington","year":1939,"rating":2,"dubious":false,"date":"2014-11-25 12:59"},{"_id":"7322","normalized_imdb_id":31505,"title":"Jamaica Inn","year":1939,"rating":3,"dubious":false,"date":"2016-12-12 12:08"},{"_id":"8098","normalized_imdb_id":31514,"title":"Le jour se lève","year":1939,"rating":2,"dubious":false,"date":"2018-03-07 21:21"},{"_id":"8511","normalized_imdb_id":31397,"title":"Gulliver's Travels","year":1939,"rating":0,"dubious":false,"date":"2018-12-05 01:17"},{"_id":"9038","normalized_imdb_id":31593,"title":"Love Affair","year":1939,"rating":3,"dubious":false,"date":"2020-03-16 04:34"},{"_id":"478","normalized_imdb_id":32910,"title":"Pinocchio","year":1940,"rating":1,"dubious":false,"date":"2009-08-23 21:41"},{"_id":"618","normalized_imdb_id":32976,"title":"Rebecca","year":1940,"rating":3,"dubious":false,"date":"2009-12-28 23:16"},{"_id":"1265","normalized_imdb_id":33152,"title":"Thief of Bagdad, The","year":1940,"rating":0,"dubious":false,"date":"2010-07-23 00:54"},{"_id":"1501","normalized_imdb_id":32811,"title":"Mortal Storm, The","year":1940,"rating":3,"dubious":false,"date":"2010-08-25 03:15"},{"_id":"1355","normalized_imdb_id":32349,"title":"Comrade X","year":1940,"rating":2,"dubious":false,"date":"2010-07-27 04:23"},{"_id":"1356","normalized_imdb_id":32273,"title":"Boom Town","year":1940,"rating":1,"dubious":false,"date":"2010-07-27 04:27"},{"_id":"1357","normalized_imdb_id":33105,"title":"Strange Cargo","year":1940,"rating":0,"dubious":false,"date":"2010-07-27 04:28"},{"_id":"1366","normalized_imdb_id":32983,"title":"Return of Frank James, The","year":1940,"rating":0,"dubious":false,"date":"2010-07-27 04:54"},{"_id":"1373","normalized_imdb_id":32194,"title":"All This, and Heaven Too","year":1940,"rating":2,"dubious":false,"date":"2010-07-27 05:26"},{"_id":"1380","normalized_imdb_id":32701,"title":"Letter, The","year":1940,"rating":2,"dubious":false,"date":"2010-07-27 05:39"},{"_id":"1387","normalized_imdb_id":32551,"title":"Grapes of Wrath, The","year":1940,"rating":3,"dubious":false,"date":"2010-07-27 05:48"},{"_id":"1975","normalized_imdb_id":32339,"title":"A Chump at Oxford","year":1940,"rating":0,"dubious":false,"date":"2011-02-04 06:04"},{"_id":"2556","normalized_imdb_id":32215,"title":"Ape, The","year":1940,"rating":3,"dubious":false,"date":"2011-07-20 02:34"},{"_id":"2678","normalized_imdb_id":33021,"title":"Santa Fe Trail","year":1940,"rating":1,"dubious":false,"date":"2011-09-14 02:15"},{"_id":"3033","normalized_imdb_id":32599,"title":"His Girl Friday","year":1940,"rating":3,"dubious":true,"date":"2012-02-09 03:26"},{"_id":"3050","normalized_imdb_id":33028,"title":"Sea Hawk, The","year":1940,"rating":3,"dubious":false,"date":"2012-02-18 08:06"},{"_id":"3470","normalized_imdb_id":32553,"title":"Great Dictator, The","year":1940,"rating":3,"dubious":false,"date":"2012-08-13 07:55"},{"_id":"4257","normalized_imdb_id":32943,"title":"Pride and Prejudice","year":1940,"rating":3,"dubious":false,"date":"2013-06-22 02:57"},{"_id":"4354","normalized_imdb_id":32946,"title":"Primrose Path","year":1940,"rating":3,"dubious":false,"date":"2013-07-16 01:15"},{"_id":"4363","normalized_imdb_id":32406,"title":"Chamber of Horrors / Door with the Seven Locks","year":1940,"rating":2,"dubious":false,"date":"2013-07-18 18:31"},{"_id":"4415","normalized_imdb_id":32376,"title":"Dance, Girl, Dance","year":1940,"rating":3,"dubious":false,"date":"2013-07-29 18:14"},{"_id":"4943","normalized_imdb_id":32904,"title":"Philadelphia Story, The","year":1940,"rating":3,"dubious":true,"date":"2013-12-12 17:01"},{"_id":"5039","normalized_imdb_id":32455,"title":"Fantasia","year":1940,"rating":0,"dubious":false,"date":"2014-01-04 14:32"},{"_id":"5320","normalized_imdb_id":32211,"title":"Anne Of Windy Poplars","year":1940,"rating":3,"dubious":false,"date":"2014-03-24 18:19"},{"_id":"5773","normalized_imdb_id":31359,"title":"Gaslight","year":1940,"rating":3,"dubious":false,"date":"2014-09-22 19:32"},{"_id":"5802","normalized_imdb_id":32690,"title":"Last Alarm, The","year":1940,"rating":3,"dubious":true,"date":"2014-10-04 20:12"},{"_id":"7311","normalized_imdb_id":32484,"title":"Foreign Correspondent","year":1940,"rating":1,"dubious":false,"date":"2016-12-02 14:34"},{"_id":"7861","normalized_imdb_id":33045,"title":"Shop Around the Corner, The","year":1940,"rating":3,"dubious":true,"date":"2017-10-19 12:11"},{"_id":"8480","normalized_imdb_id":32676,"title":"Knute Rockne All American","year":1940,"rating":1,"dubious":false,"date":"2018-11-08 04:56"},{"_id":"1331","normalized_imdb_id":34328,"title":"Two-Faced Woman","year":1941,"rating":2,"dubious":false,"date":"2010-07-26 02:18"},{"_id":"1512","normalized_imdb_id":34175,"title":"Shanghai Gesture, The","year":1941,"rating":3,"dubious":false,"date":"2010-08-28 02:03"},{"_id":"1230","normalized_imdb_id":33870,"title":"Maltese Falcon, The","year":1941,"rating":1,"dubious":false,"date":"2010-07-22 23:02"},{"_id":"1266","normalized_imdb_id":33467,"title":"Citizen Kane","year":1941,"rating":1,"dubious":false,"date":"2010-07-23 00:55"},{"_id":"1117","normalized_imdb_id":33563,"title":"Dumbo","year":1941,"rating":2,"dubious":false,"date":"2010-07-09 04:38"},{"_id":"1372","normalized_imdb_id":33836,"title":"Little Foxes, The","year":1941,"rating":2,"dubious":false,"date":"2010-07-27 05:24"},{"_id":"1386","normalized_imdb_id":33804,"title":"Lady Eve, The","year":1941,"rating":2,"dubious":false,"date":"2010-07-27 05:46"},{"_id":"1682","normalized_imdb_id":33533,"title":"Devil and Miss Jones, The","year":1941,"rating":3,"dubious":false,"date":"2010-10-23 04:56"},{"_id":"1941","normalized_imdb_id":33727,"title":"Mr. Bug Goes to Town","year":1941,"rating":1,"dubious":false,"date":"2011-01-29 22:50"},{"_id":"2410","normalized_imdb_id":33717,"title":"High Sierra","year":1941,"rating":1,"dubious":false,"date":"2011-06-18 04:15"},{"_id":"2436","normalized_imdb_id":34398,"title":"Wolf Man, The","year":1941,"rating":2,"dubious":false,"date":"2011-06-23 04:08"},{"_id":"2446","normalized_imdb_id":33459,"title":"Cheers for Miss Bishop","year":1941,"rating":3,"dubious":false,"date":"2011-06-26 23:01"},{"_id":"2468","normalized_imdb_id":33902,"title":"Men of Boys Town","year":1941,"rating":1,"dubious":false,"date":"2011-06-29 19:07"},{"_id":"2867","normalized_imdb_id":33627,"title":"49th Parallel","year":1941,"rating":0,"dubious":false,"date":"2011-11-26 17:09"},{"_id":"2906","normalized_imdb_id":33436,"title":"Buck Privates","year":1941,"rating":3,"dubious":false,"date":"2011-12-07 00:08"},{"_id":"2910","normalized_imdb_id":33723,"title":"Hold That Ghost","year":1941,"rating":3,"dubious":false,"date":"2011-12-07 06:39"},{"_id":"3717","normalized_imdb_id":33891,"title":"Meet John Doe","year":1941,"rating":3,"dubious":false,"date":"2012-12-06 20:17"},{"_id":"4359","normalized_imdb_id":34240,"title":"Sullivan's Travels","year":1941,"rating":3,"dubious":false,"date":"2013-07-17 14:29"},{"_id":"6171","normalized_imdb_id":33928,"title":"Murder by Invitation","year":1941,"rating":3,"dubious":false,"date":"2015-03-28 23:47"},{"_id":"6318","normalized_imdb_id":33802,"title":"Ladies In Retirement","year":1941,"rating":1,"dubious":false,"date":"2015-06-18 02:13"},{"_id":"7329","normalized_imdb_id":34248,"title":"Suspicion","year":1941,"rating":3,"dubious":false,"date":"2016-12-15 13:15"},{"_id":"8625","normalized_imdb_id":34241,"title":"Sun valley serenade","year":1941,"rating":0,"dubious":false,"date":"2019-01-31 20:01"},{"_id":"8983","normalized_imdb_id":33729,"title":"How Green Was My Valley","year":1941,"rating":3,"dubious":false,"date":"2020-01-26 04:53"},{"_id":"9025","normalized_imdb_id":34091,"title":"Reluctant Dragon, The","year":1941,"rating":3,"dubious":false,"date":"2020-03-02 03:47"},{"_id":"9192","normalized_imdb_id":33787,"title":"King of the Zombies","year":1941,"rating":3,"dubious":false,"date":"2020-07-06 12:17"},{"_id":"681","normalized_imdb_id":35019,"title":"Major and the Minor, The","year":1942,"rating":3,"dubious":false,"date":"2010-02-15 05:42"},{"_id":"689","normalized_imdb_id":35140,"title":"Now, Voyager","year":1942,"rating":3,"dubious":false,"date":"2010-02-25 02:13"},{"_id":"1076","normalized_imdb_id":34583,"title":"Casablanca","year":1942,"rating":1,"dubious":false,"date":"2010-07-04 14:24"},{"_id":"1289","normalized_imdb_id":35015,"title":"Magnificent Ambersons, The","year":1942,"rating":2,"dubious":false,"date":"2010-07-23 11:27"},{"_id":"1116","normalized_imdb_id":34492,"title":"Bambi","year":1942,"rating":1,"dubious":false,"date":"2010-07-09 04:37"},{"_id":"1388","normalized_imdb_id":35360,"title":"Son of Fury: The Story of Benjamin Blake","year":1942,"rating":1,"dubious":false,"date":"2010-07-27 09:04"},{"_id":"1675","normalized_imdb_id":34746,"title":"For Me and My Gal","year":1942,"rating":3,"dubious":true,"date":"2010-10-23 04:07"},{"_id":"1686","normalized_imdb_id":34882,"title":"I Married an Angel","year":1942,"rating":3,"dubious":false,"date":"2010-10-23 05:33"},{"_id":"2708","normalized_imdb_id":34587,"title":"Cat People","year":1942,"rating":3,"dubious":false,"date":"2011-09-25 05:24"},{"_id":"3518","normalized_imdb_id":34521,"title":"Black Dragons","year":1942,"rating":0,"dubious":false,"date":"2012-09-04 18:52"},{"_id":"3789","normalized_imdb_id":34591,"title":"There Was a Father","year":1942,"rating":0,"dubious":false,"date":"2012-12-30 17:52"},{"_id":"3875","normalized_imdb_id":35415,"title":"Tales of Manhattan","year":1942,"rating":2,"dubious":false,"date":"2013-02-06 17:29"},{"_id":"4475","normalized_imdb_id":33874,"title":"Man Who Came to Dinner, The","year":1942,"rating":3,"dubious":false,"date":"2013-08-15 18:43"},{"_id":"4870","normalized_imdb_id":35567,"title":"Woman of the Year","year":1942,"rating":3,"dubious":false,"date":"2013-11-24 18:52"},{"_id":"5303","normalized_imdb_id":35446,"title":"To Be or Not to Be","year":1942,"rating":0,"dubious":false,"date":"2014-03-19 21:55"},{"_id":"5859","normalized_imdb_id":35317,"title":"Sherlock Holmes and the Secret Weapon","year":1942,"rating":1,"dubious":false,"date":"2014-10-22 00:45"},{"_id":"5938","normalized_imdb_id":35279,"title":"Saboteur","year":1956,"rating":1,"dubious":false,"date":"2014-11-22 17:38"},{"_id":"6384","normalized_imdb_id":35093,"title":"Mrs. Miniver","year":1942,"rating":3,"dubious":false,"date":"2015-08-01 18:41"},{"_id":"7696","normalized_imdb_id":36326,"title":"Saludos Amigos","year":1942,"rating":0,"dubious":false,"date":"2017-06-19 14:37"},{"_id":"7697","normalized_imdb_id":34613,"title":"Corpse Vanishes, The","year":1942,"rating":1,"dubious":true,"date":"2017-06-19 21:11"},{"_id":"1374","normalized_imdb_id":36230,"title":"Old Acquaintance","year":1943,"rating":3,"dubious":false,"date":"2010-07-27 05:27"},{"_id":"1375","normalized_imdb_id":36515,"title":"Watch on the Rhine","year":1943,"rating":3,"dubious":false,"date":"2010-07-27 05:30"},{"_id":"1691","normalized_imdb_id":35942,"title":"Girl Crazy","year":1943,"rating":1,"dubious":false,"date":"2010-10-23 05:49"},{"_id":"1955","normalized_imdb_id":36027,"title":"I Walked with a Zombie","year":1943,"rating":3,"dubious":false,"date":"2011-02-03 21:50"},{"_id":"1959","normalized_imdb_id":36363,"title":"Sky's the Limit, The","year":1943,"rating":1,"dubious":false,"date":"2011-02-03 23:57"},{"_id":"1987","normalized_imdb_id":36323,"title":"Sahara","year":1943,"rating":0,"dubious":false,"date":"2011-02-05 06:15"},{"_id":"1988","normalized_imdb_id":35957,"title":"Guadalcanal Diary","year":1943,"rating":0,"dubious":false,"date":"2011-02-05 06:22"},{"_id":"2407","normalized_imdb_id":36418,"title":"Tender Comrade","year":1943,"rating":3,"dubious":false,"date":"2011-06-17 11:33"},{"_id":"3753","normalized_imdb_id":36506,"title":"Day of Wrath","year":1943,"rating":3,"dubious":false,"date":"2012-12-16 20:24"},{"_id":"3839","normalized_imdb_id":36112,"title":"Life and Death of Colonel Blimp, The","year":1943,"rating":2,"dubious":false,"date":"2013-01-18 22:03"},{"_id":"3890","normalized_imdb_id":35753,"title":"Le Corbeau: The Raven","year":1943,"rating":3,"dubious":false,"date":"2013-02-10 21:37"},{"_id":"4617","normalized_imdb_id":36342,"title":"Shadow of a Doubt","year":1943,"rating":3,"dubious":false,"date":"2013-09-22 18:54"},{"_id":"4699","normalized_imdb_id":36400,"title":"Judo Saga (Sanshiro Sugata)","year":1943,"rating":0,"dubious":false,"date":"2013-10-15 16:37"},{"_id":"5209","normalized_imdb_id":35770,"title":"Cry 'Havoc'","year":1943,"rating":3,"dubious":false,"date":"2014-02-27 16:21"},{"_id":"5554","normalized_imdb_id":35881,"title":"Fires Were Started","year":1943,"rating":0,"dubious":false,"date":"2014-06-09 12:57"},{"_id":"6310","normalized_imdb_id":36244,"title":"Ox-Bow Incident, The","year":1943,"rating":1,"dubious":false,"date":"2015-06-13 10:52"},{"_id":"6315","normalized_imdb_id":36367,"title":"So Proudly We Hail!","year":1943,"rating":3,"dubious":false,"date":"2015-06-15 20:57"},{"_id":"6781","normalized_imdb_id":36969,"title":"Jane Eyre","year":1943,"rating":3,"dubious":true,"date":"2016-03-18 01:26"},{"_id":"7410","normalized_imdb_id":36172,"title":"More the Merrier, The","year":1943,"rating":1,"dubious":false,"date":"2017-01-20 07:11"},{"_id":"7475","normalized_imdb_id":35017,"title":"La main du diable","year":1943,"rating":1,"dubious":false,"date":"2017-03-01 14:47"},{"_id":"7834","normalized_imdb_id":35636,"title":"Angels of Sin","year":1943,"rating":3,"dubious":false,"date":"2017-09-25 14:22"},{"_id":"8090","normalized_imdb_id":36341,"title":"Seventh Victim, The","year":1943,"rating":3,"dubious":false,"date":"2018-03-05 01:19"},{"_id":"8501","normalized_imdb_id":35735,"title":"China","year":1943,"rating":3,"dubious":true,"date":"2018-11-28 17:56"},{"_id":"8801","normalized_imdb_id":35160,"title":"Ossessione","year":1943,"rating":1,"dubious":false,"date":"2019-07-29 16:13"},{"_id":"201","normalized_imdb_id":36613,"title":"Arsenic and Old Lace","year":1944,"rating":3,"dubious":false,"date":"2008-10-23 15:39"},{"_id":"1416","normalized_imdb_id":36775,"title":"Double Indemnity","year":1944,"rating":3,"dubious":false,"date":"2010-08-01 13:06"},{"_id":"1376","normalized_imdb_id":37094,"title":"Mr. Skeffington","year":1944,"rating":2,"dubious":false,"date":"2010-07-27 05:34"},{"_id":"1676","normalized_imdb_id":37059,"title":"Meet Me in St. Louis","year":1944,"rating":3,"dubious":false,"date":"2010-10-23 04:18"},{"_id":"1683","normalized_imdb_id":36891,"title":"Hail the Conquering Hero","year":1944,"rating":2,"dubious":false,"date":"2010-10-23 05:01"},{"_id":"2045","normalized_imdb_id":36914,"title":"Torment","year":1944,"rating":0,"dubious":false,"date":"2011-02-15 14:19"},{"_id":"2181","normalized_imdb_id":37469,"title":"Window in the Window","year":1944,"rating":1,"dubious":false,"date":"2011-04-10 19:15"},{"_id":"2715","normalized_imdb_id":37008,"title":"Laura","year":1944,"rating":3,"dubious":false,"date":"2011-09-26 23:31"},{"_id":"3134","normalized_imdb_id":36723,"title":"Cover Girl","year":1944,"rating":3,"dubious":false,"date":"2012-03-21 02:41"},{"_id":"3154","normalized_imdb_id":37280,"title":"Since You Went Away","year":1944,"rating":3,"dubious":false,"date":"2012-03-31 23:16"},{"_id":"3245","normalized_imdb_id":37382,"title":"To Have and Have Not","year":1944,"rating":3,"dubious":false,"date":"2012-05-11 17:28"},{"_id":"3279","normalized_imdb_id":36940,"title":"I'll Be Seeing You","year":1944,"rating":3,"dubious":false,"date":"2012-05-21 23:16"},{"_id":"4222","normalized_imdb_id":37120,"title":"National Velvet","year":1944,"rating":3,"dubious":false,"date":"2013-06-08 21:47"},{"_id":"4698","normalized_imdb_id":36947,"title":"Most Beautiful (Ichiban utsukushiku), The","year":1944,"rating":3,"dubious":false,"date":"2013-10-15 15:46"},{"_id":"5983","normalized_imdb_id":37017,"title":"Lifeboat","year":1944,"rating":3,"dubious":false,"date":"2014-12-15 07:15"},{"_id":"6319","normalized_imdb_id":38166,"title":"Three Caballeros, The","year":1944,"rating":0,"dubious":false,"date":"2015-06-18 02:41"},{"_id":"6420","normalized_imdb_id":37076,"title":"Minstrel Man","year":1944,"rating":1,"dubious":false,"date":"2015-08-27 05:46"},{"_id":"6515","normalized_imdb_id":36695,"title":"A Canterbury Tale","year":1944,"rating":3,"dubious":false,"date":"2015-10-26 15:03"},{"_id":"9270","normalized_imdb_id":37415,"title":"Uninvited, The","year":1944,"rating":3,"dubious":false,"date":"2020-09-12 15:57"},{"_id":"9718","normalized_imdb_id":36818,"title":"Die Feuerzangenbowle","year":1944,"rating":1,"dubious":false,"date":"2021-04-29 07:55"},{"_id":"794","normalized_imdb_id":37913,"title":"Mildred Pierce","year":1945,"rating":3,"dubious":false,"date":"2010-05-13 18:42"},{"_id":"1213","normalized_imdb_id":37800,"title":"I Know Where I'm Going","year":1945,"rating":3,"dubious":false,"date":"2010-07-21 10:24"},{"_id":"1280","normalized_imdb_id":38924,"title":"Seventh Veil, The","year":1945,"rating":3,"dubious":false,"date":"2010-07-23 01:16"},{"_id":"1544","normalized_imdb_id":37558,"title":"Brief Encounter","year":1945,"rating":3,"dubious":false,"date":"2010-09-07 15:05"},{"_id":"1639","normalized_imdb_id":37508,"title":"Along Came Jones","year":1945,"rating":0,"dubious":false,"date":"2010-10-04 06:55"},{"_id":"2004","normalized_imdb_id":37820,"title":"Isle of the Dead","year":1945,"rating":3,"dubious":false,"date":"2011-02-07 07:06"},{"_id":"2434","normalized_imdb_id":37671,"title":"Enchanted Cottage, The","year":1945,"rating":3,"dubious":false,"date":"2011-06-22 16:11"},{"_id":"3271","normalized_imdb_id":37954,"title":"Objective, Burma!","year":1945,"rating":0,"dubious":false,"date":"2012-05-19 04:19"},{"_id":"3583","normalized_imdb_id":37884,"title":"Lost Weekend, The","year":1945,"rating":2,"dubious":false,"date":"2012-10-09 20:08"},{"_id":"3999","normalized_imdb_id":37638,"title":"Detour","year":1945,"rating":1,"dubious":false,"date":"2013-03-19 13:45"},{"_id":"4252","normalized_imdb_id":38109,"title":"Spellbound","year":1945,"rating":3,"dubious":false,"date":"2013-06-20 16:55"},{"_id":"4428","normalized_imdb_id":38890,"title":"Rome, Open City","year":1945,"rating":3,"dubious":false,"date":"2013-08-01 09:01"},{"_id":"5081","normalized_imdb_id":38057,"title":"Scarlet Street","year":1945,"rating":3,"dubious":false,"date":"2014-01-16 15:06"},{"_id":"5129","normalized_imdb_id":37674,"title":"Children of Paradise","year":1945,"rating":2,"dubious":false,"date":"2014-02-02 22:30"},{"_id":"5677","normalized_imdb_id":37843,"title":"Keep Your Powder Dry","year":1945,"rating":3,"dubious":false,"date":"2014-08-04 07:13"},{"_id":"5856","normalized_imdb_id":38259,"title":"Woman in Green, The","year":1945,"rating":3,"dubious":true,"date":"2014-10-20 10:11"},{"_id":"6017","normalized_imdb_id":37514,"title":"Anchors Aweigh","year":1945,"rating":0,"dubious":false,"date":"2015-01-04 19:12"},{"_id":"6848","normalized_imdb_id":37365,"title":"Thin Man Goes Home","year":1945,"rating":2,"dubious":false,"date":"2016-04-24 19:04"},{"_id":"6945","normalized_imdb_id":38017,"title":"Red Dragon, The","year":1945,"rating":1,"dubious":false,"date":"2016-06-22 06:46"},{"_id":"7185","normalized_imdb_id":37635,"title":"Dead of Night","year":1945,"rating":3,"dubious":false,"date":"2016-10-11 11:26"},{"_id":"7835","normalized_imdb_id":37630,"title":"Les dames du Bois de Boulogne","year":1945,"rating":3,"dubious":false,"date":"2017-09-25 14:23"},{"_id":"9005","normalized_imdb_id":38250,"title":"Wicked Lady, The","year":1945,"rating":3,"dubious":false,"date":"2020-02-07 00:34"},{"_id":"622","normalized_imdb_id":38787,"title":"Notorious","year":1946,"rating":2,"dubious":false,"date":"2009-12-28 23:21"},{"_id":"786","normalized_imdb_id":38589,"title":"Harvey Girls, The","year":1946,"rating":3,"dubious":false,"date":"2010-05-09 15:46"},{"_id":"971","normalized_imdb_id":38355,"title":"Big Sleep, The","year":1946,"rating":1,"dubious":false,"date":"2010-06-24 05:28"},{"_id":"1424","normalized_imdb_id":38854,"title":"Postman Always Rings Twice, The","year":1946,"rating":1,"dubious":false,"date":"2010-08-01 21:51"},{"_id":"1231","normalized_imdb_id":38733,"title":"Stairway to Heaven","year":1946,"rating":0,"dubious":false,"date":"2010-07-22 23:18"},{"_id":"1268","normalized_imdb_id":38348,"title":"Beauty and the Beast","year":1946,"rating":3,"dubious":false,"date":"2010-07-23 00:57"},{"_id":"1377","normalized_imdb_id":38461,"title":"Deception","year":1946,"rating":0,"dubious":false,"date":"2010-07-27 05:35"},{"_id":"1381","normalized_imdb_id":38474,"title":"Devotion","year":1946,"rating":3,"dubious":false,"date":"2010-07-27 05:40"},{"_id":"1680","normalized_imdb_id":39054,"title":"Two Sisters from Boston","year":1946,"rating":3,"dubious":false,"date":"2010-10-23 04:37"},{"_id":"2235","normalized_imdb_id":38650,"title":"It's a Wonderful Life","year":1946,"rating":3,"dubious":true,"date":"2011-04-23 20:14"},{"_id":"2654","normalized_imdb_id":38661,"title":"Jolson Story, The","year":1946,"rating":1,"dubious":false,"date":"2011-09-04 08:09"},{"_id":"2809","normalized_imdb_id":38559,"title":"Gilda","year":1946,"rating":0,"dubious":false,"date":"2011-10-30 20:15"},{"_id":"3145","normalized_imdb_id":38990,"title":"Strange Woman, The","year":1946,"rating":3,"dubious":false,"date":"2012-03-25 04:51"},{"_id":"3783","normalized_imdb_id":38762,"title":"My Darling Clementine","year":1946,"rating":1,"dubious":false,"date":"2012-12-29 16:33"},{"_id":"3982","normalized_imdb_id":36868,"title":"Best Years of Our Lives, The","year":1946,"rating":2,"dubious":false,"date":"2013-03-15 12:54"},{"_id":"4002","normalized_imdb_id":38494,"title":"Dressed to Kill","year":1946,"rating":3,"dubious":false,"date":"2013-03-21 10:06"},{"_id":"4900","normalized_imdb_id":38499,"title":"Duel in the sun","year":1946,"rating":2,"dubious":false,"date":"2013-12-02 16:53"},{"_id":"5497","normalized_imdb_id":38409,"title":"Chase, The","year":1946,"rating":1,"dubious":false,"date":"2014-05-23 04:59"},{"_id":"5646","normalized_imdb_id":38969,"title":"Song of the South","year":1946,"rating":2,"dubious":false,"date":"2014-07-22 21:06"},{"_id":"5872","normalized_imdb_id":39017,"title":"Terror by Night","year":1946,"rating":1,"dubious":false,"date":"2014-10-24 21:18"},{"_id":"5961","normalized_imdb_id":38453,"title":"Dark Corner, The","year":1946,"rating":1,"dubious":false,"date":"2014-12-04 01:16"},{"_id":"7671","normalized_imdb_id":38991,"title":"Stranger, The","year":1946,"rating":3,"dubious":false,"date":"2017-05-30 13:32"},{"_id":"8052","normalized_imdb_id":38718,"title":"Make Mine Music","year":1946,"rating":1,"dubious":false,"date":"2018-02-15 00:49"},{"_id":"8354","normalized_imdb_id":39112,"title":"Years Between, The","year":1946,"rating":3,"dubious":false,"date":"2018-08-03 10:53"},{"_id":"9182","normalized_imdb_id":38574,"title":"Great Expectations","year":1946,"rating":2,"dubious":false,"date":"2020-06-25 20:07"},{"_id":"1211","normalized_imdb_id":39192,"title":"Black Narcissus","year":1947,"rating":3,"dubious":false,"date":"2010-07-20 22:51"},{"_id":"1235","normalized_imdb_id":39360,"title":"Exile, The","year":1947,"rating":1,"dubious":false,"date":"2010-07-22 23:26"},{"_id":"1278","normalized_imdb_id":39677,"title":"Odd Man Out","year":1947,"rating":2,"dubious":false,"date":"2010-07-23 01:12"},{"_id":"1679","normalized_imdb_id":39431,"title":"Good News","year":1947,"rating":2,"dubious":false,"date":"2010-10-23 04:35"},{"_id":"1681","normalized_imdb_id":39819,"title":"Shocking Miss Pilgrim, The","year":1947,"rating":3,"dubious":false,"date":"2010-10-23 04:51"},{"_id":"2287","normalized_imdb_id":39349,"title":"Egg and I, The","year":1947,"rating":3,"dubious":false,"date":"2011-05-13 00:50"},{"_id":"2330","normalized_imdb_id":39694,"title":"Paradine Case, The","year":1947,"rating":2,"dubious":false,"date":"2011-05-23 19:14"},{"_id":"3047","normalized_imdb_id":39420,"title":"Ghost and Mrs. Muir, The","year":1947,"rating":3,"dubious":false,"date":"2012-02-16 02:03"},{"_id":"3112","normalized_imdb_id":39441,"title":"Gunfighters","year":1947,"rating":2,"dubious":false,"date":"2012-03-12 22:09"},{"_id":"4411","normalized_imdb_id":39286,"title":"Crossfire","year":1947,"rating":2,"dubious":false,"date":"2013-07-28 20:15"},{"_id":"5779","normalized_imdb_id":39236,"title":"Calendar Girl","year":1947,"rating":2,"dubious":false,"date":"2014-09-25 21:49"},{"_id":"6550","normalized_imdb_id":39689,"title":"Build My Gallows High","year":1947,"rating":2,"dubious":false,"date":"2015-11-20 13:55"},{"_id":"7432","normalized_imdb_id":39650,"title":"Nada","year":1947,"rating":3,"dubious":false,"date":"2017-02-07 14:20"},{"_id":"8053","normalized_imdb_id":39404,"title":"Fun & Fancy Free","year":1947,"rating":1,"dubious":false,"date":"2018-02-15 00:51"},{"_id":"8619","normalized_imdb_id":39204,"title":"Body and Soul","year":1947,"rating":3,"dubious":false,"date":"2019-01-29 01:00"},{"_id":"8646","normalized_imdb_id":39324,"title":"Dishonored Lady","year":1947,"rating":3,"dubious":false,"date":"2019-02-22 06:44"},{"_id":"8729","normalized_imdb_id":39938,"title":"Unfinished Dance, The","year":1947,"rating":3,"dubious":false,"date":"2019-04-30 14:47"},{"_id":"8756","normalized_imdb_id":40525,"title":"Lady from Shanghai, The","year":1947,"rating":0,"dubious":false,"date":"2019-05-31 11:34"},{"_id":"8989","normalized_imdb_id":39628,"title":"Miracle on 34th Street","year":1947,"rating":3,"dubious":true,"date":"2020-01-27 23:25"},{"_id":"9598","normalized_imdb_id":39416,"title":"Gentleman's Agreement","year":1947,"rating":1,"dubious":false,"date":"2021-03-29 05:14"},{"_id":"1320","normalized_imdb_id":40724,"title":"Red River","year":1948,"rating":0,"dubious":false,"date":"2010-07-25 09:07"},{"_id":"1229","normalized_imdb_id":40725,"title":"Red Shoes, The","year":1948,"rating":3,"dubious":false,"date":"2010-07-22 22:59"},{"_id":"1232","normalized_imdb_id":40416,"title":"Hamlet","year":1948,"rating":1,"dubious":false,"date":"2010-07-22 23:20"},{"_id":"1236","normalized_imdb_id":40183,"title":"Bonnie Prince Charlie","year":1948,"rating":2,"dubious":false,"date":"2010-07-22 23:29"},{"_id":"1241","normalized_imdb_id":40321,"title":"Enchantment","year":1948,"rating":3,"dubious":false,"date":"2010-07-22 23:39"},{"_id":"1262","normalized_imdb_id":40098,"title":"Anna Karenina","year":1948,"rating":2,"dubious":false,"date":"2010-07-23 00:51"},{"_id":"1354","normalized_imdb_id":40242,"title":"Command Decision","year":1948,"rating":0,"dubious":false,"date":"2010-07-27 04:21"},{"_id":"1601","normalized_imdb_id":156031,"title":"Rudolph the Red-Nosed Reindeer","year":1948,"rating":0,"dubious":false,"date":"2010-09-23 02:00"},{"_id":"1677","normalized_imdb_id":40308,"title":"Easter Parade","year":1948,"rating":3,"dubious":true,"date":"2010-10-23 04:23"},{"_id":"2040","normalized_imdb_id":40746,"title":"Rope","year":1948,"rating":0,"dubious":false,"date":"2011-02-15 12:54"},{"_id":"2098","normalized_imdb_id":40806,"title":"Snake Pit, The","year":1948,"rating":3,"dubious":false,"date":"2011-03-08 06:31"},{"_id":"2256","normalized_imdb_id":40214,"title":"Casbah","year":1948,"rating":1,"dubious":false,"date":"2011-04-30 20:03"},{"_id":"2300","normalized_imdb_id":40379,"title":"Fuller Brush Man, The","year":1948,"rating":1,"dubious":false,"date":"2011-05-17 05:17"},{"_id":"2445","normalized_imdb_id":40613,"title":"Mr. Blandings Builds His Dream House","year":1948,"rating":3,"dubious":false,"date":"2011-06-26 04:28"},{"_id":"3239","normalized_imdb_id":40897,"title":"Treasure of the Sierra Madre, The","year":1948,"rating":0,"dubious":false,"date":"2012-05-08 22:10"},{"_id":"4390","normalized_imdb_id":40458,"title":"I Remember Mama","year":1948,"rating":3,"dubious":false,"date":"2013-07-24 23:09"},{"_id":"4944","normalized_imdb_id":41088,"title":"Act of Violence","year":1948,"rating":2,"dubious":false,"date":"2013-12-13 04:50"},{"_id":"5115","normalized_imdb_id":40202,"title":"Call Northside 777","year":1948,"rating":1,"dubious":false,"date":"2014-01-29 21:22"},{"_id":"6363","normalized_imdb_id":40491,"title":"Joan of Arc","year":1948,"rating":3,"dubious":false,"date":"2015-07-20 20:44"},{"_id":"6517","normalized_imdb_id":40522,"title":"Bicycle Thieves","year":1948,"rating":2,"dubious":false,"date":"2015-10-26 15:39"},{"_id":"8054","normalized_imdb_id":40580,"title":"Melody Time","year":1948,"rating":1,"dubious":false,"date":"2018-02-15 00:54"},{"_id":"8264","normalized_imdb_id":40558,"title":"Macbeth","year":1948,"rating":1,"dubious":false,"date":"2018-05-30 19:28"},{"_id":"8559","normalized_imdb_id":39949,"title":"It Happened in Europe","year":1948,"rating":0,"dubious":false,"date":"2018-12-15 00:01"},{"_id":"611","normalized_imdb_id":41959,"title":"Third Man, The","year":1949,"rating":0,"dubious":false,"date":"2009-12-28 04:12"},{"_id":"1684","normalized_imdb_id":41158,"title":"Barkleys of Broadway, The","year":1949,"rating":3,"dubious":false,"date":"2010-10-23 05:03"},{"_id":"1690","normalized_imdb_id":41716,"title":"On the Town","year":1949,"rating":3,"dubious":false,"date":"2010-10-23 05:48"},{"_id":"1716","normalized_imdb_id":41090,"title":"Adam's Rib","year":1949,"rating":3,"dubious":false,"date":"2010-11-01 04:08"},{"_id":"1736","normalized_imdb_id":41746,"title":"Pinky","year":1949,"rating":3,"dubious":false,"date":"2010-11-05 00:23"},{"_id":"1841","normalized_imdb_id":40221,"title":"Caught","year":1949,"rating":3,"dubious":false,"date":"2010-12-11 12:33"},{"_id":"1986","normalized_imdb_id":41859,"title":"Set-Up, The","year":1949,"rating":0,"dubious":false,"date":"2011-02-05 06:06"},{"_id":"2232","normalized_imdb_id":41594,"title":"Little Women","year":1949,"rating":3,"dubious":false,"date":"2011-04-23 19:17"},{"_id":"2651","normalized_imdb_id":41650,"title":"Mighty Joe Young","year":1949,"rating":0,"dubious":false,"date":"2011-09-03 06:28"},{"_id":"2849","normalized_imdb_id":41628,"title":"Man on the Eiffel Tower, The","year":1949,"rating":2,"dubious":false,"date":"2011-11-19 16:40"},{"_id":"3539","normalized_imdb_id":41154,"title":"Late Spring","year":1949,"rating":3,"dubious":false,"date":"2012-09-23 20:27"},{"_id":"3967","normalized_imdb_id":41587,"title":"A Letter to Three Wives","year":1949,"rating":3,"dubious":false,"date":"2013-03-10 22:44"},{"_id":"4008","normalized_imdb_id":41546,"title":"Kind Hearts and Coronets","year":1949,"rating":1,"dubious":false,"date":"2013-03-23 09:10"},{"_id":"4554","normalized_imdb_id":41386,"title":"Fountainhead, The","year":1949,"rating":1,"dubious":false,"date":"2013-09-11 19:21"},{"_id":"6358","normalized_imdb_id":41452,"title":"Heiress, The","year":1949,"rating":3,"dubious":false,"date":"2015-07-17 00:02"},{"_id":"7018","normalized_imdb_id":41498,"title":"I Was a Male War Bride","year":1949,"rating":2,"dubious":false,"date":"2016-08-02 16:44"},{"_id":"7059","normalized_imdb_id":41094,"title":"Adventures of Ichabod and Mr. Toad, The","year":1949,"rating":0,"dubious":false,"date":"2016-08-23 03:51"},{"_id":"7341","normalized_imdb_id":42004,"title":"Under Capricorn","year":1949,"rating":3,"dubious":false,"date":"2016-12-20 17:56"},{"_id":"9597","normalized_imdb_id":41113,"title":"All the King's Men","year":1949,"rating":1,"dubious":false,"date":"2021-03-29 05:10"},{"_id":"9702","normalized_imdb_id":41947,"title":"Tarzan's Magic Fountain","year":1949,"rating":0,"dubious":false,"date":"2021-04-27 20:01"},{"_id":"9982","normalized_imdb_id":40497,"title":"Jour de Fete","year":1949,"rating":0,"dubious":false,"date":"2021-07-26 07:35"},{"_id":"10135","normalized_imdb_id":42031,"title":"Flame of My Love","year":1949,"rating":3,"dubious":false,"date":"2021-11-21 05:46"},{"_id":"139","normalized_imdb_id":42192,"title":"All About Eve","year":1950,"rating":3,"dubious":false,"date":"2008-08-03 07:10"},{"_id":"608","normalized_imdb_id":43014,"title":"Sunset Blvd.","year":1950,"rating":3,"dubious":false,"date":"2009-12-28 04:08"},{"_id":"1057","normalized_imdb_id":42332,"title":"Cinderella","year":1950,"rating":3,"dubious":false,"date":"2010-07-04 03:53"},{"_id":"1402","normalized_imdb_id":42876,"title":"Rashomon","year":1950,"rating":0,"dubious":false,"date":"2010-07-28 20:54"},{"_id":"1678","normalized_imdb_id":43012,"title":"Summer Stock","year":1950,"rating":3,"dubious":false,"date":"2010-10-23 04:30"},{"_id":"2099","normalized_imdb_id":42208,"title":"Asphalt Jungle, The","year":1950,"rating":1,"dubious":false,"date":"2011-03-08 06:52"},{"_id":"2596","normalized_imdb_id":42546,"title":"Harvey","year":1950,"rating":2,"dubious":false,"date":"2011-08-09 21:00"},{"_id":"3295","normalized_imdb_id":41719,"title":"Orpheus","year":1950,"rating":2,"dubious":false,"date":"2012-05-29 10:18"},{"_id":"3990","normalized_imdb_id":42276,"title":"Born Yesterday","year":1950,"rating":3,"dubious":false,"date":"2013-03-17 20:24"},{"_id":"4031","normalized_imdb_id":42469,"title":"Flying Saucer, The","year":1950,"rating":1,"dubious":false,"date":"2013-04-05 22:27"},{"_id":"4417","normalized_imdb_id":42593,"title":"In a Lonely Place","year":1950,"rating":2,"dubious":false,"date":"2013-07-29 21:24"},{"_id":"4521","normalized_imdb_id":43871,"title":"Odette","year":1950,"rating":3,"dubious":false,"date":"2013-08-29 04:12"},{"_id":"5232","normalized_imdb_id":42792,"title":"No Way Out","year":1950,"rating":3,"dubious":false,"date":"2014-03-05 05:08"},{"_id":"5350","normalized_imdb_id":42369,"title":"D.O.A.","year":1950,"rating":1,"dubious":false,"date":"2014-04-02 10:56"},{"_id":"6233","normalized_imdb_id":42994,"title":"Stage Fright","year":1950,"rating":3,"dubious":false,"date":"2015-05-07 06:53"},{"_id":"7144","normalized_imdb_id":42958,"title":"Scandal","year":1950,"rating":3,"dubious":false,"date":"2016-09-26 05:59"},{"_id":"7836","normalized_imdb_id":42436,"title":"Les enfants terribles","year":1950,"rating":3,"dubious":false,"date":"2017-09-25 14:25"},{"_id":"8363","normalized_imdb_id":43045,"title":"Three Secrets","year":1950,"rating":3,"dubious":false,"date":"2018-08-06 23:20"},{"_id":"9700","normalized_imdb_id":43025,"title":"Tarzan and the Slave Girl","year":1950,"rating":0,"dubious":false,"date":"2021-04-27 19:58"},{"_id":"10059","normalized_imdb_id":42296,"title":"Caged","year":1950,"rating":3,"dubious":false,"date":"2021-09-18 00:57"},{"_id":"871","normalized_imdb_id":43338,"title":"Ace In The Hole","year":1951,"rating":2,"dubious":false,"date":"2010-05-29 00:30"},{"_id":"1417","normalized_imdb_id":44079,"title":"Strangers on a Train","year":1951,"rating":2,"dubious":false,"date":"2010-08-01 13:07"},{"_id":"1207","normalized_imdb_id":43274,"title":"Alice in Wonderland","year":1951,"rating":3,"dubious":false,"date":"2010-07-20 08:37"},{"_id":"1491","normalized_imdb_id":43265,"title":"African Queen, The","year":1951,"rating":0,"dubious":false,"date":"2010-08-21 16:48"},{"_id":"1916","normalized_imdb_id":43456,"title":"Day the Earth Stood Still, The","year":1951,"rating":3,"dubious":false,"date":"2011-01-16 04:32"},{"_id":"2930","normalized_imdb_id":44081,"title":"A Streetcar Named Desire","year":1951,"rating":3,"dubious":false,"date":"2011-12-16 00:48"},{"_id":"2977","normalized_imdb_id":44030,"title":"Show Boat","year":1951,"rating":3,"dubious":false,"date":"2012-01-07 22:36"},{"_id":"2989","normalized_imdb_id":42619,"title":"Diary of a Country Priest","year":1951,"rating":1,"dubious":false,"date":"2012-01-13 16:14"},{"_id":"3389","normalized_imdb_id":43278,"title":"An American in Paris","year":1951,"rating":1,"dubious":false,"date":"2012-06-29 18:45"},{"_id":"3222","normalized_imdb_id":43313,"title":"Early Summer","year":1951,"rating":3,"dubious":false,"date":"2012-04-30 13:43"},{"_id":"3293","normalized_imdb_id":44121,"title":"Thing from Another World, The","year":1951,"rating":1,"dubious":false,"date":"2012-05-29 07:16"},{"_id":"3825","normalized_imdb_id":43332,"title":"Bellissima","year":1951,"rating":3,"dubious":false,"date":"2013-01-14 16:36"},{"_id":"4510","normalized_imdb_id":44100,"title":"Take Care of My Little Girl","year":1951,"rating":3,"dubious":false,"date":"2013-08-27 04:36"},{"_id":"5092","normalized_imdb_id":43949,"title":"Quo Vadis","year":1951,"rating":3,"dubious":true,"date":"2014-01-21 02:29"},{"_id":"5739","normalized_imdb_id":43390,"title":"Cause for Alarm!","year":1951,"rating":3,"dubious":false,"date":"2014-09-12 19:40"},{"_id":"6498","normalized_imdb_id":44205,"title":"Westward the Women","year":1951,"rating":3,"dubious":false,"date":"2015-10-18 13:41"},{"_id":"7157","normalized_imdb_id":43614,"title":"Idiot, The","year":1951,"rating":3,"dubious":false,"date":"2016-09-28 08:12"},{"_id":"7435","normalized_imdb_id":44092,"title":"Surcos","year":1951,"rating":3,"dubious":false,"date":"2017-02-08 16:04"},{"_id":"9703","normalized_imdb_id":43695,"title":"Tarzan's Peril","year":1951,"rating":1,"dubious":false,"date":"2021-04-27 20:01"},{"_id":"612","normalized_imdb_id":45152,"title":"Singin' in the Rain","year":1952,"rating":3,"dubious":false,"date":"2009-12-28 04:13"},{"_id":"1243","normalized_imdb_id":43769,"title":"Magic Box, The","year":1952,"rating":2,"dubious":false,"date":"2010-07-23 00:03"},{"_id":"1465","normalized_imdb_id":44419,"title":"Big Sky, The","year":1952,"rating":0,"dubious":false,"date":"2010-08-13 04:11"},{"_id":"1689","normalized_imdb_id":44855,"title":"Lovely to Look at","year":1952,"rating":3,"dubious":false,"date":"2010-10-23 05:46"},{"_id":"2704","normalized_imdb_id":44706,"title":"High Noon","year":1952,"rating":2,"dubious":false,"date":"2011-09-23 17:27"},{"_id":"2737","normalized_imdb_id":45061,"title":"Quiet Man, The","year":1952,"rating":1,"dubious":false,"date":"2011-10-05 14:21"},{"_id":"3403","normalized_imdb_id":44502,"title":"Clash by Night","year":1952,"rating":3,"dubious":false,"date":"2012-07-07 17:38"},{"_id":"5972","normalized_imdb_id":43686,"title":"Forbidden Games","year":1952,"rating":3,"dubious":false,"date":"2014-12-09 01:28"},{"_id":"6917","normalized_imdb_id":44837,"title":"Limelight","year":1952,"rating":1,"dubious":false,"date":"2016-06-05 10:40"},{"_id":"6941","normalized_imdb_id":45162,"title":"Snows of Kilimanjaro, The","year":1952,"rating":1,"dubious":false,"date":"2016-06-21 03:48"},{"_id":"7162","normalized_imdb_id":44741,"title":"Ikiru","year":1952,"rating":1,"dubious":false,"date":"2016-09-29 13:54"},{"_id":"7323","normalized_imdb_id":44391,"title":"Bad and the Beautiful, The","year":1952,"rating":2,"dubious":true,"date":"2016-12-12 22:26"},{"_id":"8241","normalized_imdb_id":43511,"title":"Europe '51","year":1952,"rating":3,"dubious":false,"date":"2018-05-22 20:17"},{"_id":"9596","normalized_imdb_id":44672,"title":"Greatest Show on Earth, The","year":1952,"rating":2,"dubious":false,"date":"2021-03-29 05:04"},{"_id":"9701","normalized_imdb_id":45220,"title":"Tarzan's Savage Fury","year":1952,"rating":0,"dubious":false,"date":"2021-04-27 19:59"},{"_id":"9955","normalized_imdb_id":215033,"title":"Parasakthi","year":1952,"rating":2,"dubious":false,"date":"2021-07-11 09:01"},{"_id":"9975","normalized_imdb_id":45197,"title":"Story of Robin Hood and His Merrie Men, The","year":1952,"rating":3,"dubious":false,"date":"2021-07-23 22:59"},{"_id":"1272","normalized_imdb_id":45943,"title":"Julius Caesar","year":1953,"rating":1,"dubious":false,"date":"2010-07-23 01:03"},{"_id":"1118","normalized_imdb_id":46183,"title":"Peter Pan","year":1953,"rating":3,"dubious":true,"date":"2010-07-09 04:40"},{"_id":"1444","normalized_imdb_id":46268,"title":"Le Salaire de la Peur","year":1953,"rating":1,"dubious":false,"date":"2010-08-07 00:38"},{"_id":"1554","normalized_imdb_id":46250,"title":"Roman holiday","year":1953,"rating":3,"dubious":false,"date":"2010-09-08 13:32"},{"_id":"1362","normalized_imdb_id":46085,"title":"Mogambo","year":1953,"rating":2,"dubious":false,"date":"2010-07-27 04:39"},{"_id":"1630","normalized_imdb_id":46438,"title":"Tokyo Story","year":1953,"rating":3,"dubious":false,"date":"2010-10-04 04:48"},{"_id":"1692","normalized_imdb_id":45537,"title":"Band Wagon, The","year":1953,"rating":1,"dubious":false,"date":"2010-10-23 05:54"},{"_id":"1883","normalized_imdb_id":46359,"title":"Stalag 17","year":1953,"rating":0,"dubious":false,"date":"2010-12-31 22:43"},{"_id":"2375","normalized_imdb_id":46534,"title":"War of the Worlds, The","year":1953,"rating":1,"dubious":false,"date":"2011-06-06 08:35"},{"_id":"2427","normalized_imdb_id":45591,"title":"Calamity Jane","year":1953,"rating":3,"dubious":false,"date":"2011-06-22 06:49"},{"_id":"2547","normalized_imdb_id":45810,"title":"Gentlemen Prefer Blondes","year":1953,"rating":3,"dubious":false,"date":"2011-07-18 06:27"},{"_id":"2553","normalized_imdb_id":45659,"title":"Cruel Sea, The","year":1953,"rating":3,"dubious":false,"date":"2011-07-19 11:13"},{"_id":"3124","normalized_imdb_id":46076,"title":"Miss Sadie Thompson","year":1953,"rating":3,"dubious":false,"date":"2012-03-17 02:05"},{"_id":"3125","normalized_imdb_id":46269,"title":"Salome","year":1953,"rating":3,"dubious":false,"date":"2012-03-17 02:14"},{"_id":"3303","normalized_imdb_id":46303,"title":"Shane","year":1953,"rating":1,"dubious":false,"date":"2012-06-02 06:23"},{"_id":"3958","normalized_imdb_id":46066,"title":"Mesa of Lost Women","year":1953,"rating":1,"dubious":false,"date":"2013-03-08 04:53"},{"_id":"4071","normalized_imdb_id":45793,"title":"From Here to Eternity","year":1953,"rating":3,"dubious":false,"date":"2013-04-18 11:19"},{"_id":"4301","normalized_imdb_id":45877,"title":"Hitch-Hiker, The","year":1953,"rating":0,"dubious":false,"date":"2013-07-02 19:40"},{"_id":"4616","normalized_imdb_id":45897,"title":"I Confess","year":1953,"rating":1,"dubious":false,"date":"2013-09-22 18:27"},{"_id":"4854","normalized_imdb_id":45555,"title":"Big Heat, The","year":1953,"rating":3,"dubious":false,"date":"2013-11-18 21:28"},{"_id":"4909","normalized_imdb_id":45891,"title":"How to Marry a Millionaire","year":1953,"rating":3,"dubious":false,"date":"2013-12-03 18:41"},{"_id":"5366","normalized_imdb_id":45758,"title":"Fear and Desire","year":1953,"rating":0,"dubious":false,"date":"2014-04-05 16:32"},{"_id":"5736","normalized_imdb_id":46187,"title":"Pickup on South Street","year":1953,"rating":3,"dubious":false,"date":"2014-09-10 04:23"},{"_id":"5937","normalized_imdb_id":46487,"title":"Mr. Hulot's Holiday","year":1953,"rating":3,"dubious":false,"date":"2014-11-21 22:36"},{"_id":"5973","normalized_imdb_id":46478,"title":"Ugetsu","year":1953,"rating":2,"dubious":false,"date":"2014-12-09 02:19"},{"_id":"5998","normalized_imdb_id":46345,"title":"Summer with Monika","year":1953,"rating":3,"dubious":false,"date":"2014-12-21 20:37"},{"_id":"6797","normalized_imdb_id":45826,"title":"Glen or Glenda","year":1953,"rating":0,"dubious":false,"date":"2016-03-26 08:00"},{"_id":"7693","normalized_imdb_id":47677,"title":"Wild One, The","year":1953,"rating":1,"dubious":false,"date":"2017-06-18 04:37"},{"_id":"7900","normalized_imdb_id":45546,"title":"Beast from 20,000 Fathoms, The","year":1953,"rating":1,"dubious":false,"date":"2017-11-14 14:48"},{"_id":"8011","normalized_imdb_id":45911,"title":"Inferno","year":1953,"rating":0,"dubious":false,"date":"2018-01-13 22:49"},{"_id":"8466","normalized_imdb_id":45464,"title":"5,000 Fingers of Dr. T., The","year":1953,"rating":0,"dubious":false,"date":"2018-11-02 12:27"},{"_id":"8634","normalized_imdb_id":45920,"title":"It Came from Outer Space","year":1953,"rating":2,"dubious":false,"date":"2019-02-07 14:33"},{"_id":"9004","normalized_imdb_id":46022,"title":"earrings of Madame de..., The","year":1953,"rating":3,"dubious":false,"date":"2020-02-07 00:04"},{"_id":"9290","normalized_imdb_id":45888,"title":"House of Wax","year":1953,"rating":3,"dubious":false,"date":"2020-10-03 02:08"},{"_id":"9704","normalized_imdb_id":46404,"title":"Tarzan and the She-Devil","year":1953,"rating":1,"dubious":false,"date":"2021-04-27 20:02"},{"_id":"586","normalized_imdb_id":47349,"title":"Phffft","year":1954,"rating":2,"dubious":false,"date":"2009-12-27 20:23"},{"_id":"657","normalized_imdb_id":46451,"title":"Touchez pas au grisbi","year":1954,"rating":1,"dubious":false,"date":"2010-01-22 01:37"},{"_id":"1351","normalized_imdb_id":47472,"title":"Seven Brides for Seven Brothers","year":1954,"rating":3,"dubious":false,"date":"2010-07-27 00:17"},{"_id":"1391","normalized_imdb_id":47673,"title":"White Christmas","year":1954,"rating":3,"dubious":false,"date":"2010-07-28 00:54"},{"_id":"1694","normalized_imdb_id":47136,"title":"Johnny Guitar","year":1954,"rating":2,"dubious":false,"date":"2010-10-23 18:43"},{"_id":"1812","normalized_imdb_id":47296,"title":"On the Waterfront","year":1954,"rating":0,"dubious":false,"date":"2010-12-01 23:04"},{"_id":"1965","normalized_imdb_id":46672,"title":"20000 Leagues Under the Sea","year":1954,"rating":0,"dubious":false,"date":"2011-02-04 03:00"},{"_id":"2132","normalized_imdb_id":47396,"title":"Rear Window","year":1954,"rating":3,"dubious":true,"date":"2011-03-21 09:57"},{"_id":"2158","normalized_imdb_id":47573,"title":"Them!","year":1954,"rating":1,"dubious":false,"date":"2011-03-31 23:50"},{"_id":"2294","normalized_imdb_id":47437,"title":"Sabrina","year":1954,"rating":3,"dubious":false,"date":"2011-05-14 17:02"},{"_id":"2426","normalized_imdb_id":47094,"title":"Hobson's Choice","year":1954,"rating":3,"dubious":false,"date":"2011-06-22 06:29"},{"_id":"2746","normalized_imdb_id":47152,"title":"Knock on Wood","year":1954,"rating":1,"dubious":false,"date":"2011-10-07 08:15"},{"_id":"3337","normalized_imdb_id":46912,"title":"Dial M for Murder","year":1954,"rating":0,"dubious":false,"date":"2012-06-10 23:57"},{"_id":"3600","normalized_imdb_id":47478,"title":"Shichinin no samurai","year":1954,"rating":0,"dubious":false,"date":"2012-10-16 02:18"},{"_id":"3674","normalized_imdb_id":47522,"title":"A Star Is Born","year":1954,"rating":1,"dubious":false,"date":"2012-11-15 14:37"},{"_id":"3925","normalized_imdb_id":46963,"title":"Executive Suite","year":1954,"rating":2,"dubious":false,"date":"2013-02-22 17:08"},{"_id":"3954","normalized_imdb_id":46511,"title":"Journey to Italy","year":1954,"rating":3,"dubious":false,"date":"2013-03-06 07:45"},{"_id":"3993","normalized_imdb_id":47030,"title":"Glenn Miller Story, The","year":1954,"rating":2,"dubious":false,"date":"2013-03-18 22:03"},{"_id":"4048","normalized_imdb_id":47580,"title":"Three Coins in the Fountain","year":1954,"rating":3,"dubious":false,"date":"2013-04-11 21:08"},{"_id":"4710","normalized_imdb_id":46750,"title":"Late Chrysanthemuns","year":1954,"rating":3,"dubious":false,"date":"2013-10-18 12:26"},{"_id":"4883","normalized_imdb_id":46876,"title":"Creature from the Black Lagoon","year":1954,"rating":0,"dubious":false,"date":"2013-11-27 00:11"},{"_id":"5124","normalized_imdb_id":46731,"title":"Attila","year":1954,"rating":2,"dubious":false,"date":"2014-02-01 16:31"},{"_id":"5356","normalized_imdb_id":47443,"title":"Salt of the Earth","year":1954,"rating":3,"dubious":false,"date":"2014-04-03 11:13"},{"_id":"5505","normalized_imdb_id":47034,"title":"Gojira","year":1954,"rating":1,"dubious":false,"date":"2014-05-28 02:33"},{"_id":"7346","normalized_imdb_id":47834,"title":"Animal Farm","year":1954,"rating":0,"dubious":false,"date":"2016-12-22 20:52"},{"_id":"7580","normalized_imdb_id":47638,"title":"Uwasa no onna","year":1954,"rating":3,"dubious":false,"date":"2017-04-17 21:03"},{"_id":"7610","normalized_imdb_id":45665,"title":"Comicos","year":1954,"rating":3,"dubious":false,"date":"2017-05-18 07:42"},{"_id":"8109","normalized_imdb_id":46705,"title":"An American in Rome","year":1954,"rating":1,"dubious":false,"date":"2018-03-14 21:40"},{"_id":"8441","normalized_imdb_id":46828,"title":"Carmen Jones","year":1954,"rating":3,"dubious":false,"date":"2018-10-15 00:16"},{"_id":"9054","normalized_imdb_id":47238,"title":"Miseria e nobilta","year":1954,"rating":3,"dubious":false,"date":"2020-03-27 23:14"},{"_id":"9176","normalized_imdb_id":47127,"title":"Jail Bait","year":1954,"rating":3,"dubious":false,"date":"2020-06-20 21:59"},{"_id":"9567","normalized_imdb_id":46816,"title":"Caine Mutiny, The","year":1954,"rating":1,"dubious":false,"date":"2021-03-16 21:23"},{"_id":"782","normalized_imdb_id":48728,"title":"To Catch a Thief","year":1955,"rating":3,"dubious":false,"date":"2010-05-03 14:43"},{"_id":"878","normalized_imdb_id":48424,"title":"Night of the Hunter, The","year":1955,"rating":3,"dubious":false,"date":"2010-05-29 03:09"},{"_id":"1170","normalized_imdb_id":48280,"title":"Lady and the Tramp","year":1955,"rating":2,"dubious":false,"date":"2010-07-13 18:57"},{"_id":"1693","normalized_imdb_id":47969,"title":"Daddy Long Legs","year":1955,"rating":3,"dubious":false,"date":"2010-10-23 05:56"},{"_id":"1735","normalized_imdb_id":48641,"title":"Sommarnattens leende (Smiles of a Summer Night)","year":1955,"rating":2,"dubious":false,"date":"2010-11-04 16:13"},{"_id":"1827","normalized_imdb_id":48281,"title":"Ladykillers, The","year":1955,"rating":3,"dubious":true,"date":"2010-12-05 13:34"},{"_id":"2115","normalized_imdb_id":48140,"title":"Guys and Dolls","year":1955,"rating":3,"dubious":true,"date":"2011-03-12 15:27"},{"_id":"2344","normalized_imdb_id":46911,"title":"Diabolique","year":1955,"rating":3,"dubious":false,"date":"2011-05-25 22:51"},{"_id":"2552","normalized_imdb_id":46889,"title":"Dam Busters, The","year":1955,"rating":1,"dubious":false,"date":"2011-07-19 11:09"},{"_id":"2926","normalized_imdb_id":48545,"title":"Rebel Without a Cause","year":1955,"rating":1,"dubious":false,"date":"2011-12-14 15:08"},{"_id":"3158","normalized_imdb_id":46969,"title":"Fast and the Furious, The","year":1955,"rating":3,"dubious":true,"date":"2012-04-02 23:28"},{"_id":"3339","normalized_imdb_id":47878,"title":"Big Combo, The","year":1955,"rating":2,"dubious":false,"date":"2012-06-11 18:15"},{"_id":"3404","normalized_imdb_id":48021,"title":"Rififi","year":1955,"rating":1,"dubious":false,"date":"2012-07-08 01:30"},{"_id":"3739","normalized_imdb_id":48801,"title":"We're No Angels","year":1955,"rating":3,"dubious":false,"date":"2012-12-10 01:31"},{"_id":"4073","normalized_imdb_id":47898,"title":"Bride of the Monster","year":1955,"rating":3,"dubious":false,"date":"2013-04-18 21:32"},{"_id":"4108","normalized_imdb_id":48696,"title":"Tarantula","year":1955,"rating":0,"dubious":false,"date":"2013-04-27 18:57"},{"_id":"4442","normalized_imdb_id":48356,"title":"Marty","year":1955,"rating":3,"dubious":false,"date":"2013-08-04 18:32"},{"_id":"4754","normalized_imdb_id":48445,"title":"Oklahoma!","year":1955,"rating":3,"dubious":true,"date":"2013-10-30 03:50"},{"_id":"4896","normalized_imdb_id":48605,"title":"Seven Year Itch, The","year":1955,"rating":1,"dubious":false,"date":"2013-12-01 04:22"},{"_id":"5165","normalized_imdb_id":48673,"title":"Summertime","year":1955,"rating":3,"dubious":false,"date":"2014-02-14 09:13"},{"_id":"5403","normalized_imdb_id":48254,"title":"Killer's Kiss","year":1955,"rating":1,"dubious":false,"date":"2014-04-17 03:15"},{"_id":"5471","normalized_imdb_id":48473,"title":"Pather Panchali","year":1955,"rating":3,"dubious":false,"date":"2014-05-14 23:40"},{"_id":"6055","normalized_imdb_id":48127,"title":"Godzilla Raids Again","year":1955,"rating":2,"dubious":false,"date":"2015-01-19 00:28"},{"_id":"6468","normalized_imdb_id":47577,"title":"This Island Earth","year":1955,"rating":0,"dubious":false,"date":"2015-09-26 05:21"},{"_id":"6481","normalized_imdb_id":48124,"title":"Glass Slipper, The","year":1955,"rating":3,"dubious":false,"date":"2015-10-08 14:21"},{"_id":"6615","normalized_imdb_id":48401,"title":"My Sister Eileen","year":1955,"rating":3,"dubious":false,"date":"2015-12-18 23:36"},{"_id":"7262","normalized_imdb_id":48512,"title":"Prisoner, The","year":1955,"rating":0,"dubious":false,"date":"2016-11-15 08:59"},{"_id":"7360","normalized_imdb_id":48750,"title":"Trouble with Harry, The","year":1955,"rating":2,"dubious":false,"date":"2016-12-27 13:39"},{"_id":"7797","normalized_imdb_id":48517,"title":"Prodigal, The","year":1955,"rating":3,"dubious":false,"date":"2017-09-04 13:58"},{"_id":"7878","normalized_imdb_id":48133,"title":"Les grandes manoeuvres","year":1955,"rating":3,"dubious":false,"date":"2017-10-31 07:25"},{"_id":"8014","normalized_imdb_id":48432,"title":"Not as a Stranger","year":1955,"rating":2,"dubious":false,"date":"2018-01-15 22:12"},{"_id":"357","normalized_imdb_id":49730,"title":"Searchers, The","year":1956,"rating":3,"dubious":false,"date":"2009-06-26 04:23"},{"_id":"1559","normalized_imdb_id":49787,"title":"Spanish Gardener, The","year":1956,"rating":2,"dubious":false,"date":"2010-09-09 08:54"},{"_id":"1216","normalized_imdb_id":48977,"title":"Bad Seed, The","year":1956,"rating":3,"dubious":false,"date":"2010-07-22 13:30"},{"_id":"1092","normalized_imdb_id":49408,"title":"King and I, The","year":1956,"rating":2,"dubious":false,"date":"2010-07-04 23:05"},{"_id":"1545","normalized_imdb_id":49369,"title":"Iron Petticoat, The","year":1956,"rating":1,"dubious":false,"date":"2010-09-07 15:28"},{"_id":"2219","normalized_imdb_id":51207,"title":"Wrong Man, The","year":1956,"rating":1,"dubious":false,"date":"2011-04-23 18:37"},{"_id":"2306","normalized_imdb_id":49223,"title":"Forbidden Planet","year":1956,"rating":0,"dubious":false,"date":"2011-05-18 06:58"},{"_id":"2647","normalized_imdb_id":49287,"title":"Gunslinger","year":1956,"rating":3,"dubious":false,"date":"2011-09-01 09:17"},{"_id":"2698","normalized_imdb_id":49366,"title":"Invasion of the Body Snatchers","year":1956,"rating":3,"dubious":false,"date":"2011-09-21 00:37"},{"_id":"2730","normalized_imdb_id":49096,"title":"Court Jester, The","year":1956,"rating":2,"dubious":false,"date":"2011-10-01 22:55"},{"_id":"2861","normalized_imdb_id":49934,"title":"War and Peace","year":1956,"rating":3,"dubious":false,"date":"2011-11-21 20:10"},{"_id":"2904","normalized_imdb_id":49010,"title":"Bigger Than Life","year":1956,"rating":0,"dubious":false,"date":"2011-12-05 23:37"},{"_id":"3076","normalized_imdb_id":49833,"title":"Ten Commandments, The","year":1956,"rating":2,"dubious":false,"date":"2012-02-27 15:09"},{"_id":"3409","normalized_imdb_id":49189,"title":"...And God Created Woman","year":1956,"rating":3,"dubious":false,"date":"2012-07-09 17:28"},{"_id":"3981","normalized_imdb_id":48960,"title":"Around the World in Eighty Days","year":1956,"rating":0,"dubious":false,"date":"2013-03-15 08:02"},{"_id":"4245","normalized_imdb_id":49640,"title":"Proud and Profane, The","year":1956,"rating":3,"dubious":false,"date":"2013-06-15 06:38"},{"_id":"4402","normalized_imdb_id":49363,"title":"Indestructible Man","year":1956,"rating":1,"dubious":false,"date":"2013-07-26 03:01"},{"_id":"4670","normalized_imdb_id":49038,"title":"Bus Stop","year":1956,"rating":3,"dubious":false,"date":"2013-10-06 21:35"},{"_id":"5414","normalized_imdb_id":49406,"title":"Killing, The","year":1956,"rating":1,"dubious":false,"date":"2014-04-23 13:05"},{"_id":"5470","normalized_imdb_id":48956,"title":"Aparajito","year":1956,"rating":3,"dubious":false,"date":"2014-05-14 23:39"},{"_id":"5555","normalized_imdb_id":49902,"title":"Un condamne a mort s'est echappe ou Le vent souffle ou il veut","year":1956,"rating":0,"dubious":false,"date":"2014-06-09 13:02"},{"_id":"6064","normalized_imdb_id":49782,"title":"Rodan","year":1956,"rating":1,"dubious":false,"date":"2015-01-26 00:57"},{"_id":"6308","normalized_imdb_id":49471,"title":"Man Who Never Was, The","year":1956,"rating":3,"dubious":true,"date":"2015-06-12 12:49"},{"_id":"6641","normalized_imdb_id":49314,"title":"High Society","year":1956,"rating":3,"dubious":false,"date":"2015-12-28 18:02"},{"_id":"7394","normalized_imdb_id":49043,"title":"Calle mayor [Main Street]","year":1956,"rating":3,"dubious":true,"date":"2017-01-13 13:52"},{"_id":"7442","normalized_imdb_id":49470,"title":"Man Who Knew Too Much, The","year":1956,"rating":2,"dubious":false,"date":"2017-02-13 22:57"},{"_id":"8314","normalized_imdb_id":49537,"title":"Flowing","year":1956,"rating":3,"dubious":false,"date":"2018-07-01 01:20"},{"_id":"8358","normalized_imdb_id":49904,"title":"Unguarded Moment, The","year":1956,"rating":1,"dubious":false,"date":"2018-08-04 21:38"},{"_id":"8398","normalized_imdb_id":49196,"title":"Eyewitness","year":1956,"rating":3,"dubious":false,"date":"2018-09-02 20:34"},{"_id":"8872","normalized_imdb_id":49762,"title":"Sissi - The Young Empress","year":1956,"rating":3,"dubious":true,"date":"2019-10-21 17:59"},{"_id":"9055","normalized_imdb_id":48981,"title":"La banda degli onesti","year":1956,"rating":2,"dubious":false,"date":"2020-03-27 23:16"},{"_id":"9719","normalized_imdb_id":49293,"title":"Captain from Kopenick, The","year":1956,"rating":1,"dubious":false,"date":"2021-04-29 08:00"},{"_id":"9993","normalized_imdb_id":49095,"title":"Le coup du berger","year":1956,"rating":3,"dubious":false,"date":"2021-08-03 20:46"},{"_id":"302","normalized_imdb_id":50083,"title":"12 Angry Men","year":1957,"rating":0,"dubious":false,"date":"2009-03-24 15:18"},{"_id":"965","normalized_imdb_id":51114,"title":"True Story of Jesse James, The","year":1957,"rating":2,"dubious":false,"date":"2010-06-20 16:32"},{"_id":"993","normalized_imdb_id":50307,"title":"Desk Set","year":1957,"rating":3,"dubious":false,"date":"2010-06-28 15:00"},{"_id":"1015","normalized_imdb_id":50634,"title":"Cranes Are Flying, The","year":1957,"rating":3,"dubious":false,"date":"2010-06-30 20:33"},{"_id":"1291","normalized_imdb_id":50539,"title":"Incredible Shrinking Man, The","year":1957,"rating":0,"dubious":false,"date":"2010-07-23 14:31"},{"_id":"1274","normalized_imdb_id":50825,"title":"Paths of Glory","year":1957,"rating":0,"dubious":false,"date":"2010-07-23 01:06"},{"_id":"1121","normalized_imdb_id":50798,"title":"Old Yeller","year":1957,"rating":1,"dubious":false,"date":"2010-07-09 04:43"},{"_id":"1660","normalized_imdb_id":51077,"title":"Three Faces of Eve","year":1957,"rating":0,"dubious":false,"date":"2010-10-13 19:58"},{"_id":"1747","normalized_imdb_id":50419,"title":"Funny Face","year":1957,"rating":3,"dubious":false,"date":"2010-11-10 08:18"},{"_id":"1765","normalized_imdb_id":50783,"title":"Nights of Cabiria","year":1957,"rating":3,"dubious":false,"date":"2010-11-19 07:29"},{"_id":"1800","normalized_imdb_id":50585,"title":"Kanal","year":1957,"rating":1,"dubious":false,"date":"2010-12-01 00:00"},{"_id":"1989","normalized_imdb_id":50356,"title":"Enemy Below, The","year":1957,"rating":0,"dubious":false,"date":"2011-02-05 06:25"},{"_id":"2043","normalized_imdb_id":50976,"title":"Seventh Seal, The","year":1957,"rating":1,"dubious":false,"date":"2011-02-15 14:15"},{"_id":"2160","normalized_imdb_id":50766,"title":"Night of the Demon","year":1957,"rating":3,"dubious":true,"date":"2011-04-01 21:27"},{"_id":"2301","normalized_imdb_id":51036,"title":"Sweet Smell of Success","year":1957,"rating":1,"dubious":false,"date":"2011-05-17 05:33"},{"_id":"2420","normalized_imdb_id":50397,"title":"Fire Down Below","year":1957,"rating":0,"dubious":false,"date":"2011-06-21 03:06"},{"_id":"2429","normalized_imdb_id":50490,"title":"Heaven Knows, Mr. Allison","year":1957,"rating":0,"dubious":false,"date":"2011-06-22 06:59"},{"_id":"2520","normalized_imdb_id":50986,"title":"Smultronstället (Wild Strawberries)","year":1957,"rating":2,"dubious":false,"date":"2011-07-12 13:02"},{"_id":"2578","normalized_imdb_id":50933,"title":"Sayonara","year":1957,"rating":2,"dubious":false,"date":"2011-07-27 19:12"},{"_id":"2895","normalized_imdb_id":51051,"title":"Tammy and the Bachelor","year":1957,"rating":3,"dubious":false,"date":"2011-12-03 07:49"},{"_id":"2981","normalized_imdb_id":50212,"title":"Bridge on the River Kwai, The","year":1957,"rating":1,"dubious":false,"date":"2012-01-11 03:32"},{"_id":"3007","normalized_imdb_id":50861,"title":"Prince and the Showgirl, The","year":1957,"rating":3,"dubious":false,"date":"2012-01-27 09:09"},{"_id":"3429","normalized_imdb_id":50105,"title":"An Affair to Remember","year":1957,"rating":2,"dubious":false,"date":"2012-07-17 04:42"},{"_id":"3994","normalized_imdb_id":50792,"title":"Oedipus Rex","year":1957,"rating":1,"dubious":true,"date":"2013-03-18 23:56"},{"_id":"4552","normalized_imdb_id":50371,"title":"A Face in the Crowd","year":1957,"rating":1,"dubious":false,"date":"2013-09-09 17:19"},{"_id":"4559","normalized_imdb_id":50998,"title":"Sorority Girl","year":1957,"rating":3,"dubious":false,"date":"2013-09-12 19:17"},{"_id":"4933","normalized_imdb_id":51201,"title":"Witness for the Prosecution","year":1957,"rating":1,"dubious":false,"date":"2013-12-10 00:56"},{"_id":"6624","normalized_imdb_id":50251,"title":"Mysterians, The","year":1957,"rating":3,"dubious":false,"date":"2015-12-23 23:47"},{"_id":"7017","normalized_imdb_id":50599,"title":"Kiss Them for Me","year":1957,"rating":2,"dubious":false,"date":"2016-08-02 16:43"},{"_id":"7136","normalized_imdb_id":50407,"title":"Forty Guns","year":1957,"rating":2,"dubious":false,"date":"2016-09-23 17:32"},{"_id":"7165","normalized_imdb_id":50613,"title":"Throne of Blood","year":1957,"rating":0,"dubious":false,"date":"2016-09-30 13:27"},{"_id":"7420","normalized_imdb_id":50116,"title":"Amanecer en Puerta Oscura","year":1957,"rating":3,"dubious":false,"date":"2017-01-26 22:14"},{"_id":"8321","normalized_imdb_id":51151,"title":"El vampiro","year":1957,"rating":3,"dubious":false,"date":"2018-07-11 22:18"},{"_id":"8685","normalized_imdb_id":50549,"title":"Island in the Sun","year":1957,"rating":3,"dubious":false,"date":"2019-03-25 09:20"},{"_id":"8736","normalized_imdb_id":50610,"title":"Kronos","year":1957,"rating":0,"dubious":false,"date":"2019-05-07 14:03"},{"_id":"9006","normalized_imdb_id":50421,"title":"Danger stalks near","year":1957,"rating":3,"dubious":false,"date":"2020-02-07 18:50"},{"_id":"609","normalized_imdb_id":52357,"title":"Vertigo","year":1958,"rating":1,"dubious":false,"date":"2009-12-28 04:09"},{"_id":"1572","normalized_imdb_id":51964,"title":"Mädchen in Uniform","year":1958,"rating":3,"dubious":false,"date":"2010-09-16 14:10"},{"_id":"1247","normalized_imdb_id":52374,"title":"Fabulous World of Jules Verne, The","year":1958,"rating":0,"dubious":false,"date":"2010-07-23 00:17"},{"_id":"1255","normalized_imdb_id":52365,"title":"Vikings, The","year":1958,"rating":2,"dubious":false,"date":"2010-07-23 00:38"},{"_id":"1363","normalized_imdb_id":52151,"title":"Run Silent Run Deep","year":1958,"rating":0,"dubious":false,"date":"2010-07-27 04:41"},{"_id":"1364","normalized_imdb_id":52278,"title":"Teacher's Pet","year":1958,"rating":1,"dubious":false,"date":"2010-07-27 04:43"},{"_id":"2281","normalized_imdb_id":51622,"title":"Fly, The","year":1958,"rating":2,"dubious":true,"date":"2011-05-10 20:15"},{"_id":"2373","normalized_imdb_id":51951,"title":"Day the Sky Exploded, The","year":1958,"rating":1,"dubious":false,"date":"2011-06-05 23:54"},{"_id":"2476","normalized_imdb_id":51554,"title":"Dracula (Horror of Dracula)","year":1958,"rating":3,"dubious":false,"date":"2011-07-01 22:42"},{"_id":"2585","normalized_imdb_id":52394,"title":"Wild Women of Wongo, The","year":1958,"rating":3,"dubious":false,"date":"2011-08-01 13:13"},{"_id":"2763","normalized_imdb_id":52169,"title":"Screaming Skull, The","year":1958,"rating":2,"dubious":false,"date":"2011-10-14 06:06"},{"_id":"2823","normalized_imdb_id":50706,"title":"Mon Oncle","year":1958,"rating":3,"dubious":false,"date":"2011-11-03 23:38"},{"_id":"3146","normalized_imdb_id":52311,"title":"Touch of Evil","year":1958,"rating":1,"dubious":false,"date":"2012-03-26 09:41"},{"_id":"3056","normalized_imdb_id":51658,"title":"Gigi","year":1958,"rating":2,"dubious":false,"date":"2012-02-19 01:46"},{"_id":"3238","normalized_imdb_id":51525,"title":"Defiant Ones, The","year":1958,"rating":0,"dubious":false,"date":"2012-05-08 21:58"},{"_id":"3321","normalized_imdb_id":51383,"title":"Auntie Mame","year":1958,"rating":3,"dubious":false,"date":"2012-06-04 23:20"},{"_id":"3926","normalized_imdb_id":52182,"title":"Separate Tables","year":1958,"rating":3,"dubious":false,"date":"2013-02-22 17:17"},{"_id":"3977","normalized_imdb_id":52225,"title":"South Pacific","year":1958,"rating":3,"dubious":true,"date":"2013-03-12 05:55"},{"_id":"4211","normalized_imdb_id":51773,"title":"Indiscreet","year":1958,"rating":3,"dubious":false,"date":"2013-06-06 01:18"},{"_id":"4410","normalized_imdb_id":51755,"title":"I Bury the Living","year":1958,"rating":1,"dubious":true,"date":"2013-07-28 15:16"},{"_id":"4849","normalized_imdb_id":51776,"title":"Inn of the Sixth Happiness, The","year":1958,"rating":3,"dubious":false,"date":"2013-11-17 21:34"},{"_id":"6012","normalized_imdb_id":51459,"title":"Cat on a Hot Tin Roof","year":1958,"rating":3,"dubious":false,"date":"2015-01-03 13:52"},{"_id":"6938","normalized_imdb_id":51579,"title":"Love Is My Profession","year":1958,"rating":3,"dubious":false,"date":"2016-06-17 22:21"},{"_id":"7054","normalized_imdb_id":51422,"title":"Blood of the Vampire","year":1958,"rating":0,"dubious":false,"date":"2016-08-19 11:17"},{"_id":"7135","normalized_imdb_id":51808,"title":"Hidden Fortress, The","year":1958,"rating":0,"dubious":false,"date":"2016-09-23 13:12"},{"_id":"7606","normalized_imdb_id":51786,"title":"It! The Terror from Beyond Space","year":1958,"rating":1,"dubious":false,"date":"2017-05-12 14:18"},{"_id":"8344","normalized_imdb_id":52017,"title":"Brink of Life","year":1958,"rating":3,"dubious":false,"date":"2018-07-27 23:51"},{"_id":"8450","normalized_imdb_id":51758,"title":"I Want To Live!","year":1958,"rating":3,"dubious":false,"date":"2018-10-20 17:44"},{"_id":"236","normalized_imdb_id":53198,"title":"400 Blows, The","year":1959,"rating":0,"dubious":false,"date":"2008-12-11 08:38"},{"_id":"474","normalized_imdb_id":53285,"title":"Sleeping Beauty","year":1959,"rating":3,"dubious":false,"date":"2009-08-22 10:34"},{"_id":"1419","normalized_imdb_id":52618,"title":"Ben-Hur","year":1959,"rating":3,"dubious":false,"date":"2010-08-01 13:10"},{"_id":"1256","normalized_imdb_id":52948,"title":"Journey to the Center of the Earth","year":1959,"rating":1,"dubious":false,"date":"2010-07-23 00:39"},{"_id":"1555","normalized_imdb_id":53131,"title":"Nun's Story, The","year":1959,"rating":3,"dubious":false,"date":"2010-09-08 13:33"},{"_id":"1591","normalized_imdb_id":52722,"title":"Darby O'Gill and the Little People","year":1959,"rating":3,"dubious":false,"date":"2010-09-22 05:35"},{"_id":"2023","normalized_imdb_id":53291,"title":"Some Like It Hot","year":1959,"rating":3,"dubious":false,"date":"2011-02-14 12:34"},{"_id":"2095","normalized_imdb_id":52918,"title":"Imitation of Life","year":1959,"rating":3,"dubious":false,"date":"2011-03-07 17:13"},{"_id":"2228","normalized_imdb_id":53125,"title":"North By Northwest","year":1959,"rating":1,"dubious":false,"date":"2011-04-23 19:08"},{"_id":"2645","normalized_imdb_id":53318,"title":"Suddenly, Last Summer","year":1959,"rating":3,"dubious":false,"date":"2011-08-29 23:26"},{"_id":"2796","normalized_imdb_id":52846,"title":"Giant Gila Monster, The","year":1959,"rating":3,"dubious":false,"date":"2011-10-26 00:45"},{"_id":"3119","normalized_imdb_id":51372,"title":"Araya","year":1959,"rating":3,"dubious":false,"date":"2012-03-14 04:15"},{"_id":"3166","normalized_imdb_id":53363,"title":"Tingler, The","year":1959,"rating":1,"dubious":false,"date":"2012-04-05 03:55"},{"_id":"3442","normalized_imdb_id":53428,"title":"Come Dance with Me!","year":1959,"rating":3,"dubious":false,"date":"2012-07-23 17:32"},{"_id":"3525","normalized_imdb_id":53134,"title":"Good Morning (Ohayô)","year":1959,"rating":3,"dubious":false,"date":"2012-09-09 17:45"},{"_id":"3608","normalized_imdb_id":52861,"title":"Great War, The","year":1959,"rating":1,"dubious":false,"date":"2012-10-16 23:26"},{"_id":"4050","normalized_imdb_id":52844,"title":"Ghost of Dragstrip Hollow","year":1959,"rating":3,"dubious":false,"date":"2013-04-13 22:05"},{"_id":"4065","normalized_imdb_id":52655,"title":"A Bucket of Blood","year":1959,"rating":2,"dubious":false,"date":"2013-04-16 00:00"},{"_id":"4199","normalized_imdb_id":52561,"title":"Anatomy of a Murder","year":1959,"rating":1,"dubious":false,"date":"2013-06-02 08:15"},{"_id":"4373","normalized_imdb_id":51744,"title":"House on Haunted Hill","year":1959,"rating":3,"dubious":true,"date":"2013-07-20 13:26"},{"_id":"4392","normalized_imdb_id":54462,"title":"Wasp Woman, The","year":1959,"rating":3,"dubious":true,"date":"2013-07-25 06:04"},{"_id":"4523","normalized_imdb_id":52602,"title":"Bat, The","year":1959,"rating":3,"dubious":false,"date":"2013-08-30 17:50"},{"_id":"6405","normalized_imdb_id":52847,"title":"Gidget","year":1959,"rating":3,"dubious":false,"date":"2015-08-15 02:47"},{"_id":"6645","normalized_imdb_id":53388,"title":"Battle in Outer Space","year":1959,"rating":1,"dubious":false,"date":"2015-12-31 01:24"},{"_id":"6833","normalized_imdb_id":52572,"title":"Apur Sansar","year":1959,"rating":0,"dubious":false,"date":"2016-04-15 08:48"},{"_id":"6901","normalized_imdb_id":53221,"title":"Rio Bravo","year":1959,"rating":1,"dubious":false,"date":"2016-05-28 14:40"},{"_id":"8392","normalized_imdb_id":53172,"title":"Pillow Talk","year":1959,"rating":3,"dubious":false,"date":"2018-08-30 12:30"},{"_id":"8677","normalized_imdb_id":53454,"title":"World, The Flesh and The Devil, The","year":1959,"rating":0,"dubious":false,"date":"2019-03-16 14:09"},{"_id":"9161","normalized_imdb_id":52077,"title":"Plan 9 from Outer Space","year":1959,"rating":1,"dubious":false,"date":"2020-06-07 20:42"},{"_id":"9169","normalized_imdb_id":156843,"title":"Night of the Ghouls","year":1959,"rating":1,"dubious":false,"date":"2020-06-14 01:28"},{"_id":"9209","normalized_imdb_id":53285,"title":"Sleeping Beauty","year":1959,"rating":3,"dubious":false,"date":"2020-07-22 18:01"},{"_id":"9379","normalized_imdb_id":52654,"title":"Bridge, The","year":1959,"rating":3,"dubious":false,"date":"2020-12-14 14:17"},{"_id":"590","normalized_imdb_id":54469,"title":"Where the Boys Are","year":1960,"rating":2,"dubious":false,"date":"2009-12-27 21:53"},{"_id":"656","normalized_imdb_id":53459,"title":"Les yeux sans visage","year":1960,"rating":3,"dubious":false,"date":"2010-01-20 23:46"},{"_id":"799","normalized_imdb_id":53472,"title":"A bout de souffle","year":1960,"rating":0,"dubious":false,"date":"2010-05-13 19:51"},{"_id":"1295","normalized_imdb_id":54047,"title":"Magnificent Seven, The","year":1960,"rating":0,"dubious":false,"date":"2010-07-24 02:27"},{"_id":"1273","normalized_imdb_id":54331,"title":"Spartacus","year":1960,"rating":2,"dubious":false,"date":"2010-07-23 01:05"},{"_id":"1712","normalized_imdb_id":53946,"title":"Inherit the Wind","year":1960,"rating":3,"dubious":true,"date":"2010-10-31 23:53"},{"_id":"1995","normalized_imdb_id":53604,"title":"Apartment, The","year":1960,"rating":3,"dubious":false,"date":"2011-02-05 22:30"},{"_id":"2039","normalized_imdb_id":54215,"title":"Psycho","year":1960,"rating":3,"dubious":false,"date":"2011-02-15 12:53"},{"_id":"2144","normalized_imdb_id":53804,"title":"Exodus","year":1960,"rating":3,"dubious":false,"date":"2011-03-27 06:11"},{"_id":"2546","normalized_imdb_id":54022,"title":"Let's Make Love","year":1960,"rating":2,"dubious":true,"date":"2011-07-18 04:24"},{"_id":"2808","normalized_imdb_id":53579,"title":"Late Autumn","year":1960,"rating":3,"dubious":false,"date":"2011-10-30 06:06"},{"_id":"2950","normalized_imdb_id":54333,"title":"Body in the Web","year":1960,"rating":3,"dubious":false,"date":"2011-12-22 22:14"},{"_id":"2988","normalized_imdb_id":54248,"title":"Rocco and His Brothers","year":1960,"rating":2,"dubious":false,"date":"2012-01-13 16:11"},{"_id":"3286","normalized_imdb_id":54067,"title":"Black Sunday","year":1960,"rating":3,"dubious":true,"date":"2012-05-26 01:59"},{"_id":"3294","normalized_imdb_id":54377,"title":"Testament of Orpheus","year":1960,"rating":1,"dubious":false,"date":"2012-05-29 10:15"},{"_id":"3328","normalized_imdb_id":154683,"title":"Jigoku (Hell or The Sinners of Hell)","year":1960,"rating":3,"dubious":false,"date":"2012-06-07 05:05"},{"_id":"3634","normalized_imdb_id":53719,"title":"City of the Dead, The","year":1960,"rating":3,"dubious":false,"date":"2012-10-29 02:23"},{"_id":"3827","normalized_imdb_id":54494,"title":"Zazie dans le metro","year":1960,"rating":3,"dubious":false,"date":"2013-01-14 16:44"},{"_id":"4117","normalized_imdb_id":54049,"title":"Make Mine Mink","year":1960,"rating":3,"dubious":false,"date":"2013-05-01 09:30"},{"_id":"5122","normalized_imdb_id":54452,"title":"Truth, The","year":1960,"rating":3,"dubious":false,"date":"2014-02-01 15:37"},{"_id":"5123","normalized_imdb_id":54343,"title":"Story of Ruth, The","year":1960,"rating":3,"dubious":false,"date":"2014-02-01 16:03"},{"_id":"5380","normalized_imdb_id":53976,"title":"Virgin Spring, The","year":1960,"rating":3,"dubious":false,"date":"2014-04-10 18:04"},{"_id":"6146","normalized_imdb_id":54476,"title":"Wild River","year":1960,"rating":3,"dubious":false,"date":"2015-03-13 21:00"},{"_id":"6080","normalized_imdb_id":53779,"title":"La Dolce Vita","year":1960,"rating":2,"dubious":false,"date":"2015-01-27 03:45"},{"_id":"6756","normalized_imdb_id":54749,"title":"La ciociara","year":1960,"rating":3,"dubious":false,"date":"2016-03-01 18:37"},{"_id":"6796","normalized_imdb_id":54167,"title":"Peeping Tom","year":1960,"rating":2,"dubious":false,"date":"2016-03-26 07:55"},{"_id":"6854","normalized_imdb_id":54407,"title":"Le Trou","year":1960,"rating":0,"dubious":false,"date":"2016-04-26 03:15"},{"_id":"8275","normalized_imdb_id":53677,"title":"Brides of Dracula, The","year":1960,"rating":3,"dubious":false,"date":"2018-06-06 13:24"},{"_id":"8367","normalized_imdb_id":54389,"title":"Shoot the Piano Player","year":1960,"rating":2,"dubious":false,"date":"2018-08-10 19:59"},{"_id":"8566","normalized_imdb_id":54279,"title":"School for Scoundrels","year":1960,"rating":1,"dubious":false,"date":"2018-12-16 01:36"},{"_id":"8992","normalized_imdb_id":53732,"title":"Conspiracy of Hearts","year":1960,"rating":3,"dubious":false,"date":"2020-01-27 23:46"},{"_id":"9026","normalized_imdb_id":54198,"title":"Nerve on Sunday","year":1960,"rating":2,"dubious":false,"date":"2020-03-02 16:05"},{"_id":"9207","normalized_imdb_id":53250,"title":"First Spaceship on Venus","year":1960,"rating":1,"dubious":false,"date":"2020-07-19 18:21"},{"_id":"9338","normalized_imdb_id":54387,"title":"Time Machine, The","year":1960,"rating":0,"dubious":false,"date":"2020-11-22 16:32"},{"_id":"9894","normalized_imdb_id":54460,"title":"Bad Sleep Well, The","year":1960,"rating":1,"dubious":false,"date":"2021-06-17 00:25"},{"_id":"9992","normalized_imdb_id":53666,"title":"Les Bonnes Femmes","year":1960,"rating":3,"dubious":false,"date":"2021-08-03 20:42"},{"_id":"660","normalized_imdb_id":55630,"title":"Yojimbo","year":1961,"rating":1,"dubious":false,"date":"2010-01-22 01:59"},{"_id":"833","normalized_imdb_id":54743,"title":"Children's Hour, The","year":1961,"rating":3,"dubious":false,"date":"2010-05-27 02:41"},{"_id":"1292","normalized_imdb_id":55294,"title":"Phantom Planet, The","year":1961,"rating":0,"dubious":false,"date":"2010-07-23 14:32"},{"_id":"1191","normalized_imdb_id":54698,"title":"Breakfast at Tiffany's","year":1961,"rating":2,"dubious":false,"date":"2010-07-18 08:27"},{"_id":"1257","normalized_imdb_id":55207,"title":"Mysterious Island","year":1961,"rating":0,"dubious":false,"date":"2010-07-23 00:44"},{"_id":"1165","normalized_imdb_id":55571,"title":"Underworld U.S.A.","year":1961,"rating":3,"dubious":false,"date":"2010-07-11 22:00"},{"_id":"1171","normalized_imdb_id":55254,"title":"One Hundred and One Dalmatians","year":1961,"rating":3,"dubious":false,"date":"2010-07-13 19:26"},{"_id":"1546","normalized_imdb_id":54847,"title":"El Cid","year":1961,"rating":1,"dubious":false,"date":"2010-09-07 16:10"},{"_id":"1365","normalized_imdb_id":55184,"title":"Misfits, The","year":1961,"rating":3,"dubious":false,"date":"2010-07-27 04:52"},{"_id":"1958","normalized_imdb_id":54997,"title":"Hustler, The","year":1961,"rating":0,"dubious":false,"date":"2011-02-03 23:27"},{"_id":"2392","normalized_imdb_id":55256,"title":"One, Two, Three","year":1961,"rating":3,"dubious":true,"date":"2011-06-12 00:28"},{"_id":"2560","normalized_imdb_id":55614,"title":"West Side Story","year":1961,"rating":3,"dubious":false,"date":"2011-07-20 17:58"},{"_id":"2797","normalized_imdb_id":54673,"title":"Beast of Yucca Flats, The","year":1961,"rating":0,"dubious":false,"date":"2011-10-26 00:49"},{"_id":"3724","normalized_imdb_id":54692,"title":"Blue Hawaii","year":1961,"rating":3,"dubious":false,"date":"2012-12-06 21:21"},{"_id":"3909","normalized_imdb_id":55278,"title":"Paris Blues","year":1961,"rating":3,"dubious":true,"date":"2013-02-19 09:37"},{"_id":"4198","normalized_imdb_id":55471,"title":"Splendor in the Grass","year":1961,"rating":3,"dubious":false,"date":"2013-06-02 04:39"},{"_id":"4539","normalized_imdb_id":55506,"title":"A Taste of Honey","year":1961,"rating":3,"dubious":false,"date":"2013-09-02 00:21"},{"_id":"4580","normalized_imdb_id":55277,"title":"Parent Trap, The","year":1961,"rating":3,"dubious":false,"date":"2013-09-14 18:49"},{"_id":"5485","normalized_imdb_id":55353,"title":"A Raisin in the Sun","year":1961,"rating":3,"dubious":false,"date":"2014-05-18 03:49"},{"_id":"5797","normalized_imdb_id":55458,"title":"Snow White and the Three Stooges","year":1961,"rating":3,"dubious":false,"date":"2014-10-01 02:04"},{"_id":"6102","normalized_imdb_id":54130,"title":"La Notte","year":1961,"rating":3,"dubious":false,"date":"2015-02-06 01:50"},{"_id":"6448","normalized_imdb_id":55198,"title":"Mothra","year":1961,"rating":0,"dubious":false,"date":"2015-09-13 03:05"},{"_id":"6539","normalized_imdb_id":55572,"title":"A Woman Is a Woman","year":1961,"rating":0,"dubious":false,"date":"2015-11-10 19:09"},{"_id":"6653","normalized_imdb_id":54953,"title":"Guns of Navarone, The","year":1961,"rating":1,"dubious":false,"date":"2016-01-05 07:33"},{"_id":"7344","normalized_imdb_id":54777,"title":"Curse of the Werewolf, The","year":1961,"rating":3,"dubious":true,"date":"2016-12-21 15:38"},{"_id":"7798","normalized_imdb_id":55082,"title":"Leon Morin, Priest","year":1961,"rating":3,"dubious":false,"date":"2017-09-05 08:29"},{"_id":"7831","normalized_imdb_id":54599,"title":"Accattone","year":1961,"rating":3,"dubious":false,"date":"2017-09-25 14:12"},{"_id":"7968","normalized_imdb_id":55499,"title":"Through a Glass Darkly","year":1961,"rating":0,"dubious":false,"date":"2017-12-27 17:33"},{"_id":"8019","normalized_imdb_id":55018,"title":"Innocents, The","year":1961,"rating":3,"dubious":false,"date":"2018-01-20 22:17"},{"_id":"8676","normalized_imdb_id":54879,"title":"Flame in the Streets","year":1961,"rating":3,"dubious":true,"date":"2019-03-15 23:10"},{"_id":"9268","normalized_imdb_id":55093,"title":"Lola","year":1961,"rating":2,"dubious":false,"date":"2020-09-09 00:05"},{"_id":"9607","normalized_imdb_id":55047,"title":"King of Kings","year":1961,"rating":3,"dubious":false,"date":"2021-04-03 07:43"},{"_id":"237","normalized_imdb_id":55032,"title":"Jules and Jim","year":1962,"rating":1,"dubious":false,"date":"2008-12-11 09:16"},{"_id":"691","normalized_imdb_id":56111,"title":"Ivanovo detstvo","year":1962,"rating":1,"dubious":false,"date":"2010-02-28 12:37"},{"_id":"1042","normalized_imdb_id":56172,"title":"Lawrence of Arabia","year":1962,"rating":0,"dubious":false,"date":"2010-07-03 14:58"},{"_id":"1298","normalized_imdb_id":56687,"title":"What Ever Happened to Baby Jane?","year":1962,"rating":3,"dubious":false,"date":"2010-07-24 18:38"},{"_id":"1279","normalized_imdb_id":56193,"title":"Lolita","year":1962,"rating":3,"dubious":false,"date":"2010-07-23 01:14"},{"_id":"1108","normalized_imdb_id":56592,"title":"To Kill a Mockingbird","year":1962,"rating":3,"dubious":false,"date":"2010-07-07 18:20"},{"_id":"1613","normalized_imdb_id":55894,"title":"Day of the Triffids, The","year":1962,"rating":3,"dubious":false,"date":"2010-09-28 22:00"},{"_id":"1954","normalized_imdb_id":56218,"title":"Manchurian Candidate, The","year":1962,"rating":1,"dubious":false,"date":"2011-02-03 21:28"},{"_id":"2183","normalized_imdb_id":57427,"title":"Trial, The","year":1962,"rating":1,"dubious":false,"date":"2011-04-11 08:52"},{"_id":"2430","normalized_imdb_id":56262,"title":"Music Man, The","year":1962,"rating":3,"dubious":false,"date":"2011-06-22 07:04"},{"_id":"2591","normalized_imdb_id":55830,"title":"Carnival of Souls","year":1962,"rating":3,"dubious":false,"date":"2011-08-04 17:18"},{"_id":"2609","normalized_imdb_id":55852,"title":"Cleo from 5 to 7","year":1962,"rating":3,"dubious":false,"date":"2011-08-14 00:44"},{"_id":"2762","normalized_imdb_id":52646,"title":"Brain That Wouldn't Die, The","year":1962,"rating":2,"dubious":false,"date":"2011-10-14 05:56"},{"_id":"3079","normalized_imdb_id":56048,"title":"Gypsy","year":1962,"rating":3,"dubious":false,"date":"2012-02-29 00:23"},{"_id":"3160","normalized_imdb_id":59616,"title":"Trial of Joan of Arc, The","year":1962,"rating":0,"dubious":false,"date":"2012-04-04 00:35"},{"_id":"3829","normalized_imdb_id":57239,"title":"L-Shaped Room, The","year":1962,"rating":3,"dubious":false,"date":"2013-01-14 17:04"},{"_id":"3845","normalized_imdb_id":56119,"title":"La Jetee","year":1962,"rating":0,"dubious":false,"date":"2013-01-20 19:58"},{"_id":"4407","normalized_imdb_id":55902,"title":"Devil's Hand, The","year":1962,"rating":2,"dubious":false,"date":"2013-07-28 09:56"},{"_id":"4481","normalized_imdb_id":55910,"title":"Les dimanches de Ville d'Avray","year":1962,"rating":3,"dubious":false,"date":"2013-08-17 12:34"},{"_id":"4513","normalized_imdb_id":56575,"title":"That Touch of Mink","year":1962,"rating":2,"dubious":false,"date":"2013-08-28 01:05"},{"_id":"4637","normalized_imdb_id":55928,"title":"Dr. No","year":1962,"rating":1,"dubious":false,"date":"2013-09-27 12:56"},{"_id":"5686","normalized_imdb_id":56241,"title":"Miracle Worker, The","year":1962,"rating":3,"dubious":false,"date":"2014-08-10 05:10"},{"_id":"6119","normalized_imdb_id":56142,"title":"King Kong vs. Godzilla","year":1962,"rating":3,"dubious":false,"date":"2015-02-19 00:06"},{"_id":"6332","normalized_imdb_id":56059,"title":"Hatari!","year":1962,"rating":3,"dubious":true,"date":"2015-06-23 11:40"},{"_id":"6516","normalized_imdb_id":56194,"title":"Loneliness of the Long Distance Runner, The","year":1962,"rating":3,"dubious":true,"date":"2015-10-26 15:21"},{"_id":"7159","normalized_imdb_id":55728,"title":"Advise & Consent","year":1962,"rating":3,"dubious":false,"date":"2016-09-28 21:05"},{"_id":"7312","normalized_imdb_id":54949,"title":"War of the Buttons","year":1962,"rating":0,"dubious":false,"date":"2016-12-04 02:09"},{"_id":"7440","normalized_imdb_id":55832,"title":"Cartouche","year":1962,"rating":1,"dubious":false,"date":"2017-02-12 18:36"},{"_id":"7588","normalized_imdb_id":55763,"title":"Atraco a las tres","year":1962,"rating":1,"dubious":false,"date":"2017-04-24 13:10"},{"_id":"8673","normalized_imdb_id":56671,"title":"Walk on the Wild Side","year":1962,"rating":3,"dubious":false,"date":"2019-03-12 22:35"},{"_id":"8849","normalized_imdb_id":56663,"title":"Vivre Sa Vie","year":1962,"rating":3,"dubious":false,"date":"2019-09-11 03:03"},{"_id":"9106","normalized_imdb_id":56197,"title":"Longest Day, The","year":1962,"rating":0,"dubious":false,"date":"2020-05-02 16:43"},{"_id":"9690","normalized_imdb_id":56452,"title":"Treasure of the Silver Lake, The","year":1962,"rating":1,"dubious":false,"date":"2021-04-27 19:41"},{"_id":"9920","normalized_imdb_id":1180329,"title":"Antoine and Colette","year":1962,"rating":0,"dubious":false,"date":"2021-06-30 16:53"},{"_id":"9818","normalized_imdb_id":56058,"title":"Hara-Kiri","year":1962,"rating":0,"dubious":false,"date":"2021-05-13 20:55"},{"_id":"202","normalized_imdb_id":57115,"title":"Great Escape, The","year":1963,"rating":0,"dubious":false,"date":"2008-10-23 15:45"},{"_id":"607","normalized_imdb_id":57187,"title":"Irma la Douce","year":1963,"rating":2,"dubious":false,"date":"2009-12-28 04:04"},{"_id":"629","normalized_imdb_id":57413,"title":"Pink Panther, The","year":1963,"rating":1,"dubious":false,"date":"2009-12-31 23:05"},{"_id":"1251","normalized_imdb_id":56800,"title":"55 Days at Peking","year":1963,"rating":1,"dubious":false,"date":"2010-07-23 00:24"},{"_id":"1635","normalized_imdb_id":56884,"title":"Bakery Girl of Monceau, The","year":1963,"rating":1,"dubious":false,"date":"2010-10-04 06:37"},{"_id":"1984","normalized_imdb_id":56923,"title":"Charade","year":1963,"rating":2,"dubious":false,"date":"2011-02-05 01:05"},{"_id":"1990","normalized_imdb_id":57261,"title":"Lord of the Flies","year":1963,"rating":0,"dubious":false,"date":"2011-02-05 07:14"},{"_id":"2102","normalized_imdb_id":57495,"title":"Shock Corridor","year":1963,"rating":0,"dubious":false,"date":"2011-03-09 07:00"},{"_id":"2345","normalized_imdb_id":56869,"title":"Birds, The","year":1963,"rating":3,"dubious":false,"date":"2011-05-25 22:54"},{"_id":"2549","normalized_imdb_id":56860,"title":"Beach Party","year":1963,"rating":2,"dubious":false,"date":"2011-07-18 23:50"},{"_id":"2772","normalized_imdb_id":56912,"title":"Carry on Cabby","year":1963,"rating":3,"dubious":false,"date":"2011-10-19 08:48"},{"_id":"3382","normalized_imdb_id":57345,"title":"Contempt","year":1963,"rating":1,"dubious":false,"date":"2012-06-26 15:41"},{"_id":"3725","normalized_imdb_id":56891,"title":"Bye Bye Birdie","year":1963,"rating":3,"dubious":false,"date":"2012-12-06 21:35"},{"_id":"3810","normalized_imdb_id":57546,"title":"Sword in the Stone, The","year":1963,"rating":0,"dubious":false,"date":"2013-01-07 05:18"},{"_id":"3939","normalized_imdb_id":336693,"title":"Khaneh siah ast (The House is Black)","year":1963,"rating":0,"dubious":false,"date":"2013-02-27 15:49"},{"_id":"4206","normalized_imdb_id":57129,"title":"Haunting, The","year":1963,"rating":3,"dubious":false,"date":"2013-06-04 17:23"},{"_id":"4331","normalized_imdb_id":57226,"title":"Kiss of the Vampire, The","year":1963,"rating":2,"dubious":true,"date":"2013-07-11 16:43"},{"_id":"4347","normalized_imdb_id":57542,"title":"Summer Magic","year":1963,"rating":3,"dubious":false,"date":"2013-07-13 15:37"},{"_id":"4394","normalized_imdb_id":56983,"title":"Dementia 13","year":1963,"rating":3,"dubious":false,"date":"2013-07-25 14:42"},{"_id":"4494","normalized_imdb_id":57590,"title":"Tom Jones","year":1963,"rating":3,"dubious":false,"date":"2013-08-20 09:17"},{"_id":"4659","normalized_imdb_id":57076,"title":"From Russia with Love","year":1963,"rating":3,"dubious":false,"date":"2013-10-03 11:48"},{"_id":"4951","normalized_imdb_id":57693,"title":"X: The Man with the X-Ray Eyes","year":1963,"rating":1,"dubious":false,"date":"2013-12-15 20:25"},{"_id":"5230","normalized_imdb_id":57329,"title":"Move Over, Darling","year":1963,"rating":3,"dubious":false,"date":"2014-03-05 03:43"},{"_id":"5379","normalized_imdb_id":57611,"title":"Silence, The","year":1963,"rating":3,"dubious":false,"date":"2014-04-10 17:56"},{"_id":"5712","normalized_imdb_id":57449,"title":"Raven, The","year":1963,"rating":1,"dubious":false,"date":"2014-08-23 02:51"},{"_id":"5772","normalized_imdb_id":58164,"title":"Guest, The","year":1963,"rating":0,"dubious":false,"date":"2014-09-21 18:05"},{"_id":"6044","normalized_imdb_id":56443,"title":"Sanjuro","year":1963,"rating":3,"dubious":true,"date":"2015-01-13 16:54"},{"_id":"6327","normalized_imdb_id":57643,"title":"El verdugo","year":1963,"rating":1,"dubious":false,"date":"2015-06-20 17:51"},{"_id":"6460","normalized_imdb_id":57215,"title":"Atragon","year":1963,"rating":0,"dubious":false,"date":"2015-09-23 01:18"},{"_id":"6514","normalized_imdb_id":57541,"title":"Summer Holiday","year":1963,"rating":3,"dubious":false,"date":"2015-10-26 14:50"},{"_id":"6988","normalized_imdb_id":57490,"title":"Servant, The","year":1963,"rating":3,"dubious":true,"date":"2016-07-21 20:17"},{"_id":"7925","normalized_imdb_id":56910,"title":"Suzanne's Career","year":1963,"rating":3,"dubious":false,"date":"2017-11-26 14:33"},{"_id":"7969","normalized_imdb_id":57358,"title":"Winter Light","year":1963,"rating":1,"dubious":false,"date":"2017-12-27 20:55"},{"_id":"8440","normalized_imdb_id":57180,"title":"Incredible Journey, The","year":1963,"rating":1,"dubious":false,"date":"2018-10-15 00:14"},{"_id":"8648","normalized_imdb_id":57623,"title":"Unearthly Stranger","year":1963,"rating":1,"dubious":false,"date":"2019-02-22 22:12"},{"_id":"9226","normalized_imdb_id":57193,"title":"It's a Mad Mad Mad Mad World","year":1963,"rating":3,"dubious":false,"date":"2020-08-06 20:57"},{"_id":"9388","normalized_imdb_id":56937,"title":"Cleopatra","year":1963,"rating":3,"dubious":false,"date":"2020-12-14 17:32"},{"_id":"9686","normalized_imdb_id":57687,"title":"Winnetou","year":1963,"rating":1,"dubious":false,"date":"2021-04-27 19:35"},{"_id":"341","normalized_imdb_id":57012,"title":"Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb","year":1964,"rating":0,"dubious":false,"date":"2009-06-14 15:44"},{"_id":"661","normalized_imdb_id":58461,"title":"Per un pugno di dollari (A Fisful of Dollars)","year":1964,"rating":1,"dubious":false,"date":"2010-01-23 08:32"},{"_id":"701","normalized_imdb_id":58331,"title":"Mary Poppins","year":1964,"rating":3,"dubious":false,"date":"2010-03-15 19:54"},{"_id":"1600","normalized_imdb_id":58536,"title":"Rudolph, the Red-Nosed Reindeer","year":1964,"rating":1,"dubious":false,"date":"2010-09-23 01:07"},{"_id":"1198","normalized_imdb_id":58139,"title":"Der Geteilte Himmel (Divided Heaven)","year":1964,"rating":2,"dubious":false,"date":"2010-07-20 00:19"},{"_id":"1212","normalized_imdb_id":58625,"title":"Woman in the Dunes","year":1964,"rating":0,"dubious":false,"date":"2010-07-21 04:40"},{"_id":"1250","normalized_imdb_id":57878,"title":"Bedtime Story","year":1964,"rating":1,"dubious":false,"date":"2010-07-23 00:23"},{"_id":"1253","normalized_imdb_id":58100,"title":"First Men in the Moon","year":1964,"rating":1,"dubious":false,"date":"2010-07-23 00:30"},{"_id":"1254","normalized_imdb_id":57259,"title":"Long Ships, The","year":1964,"rating":1,"dubious":false,"date":"2010-07-23 00:36"},{"_id":"1688","normalized_imdb_id":58385,"title":"My Fair Lady","year":1964,"rating":3,"dubious":false,"date":"2010-10-23 05:40"},{"_id":"1957","normalized_imdb_id":58182,"title":"A Hard Day's Night","year":1964,"rating":1,"dubious":false,"date":"2011-02-03 23:10"},{"_id":"2204","normalized_imdb_id":57869,"title":"Band of Outsiders","year":1964,"rating":3,"dubious":false,"date":"2011-04-22 10:16"},{"_id":"2385","normalized_imdb_id":57840,"title":"Americanization of Emily, The","year":1964,"rating":2,"dubious":false,"date":"2011-06-10 21:34"},{"_id":"2483","normalized_imdb_id":58777,"title":"Zulu","year":1964,"rating":0,"dubious":false,"date":"2011-07-05 00:56"},{"_id":"2557","normalized_imdb_id":57887,"title":"Bikini Beach","year":1964,"rating":2,"dubious":false,"date":"2011-07-20 04:51"},{"_id":"2720","normalized_imdb_id":58324,"title":"Man's Favorite Sport?","year":1964,"rating":2,"dubious":false,"date":"2011-09-29 18:33"},{"_id":"2766","normalized_imdb_id":58335,"title":"Marriage Italian Style","year":1964,"rating":3,"dubious":false,"date":"2011-10-15 19:43"},{"_id":"2922","normalized_imdb_id":58213,"title":"Hush...Hush, Sweet Charlotte","year":1964,"rating":3,"dubious":false,"date":"2011-12-13 01:22"},{"_id":"3189","normalized_imdb_id":58715,"title":"Gospel According to St. Matthew, The","year":1964,"rating":1,"dubious":false,"date":"2012-04-16 16:06"},{"_id":"3250","normalized_imdb_id":58263,"title":"King & Country","year":1964,"rating":0,"dubious":false,"date":"2012-05-12 12:47"},{"_id":"3327","normalized_imdb_id":58430,"title":"Onibaba","year":1964,"rating":0,"dubious":false,"date":"2012-06-07 04:51"},{"_id":"3569","normalized_imdb_id":58083,"title":"Fail-Safe","year":1964,"rating":1,"dubious":false,"date":"2012-10-02 01:05"},{"_id":"3680","normalized_imdb_id":58725,"title":"Viva Las Vegas","year":1964,"rating":0,"dubious":false,"date":"2012-11-20 20:19"},{"_id":"3807","normalized_imdb_id":58150,"title":"Goldfinger","year":1964,"rating":1,"dubious":false,"date":"2013-01-06 03:12"},{"_id":"4263","normalized_imdb_id":57997,"title":"Dead Ringer","year":1964,"rating":3,"dubious":false,"date":"2013-06-23 05:28"},{"_id":"4356","normalized_imdb_id":58450,"title":"Umbrellas of Cherbourg, The","year":1964,"rating":3,"dubious":false,"date":"2013-07-16 18:39"},{"_id":"4376","normalized_imdb_id":58700,"title":"Last Man on Earth, The","year":1964,"rating":1,"dubious":false,"date":"2013-07-21 01:13"},{"_id":"4484","normalized_imdb_id":58658,"title":"Code Name: Tiger","year":1964,"rating":3,"dubious":false,"date":"2013-08-17 12:38"},{"_id":"4497","normalized_imdb_id":59825,"title":"Train, The","year":1964,"rating":1,"dubious":false,"date":"2013-08-21 07:12"},{"_id":"4501","normalized_imdb_id":58544,"title":"Ghidorah, the Three-Headed Monster","year":1964,"rating":3,"dubious":false,"date":"2013-08-23 19:38"},{"_id":"4673","normalized_imdb_id":57918,"title":"Carry On Cleo","year":1964,"rating":1,"dubious":false,"date":"2013-10-07 02:22"},{"_id":"5513","normalized_imdb_id":58708,"title":"Unsinkable Molly Brown, The","year":1964,"rating":3,"dubious":false,"date":"2014-05-30 02:25"},{"_id":"6112","normalized_imdb_id":58003,"title":"Red Desert","year":1964,"rating":3,"dubious":false,"date":"2015-02-16 17:06"},{"_id":"6326","normalized_imdb_id":58379,"title":"Godzilla vs. The Thing (Mothra vs. Godzilla)","year":1964,"rating":1,"dubious":true,"date":"2015-06-20 17:27"},{"_id":"6402","normalized_imdb_id":58329,"title":"Marnie","year":1964,"rating":3,"dubious":false,"date":"2015-08-13 01:39"},{"_id":"6555","normalized_imdb_id":58586,"title":"A shot in the dark","year":1964,"rating":1,"dubious":false,"date":"2015-11-23 10:22"},{"_id":"7202","normalized_imdb_id":57933,"title":"Chalk Garden, The","year":1964,"rating":3,"dubious":false,"date":"2016-10-16 14:51"},{"_id":"7236","normalized_imdb_id":58409,"title":"Nikutai no mon [Gate of Flesh]","year":1964,"rating":3,"dubious":false,"date":"2016-11-02 13:11"},{"_id":"7399","normalized_imdb_id":58695,"title":"La tia Tula","year":1964,"rating":3,"dubious":false,"date":"2017-01-16 14:48"},{"_id":"7804","normalized_imdb_id":58564,"title":"Seduced and abandoned","year":1964,"rating":3,"dubious":false,"date":"2017-09-17 21:38"},{"_id":"7991","normalized_imdb_id":58659,"title":"Time Travelers, The","year":1964,"rating":2,"dubious":false,"date":"2018-01-08 04:37"},{"_id":"9689","normalized_imdb_id":57380,"title":"Old Shatterhand","year":1964,"rating":1,"dubious":false,"date":"2021-04-27 19:40"},{"_id":"9692","normalized_imdb_id":58751,"title":"Winnetou: The Red Gentleman","year":1964,"rating":1,"dubious":false,"date":"2021-04-27 19:44"},{"_id":"9695","normalized_imdb_id":58709,"title":"Amongst Vultures","year":1964,"rating":0,"dubious":false,"date":"2021-04-27 19:50"},{"_id":"9697","normalized_imdb_id":58553,"title":"Yellow One, The","year":1964,"rating":1,"dubious":false,"date":"2021-04-27 19:53"},{"_id":"601","normalized_imdb_id":59742,"title":"Sound of Music, The","year":1965,"rating":3,"dubious":false,"date":"2009-12-28 03:50"},{"_id":"2075","normalized_imdb_id":59212,"title":"Gulliver's Travels Beyond the Moon","year":1965,"rating":0,"dubious":false,"date":"2011-02-26 23:33"},{"_id":"2186","normalized_imdb_id":59229,"title":"Juliet of the Spirits","year":1965,"rating":3,"dubious":true,"date":"2011-04-12 21:38"},{"_id":"2338","normalized_imdb_id":59646,"title":"Repulsion","year":1965,"rating":3,"dubious":false,"date":"2011-05-25 06:06"},{"_id":"2389","normalized_imdb_id":59764,"title":"A Study in Terror","year":1965,"rating":3,"dubious":true,"date":"2011-06-11 20:22"},{"_id":"2390","normalized_imdb_id":59800,"title":"Thunderball","year":1965,"rating":2,"dubious":false,"date":"2011-06-11 21:09"},{"_id":"2487","normalized_imdb_id":59793,"title":"That Darn Cat!","year":1965,"rating":3,"dubious":false,"date":"2011-07-05 05:08"},{"_id":"2569","normalized_imdb_id":59319,"title":"Ipcress File, The","year":1965,"rating":1,"dubious":false,"date":"2011-07-23 22:20"},{"_id":"3116","normalized_imdb_id":58898,"title":"Alphaville","year":1965,"rating":1,"dubious":false,"date":"2012-03-13 21:25"},{"_id":"3413","normalized_imdb_id":59578,"title":"For a Few Dollars More","year":1965,"rating":0,"dubious":false,"date":"2012-07-10 08:11"},{"_id":"3432","normalized_imdb_id":59183,"title":"Flight of the Phoenix, The","year":1965,"rating":0,"dubious":false,"date":"2012-07-17 05:22"},{"_id":"3475","normalized_imdb_id":59956,"title":"Viva Maria!","year":1965,"rating":3,"dubious":false,"date":"2012-08-16 18:24"},{"_id":"3543","normalized_imdb_id":59314,"title":"Inside Daisy Clover","year":1965,"rating":3,"dubious":false,"date":"2012-09-24 04:25"},{"_id":"3623","normalized_imdb_id":59084,"title":"Darling","year":1965,"rating":3,"dubious":false,"date":"2012-10-24 02:56"},{"_id":"3649","normalized_imdb_id":59170,"title":"Faster, Pussycat! Kill! Kill!","year":1965,"rating":3,"dubious":false,"date":"2012-11-03 09:46"},{"_id":"3828","normalized_imdb_id":59607,"title":"Pleasure Girls, The","year":1965,"rating":3,"dubious":false,"date":"2013-01-14 16:54"},{"_id":"5884","normalized_imdb_id":59113,"title":"Doctor Zhivago","year":1965,"rating":1,"dubious":false,"date":"2014-10-29 19:21"},{"_id":"5960","normalized_imdb_id":58997,"title":"Bunny Lake Is Missing","year":1965,"rating":3,"dubious":false,"date":"2014-12-03 07:57"},{"_id":"6346","normalized_imdb_id":59346,"title":"Invasion of Astro-Monster","year":1965,"rating":2,"dubious":false,"date":"2015-07-08 03:16"},{"_id":"6428","normalized_imdb_id":59080,"title":"Daikaiju Gamera","year":1965,"rating":2,"dubious":false,"date":"2015-08-30 03:28"},{"_id":"6652","normalized_imdb_id":59205,"title":"Frankenstein Conquers the World","year":1965,"rating":1,"dubious":false,"date":"2016-01-05 00:49"},{"_id":"6899","normalized_imdb_id":59348,"title":"Kapurush","year":1965,"rating":0,"dubious":false,"date":"2016-05-28 10:35"},{"_id":"7109","normalized_imdb_id":59100,"title":"Devils of Darkness","year":1965,"rating":3,"dubious":false,"date":"2016-09-09 08:32"},{"_id":"8189","normalized_imdb_id":58361,"title":"Mne dvadtsat let (I am twenty)","year":1965,"rating":3,"dubious":false,"date":"2018-05-04 09:28"},{"_id":"8204","normalized_imdb_id":58212,"title":"How to Murder Your Wife","year":1965,"rating":0,"dubious":false,"date":"2018-05-13 21:51"},{"_id":"8694","normalized_imdb_id":59573,"title":"A Patch of Blue","year":1965,"rating":3,"dubious":false,"date":"2019-04-04 23:11"},{"_id":"9157","normalized_imdb_id":59631,"title":"Railrodder, The","year":1965,"rating":0,"dubious":false,"date":"2020-06-06 20:25"},{"_id":"9687","normalized_imdb_id":59958,"title":"Oil Prince, The","year":1965,"rating":1,"dubious":false,"date":"2021-04-27 19:36"},{"_id":"9691","normalized_imdb_id":59915,"title":"Winnetou: The Last Shot","year":1965,"rating":0,"dubious":false,"date":"2021-04-27 19:43"},{"_id":"9696","normalized_imdb_id":59538,"title":"Old Surehand","year":1965,"rating":1,"dubious":false,"date":"2021-04-27 19:51"},{"_id":"9698","normalized_imdb_id":59621,"title":"Pyramid of the Sun God","year":1965,"rating":1,"dubious":false,"date":"2021-04-27 19:54"},{"_id":"9699","normalized_imdb_id":59682,"title":"Treasure of the Aztecs","year":1965,"rating":1,"dubious":false,"date":"2021-04-27 19:56"},{"_id":"9820","normalized_imdb_id":58888,"title":"Red Beard","year":1965,"rating":3,"dubious":false,"date":"2021-05-13 21:05"},{"_id":"10001","normalized_imdb_id":59362,"title":"Knack... and How to Get It, The","year":1965,"rating":0,"dubious":false,"date":"2021-08-07 02:32"},{"_id":"589","normalized_imdb_id":60827,"title":"Persona","year":1966,"rating":3,"dubious":false,"date":"2009-12-27 21:51"},{"_id":"658","normalized_imdb_id":58946,"title":"La battaglia di Algeri","year":1966,"rating":1,"dubious":false,"date":"2010-01-22 01:40"},{"_id":"1725","normalized_imdb_id":60196,"title":"Good, the Bad and the Ugly, The","year":1966,"rating":1,"dubious":false,"date":"2010-11-02 05:35"},{"_id":"2069","normalized_imdb_id":60959,"title":"Daisies","year":1966,"rating":3,"dubious":false,"date":"2011-02-25 04:17"},{"_id":"2140","normalized_imdb_id":60086,"title":"Alfie","year":1966,"rating":1,"dubious":false,"date":"2011-03-26 05:56"},{"_id":"2308","normalized_imdb_id":61879,"title":"End of August at the Hotel Ozone","year":1966,"rating":3,"dubious":false,"date":"2011-05-18 19:19"},{"_id":"2582","normalized_imdb_id":61122,"title":"Trouble with Angels, The","year":1966,"rating":3,"dubious":false,"date":"2011-07-29 00:18"},{"_id":"2625","normalized_imdb_id":60397,"title":"Fantastic Voyage","year":1966,"rating":0,"dubious":false,"date":"2011-08-18 06:55"},{"_id":"2626","normalized_imdb_id":60176,"title":"Blow-Up","year":1966,"rating":0,"dubious":false,"date":"2011-08-19 01:53"},{"_id":"2696","normalized_imdb_id":60165,"title":"A Big Hand for the Little Lady","year":1966,"rating":1,"dubious":false,"date":"2011-09-20 15:42"},{"_id":"2701","normalized_imdb_id":60479,"title":"Group, The","year":1966,"rating":3,"dubious":false,"date":"2011-09-23 02:33"},{"_id":"2798","normalized_imdb_id":61184,"title":"Who's Afraid of Virginia Woolf?","year":1966,"rating":1,"dubious":false,"date":"2011-10-26 00:55"},{"_id":"2804","normalized_imdb_id":60558,"title":"Jesse James Meets Frankenstein's Daughter","year":1966,"rating":1,"dubious":false,"date":"2011-10-28 04:54"},{"_id":"2838","normalized_imdb_id":60424,"title":"Fortune Cookie, The","year":1966,"rating":1,"dubious":false,"date":"2011-11-13 05:01"},{"_id":"2845","normalized_imdb_id":59557,"title":"Our Man Flint","year":1966,"rating":2,"dubious":false,"date":"2011-11-17 09:09"},{"_id":"2855","normalized_imdb_id":59020,"title":"Cathy Come Home","year":1966,"rating":3,"dubious":false,"date":"2011-11-20 12:58"},{"_id":"3087","normalized_imdb_id":60390,"title":"Fahrenheit 451","year":1966,"rating":3,"dubious":false,"date":"2012-03-03 23:21"},{"_id":"3092","normalized_imdb_id":60934,"title":"Sand Pebbles, The","year":1966,"rating":1,"dubious":false,"date":"2012-03-05 07:51"},{"_id":"3143","normalized_imdb_id":60453,"title":"Georgy Girl","year":1966,"rating":3,"dubious":true,"date":"2012-03-25 00:31"},{"_id":"3576","normalized_imdb_id":60665,"title":"A Man for All Seasons","year":1966,"rating":1,"dubious":false,"date":"2012-10-06 20:09"},{"_id":"3671","normalized_imdb_id":60315,"title":"Django","year":1966,"rating":0,"dubious":false,"date":"2012-11-15 04:36"},{"_id":"3706","normalized_imdb_id":60107,"title":"Andrei Rublev","year":1966,"rating":1,"dubious":false,"date":"2012-12-03 11:47"},{"_id":"4057","normalized_imdb_id":60174,"title":"Blood Bath","year":1966,"rating":2,"dubious":false,"date":"2013-04-14 21:40"},{"_id":"4575","normalized_imdb_id":60125,"title":"L'armata Brancaleone","year":1966,"rating":1,"dubious":false,"date":"2013-09-14 11:04"},{"_id":"4862","normalized_imdb_id":60522,"title":"How to Steal a Million","year":1966,"rating":0,"dubious":false,"date":"2013-11-21 16:47"},{"_id":"5391","normalized_imdb_id":61107,"title":"Torn Curtain","year":1966,"rating":3,"dubious":true,"date":"2014-04-12 22:18"},{"_id":"6362","normalized_imdb_id":60464,"title":"Godzilla vs. the Sea Monster (Ebirah, Horror of the Deep)","year":1966,"rating":1,"dubious":false,"date":"2015-07-19 00:33"},{"_id":"6433","normalized_imdb_id":62851,"title":"Daimajin","year":1966,"rating":1,"dubious":false,"date":"2015-09-05 21:39"},{"_id":"6471","normalized_imdb_id":62852,"title":"Return of Daimajin","year":1966,"rating":0,"dubious":false,"date":"2015-09-28 02:19"},{"_id":"6541","normalized_imdb_id":62853,"title":"Wrath of Daimajin","year":1966,"rating":0,"dubious":false,"date":"2015-11-15 14:21"},{"_id":"6659","normalized_imdb_id":60446,"title":"Daikaiju ketto: Gamera tai Barugon","year":1966,"rating":0,"dubious":false,"date":"2016-01-10 22:52"},{"_id":"6897","normalized_imdb_id":60758,"title":"Black Girl","year":1966,"rating":3,"dubious":false,"date":"2016-05-25 02:40"},{"_id":"6910","normalized_imdb_id":64208,"title":"Death Rides a Horse","year":1966,"rating":0,"dubious":false,"date":"2016-05-30 14:40"},{"_id":"7021","normalized_imdb_id":60782,"title":"One Million Years B.C.","year":1966,"rating":1,"dubious":false,"date":"2016-08-05 02:54"},{"_id":"7030","normalized_imdb_id":60841,"title":"Plague of the Zombies, The","year":1966,"rating":3,"dubious":true,"date":"2016-08-08 15:23"},{"_id":"7033","normalized_imdb_id":59127,"title":"Dracula: Prince of Darkness","year":1966,"rating":1,"dubious":false,"date":"2016-08-09 07:20"},{"_id":"7239","normalized_imdb_id":61101,"title":"Tokyo Drifter","year":1966,"rating":1,"dubious":false,"date":"2016-11-03 14:21"},{"_id":"7415","normalized_imdb_id":60223,"title":"La caza","year":1966,"rating":0,"dubious":false,"date":"2017-01-23 15:07"},{"_id":"9419","normalized_imdb_id":60666,"title":"Manos: The Hands of Fate","year":1966,"rating":3,"dubious":true,"date":"2020-12-30 07:11"},{"_id":"9426","normalized_imdb_id":60637,"title":"Lost Command","year":1966,"rating":1,"dubious":false,"date":"2021-01-16 22:06"},{"_id":"9468","normalized_imdb_id":60879,"title":"Who Are You, Polly Maggoo?","year":1966,"rating":1,"dubious":false,"date":"2021-02-04 07:26"},{"_id":"9577","normalized_imdb_id":61619,"title":"El Dorado","year":1966,"rating":1,"dubious":false,"date":"2021-03-21 21:07"},{"_id":"9688","normalized_imdb_id":61197,"title":"Winnetou and the Crossbreed","year":1966,"rating":1,"dubious":false,"date":"2021-04-27 19:40"},{"_id":"9694","normalized_imdb_id":61198,"title":"Winnetou und sein Freund Old Firehand","year":1966,"rating":1,"dubious":false,"date":"2021-04-27 19:49"},{"_id":"9956","normalized_imdb_id":246913,"title":"Saraswathi Sabatham","year":1966,"rating":2,"dubious":false,"date":"2021-07-11 09:08"},{"_id":"301","normalized_imdb_id":61512,"title":"Cool Hand Luke","year":1967,"rating":1,"dubious":false,"date":"2009-03-24 15:12"},{"_id":"493","normalized_imdb_id":61852,"title":"Jungle Book, The","year":1967,"rating":1,"dubious":false,"date":"2009-09-07 20:10"},{"_id":"616","normalized_imdb_id":61722,"title":"Graduate, The","year":1967,"rating":2,"dubious":false,"date":"2009-12-28 22:24"},{"_id":"2054","normalized_imdb_id":63278,"title":"Marketa Lazarova","year":1967,"rating":1,"dubious":false,"date":"2011-02-18 22:52"},{"_id":"2083","normalized_imdb_id":61418,"title":"Bonnie and Clyde","year":1967,"rating":3,"dubious":false,"date":"2011-03-01 20:23"},{"_id":"2400","normalized_imdb_id":62512,"title":"You Only Live Twice","year":1967,"rating":1,"dubious":false,"date":"2011-06-15 01:26"},{"_id":"2431","normalized_imdb_id":62362,"title":"Thoroughly Modern Millie","year":1967,"rating":3,"dubious":false,"date":"2011-06-22 07:07"},{"_id":"2664","normalized_imdb_id":61452,"title":"Casino Royale","year":1967,"rating":2,"dubious":false,"date":"2011-09-08 07:51"},{"_id":"2829","normalized_imdb_id":61834,"title":"I Am Curious (Yellow)","year":1967,"rating":3,"dubious":false,"date":"2011-11-06 01:30"},{"_id":"2928","normalized_imdb_id":61620,"title":"Elvira Madigan","year":1967,"rating":0,"dubious":false,"date":"2011-12-15 06:32"},{"_id":"2966","normalized_imdb_id":61578,"title":"Dirty Dozen, The","year":1967,"rating":0,"dubious":true,"date":"2011-12-30 03:28"},{"_id":"3070","normalized_imdb_id":62430,"title":"Valley of the Dolls","year":1967,"rating":3,"dubious":false,"date":"2012-02-24 07:04"},{"_id":"3085","normalized_imdb_id":61395,"title":"Belle de Jour","year":1967,"rating":3,"dubious":false,"date":"2012-03-02 16:36"},{"_id":"3241","normalized_imdb_id":61811,"title":"In the Heat of the Night","year":1967,"rating":1,"dubious":false,"date":"2012-05-08 23:31"},{"_id":"3500","normalized_imdb_id":61391,"title":"Bedazzled","year":1967,"rating":3,"dubious":false,"date":"2012-08-28 02:12"},{"_id":"3596","normalized_imdb_id":62407,"title":"Two for the Road","year":1967,"rating":3,"dubious":false,"date":"2012-10-15 18:06"},{"_id":"3597","normalized_imdb_id":62467,"title":"Wait Until Dark","year":1967,"rating":3,"dubious":false,"date":"2012-10-15 18:09"},{"_id":"3712","normalized_imdb_id":61398,"title":"Berserk","year":1967,"rating":3,"dubious":false,"date":"2012-12-06 01:08"},{"_id":"4316","normalized_imdb_id":61655,"title":"Fearless Vampire Killers, The","year":1967,"rating":1,"dubious":false,"date":"2013-07-07 21:41"},{"_id":"4146","normalized_imdb_id":62229,"title":"Le Samourai","year":1967,"rating":1,"dubious":false,"date":"2013-05-20 09:04"},{"_id":"4479","normalized_imdb_id":61495,"title":"La collectionneuse","year":1967,"rating":1,"dubious":false,"date":"2013-08-17 12:20"},{"_id":"4519","normalized_imdb_id":62136,"title":"Playtime","year":1967,"rating":3,"dubious":false,"date":"2013-08-29 03:54"},{"_id":"4722","normalized_imdb_id":62990,"title":"Fox, The","year":1967,"rating":3,"dubious":false,"date":"2013-10-20 11:03"},{"_id":"4937","normalized_imdb_id":61369,"title":"Asterix the Gaul (Asterix le Gaulois)","year":1967,"rating":0,"dubious":false,"date":"2013-12-10 20:26"},{"_id":"5171","normalized_imdb_id":62502,"title":"Woman Times Seven","year":1967,"rating":3,"dubious":false,"date":"2014-02-15 07:04"},{"_id":"5222","normalized_imdb_id":61735,"title":"Guess Who's Coming to Dinner","year":1967,"rating":3,"dubious":true,"date":"2014-03-02 12:49"},{"_id":"5384","normalized_imdb_id":62281,"title":"Smashing Time","year":1967,"rating":3,"dubious":false,"date":"2014-04-11 09:44"},{"_id":"6374","normalized_imdb_id":61856,"title":"Son of Godzilla","year":1967,"rating":0,"dubious":false,"date":"2015-07-29 03:00"},{"_id":"6714","normalized_imdb_id":62411,"title":"Uchu daikaiju Girara","year":1967,"rating":3,"dubious":false,"date":"2016-02-09 02:19"},{"_id":"6744","normalized_imdb_id":61695,"title":"Daikaiju kuchusen: Gamera tai Gyaosu","year":1967,"rating":0,"dubious":false,"date":"2016-02-25 03:10"},{"_id":"7242","normalized_imdb_id":61882,"title":"Koroshi no rakuin [Branded to Kill]","year":1967,"rating":1,"dubious":false,"date":"2016-11-04 13:32"},{"_id":"7513","normalized_imdb_id":62113,"title":"Peppermint Frappe","year":1967,"rating":1,"dubious":false,"date":"2017-03-14 12:57"},{"_id":"7586","normalized_imdb_id":62873,"title":"Young Girls of Rochefort, The","year":1967,"rating":3,"dubious":false,"date":"2017-04-23 18:21"},{"_id":"7943","normalized_imdb_id":61385,"title":"Barefoot in the Park","year":1967,"rating":3,"dubious":false,"date":"2017-12-13 00:09"},{"_id":"8633","normalized_imdb_id":62373,"title":"A Time for Killing","year":1967,"rating":0,"dubious":false,"date":"2019-02-07 12:30"},{"_id":"9078","normalized_imdb_id":61523,"title":"A Countess from Hong Kong","year":1967,"rating":3,"dubious":false,"date":"2020-04-13 14:17"},{"_id":"9124","normalized_imdb_id":61328,"title":"Accident","year":1967,"rating":1,"dubious":false,"date":"2020-05-07 03:41"},{"_id":"9555","normalized_imdb_id":61576,"title":"God Forgives... I Don't!","year":1967,"rating":0,"dubious":false,"date":"2021-03-14 21:53"},{"_id":"9709","normalized_imdb_id":62082,"title":"Django Kill... If You Live, Shoot!","year":1967,"rating":0,"dubious":false,"date":"2021-04-27 20:53"},{"_id":"323","normalized_imdb_id":63668,"title":"Taiyo no oji: Horusu no daiboken","year":1968,"rating":0,"dubious":false,"date":"2009-05-12 09:18"},{"_id":"599","normalized_imdb_id":63442,"title":"Planet of the Apes","year":1968,"rating":1,"dubious":false,"date":"2009-12-27 22:05"},{"_id":"764","normalized_imdb_id":62794,"title":"Charly","year":1968,"rating":2,"dubious":false,"date":"2010-04-26 15:29"},{"_id":"844","normalized_imdb_id":63462,"title":"Producers, The","year":1968,"rating":0,"dubious":false,"date":"2010-05-27 19:36"},{"_id":"857","normalized_imdb_id":63522,"title":"Rosemary's Baby","year":1968,"rating":3,"dubious":false,"date":"2010-05-27 22:50"},{"_id":"919","normalized_imdb_id":62622,"title":"2001: A Space Odyssey","year":1968,"rating":0,"dubious":false,"date":"2010-06-08 09:14"},{"_id":"1185","normalized_imdb_id":65207,"title":"Where Eagles Dare","year":1968,"rating":3,"dubious":false,"date":"2010-07-17 16:51"},{"_id":"1249","normalized_imdb_id":63518,"title":"Romeo and Juliet","year":1968,"rating":3,"dubious":false,"date":"2010-07-23 00:20"},{"_id":"1815","normalized_imdb_id":63823,"title":"Yellow Submarine","year":1968,"rating":0,"dubious":false,"date":"2010-12-03 08:33"},{"_id":"2092","normalized_imdb_id":63642,"title":"Star!","year":1968,"rating":3,"dubious":false,"date":"2011-03-06 05:42"},{"_id":"2104","normalized_imdb_id":63060,"title":"Hellfighters","year":1968,"rating":2,"dubious":false,"date":"2011-03-10 02:07"},{"_id":"2157","normalized_imdb_id":62711,"title":"Barbarella","year":1968,"rating":3,"dubious":false,"date":"2011-03-31 23:44"},{"_id":"2226","normalized_imdb_id":64116,"title":"Once Upon a Time in the West","year":1968,"rating":1,"dubious":false,"date":"2011-04-23 19:00"},{"_id":"2652","normalized_imdb_id":63415,"title":"Party, The","year":1968,"rating":3,"dubious":false,"date":"2011-09-03 06:28"},{"_id":"2749","normalized_imdb_id":63227,"title":"Lion in Winter, The","year":1968,"rating":3,"dubious":false,"date":"2011-10-10 02:17"},{"_id":"2757","normalized_imdb_id":63850,"title":"If....","year":1968,"rating":1,"dubious":false,"date":"2011-10-13 02:26"},{"_id":"2925","normalized_imdb_id":63049,"title":"Head","year":1968,"rating":0,"dubious":false,"date":"2011-12-13 06:57"},{"_id":"2969","normalized_imdb_id":61747,"title":"Hang 'Em High","year":1968,"rating":2,"dubious":false,"date":"2012-01-02 08:42"},{"_id":"3499","normalized_imdb_id":63350,"title":"Night of the Living Dead","year":1968,"rating":3,"dubious":false,"date":"2012-08-27 01:00"},{"_id":"3626","normalized_imdb_id":62782,"title":"Carry On... Up the Khyber","year":1968,"rating":3,"dubious":true,"date":"2012-10-24 20:29"},{"_id":"3826","normalized_imdb_id":62426,"title":"Up the Junction","year":1968,"rating":3,"dubious":false,"date":"2013-01-14 16:38"},{"_id":"3878","normalized_imdb_id":61955,"title":"Bride Wore Black, The","year":1968,"rating":3,"dubious":false,"date":"2013-02-06 22:16"},{"_id":"3947","normalized_imdb_id":62687,"title":"Asterix et Cleopatre","year":1968,"rating":0,"dubious":false,"date":"2013-03-02 00:49"},{"_id":"4045","normalized_imdb_id":62994,"title":"Funny Girl","year":1968,"rating":3,"dubious":false,"date":"2013-04-11 18:27"},{"_id":"5385","normalized_imdb_id":63185,"title":"Killing of Sister George, The","year":1968,"rating":3,"dubious":false,"date":"2014-04-11 09:57"},{"_id":"5878","normalized_imdb_id":63759,"title":"Hour of the Wolf","year":1968,"rating":1,"dubious":false,"date":"2014-10-27 20:33"},{"_id":"6394","normalized_imdb_id":63172,"title":"Destroy All Monsters","year":1968,"rating":0,"dubious":false,"date":"2015-08-07 02:33"},{"_id":"6452","normalized_imdb_id":63010,"title":"Il giorno della civetta","year":1968,"rating":0,"dubious":false,"date":"2015-09-14 08:35"},{"_id":"6807","normalized_imdb_id":63000,"title":"Gamera vs. Viras","year":1968,"rating":2,"dubious":false,"date":"2016-03-29 01:51"},{"_id":"7123","normalized_imdb_id":62765,"title":"Bullitt","year":1968,"rating":1,"dubious":false,"date":"2016-09-19 03:47"},{"_id":"7673","normalized_imdb_id":63493,"title":"Reconstruction","year":1968,"rating":0,"dubious":false,"date":"2017-06-03 17:51"},{"_id":"7986","normalized_imdb_id":63121,"title":"Ice Station Zebra","year":1968,"rating":0,"dubious":false,"date":"2018-01-07 10:52"},{"_id":"8289","normalized_imdb_id":62909,"title":"Dracula Has Risen from the Grave","year":1968,"rating":2,"dubious":true,"date":"2018-06-14 17:24"},{"_id":"8542","normalized_imdb_id":62164,"title":"Boys of Paul Street, The","year":1968,"rating":0,"dubious":false,"date":"2018-12-14 23:21"},{"_id":"8543","normalized_imdb_id":62925,"title":"Egri csillagok","year":1968,"rating":1,"dubious":false,"date":"2018-12-14 23:22"},{"_id":"8686","normalized_imdb_id":130141,"title":"Cat Has Nine Lives, The","year":1968,"rating":3,"dubious":true,"date":"2019-03-25 19:50"},{"_id":"8827","normalized_imdb_id":65225,"title":"Wrecking Crew, The","year":1968,"rating":3,"dubious":false,"date":"2019-08-24 17:23"},{"_id":"9547","normalized_imdb_id":62803,"title":"Chitty Chitty Bang Bang","year":1968,"rating":3,"dubious":false,"date":"2021-03-14 20:23"},{"_id":"9556","normalized_imdb_id":63379,"title":"Today We Kill, Tomorrow We Die!","year":1968,"rating":0,"dubious":false,"date":"2021-03-14 21:54"},{"_id":"9595","normalized_imdb_id":63385,"title":"Oliver!","year":1968,"rating":2,"dubious":false,"date":"2021-03-29 04:51"},{"_id":"9693","normalized_imdb_id":63818,"title":"Valley of Death, The","year":1968,"rating":0,"dubious":false,"date":"2021-04-27 19:47"},{"_id":"9707","normalized_imdb_id":62151,"title":"Django, Prepare a Coffin","year":1968,"rating":0,"dubious":false,"date":"2021-04-27 20:51"},{"_id":"9764","normalized_imdb_id":62446,"title":"Rape of the Vampire, The","year":1968,"rating":3,"dubious":false,"date":"2021-04-30 20:45"},{"_id":"1426","normalized_imdb_id":66579,"title":"Women in Love","year":1969,"rating":3,"dubious":false,"date":"2010-08-02 19:05"},{"_id":"1182","normalized_imdb_id":64437,"title":"Honeymoon Killers, The","year":1969,"rating":3,"dubious":false,"date":"2010-07-16 21:32"},{"_id":"1100","normalized_imdb_id":65051,"title":"Support Your Local Sheriff!","year":1969,"rating":1,"dubious":false,"date":"2010-07-05 00:06"},{"_id":"1783","normalized_imdb_id":64708,"title":"My Side of the Mountain","year":1969,"rating":1,"dubious":false,"date":"2010-11-28 05:26"},{"_id":"1817","normalized_imdb_id":64782,"title":"Paint Your Wagon","year":1969,"rating":2,"dubious":false,"date":"2010-12-03 09:46"},{"_id":"2077","normalized_imdb_id":64115,"title":"Butch Cassidy and the Sundance Kid","year":1969,"rating":1,"dubious":false,"date":"2011-02-27 05:47"},{"_id":"2079","normalized_imdb_id":64276,"title":"Easy Rider","year":1969,"rating":1,"dubious":false,"date":"2011-02-28 05:11"},{"_id":"2091","normalized_imdb_id":65566,"title":"Computer Wore Tennis Shoes, The","year":1969,"rating":1,"dubious":false,"date":"2011-03-06 04:57"},{"_id":"2283","normalized_imdb_id":64253,"title":"Downhill Racer","year":1969,"rating":0,"dubious":false,"date":"2011-05-11 00:03"},{"_id":"2456","normalized_imdb_id":64840,"title":"Prime of Miss Jean Brodie, The","year":1969,"rating":3,"dubious":false,"date":"2011-06-29 13:02"},{"_id":"2583","normalized_imdb_id":64505,"title":"Italian Job, The","year":1969,"rating":1,"dubious":false,"date":"2011-07-29 08:39"},{"_id":"2586","normalized_imdb_id":64156,"title":"Chastity","year":1969,"rating":0,"dubious":false,"date":"2011-08-01 19:09"},{"_id":"2722","normalized_imdb_id":64541,"title":"Kes","year":1969,"rating":1,"dubious":false,"date":"2011-09-29 23:04"},{"_id":"2902","normalized_imdb_id":65126,"title":"True Grit","year":1969,"rating":3,"dubious":false,"date":"2011-12-04 22:42"},{"_id":"2899","normalized_imdb_id":64002,"title":"Alice's Restaurant","year":1969,"rating":1,"dubious":false,"date":"2011-12-04 05:59"},{"_id":"3406","normalized_imdb_id":64665,"title":"Midnight Cowboy","year":1969,"rating":1,"dubious":false,"date":"2012-07-08 23:31"},{"_id":"3880","normalized_imdb_id":64990,"title":"Mississippi Mermaid","year":1969,"rating":3,"dubious":false,"date":"2013-02-06 22:20"},{"_id":"4350","normalized_imdb_id":64040,"title":"Army of Shadows","year":1969,"rating":0,"dubious":false,"date":"2013-07-15 19:21"},{"_id":"4669","normalized_imdb_id":64757,"title":"On Her Majesty's Secret Service","year":1969,"rating":2,"dubious":false,"date":"2013-10-06 19:46"},{"_id":"4755","normalized_imdb_id":64418,"title":"Hello, Dolly!","year":1969,"rating":3,"dubious":false,"date":"2013-10-30 04:01"},{"_id":"6396","normalized_imdb_id":64373,"title":"Godzilla's Revenge (Godzilla, Minira, Gabara: All Monsters Attack)","year":1969,"rating":0,"dubious":false,"date":"2015-08-09 19:21"},{"_id":"6794","normalized_imdb_id":65088,"title":"They Shoot Horses, Don't They?","year":1969,"rating":1,"dubious":true,"date":"2016-03-26 07:33"},{"_id":"6816","normalized_imdb_id":63991,"title":"Age of Consent","year":1969,"rating":3,"dubious":false,"date":"2016-03-31 16:49"},{"_id":"7288","normalized_imdb_id":65063,"title":"Take the Money and Run","year":1969,"rating":1,"dubious":false,"date":"2016-11-22 14:28"},{"_id":"7521","normalized_imdb_id":65234,"title":"Z","year":1969,"rating":1,"dubious":false,"date":"2017-03-18 16:48"},{"_id":"7924","normalized_imdb_id":64612,"title":"My Night at Maud's","year":1969,"rating":3,"dubious":false,"date":"2017-11-26 14:22"},{"_id":"8266","normalized_imdb_id":64793,"title":"Passion of Anna, The","year":1969,"rating":1,"dubious":true,"date":"2018-05-31 02:55"},{"_id":"9202","normalized_imdb_id":64816,"title":"Swimming Pool, The","year":1969,"rating":3,"dubious":false,"date":"2020-07-13 13:38"},{"_id":"9708","normalized_imdb_id":64240,"title":"Django the Bastard","year":1969,"rating":0,"dubious":false,"date":"2021-04-27 20:52"},{"_id":"9762","normalized_imdb_id":62870,"title":"Marquis de Sade's Justine","year":1969,"rating":3,"dubious":false,"date":"2021-04-30 20:37"},{"_id":"255","normalized_imdb_id":65531,"title":"Le Cercle Rouge","year":1970,"rating":0,"dubious":false,"date":"2009-01-11 07:14"},{"_id":"583","normalized_imdb_id":65466,"title":"Beyond the Valley of the Dolls","year":1970,"rating":3,"dubious":false,"date":"2009-12-23 00:21"},{"_id":"1122","normalized_imdb_id":65421,"title":"AristoCats, The","year":1970,"rating":3,"dubious":false,"date":"2010-07-09 04:45"},{"_id":"1726","normalized_imdb_id":66327,"title":"Santa Clause is Comin' to Town","year":1970,"rating":1,"dubious":false,"date":"2010-11-02 10:15"},{"_id":"1932","normalized_imdb_id":64806,"title":"Phantom Tollbooth, The","year":1970,"rating":1,"dubious":false,"date":"2011-01-25 20:48"},{"_id":"2428","normalized_imdb_id":65134,"title":"Two Mules for Sister Sara","year":1970,"rating":3,"dubious":false,"date":"2011-06-22 06:57"},{"_id":"2571","normalized_imdb_id":66122,"title":"Deep End","year":1970,"rating":1,"dubious":false,"date":"2011-07-26 13:57"},{"_id":"2602","normalized_imdb_id":66518,"title":"Vampire Lovers, The","year":1970,"rating":3,"dubious":false,"date":"2011-08-12 02:40"},{"_id":"2634","normalized_imdb_id":65449,"title":"Bambule","year":1970,"rating":3,"dubious":false,"date":"2011-08-23 09:07"},{"_id":"2984","normalized_imdb_id":65724,"title":"Five Easy Pieces","year":1970,"rating":3,"dubious":false,"date":"2012-01-11 13:55"},{"_id":"3302","normalized_imdb_id":66011,"title":"Love Story","year":1970,"rating":1,"dubious":false,"date":"2012-06-02 06:23"},{"_id":"3514","normalized_imdb_id":188484,"title":"Carry It On","year":1970,"rating":3,"dubious":false,"date":"2012-09-02 22:06"},{"_id":"3537","normalized_imdb_id":66164,"title":"Les novices","year":1970,"rating":3,"dubious":false,"date":"2012-09-21 18:09"},{"_id":"3681","normalized_imdb_id":65488,"title":"Boys in the Band, The","year":1970,"rating":0,"dubious":false,"date":"2012-11-20 20:23"},{"_id":"4201","normalized_imdb_id":67713,"title":"Scars of Dracula","year":1970,"rating":1,"dubious":false,"date":"2013-06-02 10:29"},{"_id":"4237","normalized_imdb_id":65073,"title":"Taste the Blood of Dracula","year":1970,"rating":3,"dubious":false,"date":"2013-06-13 04:11"},{"_id":"4340","normalized_imdb_id":65856,"title":"House of Dark Shadows","year":1970,"rating":2,"dubious":true,"date":"2013-07-12 15:43"},{"_id":"4801","normalized_imdb_id":65377,"title":"Airport","year":1970,"rating":3,"dubious":false,"date":"2013-11-09 00:15"},{"_id":"5484","normalized_imdb_id":66109,"title":"Music Lovers, The","year":1970,"rating":1,"dubious":false,"date":"2014-05-18 03:17"},{"_id":"5512","normalized_imdb_id":65571,"title":"Conformist, The","year":1970,"rating":3,"dubious":false,"date":"2014-05-29 14:09"},{"_id":"6274","normalized_imdb_id":65611,"title":"Darling Lili","year":1970,"rating":3,"dubious":true,"date":"2015-05-26 10:25"},{"_id":"6605","normalized_imdb_id":64177,"title":"Colossus: The Forbin Project","year":1970,"rating":0,"dubious":false,"date":"2015-12-13 22:34"},{"_id":"7057","normalized_imdb_id":65569,"title":"Nachts, wenn Dracula erwacht","year":1970,"rating":1,"dubious":false,"date":"2016-08-22 13:29"},{"_id":"7169","normalized_imdb_id":65649,"title":"Dodes'ka-den","year":1970,"rating":3,"dubious":false,"date":"2016-10-04 07:40"},{"_id":"7559","normalized_imdb_id":66491,"title":"Tristana","year":1970,"rating":2,"dubious":true,"date":"2017-04-04 14:16"},{"_id":"7599","normalized_imdb_id":66207,"title":"Donkey Skin","year":1970,"rating":3,"dubious":false,"date":"2017-05-01 20:53"},{"_id":"7753","normalized_imdb_id":65988,"title":"Little Big Man","year":1970,"rating":1,"dubious":false,"date":"2017-07-27 06:06"},{"_id":"7907","normalized_imdb_id":66549,"title":"Waterloo","year":1970,"rating":0,"dubious":false,"date":"2017-11-17 21:17"},{"_id":"7923","normalized_imdb_id":65772,"title":"Claire's Knee","year":1970,"rating":3,"dubious":false,"date":"2017-11-26 14:20"},{"_id":"8322","normalized_imdb_id":66473,"title":"Tora! Tora! Tora!","year":1970,"rating":1,"dubious":false,"date":"2018-07-12 21:54"},{"_id":"8429","normalized_imdb_id":64165,"title":"Things of Life, The","year":1970,"rating":1,"dubious":false,"date":"2018-10-04 11:11"},{"_id":"8774","normalized_imdb_id":65528,"title":"Catch-22","year":1970,"rating":3,"dubious":false,"date":"2019-06-30 01:50"},{"_id":"9048","normalized_imdb_id":66279,"title":"Railway Children, The","year":1970,"rating":3,"dubious":false,"date":"2020-03-23 15:52"},{"_id":"9082","normalized_imdb_id":67961,"title":"Wanda","year":1970,"rating":3,"dubious":true,"date":"2020-04-15 23:09"},{"_id":"9380","normalized_imdb_id":67355,"title":"They Call Me Trinity","year":1970,"rating":2,"dubious":false,"date":"2020-12-14 14:25"},{"_id":"9386","normalized_imdb_id":66227,"title":"Pippi in the South Seas","year":1970,"rating":3,"dubious":false,"date":"2020-12-14 16:06"},{"_id":"9578","normalized_imdb_id":66301,"title":"Rio Lobo","year":1970,"rating":1,"dubious":false,"date":"2021-03-21 21:07"},{"_id":"9594","normalized_imdb_id":66206,"title":"Patton","year":1970,"rating":1,"dubious":false,"date":"2021-03-29 04:45"},{"_id":"9828","normalized_imdb_id":65904,"title":"Italian Stallion","year":1970,"rating":3,"dubious":false,"date":"2021-05-14 21:35"},{"_id":"9994","normalized_imdb_id":64106,"title":"Le Boucher","year":1970,"rating":1,"dubious":false,"date":"2021-08-03 21:11"},{"_id":"239","normalized_imdb_id":67959,"title":"Walkabout","year":1971,"rating":1,"dubious":false,"date":"2008-12-14 09:10"},{"_id":"304","normalized_imdb_id":67992,"title":"Willy Wonka & the Chocolate Factory","year":1971,"rating":2,"dubious":false,"date":"2009-03-24 15:30"},{"_id":"626","normalized_imdb_id":66434,"title":"THX 1138","year":1971,"rating":0,"dubious":false,"date":"2009-12-29 05:53"},{"_id":"1039","normalized_imdb_id":66921,"title":"A Clockwork Orange","year":1971,"rating":1,"dubious":false,"date":"2010-07-03 14:41"},{"_id":"1123","normalized_imdb_id":66728,"title":"Million Dollar Duck, The","year":1971,"rating":1,"dubious":false,"date":"2010-07-09 04:50"},{"_id":"1457","normalized_imdb_id":67820,"title":"Taking Off","year":1971,"rating":3,"dubious":false,"date":"2010-08-10 03:40"},{"_id":"1727","normalized_imdb_id":249577,"title":"Here Comes Peter Cotton Tail","year":1971,"rating":1,"dubious":false,"date":"2010-11-02 10:18"},{"_id":"1770","normalized_imdb_id":66817,"title":"Bedknobs and Broomsticks","year":1971,"rating":3,"dubious":false,"date":"2010-11-20 05:10"},{"_id":"1837","normalized_imdb_id":66765,"title":"And Now for Something Completely Different","year":1971,"rating":1,"dubious":false,"date":"2010-12-10 12:33"},{"_id":"2159","normalized_imdb_id":67185,"title":"Harold and Maude","year":1971,"rating":3,"dubious":false,"date":"2011-04-01 00:12"},{"_id":"2286","normalized_imdb_id":67328,"title":"Last Picture Show, The","year":1971,"rating":2,"dubious":false,"date":"2011-05-11 19:39"},{"_id":"2620","normalized_imdb_id":67800,"title":"Straw Dogs","year":1971,"rating":1,"dubious":false,"date":"2011-08-15 19:49"},{"_id":"2751","normalized_imdb_id":67741,"title":"Shaft","year":1971,"rating":1,"dubious":false,"date":"2011-10-10 07:07"},{"_id":"2893","normalized_imdb_id":67065,"title":"Escape from the Planet of the Apes","year":1971,"rating":1,"dubious":true,"date":"2011-12-02 20:01"},{"_id":"3039","normalized_imdb_id":67810,"title":"Sweet Sweetback's Baadasssss Song","year":1971,"rating":1,"dubious":false,"date":"2012-02-11 16:15"},{"_id":"3139","normalized_imdb_id":67451,"title":"Mrs. Pollifax - Spy","year":1971,"rating":3,"dubious":true,"date":"2012-03-23 01:19"},{"_id":"3194","normalized_imdb_id":67881,"title":"Trojan Women, The","year":1971,"rating":3,"dubious":false,"date":"2012-04-19 18:58"},{"_id":"3218","normalized_imdb_id":67439,"title":"Mon oncle Antoine","year":1971,"rating":3,"dubious":false,"date":"2012-04-30 13:24"},{"_id":"3252","normalized_imdb_id":67588,"title":"Play Misty for Me","year":1971,"rating":3,"dubious":false,"date":"2012-05-13 03:32"},{"_id":"3476","normalized_imdb_id":67637,"title":"Frenchie King","year":1971,"rating":3,"dubious":false,"date":"2012-08-16 18:25"},{"_id":"3502","normalized_imdb_id":67402,"title":"Mary, Queen of Scots","year":1971,"rating":3,"dubious":false,"date":"2012-08-29 04:07"},{"_id":"4327","normalized_imdb_id":67367,"title":"Lust for a Vampire","year":1971,"rating":3,"dubious":false,"date":"2013-07-10 16:59"},{"_id":"4066","normalized_imdb_id":67341,"title":"Let's Scare Jessica to Death","year":1971,"rating":3,"dubious":false,"date":"2013-04-17 04:51"},{"_id":"4232","normalized_imdb_id":67116,"title":"French Connection, The","year":1971,"rating":1,"dubious":false,"date":"2013-06-12 04:51"},{"_id":"5312","normalized_imdb_id":66808,"title":"Bananas","year":1971,"rating":1,"dubious":false,"date":"2014-03-22 22:47"},{"_id":"5313","normalized_imdb_id":67411,"title":"McCabe & Mrs. Miller","year":1971,"rating":3,"dubious":false,"date":"2014-03-22 23:16"},{"_id":"5344","normalized_imdb_id":67322,"title":"Lady Hermit, The","year":1971,"rating":3,"dubious":false,"date":"2014-03-31 16:51"},{"_id":"5375","normalized_imdb_id":67445,"title":"Death in Venice","year":1971,"rating":0,"dubious":false,"date":"2014-04-09 06:58"},{"_id":"5390","normalized_imdb_id":66995,"title":"Diamonds Are Forever","year":1971,"rating":1,"dubious":false,"date":"2014-04-12 18:48"},{"_id":"6243","normalized_imdb_id":66919,"title":"Lulu the Tool","year":1971,"rating":1,"dubious":false,"date":"2015-05-17 19:58"},{"_id":"6351","normalized_imdb_id":67023,"title":"Duel","year":1971,"rating":0,"dubious":false,"date":"2015-07-13 06:20"},{"_id":"6408","normalized_imdb_id":67148,"title":"Godzilla vs. the Smog Monster (Godzilla vs. Hedorah)","year":1971,"rating":3,"dubious":true,"date":"2015-08-17 02:28"},{"_id":"6763","normalized_imdb_id":67541,"title":"Wake in Fright","year":1971,"rating":1,"dubious":false,"date":"2016-03-06 23:31"},{"_id":"6804","normalized_imdb_id":67309,"title":"Klute","year":1971,"rating":3,"dubious":false,"date":"2016-03-26 08:55"},{"_id":"7067","normalized_imdb_id":65854,"title":"House That Dripped Blood, The","year":1971,"rating":3,"dubious":false,"date":"2016-08-25 08:05"},{"_id":"7158","normalized_imdb_id":66993,"title":"Devils, The","year":1971,"rating":3,"dubious":false,"date":"2016-09-28 12:37"},{"_id":"7189","normalized_imdb_id":67483,"title":"Nicholas and Alexandra","year":1971,"rating":3,"dubious":true,"date":"2016-10-12 15:05"},{"_id":"7387","normalized_imdb_id":66380,"title":"Vampyros Lesbos","year":1971,"rating":3,"dubious":false,"date":"2017-01-11 14:08"},{"_id":"7518","normalized_imdb_id":67128,"title":"Get Carter","year":1971,"rating":1,"dubious":false,"date":"2017-03-16 12:11"},{"_id":"7574","normalized_imdb_id":66824,"title":"Bello onesto emigrato Australia sposerebbe compaesana illibata","year":1971,"rating":2,"dubious":false,"date":"2017-04-15 22:40"},{"_id":"7698","normalized_imdb_id":66730,"title":"10 Rillington Place","year":1971,"rating":1,"dubious":false,"date":"2017-06-20 22:34"},{"_id":"8265","normalized_imdb_id":67372,"title":"Macbeth","year":1971,"rating":1,"dubious":false,"date":"2018-05-30 19:30"},{"_id":"8506","normalized_imdb_id":67972,"title":"Werewolves on Wheels","year":1971,"rating":1,"dubious":false,"date":"2018-11-30 22:19"},{"_id":"8508","normalized_imdb_id":68675,"title":"Hannie Caulder","year":1971,"rating":0,"dubious":false,"date":"2018-12-03 01:17"},{"_id":"8641","normalized_imdb_id":67919,"title":"Emigrants, The","year":1971,"rating":3,"dubious":false,"date":"2019-02-13 23:26"},{"_id":"8844","normalized_imdb_id":67633,"title":"Punishment Park","year":1971,"rating":3,"dubious":false,"date":"2019-09-11 02:17"},{"_id":"8874","normalized_imdb_id":67690,"title":"Daughters of Darkness","year":1971,"rating":3,"dubious":true,"date":"2019-10-25 17:58"},{"_id":"9123","normalized_imdb_id":67482,"title":"A New Leaf","year":1971,"rating":3,"dubious":false,"date":"2020-05-06 20:28"},{"_id":"9228","normalized_imdb_id":67927,"title":"Vanishing Point","year":1971,"rating":0,"dubious":false,"date":"2020-08-06 21:25"},{"_id":"9299","normalized_imdb_id":67418,"title":"Melody","year":1971,"rating":2,"dubious":false,"date":"2020-10-08 01:56"},{"_id":"9324","normalized_imdb_id":66763,"title":"Anand","year":1971,"rating":2,"dubious":false,"date":"2020-11-09 05:21"},{"_id":"9557","normalized_imdb_id":68154,"title":"Trinity Is Still My Name","year":1971,"rating":1,"dubious":false,"date":"2021-03-14 21:55"},{"_id":"9591","normalized_imdb_id":67277,"title":"Johnny Got His Gun","year":1971,"rating":1,"dubious":false,"date":"2021-03-28 23:13"},{"_id":"9680","normalized_imdb_id":66769,"title":"Andromeda Strain, The","year":1971,"rating":3,"dubious":true,"date":"2021-04-25 21:23"},{"_id":"679","normalized_imdb_id":69293,"title":"Solyaris","year":1972,"rating":1,"dubious":false,"date":"2010-02-12 08:37"},{"_id":"708","normalized_imdb_id":69089,"title":"Pink Flamingos","year":1972,"rating":3,"dubious":false,"date":"2010-03-26 22:38"},{"_id":"1176","normalized_imdb_id":69442,"title":"Une belle fille comme moi","year":1972,"rating":3,"dubious":false,"date":"2010-07-14 16:38"},{"_id":"1462","normalized_imdb_id":201820,"title":"Other Side of Underneath, The","year":1972,"rating":3,"dubious":false,"date":"2010-08-11 20:49"},{"_id":"1636","normalized_imdb_id":68205,"title":"Chloe in the Afternoon","year":1972,"rating":2,"dubious":false,"date":"2010-10-04 06:40"},{"_id":"2031","normalized_imdb_id":69467,"title":"Cries and Whispers (Viskningar och rop)","year":1972,"rating":3,"dubious":false,"date":"2011-02-15 03:49"},{"_id":"2087","normalized_imdb_id":67977,"title":"When Michael Calls","year":1972,"rating":2,"dubious":false,"date":"2011-03-04 22:14"},{"_id":"2224","normalized_imdb_id":68646,"title":"Godfather, The","year":1972,"rating":2,"dubious":false,"date":"2011-04-23 18:52"},{"_id":"2391","normalized_imdb_id":68240,"title":"Avanti!","year":1972,"rating":3,"dubious":false,"date":"2011-06-12 00:16"},{"_id":"2674","normalized_imdb_id":68182,"title":"Aguirre: The Wrath of God","year":1972,"rating":2,"dubious":false,"date":"2011-09-12 03:50"},{"_id":"2803","normalized_imdb_id":69019,"title":"Don't Torture a Duckling","year":1972,"rating":2,"dubious":false,"date":"2011-10-27 19:13"},{"_id":"3395","normalized_imdb_id":68473,"title":"Deliverance","year":1972,"rating":1,"dubious":false,"date":"2012-07-03 02:33"},{"_id":"2924","normalized_imdb_id":68762,"title":"Jeremiah Johnson","year":1972,"rating":1,"dubious":false,"date":"2011-12-13 06:55"},{"_id":"2986","normalized_imdb_id":68156,"title":"1776","year":1972,"rating":1,"dubious":false,"date":"2012-01-12 19:17"},{"_id":"3132","normalized_imdb_id":69404,"title":"Travels With My Aunt","year":1972,"rating":3,"dubious":false,"date":"2012-03-20 12:44"},{"_id":"3274","normalized_imdb_id":68326,"title":"Butterflies Are Free","year":1972,"rating":3,"dubious":false,"date":"2012-05-21 01:59"},{"_id":"3408","normalized_imdb_id":68161,"title":"Dawns Here are Quiet, The","year":1972,"rating":3,"dubious":false,"date":"2012-07-09 15:38"},{"_id":"4149","normalized_imdb_id":69495,"title":"What's up Doc","year":1972,"rating":2,"dubious":false,"date":"2013-05-21 22:00"},{"_id":"4186","normalized_imdb_id":68327,"title":"Cabaret","year":1972,"rating":3,"dubious":false,"date":"2013-05-31 00:49"},{"_id":"4516","normalized_imdb_id":70849,"title":"Last Tango in Paris","year":1972,"rating":3,"dubious":true,"date":"2013-08-29 03:24"},{"_id":"4916","normalized_imdb_id":69113,"title":"Poseidon Adventure, The","year":1972,"rating":1,"dubious":false,"date":"2013-12-05 22:09"},{"_id":"4981","normalized_imdb_id":70694,"title":"Silent Night, Bloody Night","year":1972,"rating":3,"dubious":false,"date":"2013-12-25 01:55"},{"_id":"5314","normalized_imdb_id":69281,"title":"Sleuth","year":1972,"rating":0,"dubious":false,"date":"2014-03-22 23:33"},{"_id":"6022","normalized_imdb_id":244730,"title":"Prison Girls","year":1972,"rating":3,"dubious":false,"date":"2015-01-07 04:19"},{"_id":"6085","normalized_imdb_id":68346,"title":"Mattei Affair (Il caso Mattei), The","year":1972,"rating":0,"dubious":false,"date":"2015-01-27 22:28"},{"_id":"6140","normalized_imdb_id":66798,"title":"L'aventure, c'est l'aventure","year":1972,"rating":0,"dubious":false,"date":"2015-03-11 03:08"},{"_id":"6244","normalized_imdb_id":70641,"title":"Sbatti il mostro in prima pagina","year":1972,"rating":1,"dubious":false,"date":"2015-05-17 20:07"},{"_id":"6417","normalized_imdb_id":68371,"title":"Godzilla vs. Gigan","year":1972,"rating":1,"dubious":false,"date":"2015-08-23 16:56"},{"_id":"6500","normalized_imdb_id":69489,"title":"Wedding in White","year":1972,"rating":3,"dubious":false,"date":"2015-10-18 22:28"},{"_id":"6811","normalized_imdb_id":68468,"title":"Deep Throat","year":1972,"rating":3,"dubious":false,"date":"2016-03-30 16:55"},{"_id":"6822","normalized_imdb_id":68278,"title":"Bitter Tears of Petra von Kant , The","year":1972,"rating":3,"dubious":false,"date":"2016-04-07 06:52"},{"_id":"7019","normalized_imdb_id":68284,"title":"Blacula","year":1972,"rating":3,"dubious":false,"date":"2016-08-04 12:15"},{"_id":"7186","normalized_imdb_id":68833,"title":"Last House on the Left, The","year":1972,"rating":3,"dubious":false,"date":"2016-10-11 14:49"},{"_id":"7434","normalized_imdb_id":68611,"title":"Frenzy","year":1972,"rating":3,"dubious":false,"date":"2017-02-08 13:21"},{"_id":"7544","normalized_imdb_id":70959,"title":"State of Siege","year":1972,"rating":0,"dubious":false,"date":"2017-03-30 17:51"},{"_id":"7964","normalized_imdb_id":68361,"title":"Discreet Charm of the Bourgeoisie, The","year":1972,"rating":3,"dubious":false,"date":"2017-12-23 19:42"},{"_id":"9183","normalized_imdb_id":68828,"title":"Lady Sings the Blues","year":1972,"rating":3,"dubious":false,"date":"2020-06-26 02:07"},{"_id":"9381","normalized_imdb_id":68815,"title":"Lone Wolf and Cub: Sword of Vengeance","year":1972,"rating":0,"dubious":false,"date":"2020-12-14 14:32"},{"_id":"9382","normalized_imdb_id":68816,"title":"Lone Wolf and Cub: Baby Cart at the River Styx","year":1972,"rating":2,"dubious":false,"date":"2020-12-14 14:33"},{"_id":"9383","normalized_imdb_id":143348,"title":"Lone Wolf and Cub: Baby Cart in Peril","year":1972,"rating":0,"dubious":false,"date":"2020-12-14 14:35"},{"_id":"9384","normalized_imdb_id":68817,"title":"Lone Wolf and Cub: Baby Cart to Hades","year":1972,"rating":0,"dubious":false,"date":"2020-12-14 14:36"},{"_id":"9454","normalized_imdb_id":70698,"title":"Sisters","year":1972,"rating":3,"dubious":false,"date":"2021-01-25 15:40"},{"_id":"9736","normalized_imdb_id":67206,"title":"Hitchhikers, The","year":1972,"rating":3,"dubious":false,"date":"2021-04-29 18:11"},{"_id":"9747","normalized_imdb_id":68273,"title":"Big Bird Cage, The","year":1972,"rating":3,"dubious":false,"date":"2021-04-30 09:18"},{"_id":"9774","normalized_imdb_id":69095,"title":"All the Way Boys","year":1972,"rating":0,"dubious":false,"date":"2021-05-01 22:25"},{"_id":"257","normalized_imdb_id":70233,"title":"Ivan Vasilevich menyaet professiyu","year":1973,"rating":1,"dubious":false,"date":"2009-01-17 13:08"},{"_id":"269","normalized_imdb_id":69762,"title":"Badlands","year":1973,"rating":0,"dubious":false,"date":"2009-02-03 21:37"},{"_id":"722","normalized_imdb_id":69995,"title":"Don't look now","year":1973,"rating":3,"dubious":false,"date":"2010-04-05 12:11"},{"_id":"751","normalized_imdb_id":70047,"title":"Exorcist, The","year":1973,"rating":3,"dubious":false,"date":"2010-04-24 06:07"},{"_id":"939","normalized_imdb_id":70917,"title":"Wicker Man, The","year":1973,"rating":3,"dubious":false,"date":"2010-06-12 09:50"},{"_id":"1550","normalized_imdb_id":69747,"title":"Mad Adventures of 'Rabbi' Jacob, The","year":1973,"rating":2,"dubious":false,"date":"2010-09-08 09:01"},{"_id":"1281","normalized_imdb_id":68282,"title":"Black Mama, White Mama","year":1973,"rating":3,"dubious":false,"date":"2010-07-23 06:49"},{"_id":"1768","normalized_imdb_id":70040,"title":"Spirit of the Beehive, The","year":1973,"rating":3,"dubious":false,"date":"2010-11-19 07:35"},{"_id":"2316","normalized_imdb_id":70735,"title":"Sting, The","year":1973,"rating":1,"dubious":false,"date":"2011-05-20 20:24"},{"_id":"2444","normalized_imdb_id":70819,"title":"A Touch of Class","year":1973,"rating":2,"dubious":false,"date":"2011-06-26 04:28"},{"_id":"2447","normalized_imdb_id":70707,"title":"Sleeper","year":1973,"rating":1,"dubious":false,"date":"2011-06-26 23:07"},{"_id":"2682","normalized_imdb_id":70300,"title":"Lemora: A Child's Tale Of The Supernatural","year":1973,"rating":3,"dubious":false,"date":"2011-09-16 13:07"},{"_id":"2769","normalized_imdb_id":70666,"title":"Serpico","year":1973,"rating":1,"dubious":false,"date":"2011-10-16 15:16"},{"_id":"2816","normalized_imdb_id":70723,"title":"Soylent Green","year":1973,"rating":1,"dubious":false,"date":"2011-11-01 04:58"},{"_id":"2848","normalized_imdb_id":71615,"title":"Holy Mountain, The","year":1973,"rating":1,"dubious":false,"date":"2011-11-19 16:04"},{"_id":"3433","normalized_imdb_id":70511,"title":"Papillon","year":1973,"rating":0,"dubious":false,"date":"2012-07-17 07:50"},{"_id":"3446","normalized_imdb_id":70510,"title":"Paper Moon","year":1973,"rating":3,"dubious":false,"date":"2012-07-26 21:39"},{"_id":"3688","normalized_imdb_id":70239,"title":"Jesus Christ Superstar","year":1973,"rating":0,"dubious":false,"date":"2012-11-24 22:00"},{"_id":"4610","normalized_imdb_id":69704,"title":"American Graffiti","year":1973,"rating":2,"dubious":false,"date":"2013-09-22 09:21"},{"_id":"4667","normalized_imdb_id":70608,"title":"Robin Hood","year":1973,"rating":3,"dubious":false,"date":"2013-10-06 15:46"},{"_id":"4882","normalized_imdb_id":70294,"title":"Legend of Hell House, The","year":1973,"rating":3,"dubious":false,"date":"2013-11-26 23:51"},{"_id":"5127","normalized_imdb_id":68699,"title":"High Plains Drifter","year":1973,"rating":1,"dubious":false,"date":"2014-02-02 10:06"},{"_id":"5187","normalized_imdb_id":69067,"title":"Payday","year":1973,"rating":2,"dubious":false,"date":"2014-02-20 17:52"},{"_id":"5315","normalized_imdb_id":70379,"title":"Mean Streets","year":1973,"rating":1,"dubious":false,"date":"2014-03-22 23:50"},{"_id":"5393","normalized_imdb_id":70328,"title":"Live and Let Die","year":1973,"rating":1,"dubious":false,"date":"2014-04-12 22:49"},{"_id":"5439","normalized_imdb_id":69990,"title":"Don Juan (Or If Don Juan Were a Woman)","year":1973,"rating":3,"dubious":false,"date":"2014-05-03 23:11"},{"_id":"5996","normalized_imdb_id":70460,"title":"Day for Night","year":1973,"rating":3,"dubious":false,"date":"2014-12-21 15:34"},{"_id":"6078","normalized_imdb_id":68359,"title":"A Charlie Brown Thanksgiving","year":1973,"rating":2,"dubious":false,"date":"2015-01-27 02:59"},{"_id":"6079","normalized_imdb_id":68370,"title":"Children Shouldn't Play with Dead Things","year":1973,"rating":3,"dubious":false,"date":"2015-01-27 03:43"},{"_id":"6484","normalized_imdb_id":70122,"title":"Godzilla vs. Megalon","year":1973,"rating":0,"dubious":false,"date":"2015-10-10 20:49"},{"_id":"6733","normalized_imdb_id":158714,"title":"Lady Snowblood","year":1973,"rating":3,"dubious":false,"date":"2016-02-17 23:34"},{"_id":"6815","normalized_imdb_id":69754,"title":"Baby, The","year":1973,"rating":3,"dubious":false,"date":"2016-03-31 16:06"},{"_id":"7020","normalized_imdb_id":70842,"title":"Turkish Delight","year":1973,"rating":3,"dubious":false,"date":"2016-08-04 19:45"},{"_id":"7406","normalized_imdb_id":68232,"title":"El ataque de los muertos sin ojos [Return of the Evil Dead]","year":1973,"rating":3,"dubious":false,"date":"2017-01-18 16:18"},{"_id":"7593","normalized_imdb_id":69895,"title":"Crazies, The","year":1973,"rating":3,"dubious":false,"date":"2017-04-27 14:10"},{"_id":"7603","normalized_imdb_id":69987,"title":"A Doll's House","year":1973,"rating":3,"dubious":true,"date":"2017-05-04 16:39"},{"_id":"7867","normalized_imdb_id":70904,"title":"World on a Wire","year":1973,"rating":2,"dubious":false,"date":"2017-10-22 11:56"},{"_id":"8320","normalized_imdb_id":70634,"title":"Satanic Rites of Dracula, The","year":1973,"rating":1,"dubious":false,"date":"2018-07-11 14:08"},{"_id":"8828","normalized_imdb_id":70518,"title":"Pat Garrett & Billy the Kid","year":1973,"rating":1,"dubious":false,"date":"2019-08-25 11:08"},{"_id":"8842","normalized_imdb_id":70782,"title":"Terminal Island","year":1973,"rating":3,"dubious":false,"date":"2019-09-11 02:06"},{"_id":"8926","normalized_imdb_id":70034,"title":"Enter the Dragon","year":1973,"rating":1,"dubious":false,"date":"2019-12-08 07:42"},{"_id":"9166","normalized_imdb_id":70468,"title":"Offence, The","year":1973,"rating":0,"dubious":false,"date":"2020-06-12 06:29"},{"_id":"9298","normalized_imdb_id":70544,"title":"Fantastic Planet","year":1973,"rating":0,"dubious":false,"date":"2020-10-08 01:48"},{"_id":"9558","normalized_imdb_id":70534,"title":"Knock Out Cop, The","year":1973,"rating":0,"dubious":false,"date":"2021-03-14 21:56"},{"_id":"9738","normalized_imdb_id":74080,"title":"'Gator Bait","year":1973,"rating":0,"dubious":false,"date":"2021-04-29 18:16"},{"_id":"9760","normalized_imdb_id":69745,"title":"Female Vampire","year":1973,"rating":3,"dubious":false,"date":"2021-04-30 20:30"},{"_id":"9761","normalized_imdb_id":66914,"title":"La nuit des etoiles filantes","year":1973,"rating":3,"dubious":false,"date":"2021-04-30 20:34"},{"_id":"9763","normalized_imdb_id":126004,"title":"La rose de fer","year":1973,"rating":0,"dubious":false,"date":"2021-04-30 20:42"},{"_id":"9777","normalized_imdb_id":70215,"title":"My Name Is Nobody","year":1973,"rating":0,"dubious":false,"date":"2021-05-01 22:30"},{"_id":"9824","normalized_imdb_id":72281,"title":"Three Musketeers, The","year":1973,"rating":2,"dubious":false,"date":"2021-05-13 21:50"},{"_id":"9995","normalized_imdb_id":70453,"title":"Les noces rouges","year":1973,"rating":3,"dubious":false,"date":"2021-08-03 21:25"},{"_id":"264","normalized_imdb_id":71381,"title":"Celine and Julie Go Boating","year":1974,"rating":3,"dubious":false,"date":"2009-01-27 23:21"},{"_id":"845","normalized_imdb_id":71230,"title":"Blazing Saddles","year":1974,"rating":1,"dubious":false,"date":"2010-05-27 19:38"},{"_id":"1077","normalized_imdb_id":72431,"title":"Young Frankenstein","year":1974,"rating":2,"dubious":false,"date":"2010-07-04 21:54"},{"_id":"1673","normalized_imdb_id":70948,"title":"Zardoz","year":1974,"rating":2,"dubious":false,"date":"2010-10-21 17:09"},{"_id":"1814","normalized_imdb_id":69945,"title":"Dark Star","year":1974,"rating":0,"dubious":false,"date":"2010-12-03 08:22"},{"_id":"2025","normalized_imdb_id":71935,"title":"Odessa File, The","year":1974,"rating":3,"dubious":true,"date":"2011-02-14 14:20"},{"_id":"2214","normalized_imdb_id":71115,"title":"Alice Doesn't Live Here Anymore","year":1974,"rating":3,"dubious":false,"date":"2011-04-23 18:28"},{"_id":"2237","normalized_imdb_id":71315,"title":"Chinatown","year":1974,"rating":2,"dubious":false,"date":"2011-04-23 20:26"},{"_id":"2399","normalized_imdb_id":71583,"title":"Groove Tube, The","year":1974,"rating":1,"dubious":false,"date":"2011-06-15 01:26"},{"_id":"2814","normalized_imdb_id":72271,"title":"Texas Chain Saw Massacre, The","year":1974,"rating":1,"dubious":false,"date":"2011-11-01 02:57"},{"_id":"3236","normalized_imdb_id":71803,"title":"Mame","year":1974,"rating":3,"dubious":false,"date":"2012-05-08 05:02"},{"_id":"3770","normalized_imdb_id":71222,"title":"Black Christmas","year":1974,"rating":3,"dubious":false,"date":"2012-12-26 04:10"},{"_id":"3896","normalized_imdb_id":71562,"title":"Godfather: Part II, The","year":1974,"rating":2,"dubious":false,"date":"2013-02-14 11:01"},{"_id":"3985","normalized_imdb_id":71360,"title":"Conversation, The","year":1974,"rating":1,"dubious":false,"date":"2013-03-16 23:27"},{"_id":"4520","normalized_imdb_id":72308,"title":"Towering Inferno, The","year":1974,"rating":1,"dubious":false,"date":"2013-08-29 04:01"},{"_id":"4901","normalized_imdb_id":74462,"title":"Edvard Munch","year":1974,"rating":1,"dubious":false,"date":"2013-12-02 20:31"},{"_id":"5118","normalized_imdb_id":71141,"title":"Ali: Fear Eats the Soul","year":1974,"rating":3,"dubious":false,"date":"2014-01-30 20:28"},{"_id":"5434","normalized_imdb_id":71807,"title":"Man with the Golden Gun, The","year":1974,"rating":1,"dubious":false,"date":"2014-05-02 12:32"},{"_id":"5531","normalized_imdb_id":71402,"title":"Death Wish","year":1974,"rating":3,"dubious":false,"date":"2014-06-04 17:15"},{"_id":"5781","normalized_imdb_id":71994,"title":"Phantom of the Paradise","year":1974,"rating":0,"dubious":false,"date":"2014-09-26 03:21"},{"_id":"5843","normalized_imdb_id":72979,"title":"Female Trouble","year":1974,"rating":3,"dubious":false,"date":"2014-10-15 20:17"},{"_id":"5999","normalized_imdb_id":71970,"title":"Parallax View, The","year":1974,"rating":0,"dubious":false,"date":"2014-12-23 21:54"},{"_id":"6175","normalized_imdb_id":71517,"title":"Foxy Brown","year":1974,"rating":3,"dubious":false,"date":"2015-03-29 17:33"},{"_id":"6465","normalized_imdb_id":72325,"title":"Truck Turner","year":1974,"rating":3,"dubious":false,"date":"2015-09-24 18:15"},{"_id":"6480","normalized_imdb_id":71565,"title":"Godzilla vs. Mechagodzilla","year":1974,"rating":1,"dubious":false,"date":"2015-10-04 23:32"},{"_id":"6535","normalized_imdb_id":71247,"title":"Brief Encounter","year":1974,"rating":3,"dubious":false,"date":"2015-11-05 22:32"},{"_id":"6758","normalized_imdb_id":72353,"title":"Going Places","year":1974,"rating":2,"dubious":false,"date":"2016-03-02 15:26"},{"_id":"7003","normalized_imdb_id":71464,"title":"Emmanuelle","year":1974,"rating":3,"dubious":false,"date":"2016-07-28 03:02"},{"_id":"7076","normalized_imdb_id":72417,"title":"A Woman Under The Influence","year":1974,"rating":3,"dubious":false,"date":"2016-08-29 08:01"},{"_id":"7077","normalized_imdb_id":70297,"title":"Legend of the 7 Golden Vampires, The","year":1974,"rating":1,"dubious":false,"date":"2016-08-29 09:29"},{"_id":"7249","normalized_imdb_id":71690,"title":"Je, tu, il, elle","year":1974,"rating":3,"dubious":true,"date":"2016-11-07 21:50"},{"_id":"7338","normalized_imdb_id":71431,"title":"Non si deve profanare il sonno dei morti [The Living Dead at Manchester Morgue]","year":1974,"rating":2,"dubious":false,"date":"2016-12-18 00:56"},{"_id":"8140","normalized_imdb_id":70003,"title":"Dracula","year":1974,"rating":3,"dubious":false,"date":"2018-04-04 13:43"},{"_id":"8355","normalized_imdb_id":72354,"title":"Vampyres","year":1974,"rating":3,"dubious":false,"date":"2018-08-04 15:05"},{"_id":"8551","normalized_imdb_id":72226,"title":"Sugarland Express, The","year":1974,"rating":2,"dubious":false,"date":"2018-12-14 23:41"},{"_id":"9046","normalized_imdb_id":71110,"title":"Airport 1975","year":1974,"rating":3,"dubious":false,"date":"2020-03-22 12:58"},{"_id":"9154","normalized_imdb_id":71717,"title":"Killdozer","year":1974,"rating":0,"dubious":false,"date":"2020-06-06 20:14"},{"_id":"9385","normalized_imdb_id":71695,"title":"Kozure Okami: Jigoku e ikuzo! Daigoro","year":1974,"rating":0,"dubious":false,"date":"2020-12-14 14:42"},{"_id":"9748","normalized_imdb_id":69729,"title":"Arena, The","year":1974,"rating":3,"dubious":false,"date":"2021-04-30 09:39"},{"_id":"9778","normalized_imdb_id":69697,"title":"Watch Out, We're Mad","year":1974,"rating":0,"dubious":false,"date":"2021-05-01 22:32"},{"_id":"10128","normalized_imdb_id":71233,"title":"Blood for dracula","year":1974,"rating":3,"dubious":false,"date":"2021-11-15 21:33"},{"_id":"230","normalized_imdb_id":73540,"title":"Picnic at Hanging Rock","year":1975,"rating":3,"dubious":false,"date":"2008-12-09 23:12"},{"_id":"293","normalized_imdb_id":73747,"title":"Stepford Wives, The","year":1975,"rating":3,"dubious":false,"date":"2009-03-04 02:42"},{"_id":"337","normalized_imdb_id":73802,"title":"Three Days of the Condor","year":1975,"rating":1,"dubious":false,"date":"2009-06-11 08:39"},{"_id":"529","normalized_imdb_id":73179,"title":"Ironiya sudby, ili S legkim parom!","year":1975,"rating":2,"dubious":false,"date":"2009-10-24 12:47"},{"_id":"564","normalized_imdb_id":73076,"title":"Grey Gardens","year":1975,"rating":3,"dubious":false,"date":"2009-12-17 22:43"},{"_id":"850","normalized_imdb_id":73812,"title":"Tommy","year":1975,"rating":1,"dubious":false,"date":"2010-05-27 20:48"},{"_id":"1321","normalized_imdb_id":73486,"title":"One Flew Over the Cuckoo's Nest","year":1975,"rating":2,"dubious":true,"date":"2010-07-25 18:55"},{"_id":"1228","normalized_imdb_id":73629,"title":"Rocky Horror Picture Show, The","year":1975,"rating":3,"dubious":true,"date":"2010-07-22 22:52"},{"_id":"1737","normalized_imdb_id":72500,"title":"Fawlty Towers","year":1975,"rating":3,"dubious":false,"date":"2010-11-05 12:58"},{"_id":"1807","normalized_imdb_id":71411,"title":"Dersu Uzala","year":1975,"rating":0,"dubious":false,"date":"2010-12-01 01:07"},{"_id":"1839","normalized_imdb_id":71853,"title":"Monty Python and the Holy Grail","year":1975,"rating":2,"dubious":true,"date":"2010-12-11 08:09"},{"_id":"2317","normalized_imdb_id":72684,"title":"Barry Lyndon","year":1975,"rating":1,"dubious":false,"date":"2011-05-20 20:36"},{"_id":"2561","normalized_imdb_id":73195,"title":"Jaws","year":1975,"rating":3,"dubious":false,"date":"2011-07-20 19:34"},{"_id":"2760","normalized_imdb_id":71427,"title":"Dialogues of Exiles","year":1975,"rating":3,"dubious":false,"date":"2011-10-13 15:33"},{"_id":"2831","normalized_imdb_id":71798,"title":"Maids, The","year":1975,"rating":3,"dubious":false,"date":"2011-11-06 19:35"},{"_id":"3368","normalized_imdb_id":73198,"title":"Jeanne Dielman, 23 Quai du Commerce, 1080 Bruxelles","year":1975,"rating":3,"dubious":false,"date":"2012-06-19 14:14"},{"_id":"3668","normalized_imdb_id":72443,"title":"Mirror, The","year":1975,"rating":3,"dubious":true,"date":"2012-11-13 10:26"},{"_id":"3799","normalized_imdb_id":72890,"title":"Dog Day Afternoon","year":1975,"rating":3,"dubious":true,"date":"2013-01-03 09:50"},{"_id":"4284","normalized_imdb_id":73115,"title":"Story of O, The","year":1975,"rating":3,"dubious":false,"date":"2013-06-28 22:07"},{"_id":"4517","normalized_imdb_id":73440,"title":"Nashville","year":1975,"rating":3,"dubious":false,"date":"2013-08-29 03:30"},{"_id":"5798","normalized_imdb_id":72895,"title":"Dolemite","year":1975,"rating":0,"dubious":false,"date":"2014-10-02 00:53"},{"_id":"5963","normalized_imdb_id":72448,"title":"Zorro","year":1975,"rating":1,"dubious":false,"date":"2014-12-05 01:31"},{"_id":"6564","normalized_imdb_id":73373,"title":"Terror of Mechagodzilla","year":1975,"rating":1,"dubious":false,"date":"2015-11-29 17:38"},{"_id":"6654","normalized_imdb_id":72730,"title":"A boy and His Dog","year":1975,"rating":0,"dubious":false,"date":"2016-01-06 22:52"},{"_id":"6799","normalized_imdb_id":73778,"title":"Switchblade Sisters","year":1975,"rating":3,"dubious":false,"date":"2016-03-26 08:16"},{"_id":"6900","normalized_imdb_id":73598,"title":"Blonde in Black Leather","year":1975,"rating":3,"dubious":false,"date":"2016-05-28 10:49"},{"_id":"7008","normalized_imdb_id":72933,"title":"Emmanuelle II","year":1975,"rating":3,"dubious":false,"date":"2016-07-30 02:32"},{"_id":"7170","normalized_imdb_id":73582,"title":"Deep Red","year":1975,"rating":3,"dubious":false,"date":"2016-10-05 02:55"},{"_id":"7252","normalized_imdb_id":73233,"title":"Katie Tippel","year":1975,"rating":3,"dubious":false,"date":"2016-11-08 12:44"},{"_id":"7318","normalized_imdb_id":73312,"title":"Love and Death","year":1975,"rating":3,"dubious":false,"date":"2016-12-08 04:27"},{"_id":"8958","normalized_imdb_id":73172,"title":"Inserts","year":1975,"rating":1,"dubious":false,"date":"2020-01-11 17:06"},{"_id":"9160","normalized_imdb_id":72856,"title":"Death Race 2000","year":1975,"rating":3,"dubious":false,"date":"2020-06-07 01:37"},{"_id":"9217","normalized_imdb_id":73471,"title":"Numero deux","year":1975,"rating":3,"dubious":true,"date":"2020-07-30 20:59"},{"_id":"9559","normalized_imdb_id":73541,"title":"Flatfoot in Hong Kong","year":1975,"rating":1,"dubious":false,"date":"2021-03-14 21:56"},{"_id":"9730","normalized_imdb_id":73349,"title":"Mandingo","year":1975,"rating":2,"dubious":false,"date":"2021-04-29 17:51"},{"_id":"9823","normalized_imdb_id":72824,"title":"Count of Monte-Cristo, The","year":1975,"rating":1,"dubious":false,"date":"2021-05-13 21:44"},{"_id":"219","normalized_imdb_id":74156,"title":"Assault on Precinct 13","year":1976,"rating":3,"dubious":false,"date":"2008-11-23 09:41"},{"_id":"457","normalized_imdb_id":74285,"title":"Carrie","year":1976,"rating":3,"dubious":false,"date":"2009-08-14 22:51"},{"_id":"967","normalized_imdb_id":75029,"title":"Outlaw Josey Wales, The","year":1976,"rating":2,"dubious":false,"date":"2010-06-21 02:39"},{"_id":"1423","normalized_imdb_id":74851,"title":"Man Who Fell to Earth, The","year":1976,"rating":1,"dubious":false,"date":"2010-08-01 19:49"},{"_id":"1287","normalized_imdb_id":75005,"title":"Omen, The","year":1976,"rating":3,"dubious":false,"date":"2010-07-23 07:50"},{"_id":"1393","normalized_imdb_id":74812,"title":"Logan's Run","year":1976,"rating":2,"dubious":false,"date":"2010-07-28 06:05"},{"_id":"1401","normalized_imdb_id":74958,"title":"Network","year":1976,"rating":3,"dubious":false,"date":"2010-07-28 20:52"},{"_id":"2223","normalized_imdb_id":75314,"title":"Taxi Driver","year":1976,"rating":1,"dubious":false,"date":"2011-04-23 18:49"},{"_id":"2267","normalized_imdb_id":75148,"title":"Rocky","year":1976,"rating":1,"dubious":false,"date":"2011-05-03 19:31"},{"_id":"2367","normalized_imdb_id":75222,"title":"Silent Movie","year":1976,"rating":1,"dubious":false,"date":"2011-05-31 04:48"},{"_id":"2530","normalized_imdb_id":72901,"title":"Les Douze Travaux d'Astérix (the Twelve Tasks of Asterix)","year":1976,"rating":1,"dubious":false,"date":"2011-07-13 23:43"},{"_id":"2640","normalized_imdb_id":74256,"title":"Bugsy Malone","year":1976,"rating":3,"dubious":false,"date":"2011-08-24 20:18"},{"_id":"2672","normalized_imdb_id":75249,"title":"Sparkle","year":1976,"rating":3,"dubious":false,"date":"2011-09-10 05:57"},{"_id":"2683","normalized_imdb_id":75137,"title":"Revenge Of The Cheerleaders","year":1976,"rating":1,"dubious":false,"date":"2011-09-16 13:11"},{"_id":"2949","normalized_imdb_id":74937,"title":"Murder by Death","year":1976,"rating":3,"dubious":false,"date":"2011-12-22 03:16"},{"_id":"2974","normalized_imdb_id":75177,"title":"Sebastiane","year":1976,"rating":1,"dubious":false,"date":"2012-01-07 01:02"},{"_id":"3190","normalized_imdb_id":74102,"title":"In the Realm of the Senses","year":1976,"rating":3,"dubious":false,"date":"2012-04-16 16:18"},{"_id":"3417","normalized_imdb_id":74860,"title":"Marathon Man","year":1976,"rating":1,"dubious":false,"date":"2012-07-11 07:48"},{"_id":"3722","normalized_imdb_id":75265,"title":"A Star Is Born","year":1976,"rating":0,"dubious":false,"date":"2012-12-06 20:51"},{"_id":"3879","normalized_imdb_id":74152,"title":"Small Change","year":1976,"rating":3,"dubious":false,"date":"2013-02-06 22:19"},{"_id":"4185","normalized_imdb_id":74806,"title":"Little Girl Who Lives Down the Lane, The","year":1976,"rating":3,"dubious":false,"date":"2013-05-30 23:05"},{"_id":"4612","normalized_imdb_id":75178,"title":"Il secondo tragico Fantozzi","year":1976,"rating":1,"dubious":false,"date":"2013-09-22 15:31"},{"_id":"4615","normalized_imdb_id":74512,"title":"Family Plot","year":1976,"rating":3,"dubious":false,"date":"2013-09-22 17:56"},{"_id":"5706","normalized_imdb_id":75223,"title":"Silver Streak","year":1976,"rating":1,"dubious":false,"date":"2014-08-18 17:00"},{"_id":"6505","normalized_imdb_id":74400,"title":"Desert of the Tartars, The","year":1976,"rating":0,"dubious":false,"date":"2015-10-23 09:11"},{"_id":"7183","normalized_imdb_id":74119,"title":"All the President's Men","year":1976,"rating":1,"dubious":false,"date":"2016-10-10 21:59"},{"_id":"7405","normalized_imdb_id":73518,"title":"Pascual Duarte","year":1976,"rating":1,"dubious":false,"date":"2017-01-17 20:47"},{"_id":"8161","normalized_imdb_id":75342,"title":"Town That Dreaded Sundown, The","year":1976,"rating":1,"dubious":false,"date":"2018-04-11 12:26"},{"_id":"8271","normalized_imdb_id":74811,"title":"Tenant, The","year":1976,"rating":1,"dubious":false,"date":"2018-06-04 20:27"},{"_id":"8541","normalized_imdb_id":75467,"title":"Az otodik pecset","year":1976,"rating":1,"dubious":false,"date":"2018-12-14 23:20"},{"_id":"8628","normalized_imdb_id":74597,"title":"Gumball Rally, The","year":1976,"rating":3,"dubious":false,"date":"2019-02-02 06:26"},{"_id":"9152","normalized_imdb_id":75359,"title":"Two-Minute Warning","year":1976,"rating":1,"dubious":false,"date":"2020-06-02 23:45"},{"_id":"9297","normalized_imdb_id":74121,"title":"Allegro non troppo","year":1976,"rating":0,"dubious":true,"date":"2020-10-08 01:43"},{"_id":"9387","normalized_imdb_id":74740,"title":"Keoma","year":1976,"rating":1,"dubious":true,"date":"2020-12-14 17:19"},{"_id":"9644","normalized_imdb_id":131335,"title":"Canoa: A Shameful Memory","year":1976,"rating":0,"dubious":false,"date":"2021-04-11 03:49"},{"_id":"9731","normalized_imdb_id":74437,"title":"Drum","year":1976,"rating":2,"dubious":false,"date":"2021-04-29 17:56"},{"_id":"9732","normalized_imdb_id":74855,"title":"Mandinga","year":1976,"rating":1,"dubious":false,"date":"2021-04-29 18:00"},{"_id":"9733","normalized_imdb_id":74471,"title":"Emmanuelle bianca e nera","year":1976,"rating":2,"dubious":false,"date":"2021-04-29 18:03"},{"_id":"669","normalized_imdb_id":76759,"title":"Star Wars","year":1977,"rating":1,"dubious":false,"date":"2010-01-26 22:26"},{"_id":"688","normalized_imdb_id":76727,"title":"Sluzhebnyy roman","year":1977,"rating":3,"dubious":false,"date":"2010-02-22 15:55"},{"_id":"693","normalized_imdb_id":76843,"title":"Turning Point, The","year":1977,"rating":3,"dubious":false,"date":"2010-02-28 23:38"},{"_id":"862","normalized_imdb_id":76245,"title":"Julia","year":1977,"rating":3,"dubious":false,"date":"2010-05-28 04:10"},{"_id":"911","normalized_imdb_id":76666,"title":"Saturday Night Fever","year":1977,"rating":1,"dubious":true,"date":"2010-06-06 14:06"},{"_id":"1063","normalized_imdb_id":76363,"title":"Many Adventures of Winnie the Pooh, The","year":1977,"rating":0,"dubious":false,"date":"2010-07-04 04:34"},{"_id":"1217","normalized_imdb_id":76618,"title":"Rescuers, The","year":1977,"rating":3,"dubious":false,"date":"2010-07-22 15:53"},{"_id":"1477","normalized_imdb_id":75276,"title":"Stroszek","year":1977,"rating":0,"dubious":false,"date":"2010-08-18 03:29"},{"_id":"1469","normalized_imdb_id":75686,"title":"Annie Hall","year":1977,"rating":3,"dubious":false,"date":"2010-08-15 05:58"},{"_id":"1687","normalized_imdb_id":76095,"title":"Goodbye Girl, The","year":1977,"rating":3,"dubious":false,"date":"2010-10-23 05:38"},{"_id":"1710","normalized_imdb_id":76734,"title":"Soldaat van Oranje","year":1977,"rating":1,"dubious":false,"date":"2010-10-31 20:30"},{"_id":"1857","normalized_imdb_id":76786,"title":"Suspiria","year":1977,"rating":3,"dubious":false,"date":"2010-12-18 17:24"},{"_id":"2524","normalized_imdb_id":75612,"title":"3 Women","year":1977,"rating":3,"dubious":false,"date":"2011-07-13 06:36"},{"_id":"2534","normalized_imdb_id":76162,"title":"House","year":1977,"rating":3,"dubious":false,"date":"2011-07-14 05:16"},{"_id":"3366","normalized_imdb_id":76085,"title":"A Special Day","year":1977,"rating":2,"dubious":false,"date":"2012-06-17 23:59"},{"_id":"2983","normalized_imdb_id":75784,"title":"A Bridge Too Far","year":1977,"rating":1,"dubious":false,"date":"2012-01-11 03:59"},{"_id":"3216","normalized_imdb_id":75938,"title":"Devil, Probably, The","year":1977,"rating":2,"dubious":false,"date":"2012-04-30 13:15"},{"_id":"3248","normalized_imdb_id":75617,"title":"ABBA: The Movie","year":1977,"rating":1,"dubious":false,"date":"2012-05-11 19:10"},{"_id":"3567","normalized_imdb_id":74455,"title":"Death Trap!","year":1977,"rating":3,"dubious":false,"date":"2012-09-30 21:39"},{"_id":"3610","normalized_imdb_id":75860,"title":"Close Encounters of the Third Kind","year":1977,"rating":1,"dubious":false,"date":"2012-10-17 04:08"},{"_id":"3720","normalized_imdb_id":76319,"title":"A Little Night Music","year":1977,"rating":3,"dubious":false,"date":"2012-12-06 20:44"},{"_id":"3952","normalized_imdb_id":76155,"title":"Man Who Loved Women, The","year":1977,"rating":1,"dubious":false,"date":"2013-03-04 22:41"},{"_id":"4147","normalized_imdb_id":74486,"title":"Eraserhead","year":1977,"rating":0,"dubious":false,"date":"2013-05-20 13:59"},{"_id":"4200","normalized_imdb_id":76683,"title":"Sentinel, The","year":1977,"rating":3,"dubious":false,"date":"2013-06-02 10:18"},{"_id":"4452","normalized_imdb_id":76661,"title":"36 Crazy Fists, The","year":1977,"rating":0,"dubious":false,"date":"2013-08-08 00:28"},{"_id":"4474","normalized_imdb_id":76141,"title":"High Anxiety","year":1977,"rating":1,"dubious":false,"date":"2013-08-15 17:55"},{"_id":"4936","normalized_imdb_id":74611,"title":"Haunting of Julia, The","year":1977,"rating":3,"dubious":false,"date":"2013-12-10 03:54"},{"_id":"9184","normalized_imdb_id":76723,"title":"Slap Shot","year":1977,"rating":3,"dubious":false,"date":"2020-06-28 10:32"},{"_id":"5694","normalized_imdb_id":75909,"title":"Damnation Alley","year":1977,"rating":0,"dubious":false,"date":"2014-08-13 04:18"},{"_id":"5723","normalized_imdb_id":76752,"title":"Spy Who Loved Me, The","year":1977,"rating":1,"dubious":false,"date":"2014-08-31 17:03"},{"_id":"7034","normalized_imdb_id":77914,"title":"Martin","year":1977,"rating":1,"dubious":false,"date":"2016-08-10 11:32"},{"_id":"7195","normalized_imdb_id":77681,"title":"Hills Have Eyes, The","year":1977,"rating":3,"dubious":false,"date":"2016-10-13 13:52"},{"_id":"7250","normalized_imdb_id":75936,"title":"Desperate Living","year":1977,"rating":3,"dubious":false,"date":"2016-11-07 22:05"},{"_id":"7695","normalized_imdb_id":76257,"title":"Kentucky Fried Movie, The","year":1977,"rating":1,"dubious":false,"date":"2017-06-19 03:40"},{"_id":"7728","normalized_imdb_id":76271,"title":"Kingdom of the Spiders","year":1977,"rating":3,"dubious":false,"date":"2017-07-09 09:00"},{"_id":"8401","normalized_imdb_id":76504,"title":"Orca","year":1977,"rating":1,"dubious":false,"date":"2018-09-03 14:08"},{"_id":"8439","normalized_imdb_id":76538,"title":"Pete's Dragon","year":1977,"rating":2,"dubious":false,"date":"2018-10-15 00:10"},{"_id":"8746","normalized_imdb_id":76591,"title":"Race for Your Life, Charlie Brown","year":1977,"rating":3,"dubious":false,"date":"2019-05-16 04:04"},{"_id":"8860","normalized_imdb_id":75968,"title":"Duelists, The","year":1977,"rating":1,"dubious":false,"date":"2019-09-24 20:34"},{"_id":"8985","normalized_imdb_id":75666,"title":"Alucarda","year":1977,"rating":3,"dubious":false,"date":"2020-01-27 00:25"},{"_id":"9100","normalized_imdb_id":75679,"title":"Bad","year":1977,"rating":3,"dubious":false,"date":"2020-04-29 01:38"},{"_id":"9113","normalized_imdb_id":75939,"title":"Peppermint Soda","year":1977,"rating":3,"dubious":false,"date":"2020-05-04 09:21"},{"_id":"9211","normalized_imdb_id":78089,"title":"Planet of Dinosaurs","year":1977,"rating":3,"dubious":false,"date":"2020-07-24 21:01"},{"_id":"9401","normalized_imdb_id":76590,"title":"Rabid","year":1977,"rating":3,"dubious":false,"date":"2020-12-22 06:23"},{"_id":"9580","normalized_imdb_id":74853,"title":"Man in the Iron Mask, The","year":1977,"rating":2,"dubious":false,"date":"2021-03-22 19:42"},{"_id":"9623","normalized_imdb_id":76578,"title":"Pumping Iron","year":1977,"rating":0,"dubious":false,"date":"2021-04-04 19:02"},{"_id":"9757","normalized_imdb_id":77497,"title":"Emmanuelle 3","year":1977,"rating":3,"dubious":false,"date":"2021-04-30 20:13"},{"_id":"9759","normalized_imdb_id":74548,"title":"Love Camp","year":1977,"rating":3,"dubious":false,"date":"2021-04-30 20:19"},{"_id":"9775","normalized_imdb_id":76175,"title":"March or Die","year":1977,"rating":0,"dubious":false,"date":"2021-05-01 22:26"},{"_id":"238","normalized_imdb_id":77405,"title":"Days of Heaven","year":1978,"rating":3,"dubious":false,"date":"2008-12-13 14:01"},{"_id":"303","normalized_imdb_id":77975,"title":"Animal House","year":1978,"rating":2,"dubious":false,"date":"2009-03-24 15:24"},{"_id":"405","normalized_imdb_id":76584,"title":"Quel maledetto treno blindato","year":1978,"rating":0,"dubious":false,"date":"2009-07-31 21:20"},{"_id":"515","normalized_imdb_id":77711,"title":"Höstsonaten","year":1978,"rating":3,"dubious":false,"date":"2009-09-23 23:01"},{"_id":"753","normalized_imdb_id":77631,"title":"Grease","year":1978,"rating":3,"dubious":false,"date":"2010-04-24 06:17"},{"_id":"1047","normalized_imdb_id":193524,"title":"Star Wars Holiday Special, The","year":1978,"rating":1,"dubious":false,"date":"2010-07-04 03:02"},{"_id":"1200","normalized_imdb_id":78259,"title":"Shout, The","year":1978,"rating":0,"dubious":false,"date":"2010-07-20 03:55"},{"_id":"1284","normalized_imdb_id":77394,"title":"Damien: Omen II","year":1978,"rating":2,"dubious":false,"date":"2010-07-23 07:24"},{"_id":"1503","normalized_imdb_id":77402,"title":"Dawn of the Dead","year":1978,"rating":0,"dubious":false,"date":"2010-08-26 03:09"},{"_id":"1658","normalized_imdb_id":77742,"title":"Interiors","year":1978,"rating":3,"dubious":false,"date":"2010-10-10 18:22"},{"_id":"1999","normalized_imdb_id":78346,"title":"Superman","year":1978,"rating":1,"dubious":false,"date":"2011-02-06 22:27"},{"_id":"2282","normalized_imdb_id":78480,"title":"Watership Down","year":1978,"rating":1,"dubious":false,"date":"2011-05-10 23:48"},{"_id":"2584","normalized_imdb_id":77189,"title":"Avalanche","year":1978,"rating":2,"dubious":false,"date":"2011-07-29 17:50"},{"_id":"2668","normalized_imdb_id":77416,"title":"Deer Hunter, The","year":1978,"rating":1,"dubious":false,"date":"2011-09-08 17:31"},{"_id":"2815","normalized_imdb_id":77651,"title":"Halloween","year":1978,"rating":3,"dubious":true,"date":"2011-11-01 03:22"},{"_id":"2965","normalized_imdb_id":77413,"title":"Death on the Nile","year":1978,"rating":3,"dubious":false,"date":"2011-12-29 22:26"},{"_id":"3048","normalized_imdb_id":77613,"title":"Girlfriends","year":1978,"rating":3,"dubious":false,"date":"2012-02-18 00:58"},{"_id":"3391","normalized_imdb_id":78509,"title":"A Woman Called Moses","year":1978,"rating":3,"dubious":false,"date":"2012-06-30 19:38"},{"_id":"3419","normalized_imdb_id":77928,"title":"Midnight Express","year":1978,"rating":0,"dubious":false,"date":"2012-07-12 06:17"},{"_id":"4317","normalized_imdb_id":76161,"title":"Hound of the Baskervilles, The","year":1978,"rating":3,"dubious":false,"date":"2013-07-07 22:05"},{"_id":"4111","normalized_imdb_id":77288,"title":"La cage aux folles","year":1978,"rating":2,"dubious":false,"date":"2013-04-27 21:17"},{"_id":"4721","normalized_imdb_id":306646,"title":"Ringing Bell (Chirin no Suzu)","year":1978,"rating":0,"dubious":false,"date":"2013-10-20 07:10"},{"_id":"4905","normalized_imdb_id":77713,"title":"I Spit on Your Grave","year":1978,"rating":0,"dubious":false,"date":"2013-12-03 05:20"},{"_id":"5198","normalized_imdb_id":78503,"title":"Within the Woods","year":1978,"rating":3,"dubious":false,"date":"2014-02-23 22:50"},{"_id":"5331","normalized_imdb_id":78504,"title":"Wiz, The","year":1978,"rating":3,"dubious":false,"date":"2014-03-28 07:33"},{"_id":"5548","normalized_imdb_id":77215,"title":"Battlestar Galactica","year":1978,"rating":3,"dubious":true,"date":"2014-06-08 02:44"},{"_id":"6406","normalized_imdb_id":77578,"title":"Foul Play","year":1978,"rating":3,"dubious":false,"date":"2015-08-15 15:56"},{"_id":"6638","normalized_imdb_id":77889,"title":"Magic","year":1978,"rating":1,"dubious":false,"date":"2015-12-27 18:29"},{"_id":"6695","normalized_imdb_id":77269,"title":"Boys from Brazil, The","year":1978,"rating":1,"dubious":false,"date":"2016-01-28 20:34"},{"_id":"7223","normalized_imdb_id":77766,"title":"Jaws 2","year":1978,"rating":2,"dubious":false,"date":"2016-10-28 22:14"},{"_id":"8160","normalized_imdb_id":79946,"title":"Starcrash","year":1978,"rating":3,"dubious":false,"date":"2018-04-11 05:47"},{"_id":"8437","normalized_imdb_id":77869,"title":"Lord of the Rings, The","year":1978,"rating":1,"dubious":false,"date":"2018-10-14 22:44"},{"_id":"8701","normalized_imdb_id":77629,"title":"Gray Lady Down","year":1978,"rating":2,"dubious":true,"date":"2019-04-15 19:20"},{"_id":"8721","normalized_imdb_id":78111,"title":"Pretty Baby","year":1978,"rating":2,"dubious":true,"date":"2019-04-26 22:25"},{"_id":"8887","normalized_imdb_id":77275,"title":"Brink's Job, The","year":1978,"rating":1,"dubious":false,"date":"2019-11-10 15:11"},{"_id":"9227","normalized_imdb_id":77474,"title":"Driver, The","year":1978,"rating":0,"dubious":false,"date":"2020-08-06 21:19"},{"_id":"9518","normalized_imdb_id":77369,"title":"Convoy","year":1978,"rating":0,"dubious":false,"date":"2021-03-13 15:31"},{"_id":"9560","normalized_imdb_id":77864,"title":"Lo chiamavano Bulldozer","year":1978,"rating":0,"dubious":false,"date":"2021-03-14 21:58"},{"_id":"10068","normalized_imdb_id":76240,"title":"Jubilee","year":1978,"rating":3,"dubious":false,"date":"2021-09-26 02:14"},{"_id":"13","normalized_imdb_id":78748,"title":"Alien","year":1979,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"403","normalized_imdb_id":79522,"title":"Manhattan","year":1979,"rating":1,"dubious":false,"date":"2009-07-31 05:40"},{"_id":"695","normalized_imdb_id":80120,"title":"Warriors, The","year":1979,"rating":1,"dubious":false,"date":"2010-03-04 22:04"},{"_id":"787","normalized_imdb_id":79470,"title":"Life of Brian","year":1979,"rating":3,"dubious":false,"date":"2010-05-10 17:32"},{"_id":"846","normalized_imdb_id":79180,"title":"Frisco Kid, The","year":1979,"rating":1,"dubious":false,"date":"2010-05-27 19:40"},{"_id":"1020","normalized_imdb_id":78875,"title":"Die Blechtrommel","year":1979,"rating":3,"dubious":true,"date":"2010-07-02 15:38"},{"_id":"1300","normalized_imdb_id":79945,"title":"Star Trek: The Motion Picture","year":1979,"rating":1,"dubious":false,"date":"2010-07-24 23:09"},{"_id":"1222","normalized_imdb_id":78754,"title":"All That Jazz","year":1979,"rating":2,"dubious":true,"date":"2010-07-22 20:12"},{"_id":"1699","normalized_imdb_id":78841,"title":"Being There","year":1979,"rating":2,"dubious":false,"date":"2010-10-24 22:00"},{"_id":"1766","normalized_imdb_id":79095,"title":"Marriage of Maria Braun, The","year":1979,"rating":3,"dubious":false,"date":"2010-11-19 07:31"},{"_id":"2187","normalized_imdb_id":79336,"title":"In-Laws, The","year":1979,"rating":3,"dubious":true,"date":"2011-04-12 21:41"},{"_id":"2227","normalized_imdb_id":78788,"title":"Apocalypse Now","year":1979,"rating":0,"dubious":false,"date":"2011-04-23 19:05"},{"_id":"2284","normalized_imdb_id":78966,"title":"China Syndrome, The","year":1979,"rating":3,"dubious":false,"date":"2011-05-11 00:18"},{"_id":"2327","normalized_imdb_id":79367,"title":"Jerk, The","year":1979,"rating":1,"dubious":false,"date":"2011-05-23 02:12"},{"_id":"2496","normalized_imdb_id":79641,"title":"Nosferatu the Vampyre","year":1979,"rating":0,"dubious":false,"date":"2011-07-06 21:19"},{"_id":"3420","normalized_imdb_id":79116,"title":"Escape from Alcatraz","year":1979,"rating":0,"dubious":false,"date":"2012-07-12 08:38"},{"_id":"3504","normalized_imdb_id":79574,"title":"Moonraker","year":1979,"rating":1,"dubious":false,"date":"2012-08-30 12:37"},{"_id":"3667","normalized_imdb_id":79944,"title":"Stalker","year":1979,"rating":1,"dubious":false,"date":"2012-11-12 14:02"},{"_id":"4599","normalized_imdb_id":79766,"title":"Quadrophenia","year":1979,"rating":1,"dubious":false,"date":"2013-09-18 13:39"},{"_id":"4687","normalized_imdb_id":78767,"title":"Amityville Horror, The","year":1979,"rating":3,"dubious":false,"date":"2013-10-12 16:41"},{"_id":"4741","normalized_imdb_id":79813,"title":"Rock 'n' Roll High School","year":1979,"rating":3,"dubious":false,"date":"2013-10-27 07:54"},{"_id":"4766","normalized_imdb_id":77707,"title":"L'hypothese du tableau vole","year":1979,"rating":0,"dubious":false,"date":"2013-11-01 16:15"},{"_id":"4797","normalized_imdb_id":79596,"title":"My Brilliant Career","year":1979,"rating":3,"dubious":false,"date":"2013-11-07 22:47"},{"_id":"5234","normalized_imdb_id":80025,"title":"Time After Time","year":1979,"rating":2,"dubious":false,"date":"2014-03-05 14:56"},{"_id":"5415","normalized_imdb_id":79540,"title":"Meatballs","year":1979,"rating":3,"dubious":false,"date":"2014-04-23 14:09"},{"_id":"5708","normalized_imdb_id":78778,"title":"Angels' Brigade","year":1979,"rating":3,"dubious":false,"date":"2014-08-20 19:42"},{"_id":"6280","normalized_imdb_id":78843,"title":"Bell Jar, The","year":1979,"rating":3,"dubious":false,"date":"2015-05-29 23:19"},{"_id":"6290","normalized_imdb_id":79501,"title":"Mad Max","year":1979,"rating":3,"dubious":true,"date":"2015-06-02 00:16"},{"_id":"6870","normalized_imdb_id":79817,"title":"Rocky II","year":1979,"rating":1,"dubious":false,"date":"2016-05-03 00:45"},{"_id":"7092","normalized_imdb_id":79714,"title":"Phantasm","year":1979,"rating":1,"dubious":false,"date":"2016-09-02 07:26"},{"_id":"7233","normalized_imdb_id":78869,"title":"Black Hole, The","year":1979,"rating":0,"dubious":false,"date":"2016-11-02 01:44"},{"_id":"7636","normalized_imdb_id":79261,"title":"Hair","year":1979,"rating":3,"dubious":false,"date":"2017-05-21 13:15"},{"_id":"7645","normalized_imdb_id":79417,"title":"Kramer vs. Kramer","year":1979,"rating":1,"dubious":false,"date":"2017-05-21 14:01"},{"_id":"8168","normalized_imdb_id":80040,"title":"Tourist Trap","year":1979,"rating":3,"dubious":false,"date":"2018-04-19 13:37"},{"_id":"8510","normalized_imdb_id":79833,"title":"Rupan sansei: Kariosutoro no shiro","year":1979,"rating":3,"dubious":false,"date":"2018-12-05 01:16"},{"_id":"8516","normalized_imdb_id":79593,"title":"Murder by Natural Causes","year":1979,"rating":1,"dubious":false,"date":"2018-12-10 04:07"},{"_id":"8987","normalized_imdb_id":79588,"title":"Muppet Movie, The","year":1979,"rating":2,"dubious":false,"date":"2020-01-27 23:14"},{"_id":"9404","normalized_imdb_id":79679,"title":"Osenniy marafon","year":1979,"rating":1,"dubious":false,"date":"2020-12-25 12:00"},{"_id":"9417","normalized_imdb_id":79871,"title":"Scum","year":1979,"rating":0,"dubious":false,"date":"2020-12-28 05:24"},{"_id":"9638","normalized_imdb_id":78913,"title":"Buffet froid","year":1979,"rating":0,"dubious":false,"date":"2021-04-10 06:20"},{"_id":"9857","normalized_imdb_id":79639,"title":"North Avenue Irregulars, The","year":1979,"rating":3,"dubious":true,"date":"2021-05-29 23:29"},{"_id":"9876","normalized_imdb_id":79826,"title":"Rose, The","year":1979,"rating":1,"dubious":false,"date":"2021-06-07 10:21"},{"_id":"9966","normalized_imdb_id":79638,"title":"Norma Rae","year":1979,"rating":3,"dubious":false,"date":"2021-07-15 02:35"},{"_id":"208","normalized_imdb_id":80455,"title":"Blues Brothers, The","year":1980,"rating":1,"dubious":false,"date":"2008-10-23 16:50"},{"_id":"360","normalized_imdb_id":80716,"title":"Fame","year":1980,"rating":3,"dubious":false,"date":"2009-07-13 09:51"},{"_id":"670","normalized_imdb_id":80684,"title":"Star Wars: Episode V - The Empire Strikes Back","year":1980,"rating":0,"dubious":false,"date":"2010-01-26 22:29"},{"_id":"684","normalized_imdb_id":79579,"title":"Moskva slezam ne verit","year":1980,"rating":3,"dubious":false,"date":"2010-02-16 19:42"},{"_id":"863","normalized_imdb_id":80319,"title":"Nine to Five","year":1980,"rating":3,"dubious":false,"date":"2010-05-28 04:13"},{"_id":"873","normalized_imdb_id":80339,"title":"Airplane!","year":1980,"rating":3,"dubious":true,"date":"2010-05-29 00:36"},{"_id":"930","normalized_imdb_id":81505,"title":"Shining, The","year":1980,"rating":2,"dubious":false,"date":"2010-06-10 19:30"},{"_id":"1437","normalized_imdb_id":81398,"title":"Raging Bull","year":1980,"rating":1,"dubious":false,"date":"2010-08-03 20:21"},{"_id":"1223","normalized_imdb_id":80388,"title":"Atlantic City","year":1980,"rating":3,"dubious":false,"date":"2010-07-22 20:18"},{"_id":"1472","normalized_imdb_id":81616,"title":"La terrazza","year":1980,"rating":3,"dubious":true,"date":"2010-08-17 12:16"},{"_id":"1845","normalized_imdb_id":81249,"title":"Nude Bomb, The","year":1980,"rating":1,"dubious":false,"date":"2010-12-12 10:55"},{"_id":"1882","normalized_imdb_id":76582,"title":"Loose Shoes","year":1980,"rating":1,"dubious":false,"date":"2010-12-31 09:27"},{"_id":"2068","normalized_imdb_id":80377,"title":"Any Which Way You Can","year":1980,"rating":1,"dubious":false,"date":"2011-02-25 03:53"},{"_id":"2142","normalized_imdb_id":81414,"title":"Resurrection","year":1980,"rating":1,"dubious":false,"date":"2011-03-26 23:18"},{"_id":"2278","normalized_imdb_id":78935,"title":"Cannibal Holocaust","year":1980,"rating":1,"dubious":false,"date":"2011-05-09 02:15"},{"_id":"2377","normalized_imdb_id":80711,"title":"Fade to Black","year":1980,"rating":3,"dubious":false,"date":"2011-06-08 07:26"},{"_id":"2484","normalized_imdb_id":80749,"title":"Fog, The","year":1980,"rating":3,"dubious":false,"date":"2011-07-05 01:46"},{"_id":"2799","normalized_imdb_id":81060,"title":"Little Darlings","year":1980,"rating":3,"dubious":false,"date":"2011-10-26 01:02"},{"_id":"2883","normalized_imdb_id":81375,"title":"Private Benjamin","year":1980,"rating":3,"dubious":false,"date":"2011-11-29 20:12"},{"_id":"3254","normalized_imdb_id":81777,"title":"Xanadu","year":1980,"rating":3,"dubious":false,"date":"2012-05-15 00:20"},{"_id":"3427","normalized_imdb_id":80569,"title":"Cruising","year":1980,"rating":0,"dubious":false,"date":"2012-07-16 00:02"},{"_id":"3673","normalized_imdb_id":81323,"title":"Pepi, Luci, Bom and Other Girls Like Mom","year":1980,"rating":3,"dubious":false,"date":"2012-11-15 10:04"},{"_id":"3858","normalized_imdb_id":80745,"title":"Flash Gordon","year":1980,"rating":3,"dubious":true,"date":"2013-01-27 22:03"},{"_id":"3873","normalized_imdb_id":81534,"title":"Somewhere in Time","year":1980,"rating":2,"dubious":false,"date":"2013-02-06 16:14"},{"_id":"3962","normalized_imdb_id":80492,"title":"Can't Stop the Music","year":1980,"rating":3,"dubious":false,"date":"2013-03-09 06:35"},{"_id":"4282","normalized_imdb_id":81573,"title":"Superman II","year":1980,"rating":3,"dubious":true,"date":"2013-06-28 21:54"},{"_id":"4569","normalized_imdb_id":80761,"title":"Friday the 13th","year":1980,"rating":3,"dubious":false,"date":"2013-09-13 18:34"},{"_id":"4960","normalized_imdb_id":80855,"title":"Heaven's Gate","year":1980,"rating":0,"dubious":true,"date":"2013-12-17 21:33"},{"_id":"5681","normalized_imdb_id":80549,"title":"Coal Miner's Daughter","year":1980,"rating":3,"dubious":false,"date":"2014-08-07 12:32"},{"_id":"6395","normalized_imdb_id":80453,"title":"Blue Lagoon, The","year":1980,"rating":0,"dubious":false,"date":"2015-08-07 03:18"},{"_id":"6877","normalized_imdb_id":81237,"title":"Ninth Configuration, The","year":1980,"rating":0,"dubious":false,"date":"2016-05-10 14:31"},{"_id":"7192","normalized_imdb_id":81283,"title":"Ordinary People","year":1980,"rating":2,"dubious":false,"date":"2016-10-12 15:52"},{"_id":"7307","normalized_imdb_id":80421,"title":"Battle Beyond the Stars","year":1980,"rating":2,"dubious":false,"date":"2016-12-01 05:06"},{"_id":"7389","normalized_imdb_id":80931,"title":"Nightmare City","year":1980,"rating":3,"dubious":false,"date":"2017-01-12 09:15"},{"_id":"7401","normalized_imdb_id":80736,"title":"Final Countdown, The","year":1980,"rating":0,"dubious":false,"date":"2017-01-17 11:49"},{"_id":"7987","normalized_imdb_id":79820,"title":"King and the Mockingbird, The","year":1980,"rating":0,"dubious":false,"date":"2018-01-07 17:06"},{"_id":"8116","normalized_imdb_id":81163,"title":"Mirror Crack'd, The","year":1980,"rating":3,"dubious":false,"date":"2018-03-17 03:16"},{"_id":"8402","normalized_imdb_id":81114,"title":"Maniac","year":1980,"rating":3,"dubious":false,"date":"2018-09-04 13:28"},{"_id":"8556","normalized_imdb_id":121403,"title":"Indul a bakterhaz","year":1980,"rating":1,"dubious":false,"date":"2018-12-14 23:57"},{"_id":"8945","normalized_imdb_id":81353,"title":"Popeye","year":1980,"rating":3,"dubious":false,"date":"2020-01-01 18:30"},{"_id":"9523","normalized_imdb_id":82100,"title":"Party, The","year":1980,"rating":3,"dubious":false,"date":"2021-03-14 12:19"},{"_id":"9781","normalized_imdb_id":80365,"title":"American Gigolo","year":1980,"rating":3,"dubious":false,"date":"2021-05-02 10:47"},{"_id":"9819","normalized_imdb_id":80979,"title":"Kagemusha","year":1980,"rating":0,"dubious":false,"date":"2021-05-13 21:00"},{"_id":"340","normalized_imdb_id":82971,"title":"Raiders of the Lost Ark","year":1981,"rating":3,"dubious":false,"date":"2009-06-14 10:28"},{"_id":"744","normalized_imdb_id":82186,"title":"Clash of the Titans","year":1981,"rating":3,"dubious":false,"date":"2010-04-19 16:09"},{"_id":"874","normalized_imdb_id":82783,"title":"My Dinner With Andre","year":1981,"rating":0,"dubious":false,"date":"2010-05-29 00:46"},{"_id":"972","normalized_imdb_id":82776,"title":"Ms. 45","year":1981,"rating":3,"dubious":false,"date":"2010-06-24 06:24"},{"_id":"1568","normalized_imdb_id":82992,"title":"Rich and Famous","year":1981,"rating":3,"dubious":false,"date":"2010-09-13 07:29"},{"_id":"1197","normalized_imdb_id":83111,"title":"Southern Comfort","year":1981,"rating":0,"dubious":false,"date":"2010-07-19 22:43"},{"_id":"1124","normalized_imdb_id":82406,"title":"Fox and the Hound, The","year":1981,"rating":2,"dubious":false,"date":"2010-07-09 04:53"},{"_id":"1427","normalized_imdb_id":82340,"title":"Escape from New York","year":1981,"rating":0,"dubious":false,"date":"2010-08-02 19:26"},{"_id":"1081","normalized_imdb_id":82517,"title":"History of the World: Part I","year":1981,"rating":1,"dubious":false,"date":"2010-07-04 22:19"},{"_id":"1646","normalized_imdb_id":82370,"title":"Woman Next Door, The","year":1981,"rating":3,"dubious":false,"date":"2010-10-05 22:06"},{"_id":"1707","normalized_imdb_id":83248,"title":"Umrao Jaan","year":1981,"rating":3,"dubious":true,"date":"2010-10-29 05:27"},{"_id":"2053","normalized_imdb_id":82484,"title":"Quest for Fire","year":1981,"rating":1,"dubious":false,"date":"2011-02-18 22:29"},{"_id":"2062","normalized_imdb_id":82926,"title":"Polyester","year":1981,"rating":3,"dubious":false,"date":"2011-02-21 20:42"},{"_id":"2073","normalized_imdb_id":82474,"title":"Great Muppet Caper, The","year":1981,"rating":3,"dubious":false,"date":"2011-02-26 22:53"},{"_id":"2143","normalized_imdb_id":82096,"title":"Das Boot","year":1981,"rating":0,"dubious":false,"date":"2011-03-27 02:59"},{"_id":"2533","normalized_imdb_id":82640,"title":"Lady Chatterley's Lover","year":1981,"rating":3,"dubious":true,"date":"2011-07-14 00:16"},{"_id":"2667","normalized_imdb_id":82979,"title":"Reds","year":1981,"rating":3,"dubious":false,"date":"2011-09-08 17:27"},{"_id":"2697","normalized_imdb_id":81633,"title":"Time Bandits","year":1981,"rating":1,"dubious":false,"date":"2011-09-20 15:49"},{"_id":"2753","normalized_imdb_id":82869,"title":"Outland","year":1981,"rating":1,"dubious":false,"date":"2011-10-11 06:42"},{"_id":"2873","normalized_imdb_id":82010,"title":"An American Werewolf in London","year":1981,"rating":2,"dubious":false,"date":"2011-11-27 23:53"},{"_id":"3231","normalized_imdb_id":82509,"title":"Heavy Metal","year":1981,"rating":1,"dubious":false,"date":"2012-05-08 04:24"},{"_id":"3549","normalized_imdb_id":82089,"title":"Body Heat","year":1981,"rating":2,"dubious":true,"date":"2012-09-26 15:34"},{"_id":"3641","normalized_imdb_id":82766,"title":"Mommy Dearest","year":1981,"rating":3,"dubious":false,"date":"2012-10-31 17:53"},{"_id":"3918","normalized_imdb_id":83907,"title":"Evil Dead, The","year":1981,"rating":1,"dubious":true,"date":"2013-02-21 12:40"},{"_id":"3976","normalized_imdb_id":82176,"title":"Christiane F. - Wir Kinder vom Bahnhof Zoo","year":1981,"rating":3,"dubious":false,"date":"2013-03-12 03:17"},{"_id":"4009","normalized_imdb_id":82894,"title":"Pennies from Heaven","year":1981,"rating":1,"dubious":false,"date":"2013-03-24 06:29"},{"_id":"4561","normalized_imdb_id":82677,"title":"Looker","year":1981,"rating":1,"dubious":false,"date":"2013-09-12 20:55"},{"_id":"4572","normalized_imdb_id":82418,"title":"Friday the 13th Part 2","year":1981,"rating":2,"dubious":false,"date":"2013-09-13 22:48"},{"_id":"4708","normalized_imdb_id":82495,"title":"Halloween II","year":1981,"rating":3,"dubious":false,"date":"2013-10-18 09:25"},{"_id":"5325","normalized_imdb_id":83131,"title":"Stripes","year":1981,"rating":2,"dubious":false,"date":"2014-03-25 08:23"},{"_id":"5338","normalized_imdb_id":84090,"title":"Horror Planet","year":1981,"rating":3,"dubious":false,"date":"2014-03-30 10:59"},{"_id":"5378","normalized_imdb_id":82533,"title":"Howling, The","year":1981,"rating":3,"dubious":false,"date":"2014-04-10 14:51"},{"_id":"5955","normalized_imdb_id":82398,"title":"For Your Eyes Only","year":1981,"rating":3,"dubious":false,"date":"2014-12-01 22:27"},{"_id":"6240","normalized_imdb_id":83137,"title":"Der subjektive Faktor","year":1981,"rating":3,"dubious":false,"date":"2015-05-10 15:46"},{"_id":"6245","normalized_imdb_id":82714,"title":"Il marchese del Grillo","year":1981,"rating":3,"dubious":false,"date":"2015-05-17 20:08"},{"_id":"6496","normalized_imdb_id":82477,"title":"Gregory's Girl","year":1981,"rating":3,"dubious":false,"date":"2015-10-18 05:48"},{"_id":"6507","normalized_imdb_id":82158,"title":"Chariots of Fire","year":1981,"rating":1,"dubious":false,"date":"2015-10-24 09:17"},{"_id":"6630","normalized_imdb_id":82719,"title":"Marva Collins Story, The","year":1981,"rating":1,"dubious":false,"date":"2015-12-25 21:53"},{"_id":"6865","normalized_imdb_id":82085,"title":"Blow Out","year":1981,"rating":3,"dubious":true,"date":"2016-04-30 22:47"},{"_id":"6944","normalized_imdb_id":82288,"title":"Dragonslayer","year":1981,"rating":1,"dubious":false,"date":"2016-06-22 04:23"},{"_id":"7221","normalized_imdb_id":82307,"title":"...E tu vivrai nel terrore! L'aldila (The Beyond)","year":1981,"rating":3,"dubious":false,"date":"2016-10-24 10:07"},{"_id":"7362","normalized_imdb_id":82498,"title":"Happy Birthday to Me","year":1981,"rating":3,"dubious":false,"date":"2016-12-27 16:26"},{"_id":"7477","normalized_imdb_id":82424,"title":"La fuga de Segovia","year":1981,"rating":0,"dubious":false,"date":"2017-03-02 22:45"},{"_id":"7732","normalized_imdb_id":83067,"title":"Shock Treatment","year":1981,"rating":3,"dubious":false,"date":"2017-07-10 03:51"},{"_id":"8180","normalized_imdb_id":82269,"title":"Diva","year":1981,"rating":1,"dubious":false,"date":"2018-04-29 12:00"},{"_id":"8411","normalized_imdb_id":82951,"title":"Prowler, The","year":1981,"rating":3,"dubious":false,"date":"2018-09-13 12:42"},{"_id":"8413","normalized_imdb_id":82431,"title":"Galaxy of Terror","year":1981,"rating":3,"dubious":false,"date":"2018-09-14 22:43"},{"_id":"8417","normalized_imdb_id":82970,"title":"Ragtime","year":1981,"rating":2,"dubious":false,"date":"2018-09-18 21:31"},{"_id":"8502","normalized_imdb_id":82348,"title":"Excalibur","year":1981,"rating":1,"dubious":false,"date":"2018-11-29 02:21"},{"_id":"8789","normalized_imdb_id":83190,"title":"Thief","year":1981,"rating":0,"dubious":false,"date":"2019-07-18 19:22"},{"_id":"8837","normalized_imdb_id":82846,"title":"On a Golden Pond","year":1981,"rating":1,"dubious":false,"date":"2019-09-03 10:13"},{"_id":"8973","normalized_imdb_id":82242,"title":"Dead and Buried","year":1981,"rating":1,"dubious":false,"date":"2020-01-19 22:01"},{"_id":"9049","normalized_imdb_id":81974,"title":"Absence of Malice","year":1981,"rating":3,"dubious":false,"date":"2020-03-23 23:48"},{"_id":"9158","normalized_imdb_id":82153,"title":"Masked Avengers, The","year":1981,"rating":0,"dubious":false,"date":"2020-06-06 20:28"},{"_id":"9416","normalized_imdb_id":81455,"title":"Scanners","year":1981,"rating":1,"dubious":false,"date":"2020-12-28 05:14"},{"_id":"9728","normalized_imdb_id":83284,"title":"Victory","year":1981,"rating":0,"dubious":false,"date":"2021-04-29 17:44"},{"_id":"9729","normalized_imdb_id":82817,"title":"Nighthawks","year":1981,"rating":0,"dubious":false,"date":"2021-04-29 17:45"},{"_id":"9750","normalized_imdb_id":82700,"title":"Cannibal Ferox","year":1981,"rating":3,"dubious":false,"date":"2021-04-30 10:02"},{"_id":"9809","normalized_imdb_id":82933,"title":"Possession","year":1981,"rating":1,"dubious":true,"date":"2021-05-12 14:39"},{"_id":"231","normalized_imdb_id":84589,"title":"Le Retour de Martin Guerre","year":1982,"rating":3,"dubious":false,"date":"2008-12-09 23:27"},{"_id":"234","normalized_imdb_id":83658,"title":"Blade Runner","year":1982,"rating":1,"dubious":false,"date":"2008-12-10 19:40"},{"_id":"407","normalized_imdb_id":82198,"title":"Conan the Barbarian","year":1982,"rating":1,"dubious":false,"date":"2009-08-02 22:26"},{"_id":"821","normalized_imdb_id":82639,"title":"Ladies and Gentlemen, the Fabulous Stains","year":1982,"rating":3,"dubious":false,"date":"2010-05-20 19:21"},{"_id":"851","normalized_imdb_id":83564,"title":"Annie","year":1982,"rating":3,"dubious":false,"date":"2010-05-27 20:53"},{"_id":"896","normalized_imdb_id":84726,"title":"Star Trek: The Wrath of Khan","year":1982,"rating":3,"dubious":true,"date":"2010-06-04 17:39"},{"_id":"1002","normalized_imdb_id":84827,"title":"TRON","year":1982,"rating":0,"dubious":false,"date":"2010-06-28 20:26"},{"_id":"1003","normalized_imdb_id":84707,"title":"Sophie's Choice","year":1982,"rating":3,"dubious":true,"date":"2010-06-28 22:39"},{"_id":"1035","normalized_imdb_id":83791,"title":"Dark Crystal, The","year":1982,"rating":1,"dubious":false,"date":"2010-07-03 01:17"},{"_id":"1510","normalized_imdb_id":84649,"title":"Secret of NIMH, The","year":1982,"rating":3,"dubious":true,"date":"2010-08-28 01:59"},{"_id":"1226","normalized_imdb_id":84237,"title":"Last Unicorn, The","year":1982,"rating":3,"dubious":false,"date":"2010-07-22 20:36"},{"_id":"1645","normalized_imdb_id":83866,"title":"E.T.: The Extra-Terrestrial","year":1982,"rating":3,"dubious":true,"date":"2010-10-05 22:02"},{"_id":"1696","normalized_imdb_id":85852,"title":"Liquid Sky","year":1982,"rating":3,"dubious":false,"date":"2010-10-24 09:17"},{"_id":"1861","normalized_imdb_id":84787,"title":"Thing, The","year":1982,"rating":0,"dubious":false,"date":"2010-12-20 00:31"},{"_id":"1881","normalized_imdb_id":83806,"title":"Deathtrap","year":1982,"rating":3,"dubious":false,"date":"2010-12-30 11:32"},{"_id":"1896","normalized_imdb_id":85794,"title":"King of Comedy, The","year":1982,"rating":1,"dubious":false,"date":"2011-01-09 14:28"},{"_id":"1934","normalized_imdb_id":83929,"title":"Fast Times at Ridgemont High","year":1982,"rating":2,"dubious":false,"date":"2011-01-26 09:49"},{"_id":"2241","normalized_imdb_id":83851,"title":"Draughtsman's Contract, The","year":1982,"rating":2,"dubious":false,"date":"2011-04-24 22:47"},{"_id":"2251","normalized_imdb_id":84698,"title":"Smithereens","year":1982,"rating":3,"dubious":false,"date":"2011-04-29 18:04"},{"_id":"2298","normalized_imdb_id":83745,"title":"Come Back to the Five and Dime, Jimmy Dean, Jimmy Dean","year":1982,"rating":3,"dubious":false,"date":"2011-05-16 20:45"},{"_id":"2770","normalized_imdb_id":83722,"title":"Cat People","year":1982,"rating":3,"dubious":false,"date":"2011-10-17 05:26"},{"_id":"2874","normalized_imdb_id":84805,"title":"Tootsie","year":1982,"rating":1,"dubious":false,"date":"2011-11-28 01:23"},{"_id":"3034","normalized_imdb_id":84021,"title":"Grease 2","year":1982,"rating":3,"dubious":false,"date":"2012-02-09 18:04"},{"_id":"3078","normalized_imdb_id":83922,"title":"Fanny and Alexander","year":1982,"rating":2,"dubious":true,"date":"2012-02-27 19:18"},{"_id":"3105","normalized_imdb_id":84695,"title":"Slumber Party Massacre, The","year":1982,"rating":3,"dubious":false,"date":"2012-03-10 18:04"},{"_id":"3342","normalized_imdb_id":83944,"title":"First Blood","year":1982,"rating":0,"dubious":false,"date":"2012-06-11 18:53"},{"_id":"3618","normalized_imdb_id":83959,"title":"Forbidden World","year":1982,"rating":3,"dubious":true,"date":"2012-10-20 21:55"},{"_id":"3946","normalized_imdb_id":84481,"title":"Godard's Passion","year":1982,"rating":3,"dubious":false,"date":"2013-03-02 00:47"},{"_id":"4005","normalized_imdb_id":84522,"title":"Porky's","year":1982,"rating":2,"dubious":false,"date":"2013-03-22 13:24"},{"_id":"4079","normalized_imdb_id":85809,"title":"Koyaanisqatsi","year":1982,"rating":0,"dubious":false,"date":"2013-04-22 11:56"},{"_id":"4124","normalized_imdb_id":83642,"title":"Best Little Whorehouse in Texas, The","year":1982,"rating":3,"dubious":false,"date":"2013-05-08 15:31"},{"_id":"4406","normalized_imdb_id":83833,"title":"Diner","year":1982,"rating":1,"dubious":false,"date":"2013-07-28 05:52"},{"_id":"4544","normalized_imdb_id":84516,"title":"Poltergeist","year":1982,"rating":3,"dubious":false,"date":"2013-09-05 17:18"},{"_id":"4564","normalized_imdb_id":83762,"title":"Countryman","year":1982,"rating":0,"dubious":false,"date":"2013-09-13 01:38"},{"_id":"4573","normalized_imdb_id":83972,"title":"Friday the 13th Part III","year":1982,"rating":3,"dubious":false,"date":"2013-09-14 00:23"},{"_id":"4584","normalized_imdb_id":82045,"title":"Banana Joe","year":1982,"rating":0,"dubious":false,"date":"2013-09-15 08:06"},{"_id":"4844","normalized_imdb_id":83967,"title":"Frances","year":1982,"rating":3,"dubious":true,"date":"2013-11-17 01:37"},{"_id":"5355","normalized_imdb_id":83511,"title":"48 Hrs.","year":1982,"rating":2,"dubious":false,"date":"2014-04-03 07:46"},{"_id":"6068","normalized_imdb_id":84503,"title":"Pink Floyd The Wall","year":1982,"rating":0,"dubious":false,"date":"2015-01-27 02:24"},{"_id":"6115","normalized_imdb_id":84234,"title":"Last American Virgin, The","year":1982,"rating":3,"dubious":false,"date":"2015-02-17 04:08"},{"_id":"6497","normalized_imdb_id":83942,"title":"Finye (The Wind)","year":1982,"rating":3,"dubious":false,"date":"2015-10-18 05:48"},{"_id":"6704","normalized_imdb_id":84855,"title":"Verdict, The","year":1982,"rating":1,"dubious":false,"date":"2016-02-01 06:16"},{"_id":"6871","normalized_imdb_id":84602,"title":"Rocky III","year":1982,"rating":0,"dubious":false,"date":"2016-05-03 00:46"},{"_id":"7107","normalized_imdb_id":84725,"title":"State of Things, The","year":1982,"rating":3,"dubious":false,"date":"2016-09-07 19:57"},{"_id":"7175","normalized_imdb_id":84777,"title":"Tenebre","year":1982,"rating":2,"dubious":false,"date":"2016-10-07 12:43"},{"_id":"7199","normalized_imdb_id":84745,"title":"Swamp Thing","year":1982,"rating":2,"dubious":false,"date":"2016-10-14 13:52"},{"_id":"7244","normalized_imdb_id":84434,"title":"An Officer and a Gentleman","year":1982,"rating":3,"dubious":false,"date":"2016-11-05 23:14"},{"_id":"7345","normalized_imdb_id":83629,"title":"Beast Within, The","year":1982,"rating":1,"dubious":false,"date":"2016-12-22 14:58"},{"_id":"7348","normalized_imdb_id":4238858,"title":"Fits, The","year":1982,"rating":1,"dubious":false,"date":"2016-12-23 16:21"},{"_id":"7414","normalized_imdb_id":82748,"title":"Mil gritos tiene la noche [Pieces]","year":1982,"rating":1,"dubious":false,"date":"2017-01-22 15:03"},{"_id":"7557","normalized_imdb_id":84335,"title":"Missing","year":1982,"rating":3,"dubious":false,"date":"2017-04-04 04:39"},{"_id":"8115","normalized_imdb_id":83908,"title":"Evil Under the Sun","year":1982,"rating":3,"dubious":false,"date":"2018-03-17 03:10"},{"_id":"8117","normalized_imdb_id":84637,"title":"Scarlet Pimpernel, The","year":1982,"rating":2,"dubious":false,"date":"2018-03-17 03:31"},{"_id":"8165","normalized_imdb_id":82334,"title":"Entity, The","year":1982,"rating":3,"dubious":false,"date":"2018-04-16 13:46"},{"_id":"8665","normalized_imdb_id":84865,"title":"Victor Victoria","year":1982,"rating":3,"dubious":true,"date":"2019-03-06 15:00"},{"_id":"8986","normalized_imdb_id":84783,"title":"Tex","year":1982,"rating":2,"dubious":true,"date":"2020-01-27 23:08"},{"_id":"9356","normalized_imdb_id":84352,"title":"Monty Python Live at the Hollywood Bowl","year":1982,"rating":1,"dubious":false,"date":"2020-12-05 11:41"},{"_id":"9524","normalized_imdb_id":83686,"title":"Party 2, The","year":1982,"rating":3,"dubious":false,"date":"2021-03-14 12:21"},{"_id":"9593","normalized_imdb_id":83987,"title":"Gandhi","year":1982,"rating":2,"dubious":false,"date":"2021-03-29 04:33"},{"_id":"9634","normalized_imdb_id":83824,"title":"Deux heures moins le quart avant Jesus-Christ","year":1982,"rating":2,"dubious":false,"date":"2021-04-09 11:23"},{"_id":"9723","normalized_imdb_id":82911,"title":"Piratensender Power Play","year":1982,"rating":1,"dubious":false,"date":"2021-04-29 08:47"},{"_id":"9741","normalized_imdb_id":86340,"title":"Sorceress","year":1982,"rating":3,"dubious":false,"date":"2021-04-29 18:26"},{"_id":"442","normalized_imdb_id":86312,"title":"Silkwood","year":1983,"rating":3,"dubious":false,"date":"2009-08-10 16:29"},{"_id":"455","normalized_imdb_id":85333,"title":"Christine","year":1983,"rating":1,"dubious":false,"date":"2009-08-14 22:01"},{"_id":"671","normalized_imdb_id":86190,"title":"Star Wars: Episode VI - Return of the Jedi","year":1983,"rating":1,"dubious":false,"date":"2010-01-26 22:35"},{"_id":"1105","normalized_imdb_id":85478,"title":"Educating Rita","year":1983,"rating":3,"dubious":false,"date":"2010-07-05 21:12"},{"_id":"1667","normalized_imdb_id":86465,"title":"Trading Places","year":1983,"rating":1,"dubious":false,"date":"2010-10-17 20:41"},{"_id":"1785","normalized_imdb_id":85701,"title":"Hunger, The","year":1983,"rating":3,"dubious":false,"date":"2010-11-30 17:20"},{"_id":"1793","normalized_imdb_id":84390,"title":"Ballad of Narayama, The","year":1983,"rating":3,"dubious":false,"date":"2010-11-30 23:23"},{"_id":"1822","normalized_imdb_id":86618,"title":"Yellowbeard","year":1983,"rating":1,"dubious":false,"date":"2010-12-04 09:58"},{"_id":"2255","normalized_imdb_id":85276,"title":"Breathless","year":1983,"rating":0,"dubious":false,"date":"2011-04-30 19:50"},{"_id":"2387","normalized_imdb_id":86216,"title":"Rumble Fish","year":1983,"rating":2,"dubious":false,"date":"2011-06-11 00:00"},{"_id":"2599","normalized_imdb_id":85482,"title":"El Norte","year":1983,"rating":3,"dubious":false,"date":"2011-08-10 07:53"},{"_id":"3376","normalized_imdb_id":85496,"title":"Dark Habits","year":1983,"rating":3,"dubious":false,"date":"2012-06-23 06:53"},{"_id":"3519","normalized_imdb_id":85859,"title":"Local Hero","year":1983,"rating":1,"dubious":false,"date":"2012-09-06 17:04"},{"_id":"3644","normalized_imdb_id":85267,"title":"Born in Flames","year":1983,"rating":3,"dubious":false,"date":"2012-11-02 07:21"},{"_id":"3672","normalized_imdb_id":85838,"title":"Lianna","year":1983,"rating":3,"dubious":false,"date":"2012-11-15 08:46"},{"_id":"3685","normalized_imdb_id":86567,"title":"WarGames","year":1983,"rating":1,"dubious":false,"date":"2012-11-21 09:14"},{"_id":"3892","normalized_imdb_id":86541,"title":"Videodrome","year":1983,"rating":2,"dubious":true,"date":"2013-02-11 21:53"},{"_id":"3972","normalized_imdb_id":85549,"title":"Flashdance","year":1983,"rating":3,"dubious":false,"date":"2013-03-11 09:30"},{"_id":"4283","normalized_imdb_id":86393,"title":"Superman III","year":1983,"rating":3,"dubious":false,"date":"2013-06-28 22:00"},{"_id":"4448","normalized_imdb_id":86425,"title":"Terms of Endearment","year":1983,"rating":1,"dubious":true,"date":"2013-08-07 09:53"},{"_id":"4585","normalized_imdb_id":85601,"title":"Go for It","year":1983,"rating":0,"dubious":false,"date":"2013-09-15 08:10"},{"_id":"4622","normalized_imdb_id":85894,"title":"Man With Two Brains, The","year":1983,"rating":1,"dubious":false,"date":"2013-09-22 21:12"},{"_id":"4771","normalized_imdb_id":224005,"title":"Los renglones torcidos de Dios","year":1983,"rating":3,"dubious":false,"date":"2013-11-02 23:10"},{"_id":"5257","normalized_imdb_id":85672,"title":"Hercules","year":1983,"rating":3,"dubious":true,"date":"2014-03-08 16:34"},{"_id":"5321","normalized_imdb_id":86250,"title":"Scarface","year":1983,"rating":1,"dubious":false,"date":"2014-03-25 03:28"},{"_id":"5427","normalized_imdb_id":85407,"title":"Dead Zone, The","year":1983,"rating":1,"dubious":false,"date":"2014-05-01 21:18"},{"_id":"5473","normalized_imdb_id":85334,"title":"A Christmas Story","year":1983,"rating":1,"dubious":false,"date":"2014-05-15 02:49"},{"_id":"5945","normalized_imdb_id":85933,"title":"Merry Christmas Mr Lawrence","year":1983,"rating":0,"dubious":false,"date":"2014-11-25 08:45"},{"_id":"6126","normalized_imdb_id":85811,"title":"Krull","year":1983,"rating":1,"dubious":false,"date":"2015-03-01 05:53"},{"_id":"6127","normalized_imdb_id":85936,"title":"Mickey's Christmas Carol","year":1983,"rating":1,"dubious":false,"date":"2015-03-02 00:12"},{"_id":"6313","normalized_imdb_id":86034,"title":"Octopussy","year":1983,"rating":2,"dubious":false,"date":"2015-06-14 18:16"},{"_id":"6439","normalized_imdb_id":85959,"title":"Meaning of Life , The","year":1983,"rating":1,"dubious":false,"date":"2015-09-10 14:38"},{"_id":"6791","normalized_imdb_id":86543,"title":"4th Man, The","year":1983,"rating":1,"dubious":false,"date":"2016-03-26 07:13"},{"_id":"7243","normalized_imdb_id":85750,"title":"Jaws 3-D","year":1983,"rating":3,"dubious":false,"date":"2016-11-04 22:01"},{"_id":"7247","normalized_imdb_id":84358,"title":"Mortelle randonnée","year":1983,"rating":3,"dubious":false,"date":"2016-11-07 08:54"},{"_id":"7531","normalized_imdb_id":86104,"title":"El pico","year":1983,"rating":1,"dubious":false,"date":"2017-03-24 13:41"},{"_id":"7563","normalized_imdb_id":86066,"title":"Outsiders, The","year":1983,"rating":2,"dubious":false,"date":"2017-04-06 20:05"},{"_id":"7587","normalized_imdb_id":86619,"title":"Yentl","year":1983,"rating":3,"dubious":false,"date":"2017-04-23 18:25"},{"_id":"7750","normalized_imdb_id":85382,"title":"Cujo","year":1983,"rating":3,"dubious":true,"date":"2017-07-26 00:42"},{"_id":"8029","normalized_imdb_id":85218,"title":"Barefoot Gen","year":1983,"rating":3,"dubious":true,"date":"2018-02-02 05:38"},{"_id":"8326","normalized_imdb_id":86373,"title":"Strange Brew","year":1983,"rating":1,"dubious":false,"date":"2018-07-16 16:14"},{"_id":"9376","normalized_imdb_id":87127,"title":"Deathstalker","year":1983,"rating":1,"dubious":true,"date":"2020-12-14 12:41"},{"_id":"8812","normalized_imdb_id":84904,"title":"Wild Style","year":1983,"rating":3,"dubious":false,"date":"2019-08-12 03:51"},{"_id":"8971","normalized_imdb_id":85231,"title":"Best Christmas Pageant Ever, The","year":1983,"rating":3,"dubious":false,"date":"2020-01-19 18:37"},{"_id":"9130","normalized_imdb_id":86589,"title":"Suburbia","year":1983,"rating":3,"dubious":false,"date":"2020-05-12 00:31"},{"_id":"9274","normalized_imdb_id":86200,"title":"Risky Business","year":1983,"rating":3,"dubious":true,"date":"2020-09-15 03:51"},{"_id":"9705","normalized_imdb_id":86510,"title":"Under Fire","year":1983,"rating":1,"dubious":false,"date":"2021-04-27 20:26"},{"_id":"9720","normalized_imdb_id":86394,"title":"Die Supernasen","year":1983,"rating":1,"dubious":false,"date":"2021-04-29 08:36"},{"_id":"9749","normalized_imdb_id":85250,"title":"Women's Prison Massacre","year":1983,"rating":3,"dubious":false,"date":"2021-04-30 09:49"},{"_id":"376","normalized_imdb_id":87332,"title":"Ghostbusters","year":1984,"rating":2,"dubious":false,"date":"2009-07-19 00:47"},{"_id":"406","normalized_imdb_id":87363,"title":"Gremlins","year":1984,"rating":1,"dubious":false,"date":"2009-08-02 12:10"},{"_id":"413","normalized_imdb_id":87078,"title":"Conan the Destroyer","year":1984,"rating":3,"dubious":true,"date":"2009-08-03 21:14"},{"_id":"514","normalized_imdb_id":86992,"title":"Bostonians, The","year":1984,"rating":3,"dubious":false,"date":"2009-09-23 22:54"},{"_id":"570","normalized_imdb_id":87544,"title":"Kaze no tani no Naushika","year":1984,"rating":3,"dubious":false,"date":"2009-12-18 06:56"},{"_id":"575","normalized_imdb_id":87928,"title":"Police Academy","year":1984,"rating":3,"dubious":true,"date":"2009-12-21 20:19"},{"_id":"613","normalized_imdb_id":86879,"title":"Amadeus","year":1984,"rating":3,"dubious":false,"date":"2010-01-21 21:12"},{"_id":"743","normalized_imdb_id":86856,"title":"Adventures of Buckaroo Banzai Across the 8th Dimension, The","year":1984,"rating":3,"dubious":false,"date":"2010-04-18 16:36"},{"_id":"813","normalized_imdb_id":87884,"title":"Paris, Texas","year":1984,"rating":1,"dubious":false,"date":"2010-05-18 09:34"},{"_id":"1048","normalized_imdb_id":87469,"title":"Indiana Jones and the Temple of Doom","year":1984,"rating":0,"dubious":false,"date":"2010-07-04 03:08"},{"_id":"1582","normalized_imdb_id":88461,"title":"What Have I Done to Deserve This?","year":1984,"rating":3,"dubious":false,"date":"2010-09-20 14:03"},{"_id":"1304","normalized_imdb_id":88170,"title":"Star Trek III: The Search for Spock","year":1984,"rating":1,"dubious":false,"date":"2010-07-25 04:41"},{"_id":"1418","normalized_imdb_id":88247,"title":"Terminator, The","year":1984,"rating":3,"dubious":false,"date":"2010-08-01 13:08"},{"_id":"1296","normalized_imdb_id":88128,"title":"Sixteen Candles","year":1984,"rating":3,"dubious":false,"date":"2010-07-24 05:29"},{"_id":"1430","normalized_imdb_id":87538,"title":"Karate Kid, The","year":1984,"rating":3,"dubious":false,"date":"2010-08-02 20:25"},{"_id":"1534","normalized_imdb_id":87182,"title":"Dune","year":1984,"rating":3,"dubious":true,"date":"2010-09-05 23:34"},{"_id":"1536","normalized_imdb_id":88258,"title":"This Is Spinal Tap","year":1984,"rating":1,"dubious":false,"date":"2010-09-06 06:40"},{"_id":"1848","normalized_imdb_id":86960,"title":"Beverly Hills Cop","year":1984,"rating":0,"dubious":false,"date":"2010-12-14 03:43"},{"_id":"2000","normalized_imdb_id":88206,"title":"Supergirl","year":1984,"rating":3,"dubious":false,"date":"2011-02-06 22:37"},{"_id":"2742","normalized_imdb_id":88146,"title":"A Soldier's Story","year":1984,"rating":0,"dubious":false,"date":"2011-10-06 15:19"},{"_id":"2765","normalized_imdb_id":86739,"title":"Jewel in the Crown, The","year":1984,"rating":3,"dubious":false,"date":"2011-10-15 02:03"},{"_id":"3357","normalized_imdb_id":86973,"title":"Blame It on Rio","year":1984,"rating":3,"dubious":false,"date":"2012-06-17 00:42"},{"_id":"2866","normalized_imdb_id":87644,"title":"Love Streams","year":1984,"rating":3,"dubious":false,"date":"2011-11-26 16:51"},{"_id":"3489","normalized_imdb_id":87799,"title":"Night of the Comet","year":1984,"rating":3,"dubious":false,"date":"2012-08-21 07:42"},{"_id":"3868","normalized_imdb_id":89838,"title":"A Private Function","year":1984,"rating":3,"dubious":false,"date":"2013-02-01 23:07"},{"_id":"3885","normalized_imdb_id":88161,"title":"Splash","year":1984,"rating":1,"dubious":false,"date":"2013-02-09 14:57"},{"_id":"4053","normalized_imdb_id":87781,"title":"Natural, The","year":1984,"rating":1,"dubious":false,"date":"2013-04-14 10:03"},{"_id":"4087","normalized_imdb_id":135033,"title":"Poison for the Fairies","year":1984,"rating":3,"dubious":false,"date":"2013-04-25 00:07"},{"_id":"4157","normalized_imdb_id":88323,"title":"Neverending Story, The","year":1984,"rating":1,"dubious":false,"date":"2013-05-22 20:47"},{"_id":"4182","normalized_imdb_id":87800,"title":"A nightmare on Elm Street","year":1984,"rating":3,"dubious":false,"date":"2013-05-30 15:08"},{"_id":"4193","normalized_imdb_id":87957,"title":"Purple Rain","year":1984,"rating":3,"dubious":false,"date":"2013-06-01 05:18"},{"_id":"4355","normalized_imdb_id":87995,"title":"Repo Man","year":1984,"rating":2,"dubious":false,"date":"2013-07-16 17:32"},{"_id":"4589","normalized_imdb_id":87814,"title":"Non ci resta che piangere","year":1984,"rating":1,"dubious":false,"date":"2013-09-15 16:45"},{"_id":"4590","normalized_imdb_id":87951,"title":"Protocol","year":1984,"rating":3,"dubious":true,"date":"2013-09-15 16:51"},{"_id":"4623","normalized_imdb_id":86837,"title":"2010","year":1984,"rating":1,"dubious":false,"date":"2013-09-22 21:38"},{"_id":"4633","normalized_imdb_id":87597,"title":"Last Starfighter, The","year":1984,"rating":3,"dubious":false,"date":"2013-09-27 01:32"},{"_id":"4634","normalized_imdb_id":87755,"title":"Muppets Take Manhattan, The","year":1984,"rating":3,"dubious":false,"date":"2013-09-27 01:56"},{"_id":"4668","normalized_imdb_id":88286,"title":"Top Secret!","year":1984,"rating":0,"dubious":false,"date":"2013-10-06 16:41"},{"_id":"4725","normalized_imdb_id":87892,"title":"A Passage to India","year":1984,"rating":3,"dubious":false,"date":"2013-10-20 21:16"},{"_id":"5040","normalized_imdb_id":86984,"title":"Body Double","year":1984,"rating":2,"dubious":false,"date":"2014-01-04 22:12"},{"_id":"5154","normalized_imdb_id":87298,"title":"Friday the 13th Part IV: The Final Chapter","year":1984,"rating":3,"dubious":false,"date":"2014-02-09 06:02"},{"_id":"5255","normalized_imdb_id":88075,"title":"Secret Places","year":1984,"rating":3,"dubious":false,"date":"2014-03-08 12:01"},{"_id":"5731","normalized_imdb_id":86979,"title":"Blood Simple.","year":1984,"rating":1,"dubious":false,"date":"2014-09-07 16:57"},{"_id":"5751","normalized_imdb_id":88000,"title":"Revenge of the Nerds","year":1984,"rating":1,"dubious":false,"date":"2014-09-16 03:41"},{"_id":"5761","normalized_imdb_id":86904,"title":"Another Country","year":1984,"rating":0,"dubious":false,"date":"2014-09-19 07:05"},{"_id":"5796","normalized_imdb_id":88172,"title":"Starman","year":1984,"rating":0,"dubious":false,"date":"2014-10-01 01:34"},{"_id":"5879","normalized_imdb_id":87050,"title":"Children of the Corn","year":1984,"rating":3,"dubious":false,"date":"2014-10-27 23:22"},{"_id":"6072","normalized_imdb_id":90192,"title":"Trancers","year":1984,"rating":1,"dubious":false,"date":"2015-01-27 02:40"},{"_id":"6293","normalized_imdb_id":87843,"title":"Once Upon A Time In America","year":1984,"rating":1,"dubious":false,"date":"2015-06-05 05:32"},{"_id":"6309","normalized_imdb_id":86927,"title":"Bachelor Party","year":1984,"rating":3,"dubious":false,"date":"2015-06-13 05:05"},{"_id":"6523","normalized_imdb_id":87507,"title":"Johnny Dangerously","year":1984,"rating":3,"dubious":false,"date":"2015-10-30 15:26"},{"_id":"6529","normalized_imdb_id":87344,"title":"Godzilla 1985","year":1984,"rating":0,"dubious":false,"date":"2015-11-02 01:09"},{"_id":"6703","normalized_imdb_id":88117,"title":"Silent Night, Deadly Night","year":1984,"rating":3,"dubious":true,"date":"2016-02-01 02:43"},{"_id":"7391","normalized_imdb_id":88040,"title":"Los santos inocentes","year":1984,"rating":3,"dubious":false,"date":"2017-01-12 14:05"},{"_id":"7402","normalized_imdb_id":87910,"title":"Philadelphia Experiment, The","year":1984,"rating":1,"dubious":false,"date":"2017-01-17 16:37"},{"_id":"7403","normalized_imdb_id":87451,"title":"Ice Pirates, The","year":1984,"rating":2,"dubious":false,"date":"2017-01-17 18:34"},{"_id":"7404","normalized_imdb_id":86955,"title":"Best Defense","year":1984,"rating":2,"dubious":false,"date":"2017-01-17 20:24"},{"_id":"7492","normalized_imdb_id":86896,"title":"Angel","year":1984,"rating":3,"dubious":false,"date":"2017-03-09 16:35"},{"_id":"7532","normalized_imdb_id":87981,"title":"Razorback","year":1984,"rating":1,"dubious":false,"date":"2017-03-25 22:56"},{"_id":"7530","normalized_imdb_id":87913,"title":"El pico 2","year":1984,"rating":1,"dubious":false,"date":"2017-03-24 13:40"},{"_id":"8524","normalized_imdb_id":87803,"title":"Nineteen Eighty-Four","year":1984,"rating":1,"dubious":false,"date":"2018-12-14 21:46"},{"_id":"8748","normalized_imdb_id":88011,"title":"Romancing the Stone","year":1984,"rating":3,"dubious":false,"date":"2019-05-22 01:53"},{"_id":"8875","normalized_imdb_id":87472,"title":"Initiation, The","year":1984,"rating":3,"dubious":false,"date":"2019-10-26 00:16"},{"_id":"9241","normalized_imdb_id":86873,"title":"All of Me","year":1984,"rating":2,"dubious":false,"date":"2020-08-15 02:39"},{"_id":"9311","normalized_imdb_id":88001,"title":"Rhinestone","year":1984,"rating":3,"dubious":false,"date":"2020-10-19 00:46"},{"_id":"9327","normalized_imdb_id":87015,"title":"C.H.U.D.","year":1984,"rating":2,"dubious":false,"date":"2020-11-12 00:56"},{"_id":"9584","normalized_imdb_id":87681,"title":"Marche à l'ombre","year":1984,"rating":1,"dubious":false,"date":"2021-03-25 07:53"},{"_id":"9722","normalized_imdb_id":88459,"title":"Zwei Nasen tanken Super","year":1984,"rating":1,"dubious":false,"date":"2021-04-29 08:44"},{"_id":"9739","normalized_imdb_id":88379,"title":"Warrior and the Sorceress, The","year":1984,"rating":0,"dubious":false,"date":"2021-04-29 18:18"},{"_id":"9740","normalized_imdb_id":90009,"title":"She","year":1984,"rating":1,"dubious":false,"date":"2021-04-29 18:22"},{"_id":"9756","normalized_imdb_id":85486,"title":"Emmanuelle IV","year":1984,"rating":3,"dubious":false,"date":"2021-04-30 20:12"},{"_id":"9776","normalized_imdb_id":87481,"title":"Double Trouble","year":1984,"rating":0,"dubious":false,"date":"2021-05-01 22:28"},{"_id":"149","normalized_imdb_id":88763,"title":"Back to the Future","year":1985,"rating":2,"dubious":false,"date":"2008-08-09 10:58"},{"_id":"203","normalized_imdb_id":88847,"title":"Breakfast Club, The","year":1985,"rating":3,"dubious":false,"date":"2008-10-23 15:51"},{"_id":"402","normalized_imdb_id":89393,"title":"Just One of the Guys","year":1985,"rating":3,"dubious":false,"date":"2009-07-31 04:18"},{"_id":"418","normalized_imdb_id":89893,"title":"Red Sonja","year":1985,"rating":3,"dubious":false,"date":"2009-08-06 21:29"},{"_id":"486","normalized_imdb_id":89748,"title":"Otac na sluzbenom putu","year":1985,"rating":3,"dubious":true,"date":"2009-08-28 22:48"},{"_id":"520","normalized_imdb_id":90305,"title":"Weird Science","year":1985,"rating":3,"dubious":false,"date":"2009-10-05 04:41"},{"_id":"576","normalized_imdb_id":89822,"title":"Police Academy 2: Their First Assignment","year":1985,"rating":1,"dubious":false,"date":"2009-12-21 21:44"},{"_id":"602","normalized_imdb_id":88683,"title":"Agnes of God","year":1985,"rating":3,"dubious":false,"date":"2009-12-28 03:51"},{"_id":"676","normalized_imdb_id":380761,"title":"Tomo yo shizukani nemure","year":1985,"rating":2,"dubious":false,"date":"2010-02-04 14:28"},{"_id":"752","normalized_imdb_id":89208,"title":"Girls Just Want to Have Fun","year":1985,"rating":3,"dubious":false,"date":"2010-04-24 06:11"},{"_id":"880","normalized_imdb_id":88846,"title":"Brazil","year":1985,"rating":3,"dubious":false,"date":"2010-05-30 19:58"},{"_id":"935","normalized_imdb_id":88727,"title":"Anne of Green Gables","year":1985,"rating":3,"dubious":false,"date":"2010-06-12 09:40"},{"_id":"963","normalized_imdb_id":89960,"title":"Sans toi ni loi (Vagabond)","year":1985,"rating":3,"dubious":false,"date":"2010-06-20 00:01"},{"_id":"991","normalized_imdb_id":88939,"title":"Color Purple, The","year":1985,"rating":3,"dubious":false,"date":"2010-06-28 08:43"},{"_id":"1046","normalized_imdb_id":89886,"title":"Real Genius","year":1985,"rating":1,"dubious":false,"date":"2010-07-04 03:00"},{"_id":"1187","normalized_imdb_id":90319,"title":"White Nights","year":1985,"rating":1,"dubious":false,"date":"2010-07-18 02:23"},{"_id":"1408","normalized_imdb_id":88930,"title":"Clue","year":1985,"rating":3,"dubious":false,"date":"2010-07-31 08:09"},{"_id":"1269","normalized_imdb_id":89457,"title":"Ladyhawke","year":1985,"rating":0,"dubious":false,"date":"2010-07-23 01:00"},{"_id":"1561","normalized_imdb_id":91867,"title":"A Room with a View","year":1985,"rating":3,"dubious":false,"date":"2010-09-10 12:43"},{"_id":"1500","normalized_imdb_id":87150,"title":"Dim Sum: A Little Bit of Heart","year":1985,"rating":3,"dubious":false,"date":"2010-08-23 23:46"},{"_id":"1654","normalized_imdb_id":89017,"title":"Desperately Seeking Susan","year":1985,"rating":3,"dubious":false,"date":"2010-10-08 01:12"},{"_id":"1708","normalized_imdb_id":87433,"title":"Huang tudi (Yellow Earth)","year":1985,"rating":0,"dubious":false,"date":"2010-10-29 06:03"},{"_id":"1789","normalized_imdb_id":90203,"title":"Trip To Bountiful, The","year":1985,"rating":3,"dubious":false,"date":"2010-11-30 17:40"},{"_id":"1832","normalized_imdb_id":89155,"title":"Fletch","year":1985,"rating":1,"dubious":false,"date":"2010-12-08 11:35"},{"_id":"1949","normalized_imdb_id":88814,"title":"Black Cauldron, The","year":1985,"rating":3,"dubious":false,"date":"2011-01-31 00:09"},{"_id":"2152","normalized_imdb_id":89092,"title":"Enemy Mine","year":1985,"rating":0,"dubious":false,"date":"2011-03-28 17:49"},{"_id":"2302","normalized_imdb_id":89126,"title":"Fandango","year":1985,"rating":0,"dubious":false,"date":"2011-05-17 21:24"},{"_id":"2343","normalized_imdb_id":89371,"title":"Mr Vampire (Geung si sin sang)","year":1985,"rating":1,"dubious":false,"date":"2011-05-25 22:32"},{"_id":"2352","normalized_imdb_id":89881,"title":"Ran","year":1985,"rating":1,"dubious":false,"date":"2011-05-27 20:25"},{"_id":"2531","normalized_imdb_id":88748,"title":"Astérix et la Surprise de Céasar (Asterix vs. Caesar)","year":1985,"rating":0,"dubious":false,"date":"2011-07-13 23:47"},{"_id":"2576","normalized_imdb_id":88944,"title":"Commando","year":1985,"rating":1,"dubious":false,"date":"2011-07-27 03:54"},{"_id":"2613","normalized_imdb_id":90310,"title":"Wetherby","year":1985,"rating":3,"dubious":false,"date":"2011-08-14 00:49"},{"_id":"2894","normalized_imdb_id":89908,"title":"Return to Oz","year":1985,"rating":3,"dubious":false,"date":"2011-12-02 20:05"},{"_id":"3001","normalized_imdb_id":89218,"title":"Goonies, The","year":1985,"rating":3,"dubious":false,"date":"2012-01-25 16:14"},{"_id":"3320","normalized_imdb_id":88794,"title":"Better Off Dead","year":1985,"rating":3,"dubious":true,"date":"2012-06-04 22:51"},{"_id":"3416","normalized_imdb_id":90065,"title":"Starchaser: The Legend of Orin","year":1985,"rating":1,"dubious":false,"date":"2012-07-11 07:04"},{"_id":"3666","normalized_imdb_id":89015,"title":"Desert Hearts","year":1985,"rating":3,"dubious":false,"date":"2012-11-12 09:32"},{"_id":"3719","normalized_imdb_id":88915,"title":"A Chorus Line","year":1985,"rating":3,"dubious":false,"date":"2012-12-06 20:35"},{"_id":"3741","normalized_imdb_id":90110,"title":"Sweet Dreams","year":1985,"rating":3,"dubious":false,"date":"2012-12-11 07:40"},{"_id":"3802","normalized_imdb_id":88993,"title":"Day of the Dead","year":1985,"rating":0,"dubious":false,"date":"2013-01-03 21:40"},{"_id":"3872","normalized_imdb_id":88680,"title":"After Hours","year":1985,"rating":2,"dubious":false,"date":"2013-02-06 08:36"},{"_id":"3986","normalized_imdb_id":89469,"title":"Legend","year":1985,"rating":3,"dubious":true,"date":"2013-03-17 07:54"},{"_id":"4123","normalized_imdb_id":88885,"title":"Care Bears Movie, The","year":1985,"rating":3,"dubious":false,"date":"2013-05-08 05:32"},{"_id":"4480","normalized_imdb_id":89066,"title":"Detective","year":1985,"rating":1,"dubious":false,"date":"2013-08-17 12:33"},{"_id":"4550","normalized_imdb_id":88771,"title":"Barbarian Queen","year":1985,"rating":3,"dubious":false,"date":"2013-09-08 21:32"},{"_id":"4893","normalized_imdb_id":87909,"title":"Phenomena","year":1985,"rating":3,"dubious":false,"date":"2013-11-30 20:11"},{"_id":"4945","normalized_imdb_id":89276,"title":"Official Story, The","year":1985,"rating":3,"dubious":false,"date":"2013-12-13 04:54"},{"_id":"4949","normalized_imdb_id":91578,"title":"My Beautiful Laundrette","year":1985,"rating":2,"dubious":false,"date":"2013-12-14 20:06"},{"_id":"5297","normalized_imdb_id":89853,"title":"Purple Rose of Cairo","year":1985,"rating":3,"dubious":false,"date":"2014-03-18 01:23"},{"_id":"5467","normalized_imdb_id":90103,"title":"Sure Thing, The","year":1985,"rating":3,"dubious":false,"date":"2014-05-13 23:41"},{"_id":"5563","normalized_imdb_id":89173,"title":"Friday the 13th: A New Beginning","year":1985,"rating":3,"dubious":false,"date":"2014-06-14 03:19"},{"_id":"5564","normalized_imdb_id":89885,"title":"Re-Animator","year":1985,"rating":0,"dubious":false,"date":"2014-06-15 06:29"},{"_id":"5627","normalized_imdb_id":90056,"title":"Spies Like Us","year":1985,"rating":1,"dubious":false,"date":"2014-07-11 05:10"},{"_id":"5632","normalized_imdb_id":90329,"title":"Witness","year":1985,"rating":3,"dubious":true,"date":"2014-07-13 03:10"},{"_id":"5660","normalized_imdb_id":89470,"title":"Legend of Billie Jean, The","year":1985,"rating":3,"dubious":false,"date":"2014-07-30 04:44"},{"_id":"5795","normalized_imdb_id":92048,"title":"Tampopo","year":1985,"rating":1,"dubious":false,"date":"2014-10-01 01:28"},{"_id":"5943","normalized_imdb_id":89175,"title":"Fright Night","year":1985,"rating":2,"dubious":false,"date":"2014-11-24 02:27"},{"_id":"6018","normalized_imdb_id":89686,"title":"A Nightmare on Elm Street 2: Freddy's Revenge","year":1985,"rating":3,"dubious":false,"date":"2015-01-05 06:59"},{"_id":"6155","normalized_imdb_id":89755,"title":"Out of Africa","year":1985,"rating":3,"dubious":false,"date":"2015-03-20 15:51"},{"_id":"6165","normalized_imdb_id":91251,"title":"Come and See","year":1985,"rating":0,"dubious":false,"date":"2015-03-26 19:19"},{"_id":"6314","normalized_imdb_id":90264,"title":"A View to a Kill","year":1985,"rating":1,"dubious":false,"date":"2015-06-15 16:27"},{"_id":"6730","normalized_imdb_id":89869,"title":"Quiet Earth, The","year":1985,"rating":0,"dubious":false,"date":"2016-02-17 21:29"},{"_id":"6792","normalized_imdb_id":89424,"title":"Kiss of the Spider Woman","year":1985,"rating":2,"dubious":false,"date":"2016-03-26 07:19"},{"_id":"6840","normalized_imdb_id":89880,"title":"Rambo: First Blood Part II","year":1985,"rating":0,"dubious":false,"date":"2016-04-19 14:35"},{"_id":"6853","normalized_imdb_id":89052,"title":"Dreamchild","year":1985,"rating":3,"dubious":false,"date":"2016-04-25 17:24"},{"_id":"6873","normalized_imdb_id":89927,"title":"Rocky IV","year":1985,"rating":2,"dubious":false,"date":"2016-05-04 15:35"},{"_id":"6902","normalized_imdb_id":208502,"title":"Angel's Egg","year":1985,"rating":0,"dubious":false,"date":"2016-05-28 16:45"},{"_id":"7173","normalized_imdb_id":89153,"title":"Flesh+Blood","year":1985,"rating":3,"dubious":false,"date":"2016-10-06 20:37"},{"_id":"7576","normalized_imdb_id":89206,"title":"Night on the Galactic Railroad","year":1985,"rating":0,"dubious":false,"date":"2017-04-15 23:14"},{"_id":"7703","normalized_imdb_id":199849,"title":"Ninja Terminator","year":1985,"rating":2,"dubious":true,"date":"2017-06-23 13:38"},{"_id":"8007","normalized_imdb_id":5739786,"title":"La Negrita: the Miracle of Our Lady of Los Angeles","year":1985,"rating":1,"dubious":false,"date":"2018-01-12 22:59"},{"_id":"8071","normalized_imdb_id":89108,"title":"Esperando la carroza","year":1985,"rating":3,"dubious":false,"date":"2018-02-24 14:23"},{"_id":"8419","normalized_imdb_id":89308,"title":"Howling II: ... Your Sister Is a Werewolf","year":1985,"rating":2,"dubious":false,"date":"2018-09-20 14:46"},{"_id":"8553","normalized_imdb_id":2292794,"title":"Bebukottak","year":1985,"rating":0,"dubious":false,"date":"2018-12-14 23:50"},{"_id":"8554","normalized_imdb_id":137226,"title":"Treasure of Swamp Castle, The","year":1985,"rating":2,"dubious":false,"date":"2018-12-14 23:51"},{"_id":"8924","normalized_imdb_id":89791,"title":"Pee-wee's Big Adventure","year":1985,"rating":1,"dubious":false,"date":"2019-12-08 07:24"},{"_id":"9052","normalized_imdb_id":88167,"title":"Les specialistes","year":1985,"rating":0,"dubious":false,"date":"2020-03-26 07:11"},{"_id":"9148","normalized_imdb_id":89461,"title":"Last Dragon, The","year":1985,"rating":3,"dubious":true,"date":"2020-05-30 16:37"},{"_id":"9536","normalized_imdb_id":90142,"title":"Teen Wolf","year":1985,"rating":2,"dubious":false,"date":"2021-03-14 15:03"},{"_id":"9538","normalized_imdb_id":89767,"title":"Pale Rider","year":1985,"rating":2,"dubious":false,"date":"2021-03-14 16:25"},{"_id":"9569","normalized_imdb_id":471287,"title":"Ocean Drive Weekend","year":1985,"rating":3,"dubious":false,"date":"2021-03-17 19:42"},{"_id":"9957","normalized_imdb_id":155180,"title":"Sindhu Bhairavi","year":1985,"rating":2,"dubious":false,"date":"2021-07-11 09:16"},{"_id":"9721","normalized_imdb_id":89077,"title":"Die Einsteiger","year":1985,"rating":1,"dubious":false,"date":"2021-04-29 08:43"},{"_id":"2","normalized_imdb_id":91949,"title":"Short Circuit","year":1986,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"211","normalized_imdb_id":91042,"title":"Ferris Bueller's Day Off","year":1986,"rating":3,"dubious":false,"date":"2008-10-27 01:41"},{"_id":"253","normalized_imdb_id":91369,"title":"Labyrinth","year":1986,"rating":3,"dubious":false,"date":"2009-01-07 22:26"},{"_id":"283","normalized_imdb_id":90605,"title":"Aliens","year":1986,"rating":3,"dubious":false,"date":"2009-02-17 08:15"},{"_id":"577","normalized_imdb_id":91777,"title":"Police Academy 3: Back in Training","year":1986,"rating":1,"dubious":false,"date":"2009-12-21 23:00"},{"_id":"898","normalized_imdb_id":92005,"title":"Stand By Me","year":1986,"rating":0,"dubious":false,"date":"2010-06-04 23:50"},{"_id":"1017","normalized_imdb_id":91167,"title":"Hannah and Her Sisters","year":1986,"rating":3,"dubious":false,"date":"2010-07-01 08:42"},{"_id":"1604","normalized_imdb_id":91203,"title":"Highlander","year":1986,"rating":2,"dubious":false,"date":"2010-09-23 02:31"},{"_id":"1397","normalized_imdb_id":91341,"title":"Kin-Dza-Dza","year":1986,"rating":0,"dubious":false,"date":"2010-07-28 10:57"},{"_id":"1614","normalized_imdb_id":90848,"title":"Clan of the Cave Bear, The","year":1986,"rating":3,"dubious":false,"date":"2010-09-29 01:35"},{"_id":"1703","normalized_imdb_id":92099,"title":"Top Gun","year":1986,"rating":2,"dubious":false,"date":"2010-10-28 12:26"},{"_id":"1835","normalized_imdb_id":91306,"title":"Jumpin' Jack Flash","year":1986,"rating":3,"dubious":false,"date":"2010-12-09 23:10"},{"_id":"2061","normalized_imdb_id":91419,"title":"Little Shop of Horrors","year":1986,"rating":1,"dubious":false,"date":"2011-02-21 06:18"},{"_id":"2070","normalized_imdb_id":91738,"title":"Peggy Sue Got Married","year":1986,"rating":3,"dubious":false,"date":"2011-02-25 09:06"},{"_id":"2150","normalized_imdb_id":90728,"title":"Big Trouble in Little China","year":1986,"rating":3,"dubious":false,"date":"2011-03-28 14:38"},{"_id":"2314","normalized_imdb_id":91541,"title":"Money Pit, The","year":1986,"rating":2,"dubious":false,"date":"2011-05-20 05:00"},{"_id":"2421","normalized_imdb_id":90660,"title":"Armed and Dangerous","year":1986,"rating":1,"dubious":false,"date":"2011-06-21 03:06"},{"_id":"2490","normalized_imdb_id":90633,"title":"An American Tail","year":1986,"rating":3,"dubious":true,"date":"2011-07-06 06:25"},{"_id":"2648","normalized_imdb_id":92007,"title":"Star Trek IV:  The Voyage Home","year":1986,"rating":3,"dubious":true,"date":"2011-09-01 09:31"},{"_id":"2658","normalized_imdb_id":91993,"title":"SpaceCamp","year":1986,"rating":3,"dubious":false,"date":"2011-09-04 23:58"},{"_id":"2662","normalized_imdb_id":90756,"title":"Blue Velvet","year":1986,"rating":1,"dubious":false,"date":"2011-09-07 13:18"},{"_id":"2670","normalized_imdb_id":90315,"title":"When the Wind Blows","year":1986,"rating":0,"dubious":false,"date":"2011-09-09 22:04"},{"_id":"3002","normalized_imdb_id":91064,"title":"Fly, The","year":1986,"rating":2,"dubious":false,"date":"2012-01-25 16:18"},{"_id":"3093","normalized_imdb_id":97050,"title":"Adventures of Milo and Otis, The","year":1986,"rating":1,"dubious":false,"date":"2012-03-06 20:14"},{"_id":"3155","normalized_imdb_id":90556,"title":"'night, Mother","year":1986,"rating":3,"dubious":false,"date":"2012-03-31 23:39"},{"_id":"3203","normalized_imdb_id":90967,"title":"Down by Law","year":1986,"rating":1,"dubious":false,"date":"2012-04-24 21:17"},{"_id":"3398","normalized_imdb_id":91794,"title":"Project A-ko","year":1986,"rating":3,"dubious":false,"date":"2012-07-06 14:48"},{"_id":"3558","normalized_imdb_id":91763,"title":"Platoon","year":1986,"rating":0,"dubious":false,"date":"2012-09-28 17:45"},{"_id":"3614","normalized_imdb_id":90555,"title":"Crocodile Dundee","year":1986,"rating":3,"dubious":true,"date":"2012-10-19 10:50"},{"_id":"3701","normalized_imdb_id":91149,"title":"Great Mouse Detective, The","year":1986,"rating":1,"dubious":false,"date":"2012-12-01 11:43"},{"_id":"3850","normalized_imdb_id":92106,"title":"Transformers: The Movie, The","year":1986,"rating":0,"dubious":false,"date":"2013-01-23 03:58"},{"_id":"4315","normalized_imdb_id":91790,"title":"Pretty in Pink","year":1986,"rating":3,"dubious":false,"date":"2013-07-07 21:18"},{"_id":"4451","normalized_imdb_id":89297,"title":"Hour of the Star","year":1986,"rating":3,"dubious":false,"date":"2013-08-07 22:21"},{"_id":"4576","normalized_imdb_id":91059,"title":"Flight of the Navigator","year":1986,"rating":3,"dubious":false,"date":"2013-09-14 18:09"},{"_id":"4581","normalized_imdb_id":91721,"title":"Parent Trap II, The","year":1986,"rating":3,"dubious":false,"date":"2013-09-14 18:51"},{"_id":"4591","normalized_imdb_id":90685,"title":"Back to School","year":1986,"rating":1,"dubious":false,"date":"2013-09-15 16:58"},{"_id":"4614","normalized_imdb_id":91877,"title":"Ruthless People","year":1986,"rating":3,"dubious":false,"date":"2013-09-22 15:40"},{"_id":"4632","normalized_imdb_id":91225,"title":"Howard The Duck","year":1986,"rating":3,"dubious":true,"date":"2013-09-27 01:16"},{"_id":"4684","normalized_imdb_id":91499,"title":"Maximum Overdrive","year":1986,"rating":2,"dubious":false,"date":"2013-10-11 18:26"},{"_id":"4894","normalized_imdb_id":89118,"title":"F/X","year":1986,"rating":1,"dubious":false,"date":"2013-11-30 21:24"},{"_id":"4966","normalized_imdb_id":90667,"title":"Asterix in Britain (Asterix chez les Bretons)","year":1986,"rating":0,"dubious":false,"date":"2013-12-20 16:12"},{"_id":"6021","normalized_imdb_id":90793,"title":"Captain EO","year":1986,"rating":1,"dubious":false,"date":"2015-01-07 01:55"},{"_id":"6202","normalized_imdb_id":92086,"title":"!Three Amigos!","year":1986,"rating":2,"dubious":false,"date":"2015-04-13 18:50"},{"_id":"6221","normalized_imdb_id":91869,"title":"Rosa Luxemburg","year":1986,"rating":3,"dubious":false,"date":"2015-04-25 20:48"},{"_id":"6298","normalized_imdb_id":91474,"title":"Manhunter","year":1986,"rating":1,"dubious":false,"date":"2015-06-05 22:16"},{"_id":"6711","normalized_imdb_id":90805,"title":"Il caso Moro","year":1986,"rating":0,"dubious":false,"date":"2016-02-04 11:19"},{"_id":"6819","normalized_imdb_id":90952,"title":"Peking Opera Blues","year":1986,"rating":3,"dubious":false,"date":"2016-04-02 15:09"},{"_id":"6935","normalized_imdb_id":91326,"title":"Karate Kid, Part II, The","year":1986,"rating":1,"dubious":false,"date":"2016-06-16 23:35"},{"_id":"6954","normalized_imdb_id":90830,"title":"Children of a Lesser God","year":1986,"rating":3,"dubious":false,"date":"2016-06-30 13:28"},{"_id":"6972","normalized_imdb_id":90655,"title":"April Fool's Day","year":1986,"rating":3,"dubious":false,"date":"2016-07-12 02:51"},{"_id":"6979","normalized_imdb_id":91530,"title":"Mission, The","year":1986,"rating":0,"dubious":false,"date":"2016-07-14 20:20"},{"_id":"7056","normalized_imdb_id":91083,"title":"From Beyond","year":1986,"rating":3,"dubious":false,"date":"2016-08-22 06:21"},{"_id":"7333","normalized_imdb_id":91605,"title":"Name Of The Rose, The","year":1986,"rating":0,"dubious":true,"date":"2016-12-16 19:18"},{"_id":"7472","normalized_imdb_id":91472,"title":"Manhattan Project, The","year":1986,"rating":2,"dubious":false,"date":"2017-02-26 14:27"},{"_id":"7480","normalized_imdb_id":91495,"title":"Matador","year":1986,"rating":3,"dubious":false,"date":"2017-03-03 11:22"},{"_id":"8123","normalized_imdb_id":91093,"title":"Fugitives, The","year":1986,"rating":0,"dubious":false,"date":"2018-03-19 21:30"},{"_id":"8286","normalized_imdb_id":91757,"title":"Pirates","year":1986,"rating":0,"dubious":false,"date":"2018-06-12 12:12"},{"_id":"8388","normalized_imdb_id":90887,"title":"Critters","year":1986,"rating":2,"dubious":true,"date":"2018-08-28 07:15"},{"_id":"8418","normalized_imdb_id":90837,"title":"Chopping Mall","year":1986,"rating":3,"dubious":false,"date":"2018-09-19 21:46"},{"_id":"8486","normalized_imdb_id":90917,"title":"Deadly Friend","year":1986,"rating":2,"dubious":false,"date":"2018-11-19 14:10"},{"_id":"8558","normalized_imdb_id":179955,"title":"Macskafogo","year":1986,"rating":1,"dubious":false,"date":"2018-12-15 00:00"},{"_id":"9121","normalized_imdb_id":91355,"title":"Terrorizers","year":1986,"rating":2,"dubious":false,"date":"2020-05-06 03:51"},{"_id":"9171","normalized_imdb_id":91939,"title":"She's Gotta Have It","year":1986,"rating":3,"dubious":false,"date":"2020-06-16 03:26"},{"_id":"9229","normalized_imdb_id":92133,"title":"Under the Cherry Moon","year":1986,"rating":3,"dubious":false,"date":"2020-08-06 23:17"},{"_id":"9374","normalized_imdb_id":92263,"title":"A Better Tomorrow","year":1986,"rating":0,"dubious":false,"date":"2020-12-14 12:17"},{"_id":"9304","normalized_imdb_id":90583,"title":"About Last Night","year":1986,"rating":3,"dubious":false,"date":"2020-10-12 02:32"},{"_id":"9411","normalized_imdb_id":90859,"title":"Cobra","year":1986,"rating":1,"dubious":false,"date":"2020-12-27 21:18"},{"_id":"9516","normalized_imdb_id":91278,"title":"Iron Eagle","year":1986,"rating":1,"dubious":false,"date":"2021-03-13 14:37"},{"_id":"9531","normalized_imdb_id":90927,"title":"Delta Force, The","year":1986,"rating":1,"dubious":false,"date":"2021-03-14 14:49"},{"_id":"9544","normalized_imdb_id":89695,"title":"No Retreat, No Surrender","year":1986,"rating":0,"dubious":false,"date":"2021-03-14 20:20"},{"_id":"9590","normalized_imdb_id":89010,"title":"Defiant Ones, The","year":1986,"rating":0,"dubious":false,"date":"2021-03-27 20:26"},{"_id":"9653","normalized_imdb_id":91080,"title":"Friday the 13th Part VI: Jason Lives","year":1986,"rating":3,"dubious":false,"date":"2021-04-17 11:51"},{"_id":"9854","normalized_imdb_id":92076,"title":"Texas Chainsaw Massacre Part 2, The","year":1986,"rating":0,"dubious":false,"date":"2021-05-28 20:22"},{"_id":"134","normalized_imdb_id":93105,"title":"Good Morning, Vietnam","year":1987,"rating":1,"dubious":false,"date":"2008-08-02 21:13"},{"_id":"321","normalized_imdb_id":92890,"title":"Dirty Dancing","year":1987,"rating":3,"dubious":false,"date":"2009-05-09 13:43"},{"_id":"322","normalized_imdb_id":93779,"title":"Princess Bride, The","year":1987,"rating":2,"dubious":false,"date":"2009-05-11 19:26"},{"_id":"547","normalized_imdb_id":93870,"title":"RoboCop","year":1987,"rating":1,"dubious":false,"date":"2009-11-22 22:14"},{"_id":"579","normalized_imdb_id":93756,"title":"Police Academy 4: Citizens on Patrol","year":1987,"rating":1,"dubious":false,"date":"2009-12-22 15:26"},{"_id":"720","normalized_imdb_id":93058,"title":"Full Metal Jacket","year":1987,"rating":0,"dubious":false,"date":"2010-04-04 11:54"},{"_id":"815","normalized_imdb_id":92603,"title":"Babette's Feast","year":1987,"rating":3,"dubious":false,"date":"2010-05-18 14:49"},{"_id":"1034","normalized_imdb_id":98675,"title":"Wonderful Wizard of Oz, The","year":1987,"rating":3,"dubious":false,"date":"2010-07-03 01:14"},{"_id":"1181","normalized_imdb_id":93225,"title":"Housekeeping","year":1987,"rating":3,"dubious":false,"date":"2010-07-16 20:28"},{"_id":"1203","normalized_imdb_id":93693,"title":"Overboard","year":1987,"rating":3,"dubious":false,"date":"2010-07-20 06:07"},{"_id":"1113","normalized_imdb_id":93409,"title":"Lethal Weapon","year":1987,"rating":1,"dubious":false,"date":"2010-07-08 13:36"},{"_id":"1078","normalized_imdb_id":94012,"title":"Spaceballs","year":1987,"rating":3,"dubious":true,"date":"2010-07-04 22:02"},{"_id":"1657","normalized_imdb_id":93940,"title":"September","year":1987,"rating":3,"dubious":false,"date":"2010-10-10 18:21"},{"_id":"1792","normalized_imdb_id":94315,"title":"Whales Of August, The","year":1987,"rating":3,"dubious":false,"date":"2010-11-30 17:50"},{"_id":"1849","normalized_imdb_id":92644,"title":"Beverly Hills Cop II","year":1987,"rating":1,"dubious":false,"date":"2010-12-14 06:47"},{"_id":"1862","normalized_imdb_id":92581,"title":"Around the World in Eighty Ways","year":1987,"rating":3,"dubious":true,"date":"2010-12-20 11:03"},{"_id":"1887","normalized_imdb_id":94336,"title":"Withnail & I","year":1987,"rating":1,"dubious":false,"date":"2011-01-02 16:13"},{"_id":"1902","normalized_imdb_id":90570,"title":"84 Charing Cross Road","year":1987,"rating":3,"dubious":false,"date":"2011-01-12 09:37"},{"_id":"1928","normalized_imdb_id":93773,"title":"Predator","year":1987,"rating":0,"dubious":false,"date":"2011-01-23 04:45"},{"_id":"2029","normalized_imdb_id":93223,"title":"House of Games","year":1987,"rating":3,"dubious":false,"date":"2011-02-15 01:13"},{"_id":"2215","normalized_imdb_id":95801,"title":"Bagdad Cafe","year":1987,"rating":3,"dubious":false,"date":"2011-04-23 18:29"},{"_id":"2218","normalized_imdb_id":93239,"title":"I've Heard the Mermaids Singing","year":1987,"rating":3,"dubious":false,"date":"2011-04-23 18:33"},{"_id":"2243","normalized_imdb_id":93191,"title":"Wings of Desire","year":1987,"rating":0,"dubious":false,"date":"2011-04-25 22:03"},{"_id":"2250","normalized_imdb_id":94332,"title":"Witches of Eastwick, The","year":1987,"rating":3,"dubious":false,"date":"2011-04-29 07:01"},{"_id":"2365","normalized_imdb_id":93146,"title":"Hard Ticket to Hawaii","year":1987,"rating":3,"dubious":false,"date":"2011-05-30 04:58"},{"_id":"2437","normalized_imdb_id":93818,"title":"Radio Days","year":1987,"rating":1,"dubious":false,"date":"2011-06-23 04:46"},{"_id":"2471","normalized_imdb_id":92563,"title":"Angel Heart","year":1987,"rating":1,"dubious":false,"date":"2011-06-29 23:00"},{"_id":"2523","normalized_imdb_id":92605,"title":"Baby Boom","year":1987,"rating":3,"dubious":false,"date":"2011-07-13 06:27"},{"_id":"2644","normalized_imdb_id":93512,"title":"Maurice","year":1987,"rating":2,"dubious":false,"date":"2011-08-29 07:16"},{"_id":"2665","normalized_imdb_id":95305,"title":"High Tide","year":1987,"rating":3,"dubious":false,"date":"2011-09-08 13:06"},{"_id":"2710","normalized_imdb_id":93011,"title":"Fatal Beauty","year":1987,"rating":2,"dubious":false,"date":"2011-09-25 05:24"},{"_id":"2744","normalized_imdb_id":93565,"title":"Moonstruck","year":1987,"rating":3,"dubious":false,"date":"2011-10-06 17:49"},{"_id":"2927","normalized_imdb_id":93748,"title":"Planes, Trains & Automobiles","year":1987,"rating":1,"dubious":false,"date":"2011-12-14 22:05"},{"_id":"3003","normalized_imdb_id":93437,"title":"Lost Boys, The","year":1987,"rating":1,"dubious":false,"date":"2012-01-25 16:21"},{"_id":"3249","normalized_imdb_id":93389,"title":"Last Emperor, The","year":1987,"rating":3,"dubious":false,"date":"2012-05-11 21:34"},{"_id":"3290","normalized_imdb_id":313254,"title":"Barbie and the Rockers: Out of This World","year":1987,"rating":3,"dubious":false,"date":"2012-05-28 01:03"},{"_id":"3582","normalized_imdb_id":93177,"title":"Hellraiser","year":1987,"rating":3,"dubious":false,"date":"2012-10-08 23:38"},{"_id":"3602","normalized_imdb_id":93617,"title":"Nice Girls Don't Explode","year":1987,"rating":3,"dubious":false,"date":"2012-10-16 19:22"},{"_id":"3611","normalized_imdb_id":93777,"title":"Prince of Darkness","year":1987,"rating":3,"dubious":false,"date":"2012-10-17 09:43"},{"_id":"3635","normalized_imdb_id":93822,"title":"Raising Arizona","year":1987,"rating":3,"dubious":false,"date":"2012-10-29 03:15"},{"_id":"3781","normalized_imdb_id":92752,"title":"Chipmunk Adventure, The","year":1987,"rating":3,"dubious":false,"date":"2012-12-29 03:10"},{"_id":"3898","normalized_imdb_id":93615,"title":"Ngati","year":1987,"rating":3,"dubious":false,"date":"2013-02-16 08:31"},{"_id":"3916","normalized_imdb_id":92991,"title":"Evil Dead II","year":1987,"rating":3,"dubious":true,"date":"2013-02-21 12:26"},{"_id":"4228","normalized_imdb_id":93690,"title":"Outrageous Fortune","year":1987,"rating":3,"dubious":false,"date":"2013-06-11 00:25"},{"_id":"4297","normalized_imdb_id":94074,"title":"Superman IV: The Quest for Peace","year":1987,"rating":3,"dubious":false,"date":"2013-07-02 00:51"},{"_id":"4412","normalized_imdb_id":93075,"title":"Gate, The","year":1987,"rating":2,"dubious":false,"date":"2013-07-28 22:08"},{"_id":"4535","normalized_imdb_id":90738,"title":"Black Widow","year":1987,"rating":3,"dubious":false,"date":"2013-09-01 05:23"},{"_id":"4620","normalized_imdb_id":92925,"title":"Dragnet","year":1987,"rating":3,"dubious":true,"date":"2013-09-22 20:03"},{"_id":"4737","normalized_imdb_id":93010,"title":"Fatal Attraction","year":1987,"rating":3,"dubious":true,"date":"2013-10-25 21:03"},{"_id":"4811","normalized_imdb_id":93415,"title":"Light of Day","year":1987,"rating":3,"dubious":false,"date":"2013-11-11 22:02"},{"_id":"5017","normalized_imdb_id":94089,"title":"Swimming to Cambodia","year":1987,"rating":0,"dubious":false,"date":"2013-12-31 17:43"},{"_id":"5290","normalized_imdb_id":93144,"title":"Hansel and Gretel","year":1987,"rating":3,"dubious":false,"date":"2014-03-17 00:21"},{"_id":"5310","normalized_imdb_id":92699,"title":"Broadcast News","year":1987,"rating":3,"dubious":false,"date":"2014-03-22 14:57"},{"_id":"5373","normalized_imdb_id":92965,"title":"Empire of the Sun","year":1987,"rating":1,"dubious":false,"date":"2014-04-08 09:04"},{"_id":"5592","normalized_imdb_id":93220,"title":"House II: The Second Story","year":1987,"rating":3,"dubious":false,"date":"2014-06-26 06:14"},{"_id":"5767","normalized_imdb_id":93629,"title":"A Nightmare on Elm Street 3: Dream Warriors","year":1987,"rating":3,"dubious":false,"date":"2014-09-20 14:13"},{"_id":"5789","normalized_imdb_id":94286,"title":"Waiting for the Moon","year":1987,"rating":3,"dubious":false,"date":"2014-09-30 06:03"},{"_id":"6062","normalized_imdb_id":92593,"title":"Au Revoir Les Enfants","year":1987,"rating":1,"dubious":false,"date":"2015-01-25 11:56"},{"_id":"6824","normalized_imdb_id":92796,"title":"Creepshow 2","year":1987,"rating":3,"dubious":true,"date":"2016-04-08 21:55"},{"_id":"6920","normalized_imdb_id":93300,"title":"Jaws: The Revenge","year":1987,"rating":3,"dubious":false,"date":"2016-06-07 07:32"},{"_id":"7002","normalized_imdb_id":94137,"title":"3 Men and a Baby","year":1987,"rating":1,"dubious":false,"date":"2016-07-27 21:07"},{"_id":"7035","normalized_imdb_id":93209,"title":"Hope and Glory","year":1987,"rating":3,"dubious":false,"date":"2016-08-10 19:24"},{"_id":"7049","normalized_imdb_id":92610,"title":"Bad Taste","year":1987,"rating":0,"dubious":false,"date":"2016-08-17 17:48"},{"_id":"7507","normalized_imdb_id":92513,"title":"Adventures in Babysitting","year":1987,"rating":3,"dubious":false,"date":"2017-03-12 23:00"},{"_id":"7590","normalized_imdb_id":92693,"title":"El bosque animado","year":1987,"rating":3,"dubious":false,"date":"2017-04-25 11:57"},{"_id":"7661","normalized_imdb_id":93412,"title":"La ley del deseo","year":1987,"rating":3,"dubious":false,"date":"2017-05-23 12:51"},{"_id":"7918","normalized_imdb_id":92972,"title":"Epidemic","year":1987,"rating":1,"dubious":false,"date":"2017-11-23 12:57"},{"_id":"8672","normalized_imdb_id":93936,"title":"Secret of My Succe$s, The","year":1987,"rating":1,"dubious":false,"date":"2019-03-12 12:59"},{"_id":"8692","normalized_imdb_id":93894,"title":"Running Man, The","year":1987,"rating":3,"dubious":true,"date":"2019-03-30 21:38"},{"_id":"9205","normalized_imdb_id":93589,"title":"My Demon Lover","year":1987,"rating":2,"dubious":false,"date":"2020-07-18 23:10"},{"_id":"9375","normalized_imdb_id":94357,"title":"A Better Tomorrow II","year":1987,"rating":0,"dubious":false,"date":"2020-12-14 12:19"},{"_id":"9286","normalized_imdb_id":92718,"title":"Can't Buy Me Love","year":1987,"rating":3,"dubious":false,"date":"2020-09-28 02:30"},{"_id":"9389","normalized_imdb_id":92860,"title":"Deathstalker II","year":1987,"rating":3,"dubious":false,"date":"2020-12-14 18:37"},{"_id":"9545","normalized_imdb_id":97991,"title":"No Retreat, No Surrender 2","year":1987,"rating":1,"dubious":false,"date":"2021-03-14 20:21"},{"_id":"9566","normalized_imdb_id":93507,"title":"Masters of the Universe","year":1987,"rating":3,"dubious":false,"date":"2021-03-16 21:10"},{"_id":"9609","normalized_imdb_id":94142,"title":"Throw Momma from the Train","year":1987,"rating":1,"dubious":false,"date":"2021-04-03 12:31"},{"_id":"9710","normalized_imdb_id":92546,"title":"Amazon Women on the Moon","year":1987,"rating":2,"dubious":false,"date":"2021-04-27 20:57"},{"_id":"9755","normalized_imdb_id":92962,"title":"Emmanuelle 5","year":1987,"rating":0,"dubious":false,"date":"2021-04-30 20:06"},{"_id":"9822","normalized_imdb_id":92730,"title":"Casanova","year":1987,"rating":2,"dubious":false,"date":"2021-05-13 21:42"},{"_id":"9852","normalized_imdb_id":93640,"title":"No Way Out","year":1987,"rating":1,"dubious":false,"date":"2021-05-27 13:12"},{"_id":"136","normalized_imdb_id":96438,"title":"Who Framed Roger Rabbit","year":1988,"rating":1,"dubious":false,"date":"2008-08-02 23:50"},{"_id":"256","normalized_imdb_id":94898,"title":"Coming to America","year":1988,"rating":3,"dubious":false,"date":"2009-01-17 00:26"},{"_id":"259","normalized_imdb_id":96283,"title":"Tonari no Totoro","year":1988,"rating":3,"dubious":false,"date":"2009-01-17 23:04"},{"_id":"572","normalized_imdb_id":96320,"title":"Twins","year":1988,"rating":3,"dubious":false,"date":"2009-12-20 09:38"},{"_id":"580","normalized_imdb_id":95882,"title":"Police Academy 5: Assignment: Miami Beach","year":1988,"rating":1,"dubious":false,"date":"2009-12-22 18:26"},{"_id":"619","normalized_imdb_id":95016,"title":"Die Hard","year":1988,"rating":3,"dubious":false,"date":"2010-01-21 21:15"},{"_id":"647","normalized_imdb_id":94721,"title":"Beetle Juice","year":1988,"rating":3,"dubious":false,"date":"2010-01-20 00:13"},{"_id":"739","normalized_imdb_id":96446,"title":"Willow","year":1988,"rating":3,"dubious":false,"date":"2010-04-17 04:35"},{"_id":"814","normalized_imdb_id":95583,"title":"Maniac Cop","year":1988,"rating":3,"dubious":false,"date":"2010-05-18 09:46"},{"_id":"859","normalized_imdb_id":97493,"title":"Heathers","year":1988,"rating":3,"dubious":false,"date":"2010-05-28 03:41"},{"_id":"940","normalized_imdb_id":95690,"title":"Mystic Pizza","year":1988,"rating":3,"dubious":false,"date":"2010-06-12 09:54"},{"_id":"1070","normalized_imdb_id":96463,"title":"Working Girl","year":1988,"rating":3,"dubious":false,"date":"2010-07-04 05:06"},{"_id":"1293","normalized_imdb_id":96256,"title":"They Live","year":1988,"rating":0,"dubious":false,"date":"2010-07-23 17:37"},{"_id":"1210","normalized_imdb_id":95776,"title":"Oliver & Company","year":1988,"rating":2,"dubious":false,"date":"2010-07-20 11:28"},{"_id":"1158","normalized_imdb_id":92675,"title":"Bloodsport","year":1988,"rating":1,"dubious":false,"date":"2010-07-11 00:40"},{"_id":"1629","normalized_imdb_id":94947,"title":"Dangerous Liaisons","year":1988,"rating":3,"dubious":false,"date":"2010-10-03 21:48"},{"_id":"1647","normalized_imdb_id":96523,"title":"L'etudiante","year":1988,"rating":3,"dubious":false,"date":"2010-10-05 22:09"},{"_id":"1714","normalized_imdb_id":95889,"title":"Poltergeist III","year":1988,"rating":3,"dubious":false,"date":"2010-11-01 03:29"},{"_id":"1824","normalized_imdb_id":95705,"title":"Naked Gun: From the Files of Police Squad!, The","year":1988,"rating":1,"dubious":false,"date":"2010-12-05 06:39"},{"_id":"1860","normalized_imdb_id":95444,"title":"Killer Klowns from Outer Space","year":1988,"rating":0,"dubious":false,"date":"2010-12-19 22:43"},{"_id":"1911","normalized_imdb_id":95159,"title":"A Fish Called Wanda","year":1988,"rating":3,"dubious":false,"date":"2011-01-14 14:32"},{"_id":"2903","normalized_imdb_id":95631,"title":"Midnight Run","year":1988,"rating":2,"dubious":false,"date":"2011-12-05 06:43"},{"_id":"2244","normalized_imdb_id":94625,"title":"Akira","year":1988,"rating":1,"dubious":false,"date":"2011-04-25 22:56"},{"_id":"2406","normalized_imdb_id":95675,"title":"Women on the Verge of a Nervous Breakdown","year":1988,"rating":3,"dubious":false,"date":"2011-06-17 11:27"},{"_id":"2462","normalized_imdb_id":95270,"title":"Hairspray","year":1988,"rating":3,"dubious":false,"date":"2011-06-29 14:16"},{"_id":"2485","normalized_imdb_id":96037,"title":"Satisfaction","year":1988,"rating":3,"dubious":false,"date":"2011-07-05 04:35"},{"_id":"2493","normalized_imdb_id":94715,"title":"Beaches","year":1988,"rating":3,"dubious":false,"date":"2011-07-06 10:27"},{"_id":"2502","normalized_imdb_id":94608,"title":"Accused, The","year":1988,"rating":3,"dubious":true,"date":"2011-07-07 07:35"},{"_id":"2505","normalized_imdb_id":94739,"title":"Big Business","year":1988,"rating":3,"dubious":false,"date":"2011-07-07 07:46"},{"_id":"2653","normalized_imdb_id":95145,"title":"Feds","year":1988,"rating":3,"dubious":false,"date":"2011-09-04 05:13"},{"_id":"2663","normalized_imdb_id":94612,"title":"Action Jackson","year":1988,"rating":1,"dubious":false,"date":"2011-09-07 18:27"},{"_id":"2784","normalized_imdb_id":94631,"title":"Alien Nation","year":1988,"rating":1,"dubious":false,"date":"2011-10-21 06:49"},{"_id":"2905","normalized_imdb_id":95489,"title":"Land Before Time, The","year":1988,"rating":3,"dubious":false,"date":"2011-12-06 01:46"},{"_id":"2960","normalized_imdb_id":95037,"title":"Distant Voices, Still Lives","year":1988,"rating":3,"dubious":false,"date":"2011-12-28 05:05"},{"_id":"3075","normalized_imdb_id":96289,"title":"Torch Song Trilogy","year":1988,"rating":1,"dubious":false,"date":"2012-02-27 10:25"},{"_id":"3448","normalized_imdb_id":189071,"title":"Scooby-Doo and the Ghoul School","year":1988,"rating":3,"dubious":false,"date":"2012-07-27 14:59"},{"_id":"3482","normalized_imdb_id":95953,"title":"Rain Man","year":1988,"rating":1,"dubious":false,"date":"2012-08-20 19:58"},{"_id":"3559","normalized_imdb_id":95593,"title":"Married to the Mob","year":1988,"rating":3,"dubious":false,"date":"2012-09-29 11:43"},{"_id":"4374","normalized_imdb_id":94668,"title":"Appleseed","year":1988,"rating":3,"dubious":false,"date":"2013-07-20 18:37"},{"_id":"4578","normalized_imdb_id":96487,"title":"Young Guns","year":1988,"rating":1,"dubious":false,"date":"2013-09-14 18:18"},{"_id":"4582","normalized_imdb_id":96001,"title":"Rock 'n' Roll Mom","year":1988,"rating":3,"dubious":false,"date":"2013-09-14 18:56"},{"_id":"4628","normalized_imdb_id":96324,"title":"Two Moon Junction","year":1988,"rating":3,"dubious":false,"date":"2013-09-24 21:59"},{"_id":"4672","normalized_imdb_id":94964,"title":"Dead Ringers","year":1988,"rating":2,"dubious":false,"date":"2013-10-07 01:45"},{"_id":"4705","normalized_imdb_id":94862,"title":"Child's Play","year":1988,"rating":3,"dubious":false,"date":"2013-10-17 16:37"},{"_id":"4774","normalized_imdb_id":95687,"title":"My Stepmother Is an Alien","year":1988,"rating":3,"dubious":false,"date":"2013-11-03 18:37"},{"_id":"4813","normalized_imdb_id":96465,"title":"World Gone Wild","year":1988,"rating":3,"dubious":true,"date":"2013-11-11 22:52"},{"_id":"4815","normalized_imdb_id":93171,"title":"Hell Comes to Frogtown","year":1988,"rating":3,"dubious":false,"date":"2013-11-12 00:02"},{"_id":"4986","normalized_imdb_id":96061,"title":"Scrooged","year":1988,"rating":3,"dubious":false,"date":"2013-12-25 23:01"},{"_id":"4990","normalized_imdb_id":94921,"title":"Crossing Delancey","year":1988,"rating":3,"dubious":false,"date":"2013-12-26 18:27"},{"_id":"4998","normalized_imdb_id":95765,"title":"Cinema Paradiso","year":1988,"rating":1,"dubious":false,"date":"2013-12-28 02:23"},{"_id":"5128","normalized_imdb_id":95497,"title":"Last Temptation of Christ, The","year":1988,"rating":2,"dubious":false,"date":"2014-02-02 17:52"},{"_id":"5179","normalized_imdb_id":330312,"title":"Gakkô no kaidan G","year":1988,"rating":0,"dubious":false,"date":"2014-02-17 02:01"},{"_id":"5258","normalized_imdb_id":96176,"title":"Sticky Fingers","year":1988,"rating":3,"dubious":false,"date":"2014-03-08 22:03"},{"_id":"5261","normalized_imdb_id":95294,"title":"Hellbound: Hellraiser II","year":1988,"rating":1,"dubious":false,"date":"2014-03-09 15:26"},{"_id":"5324","normalized_imdb_id":94737,"title":"Big","year":1988,"rating":1,"dubious":false,"date":"2014-03-25 07:10"},{"_id":"5383","normalized_imdb_id":94663,"title":"Another Woman","year":1988,"rating":3,"dubious":false,"date":"2014-04-11 07:16"},{"_id":"5569","normalized_imdb_id":94824,"title":"Caddyshack II","year":1988,"rating":3,"dubious":false,"date":"2014-06-16 13:59"},{"_id":"5595","normalized_imdb_id":96764,"title":"Adventures of Baron Munchausen, The","year":1988,"rating":1,"dubious":false,"date":"2014-06-27 18:11"},{"_id":"5867","normalized_imdb_id":95327,"title":"Grave of the Fireflies","year":1988,"rating":0,"dubious":false,"date":"2014-10-23 17:59"},{"_id":"5881","normalized_imdb_id":96163,"title":"Spoorloos","year":1988,"rating":1,"dubious":false,"date":"2014-10-28 21:03"},{"_id":"6020","normalized_imdb_id":95742,"title":"A Nightmare on Elm Street 4: The Dream Master","year":1988,"rating":3,"dubious":false,"date":"2015-01-06 22:44"},{"_id":"6746","normalized_imdb_id":96461,"title":"Wong gok ka moon","year":1988,"rating":0,"dubious":false,"date":"2016-02-25 23:10"},{"_id":"7099","normalized_imdb_id":95925,"title":"Pumpkinhead","year":1988,"rating":3,"dubious":true,"date":"2016-09-06 13:12"},{"_id":"7161","normalized_imdb_id":94606,"title":"Accidental Tourist, The","year":1988,"rating":2,"dubious":false,"date":"2016-09-29 13:42"},{"_id":"7423","normalized_imdb_id":93840,"title":"Remando al viento [Rowing with the Wind]","year":1988,"rating":2,"dubious":false,"date":"2017-01-30 19:47"},{"_id":"8389","normalized_imdb_id":94919,"title":"Critters 2","year":1988,"rating":3,"dubious":false,"date":"2018-08-29 06:58"},{"_id":"8406","normalized_imdb_id":97257,"title":"Earth Girls Are Easy","year":1988,"rating":2,"dubious":false,"date":"2018-09-06 14:42"},{"_id":"8515","normalized_imdb_id":95484,"title":"Lady in White","year":1988,"rating":1,"dubious":false,"date":"2018-12-09 20:29"},{"_id":"8771","normalized_imdb_id":95243,"title":"Gorillas in the Mist","year":1988,"rating":3,"dubious":false,"date":"2019-06-23 21:51"},{"_id":"9060","normalized_imdb_id":94812,"title":"Bull Durham","year":1988,"rating":2,"dubious":true,"date":"2020-04-01 01:13"},{"_id":"9206","normalized_imdb_id":97561,"title":"Igla","year":1988,"rating":0,"dubious":false,"date":"2020-07-19 05:55"},{"_id":"9418","normalized_imdb_id":95800,"title":"Bear, The","year":1988,"rating":0,"dubious":false,"date":"2020-12-28 18:12"},{"_id":"9410","normalized_imdb_id":95956,"title":"Rambo III","year":1988,"rating":0,"dubious":false,"date":"2020-12-27 21:08"},{"_id":"9453","normalized_imdb_id":95250,"title":"Big Blue, The","year":1988,"rating":2,"dubious":false,"date":"2021-01-23 17:47"},{"_id":"9489","normalized_imdb_id":96378,"title":"Vibes","year":1988,"rating":1,"dubious":false,"date":"2021-02-22 01:35"},{"_id":"9666","normalized_imdb_id":224412,"title":"Hiroshima Maiden","year":1988,"rating":3,"dubious":false,"date":"2021-04-21 15:32"},{"_id":"9676","normalized_imdb_id":95088,"title":"Elvira: Mistress of the Dark","year":1988,"rating":3,"dubious":false,"date":"2021-04-24 06:54"},{"_id":"9737","normalized_imdb_id":94588,"title":"'Gator Bait 2: Cajun Justice","year":1988,"rating":0,"dubious":false,"date":"2021-04-29 18:14"},{"_id":"9751","normalized_imdb_id":96114,"title":"Sisterhood, The","year":1988,"rating":3,"dubious":false,"date":"2021-04-30 10:35"},{"_id":"9758","normalized_imdb_id":95094,"title":"Emmanuelle 6","year":1988,"rating":3,"dubious":false,"date":"2021-04-30 20:15"},{"_id":"9769","normalized_imdb_id":98180,"title":"Red Scorpion","year":1988,"rating":0,"dubious":false,"date":"2021-05-01 10:47"},{"_id":"9821","normalized_imdb_id":94791,"title":"Bourne Identity, The","year":1988,"rating":0,"dubious":false,"date":"2021-05-13 21:38"},{"_id":"150","normalized_imdb_id":96874,"title":"Back to the Future Part II","year":1989,"rating":3,"dubious":false,"date":"2008-08-09 22:35"},{"_id":"159","normalized_imdb_id":98554,"title":"Uncle Buck","year":1989,"rating":3,"dubious":false,"date":"2008-08-11 11:38"},{"_id":"181","normalized_imdb_id":98635,"title":"When Harry Met Sally","year":1989,"rating":3,"dubious":false,"date":"2008-09-10 03:47"},{"_id":"336","normalized_imdb_id":98189,"title":"Resan till Melonia","year":1989,"rating":1,"dubious":false,"date":"2009-06-06 21:23"},{"_id":"511","normalized_imdb_id":98206,"title":"Road House","year":1989,"rating":1,"dubious":false,"date":"2009-09-21 23:17"},{"_id":"581","normalized_imdb_id":98105,"title":"Police Academy 6: City Under Siege","year":1989,"rating":1,"dubious":false,"date":"2009-12-22 19:07"},{"_id":"591","normalized_imdb_id":97940,"title":"Mystery Train","year":1989,"rating":3,"dubious":false,"date":"2009-12-27 21:54"},{"_id":"666","normalized_imdb_id":97757,"title":"Little Mermaid, The","year":1989,"rating":3,"dubious":false,"date":"2010-01-23 23:28"},{"_id":"734","normalized_imdb_id":97336,"title":"Fat Man and Little Boy","year":1989,"rating":1,"dubious":false,"date":"2010-04-12 05:15"},{"_id":"849","normalized_imdb_id":98519,"title":"Troop Beverly Hills","year":1989,"rating":3,"dubious":false,"date":"2010-05-27 20:46"},{"_id":"924","normalized_imdb_id":98384,"title":"Steel Magnolias","year":1989,"rating":3,"dubious":false,"date":"2010-06-08 17:58"},{"_id":"1023","normalized_imdb_id":96895,"title":"Batman","year":1989,"rating":1,"dubious":false,"date":"2010-07-02 23:55"},{"_id":"1049","normalized_imdb_id":97576,"title":"Indiana Jones and the Last Crusade","year":1989,"rating":0,"dubious":false,"date":"2010-07-04 03:11"},{"_id":"1201","normalized_imdb_id":98382,"title":"Star Trek V: The Final Frontier","year":1989,"rating":1,"dubious":false,"date":"2010-07-20 05:58"},{"_id":"1103","normalized_imdb_id":98319,"title":"Shirley Valentine","year":1989,"rating":3,"dubious":false,"date":"2010-07-05 10:27"},{"_id":"1463","normalized_imdb_id":84548,"title":"Przesluchanie","year":1989,"rating":3,"dubious":false,"date":"2010-08-11 20:52"},{"_id":"1540","normalized_imdb_id":97428,"title":"Ghostbusters II","year":1989,"rating":2,"dubious":false,"date":"2010-09-06 07:41"},{"_id":"1603","normalized_imdb_id":97523,"title":"Honey, I Shrunk the Kids","year":1989,"rating":3,"dubious":false,"date":"2010-09-23 02:08"},{"_id":"1499","normalized_imdb_id":100934,"title":"Wild Orchid","year":1989,"rating":3,"dubious":false,"date":"2010-08-23 23:45"},{"_id":"1478","normalized_imdb_id":96754,"title":"Abyss, The","year":1989,"rating":3,"dubious":false,"date":"2010-08-18 07:48"},{"_id":"1640","normalized_imdb_id":97731,"title":"Let It Ride","year":1989,"rating":2,"dubious":false,"date":"2010-10-04 07:07"},{"_id":"1833","normalized_imdb_id":97366,"title":"Fletch Lives","year":1989,"rating":1,"dubious":false,"date":"2010-12-09 03:29"},{"_id":"1834","normalized_imdb_id":98627,"title":"Weekend at Bernie's","year":1989,"rating":1,"dubious":false,"date":"2010-12-09 10:16"},{"_id":"1847","normalized_imdb_id":97423,"title":"Get Smart, Again!","year":1989,"rating":3,"dubious":false,"date":"2010-12-13 08:43"},{"_id":"2065","normalized_imdb_id":98724,"title":"Sex, Lies, and Videotape","year":1989,"rating":2,"dubious":true,"date":"2011-02-23 21:31"},{"_id":"2074","normalized_imdb_id":96734,"title":"'Burbs, The","year":1989,"rating":1,"dubious":false,"date":"2011-02-26 23:05"},{"_id":"2353","normalized_imdb_id":97499,"title":"Henry V","year":1989,"rating":3,"dubious":false,"date":"2011-05-28 10:05"},{"_id":"2361","normalized_imdb_id":97165,"title":"Dead Poets Society","year":1989,"rating":1,"dubious":false,"date":"2011-05-29 21:25"},{"_id":"2463","normalized_imdb_id":96928,"title":"Bill & Ted's Excellent Adventure","year":1989,"rating":2,"dubious":false,"date":"2011-06-29 14:17"},{"_id":"2488","normalized_imdb_id":98309,"title":"She-Devil","year":1989,"rating":3,"dubious":false,"date":"2011-07-05 07:05"},{"_id":"2528","normalized_imdb_id":96787,"title":"All Dogs Go to Heaven","year":1989,"rating":3,"dubious":false,"date":"2011-07-13 23:34"},{"_id":"2619","normalized_imdb_id":97123,"title":"Crimes and Misdemeanors","year":1989,"rating":3,"dubious":false,"date":"2011-08-15 13:32"},{"_id":"3808","normalized_imdb_id":97815,"title":"Major League","year":1989,"rating":1,"dubious":false,"date":"2013-01-06 17:05"},{"_id":"3803","normalized_imdb_id":98327,"title":"Seventh Continent, The","year":1989,"rating":3,"dubious":false,"date":"2013-01-03 22:28"},{"_id":"3932","normalized_imdb_id":97737,"title":"Leviathan","year":1989,"rating":3,"dubious":false,"date":"2013-02-24 07:35"},{"_id":"3934","normalized_imdb_id":97240,"title":"Drugstore Cowboy","year":1989,"rating":2,"dubious":false,"date":"2013-02-24 19:42"},{"_id":"4036","normalized_imdb_id":98546,"title":"UHF","year":1989,"rating":1,"dubious":false,"date":"2013-04-09 08:14"},{"_id":"4175","normalized_imdb_id":97858,"title":"Meet The Feebles","year":1989,"rating":3,"dubious":false,"date":"2013-05-29 07:15"},{"_id":"4268","normalized_imdb_id":98300,"title":"Shag","year":1989,"rating":3,"dubious":false,"date":"2013-06-24 19:38"},{"_id":"4270","normalized_imdb_id":98258,"title":"Say Anything...","year":1989,"rating":2,"dubious":false,"date":"2013-06-26 02:27"},{"_id":"4364","normalized_imdb_id":97742,"title":"Licence to Kill","year":1989,"rating":2,"dubious":false,"date":"2013-07-18 19:43"},{"_id":"4397","normalized_imdb_id":98032,"title":"Oranges Are Not The Only Fruit","year":1989,"rating":3,"dubious":false,"date":"2013-07-25 19:51"},{"_id":"4579","normalized_imdb_id":97235,"title":"Dream Team, The","year":1989,"rating":0,"dubious":false,"date":"2013-09-14 18:41"},{"_id":"4597","normalized_imdb_id":97108,"title":"Cook, the Thief, His Wife & Her Lover, The","year":1989,"rating":1,"dubious":false,"date":"2013-09-17 01:36"},{"_id":"4606","normalized_imdb_id":97162,"title":"Dead Calm","year":1989,"rating":0,"dubious":false,"date":"2013-09-21 03:44"},{"_id":"4646","normalized_imdb_id":97728,"title":"Leningrad Cowboys Go America","year":1989,"rating":0,"dubious":false,"date":"2013-09-29 14:58"},{"_id":"4760","normalized_imdb_id":98453,"title":"Teen Witch","year":1989,"rating":3,"dubious":false,"date":"2013-11-01 14:51"},{"_id":"5277","normalized_imdb_id":98536,"title":"Turner & Hooch","year":1989,"rating":1,"dubious":false,"date":"2014-03-12 17:46"},{"_id":"5534","normalized_imdb_id":103959,"title":"Chopper Chicks in Zombietown","year":1989,"rating":3,"dubious":false,"date":"2014-06-04 20:57"},{"_id":"5574","normalized_imdb_id":96969,"title":"Born on the Fourth of July","year":1989,"rating":3,"dubious":false,"date":"2014-06-18 17:51"},{"_id":"6024","normalized_imdb_id":97981,"title":"A Nightmare on Elm Street 5: The Dream Child","year":1989,"rating":3,"dubious":false,"date":"2015-01-07 06:27"},{"_id":"6594","normalized_imdb_id":97216,"title":"Do the Right Thing","year":1989,"rating":2,"dubious":false,"date":"2015-12-12 01:52"},{"_id":"6675","normalized_imdb_id":97388,"title":"Friday the 13th Part VIII: Jason Takes Manhattan","year":1989,"rating":3,"dubious":false,"date":"2016-01-22 21:42"},{"_id":"6975","normalized_imdb_id":97441,"title":"Glory","year":1989,"rating":0,"dubious":false,"date":"2016-07-13 03:23"},{"_id":"7048","normalized_imdb_id":97790,"title":"Loverboy","year":1989,"rating":3,"dubious":true,"date":"2016-08-17 15:58"},{"_id":"7213","normalized_imdb_id":97444,"title":"Godzilla vs. Biollante","year":1989,"rating":3,"dubious":false,"date":"2016-10-18 01:56"},{"_id":"7222","normalized_imdb_id":97733,"title":"Lethal Weapon 2","year":1989,"rating":3,"dubious":false,"date":"2016-10-25 16:19"},{"_id":"7255","normalized_imdb_id":97239,"title":"Driving Miss Daisy","year":1989,"rating":3,"dubious":false,"date":"2016-11-10 21:27"},{"_id":"7268","normalized_imdb_id":97351,"title":"Field of Dreams","year":1989,"rating":2,"dubious":false,"date":"2016-11-17 14:26"},{"_id":"7269","normalized_imdb_id":97937,"title":"My Left Foot","year":1989,"rating":3,"dubious":true,"date":"2016-11-17 14:29"},{"_id":"7438","normalized_imdb_id":97883,"title":"Millennium","year":1989,"rating":3,"dubious":false,"date":"2017-02-12 02:26"},{"_id":"7842","normalized_imdb_id":97182,"title":"Delinquents, The","year":1989,"rating":3,"dubious":false,"date":"2017-09-29 09:27"},{"_id":"8323","normalized_imdb_id":97958,"title":"National Lampoon's Christmas Vacation","year":1989,"rating":3,"dubious":false,"date":"2018-07-12 23:38"},{"_id":"8470","normalized_imdb_id":94849,"title":"Celia","year":1989,"rating":3,"dubious":false,"date":"2018-11-03 13:06"},{"_id":"8507","normalized_imdb_id":96869,"title":"Babar: The Movie","year":1989,"rating":3,"dubious":false,"date":"2018-12-02 04:47"},{"_id":"8997","normalized_imdb_id":98257,"title":"Savage Beach","year":1989,"rating":3,"dubious":false,"date":"2020-02-03 19:00"},{"_id":"9485","normalized_imdb_id":97659,"title":"Kickboxer","year":1989,"rating":0,"dubious":false,"date":"2021-02-18 22:06"},{"_id":"9487","normalized_imdb_id":96945,"title":"Blind Fury","year":1989,"rating":1,"dubious":false,"date":"2021-02-18 22:28"},{"_id":"9515","normalized_imdb_id":97647,"title":"Karate Kid Part III, The","year":1989,"rating":0,"dubious":false,"date":"2021-03-13 14:21"},{"_id":"9528","normalized_imdb_id":97202,"title":"Killer, The","year":1989,"rating":0,"dubious":false,"date":"2021-03-14 14:28"},{"_id":"9539","normalized_imdb_id":97334,"title":"Farewell to the King","year":1989,"rating":0,"dubious":false,"date":"2021-03-14 16:34"},{"_id":"9727","normalized_imdb_id":98439,"title":"Tango & Cash","year":1989,"rating":0,"dubious":false,"date":"2021-04-29 17:40"},{"_id":"9752","normalized_imdb_id":98193,"title":"Return of Swamp Thing, The","year":1989,"rating":3,"dubious":false,"date":"2021-04-30 12:18"},{"_id":"9770","normalized_imdb_id":98141,"title":"Punisher, The","year":1989,"rating":1,"dubious":false,"date":"2021-05-01 11:00"},{"_id":"118","normalized_imdb_id":100802,"title":"Total Recall","year":1990,"rating":1,"dubious":false,"date":"2008-08-01 00:12"},{"_id":"151","normalized_imdb_id":99088,"title":"Back to the Future Part III","year":1990,"rating":1,"dubious":false,"date":"2008-08-09 22:36"},{"_id":"209","normalized_imdb_id":100944,"title":"Witches, The","year":1990,"rating":3,"dubious":false,"date":"2008-10-23 16:57"},{"_id":"432","normalized_imdb_id":99785,"title":"Home Alone","year":1990,"rating":3,"dubious":false,"date":"2009-08-09 21:26"},{"_id":"443","normalized_imdb_id":100140,"title":"Mermaids","year":1990,"rating":3,"dubious":false,"date":"2009-08-10 16:37"},{"_id":"454","normalized_imdb_id":99864,"title":"It","year":1990,"rating":1,"dubious":false,"date":"2009-08-14 11:39"},{"_id":"459","normalized_imdb_id":100157,"title":"Misery","year":1990,"rating":1,"dubious":false,"date":"2009-08-15 17:27"},{"_id":"533","normalized_imdb_id":100395,"title":"Postcards from the Edge","year":1990,"rating":3,"dubious":false,"date":"2009-10-29 20:07"},{"_id":"796","normalized_imdb_id":100024,"title":"Life Is Sweet","year":1990,"rating":3,"dubious":false,"date":"2010-05-13 19:03"},{"_id":"869","normalized_imdb_id":100263,"title":"Nikita","year":1990,"rating":3,"dubious":false,"date":"2010-05-28 21:11"},{"_id":"926","normalized_imdb_id":99731,"title":"Handmaid's Tale, The","year":1990,"rating":3,"dubious":false,"date":"2010-06-09 02:17"},{"_id":"1173","normalized_imdb_id":100151,"title":"Mindwalk","year":1990,"rating":3,"dubious":false,"date":"2010-07-14 11:52"},{"_id":"1130","normalized_imdb_id":99653,"title":"Ghost","year":1990,"rating":3,"dubious":false,"date":"2010-07-09 05:08"},{"_id":"1441","normalized_imdb_id":100332,"title":"Paris is Burning","year":1990,"rating":3,"dubious":false,"date":"2010-08-04 22:30"},{"_id":"1663","normalized_imdb_id":100814,"title":"Tremors","year":1990,"rating":3,"dubious":false,"date":"2010-10-15 22:11"},{"_id":"1728","normalized_imdb_id":100990,"title":"I, the Worst of All","year":1990,"rating":3,"dubious":false,"date":"2010-11-02 10:21"},{"_id":"1935","normalized_imdb_id":100928,"title":"White Hunter Black Heart","year":1990,"rating":1,"dubious":false,"date":"2011-01-28 10:02"},{"_id":"2156","normalized_imdb_id":100405,"title":"Pretty Woman","year":1990,"rating":3,"dubious":false,"date":"2011-03-31 14:23"},{"_id":"2211","normalized_imdb_id":99685,"title":"Goodfellas","year":1990,"rating":3,"dubious":true,"date":"2011-04-23 18:22"},{"_id":"2242","normalized_imdb_id":99365,"title":"Darkman","year":1990,"rating":0,"dubious":false,"date":"2011-04-25 03:35"},{"_id":"2379","normalized_imdb_id":196378,"title":"Bimbos B.C.","year":1990,"rating":3,"dubious":false,"date":"2011-06-08 23:29"},{"_id":"2296","normalized_imdb_id":99040,"title":"An Angel at My Table","year":1990,"rating":3,"dubious":false,"date":"2011-05-15 05:44"},{"_id":"2313","normalized_imdb_id":99165,"title":"Bonfire of the Vanities, The","year":1990,"rating":2,"dubious":false,"date":"2011-05-19 20:53"},{"_id":"2442","normalized_imdb_id":99487,"title":"Edward Scissorhands","year":1990,"rating":3,"dubious":false,"date":"2011-06-25 21:56"},{"_id":"2577","normalized_imdb_id":100935,"title":"Wild at Heart","year":1990,"rating":2,"dubious":false,"date":"2011-07-27 09:05"},{"_id":"2820","normalized_imdb_id":99892,"title":"Joe Versus the Volcano","year":1990,"rating":2,"dubious":false,"date":"2011-11-02 03:25"},{"_id":"2942","normalized_imdb_id":99582,"title":"Flatliners","year":1990,"rating":3,"dubious":false,"date":"2011-12-19 01:21"},{"_id":"2963","normalized_imdb_id":99423,"title":"Die Hard 2","year":1990,"rating":3,"dubious":true,"date":"2011-12-29 04:47"},{"_id":"3000","normalized_imdb_id":99810,"title":"Hunt for Red October, The","year":1990,"rating":1,"dubious":true,"date":"2012-01-25 02:59"},{"_id":"3247","normalized_imdb_id":99733,"title":"Happily Ever After","year":1990,"rating":3,"dubious":false,"date":"2012-05-11 19:03"},{"_id":"3524","normalized_imdb_id":100530,"title":"Russia House, The","year":1990,"rating":0,"dubious":false,"date":"2012-09-09 10:53"},{"_id":"3561","normalized_imdb_id":100234,"title":"Close-Up","year":1990,"rating":1,"dubious":false,"date":"2012-09-29 20:31"},{"_id":"3566","normalized_imdb_id":98147,"title":"Qin yong","year":1990,"rating":3,"dubious":false,"date":"2012-09-30 08:48"},{"_id":"3662","normalized_imdb_id":99817,"title":"Dark Angel (I Come in Peace)","year":1990,"rating":0,"dubious":false,"date":"2012-11-06 04:17"},{"_id":"3721","normalized_imdb_id":359610,"title":"A Little Night Music","year":1990,"rating":3,"dubious":false,"date":"2012-12-06 20:46"},{"_id":"4034","normalized_imdb_id":100046,"title":"Long Walk Home, The","year":1990,"rating":3,"dubious":false,"date":"2013-04-07 12:51"},{"_id":"4080","normalized_imdb_id":99818,"title":"I Hired a Contract Killer","year":1990,"rating":0,"dubious":false,"date":"2013-04-23 09:46"},{"_id":"4174","normalized_imdb_id":102993,"title":"Strangers in Good Company","year":1990,"rating":3,"dubious":false,"date":"2013-05-29 01:36"},{"_id":"4574","normalized_imdb_id":99819,"title":"I love you to death","year":1990,"rating":3,"dubious":false,"date":"2013-09-14 10:52"},{"_id":"4706","normalized_imdb_id":99253,"title":"Child's Play 2","year":1990,"rating":3,"dubious":false,"date":"2013-10-17 16:52"},{"_id":"4719","normalized_imdb_id":105643,"title":"Troll 2","year":1990,"rating":3,"dubious":false,"date":"2013-10-20 06:21"},{"_id":"4750","normalized_imdb_id":100150,"title":"Miller's Crossing","year":1990,"rating":0,"dubious":false,"date":"2013-10-29 16:56"},{"_id":"4807","normalized_imdb_id":99005,"title":"Air America","year":1990,"rating":0,"dubious":false,"date":"2013-11-11 04:46"},{"_id":"5182","normalized_imdb_id":100403,"title":"Predator 2","year":1990,"rating":2,"dubious":true,"date":"2014-02-17 07:15"},{"_id":"5237","normalized_imdb_id":100502,"title":"RoboCop 2","year":1990,"rating":1,"dubious":false,"date":"2014-03-05 21:11"},{"_id":"5284","normalized_imdb_id":100758,"title":"Teenage Mutant Ninja Turtles","year":1990,"rating":2,"dubious":true,"date":"2014-03-16 16:06"},{"_id":"5301","normalized_imdb_id":97106,"title":"A Tale of Springtime","year":1990,"rating":3,"dubious":false,"date":"2014-03-19 07:35"},{"_id":"5333","normalized_imdb_id":98532,"title":"Match Factory Girl, The","year":1990,"rating":3,"dubious":true,"date":"2014-03-28 07:55"},{"_id":"5347","normalized_imdb_id":99776,"title":"Europa Europa","year":1990,"rating":2,"dubious":false,"date":"2014-04-01 03:34"},{"_id":"5399","normalized_imdb_id":98897,"title":"Portrait of a Marriage","year":1990,"rating":3,"dubious":false,"date":"2014-04-15 17:16"},{"_id":"5556","normalized_imdb_id":100054,"title":"Lord of the Flies","year":1990,"rating":0,"dubious":false,"date":"2014-06-09 13:06"},{"_id":"5581","normalized_imdb_id":100691,"title":"Stella","year":1990,"rating":2,"dubious":false,"date":"2014-06-20 18:54"},{"_id":"5614","normalized_imdb_id":100911,"title":"Welcome Home, Roxy Carmichael","year":1990,"rating":3,"dubious":false,"date":"2014-07-05 03:21"},{"_id":"5688","normalized_imdb_id":99871,"title":"Jacob's Ladder","year":1990,"rating":1,"dubious":false,"date":"2014-08-11 05:56"},{"_id":"5776","normalized_imdb_id":100924,"title":"Where the Heart Is","year":1990,"rating":3,"dubious":false,"date":"2014-09-25 06:39"},{"_id":"5777","normalized_imdb_id":100404,"title":"Presumed Innocent","year":1990,"rating":1,"dubious":false,"date":"2014-09-25 09:47"},{"_id":"5908","normalized_imdb_id":142233,"title":"Dragon Ball Z: The Movie - The Tree of Might","year":1990,"rating":1,"dubious":false,"date":"2014-11-08 19:36"},{"_id":"6081","normalized_imdb_id":99012,"title":"Alice","year":1990,"rating":3,"dubious":false,"date":"2015-01-27 03:49"},{"_id":"6289","normalized_imdb_id":99321,"title":"Criminal Justice","year":1990,"rating":3,"dubious":false,"date":"2015-06-01 23:34"},{"_id":"6542","normalized_imdb_id":99938,"title":"Kindergarten Cop","year":1990,"rating":3,"dubious":false,"date":"2015-11-16 02:54"},{"_id":"6562","normalized_imdb_id":99329,"title":"Cry-Baby","year":1990,"rating":3,"dubious":false,"date":"2015-11-28 16:30"},{"_id":"6656","normalized_imdb_id":100557,"title":"Nasty Girl (Das schreckliche Mädchen), The","year":1990,"rating":3,"dubious":false,"date":"2016-01-08 03:50"},{"_id":"7426","normalized_imdb_id":142245,"title":"Dragon Ball Z: Bardock - The Father of Goku","year":1990,"rating":0,"dubious":false,"date":"2017-01-31 20:49"},{"_id":"7626","normalized_imdb_id":99348,"title":"Dances with Wolves","year":1990,"rating":1,"dubious":false,"date":"2017-05-21 11:50"},{"_id":"7659","normalized_imdb_id":100519,"title":"Rosencrantz & Guildenstern Are Dead","year":1990,"rating":1,"dubious":false,"date":"2017-05-21 18:13"},{"_id":"8021","normalized_imdb_id":99768,"title":"Hidden Agenda","year":1990,"rating":3,"dubious":false,"date":"2018-01-23 14:41"},{"_id":"8043","normalized_imdb_id":99277,"title":"Class of 1999","year":1990,"rating":2,"dubious":true,"date":"2018-02-09 20:35"},{"_id":"8051","normalized_imdb_id":100477,"title":"Rescuers Down Under, The","year":1990,"rating":1,"dubious":false,"date":"2018-02-15 00:39"},{"_id":"8061","normalized_imdb_id":99674,"title":"Godfather: Part III, The","year":1990,"rating":3,"dubious":false,"date":"2018-02-16 22:11"},{"_id":"8097","normalized_imdb_id":100142,"title":"Metropolitan","year":1990,"rating":3,"dubious":false,"date":"2018-03-07 03:14"},{"_id":"8584","normalized_imdb_id":100469,"title":"Reflecting Skin, The","year":1990,"rating":1,"dubious":false,"date":"2019-01-04 06:43"},{"_id":"8929","normalized_imdb_id":103768,"title":"Barbarian Queen II: The Empress Strikes Back","year":1990,"rating":3,"dubious":false,"date":"2019-12-11 15:23"},{"_id":"9481","normalized_imdb_id":100594,"title":"Sheltering Sky, The","year":1990,"rating":0,"dubious":true,"date":"2021-02-18 08:25"},{"_id":"9529","normalized_imdb_id":99426,"title":"Bullet in the Head","year":1990,"rating":1,"dubious":false,"date":"2021-03-14 14:31"},{"_id":"9530","normalized_imdb_id":100232,"title":"Navy Seals","year":1990,"rating":0,"dubious":false,"date":"2021-03-14 14:44"},{"_id":"9532","normalized_imdb_id":99399,"title":"Delta Force 2: The Colombian Connection","year":1990,"rating":1,"dubious":false,"date":"2021-03-14 14:51"},{"_id":"9537","normalized_imdb_id":100222,"title":"Naked Tango","year":1990,"rating":1,"dubious":false,"date":"2021-03-14 16:01"},{"_id":"9546","normalized_imdb_id":100266,"title":"No Retreat, No Surrender 3: Blood Brothers","year":1990,"rating":0,"dubious":false,"date":"2021-03-14 20:22"},{"_id":"9563","normalized_imdb_id":100029,"title":"Lionheart","year":1990,"rating":1,"dubious":false,"date":"2021-03-16 08:27"},{"_id":"9726","normalized_imdb_id":100507,"title":"Rocky V","year":1990,"rating":0,"dubious":false,"date":"2021-04-29 17:39"},{"_id":"9813","normalized_imdb_id":99772,"title":"Hiroshima: Out of the Ashes","year":1990,"rating":3,"dubious":false,"date":"2021-05-12 20:34"},{"_id":"9923","normalized_imdb_id":99700,"title":"Gremlins 2: The New Batch","year":1990,"rating":2,"dubious":false,"date":"2021-07-02 08:32"},{"_id":"10013","normalized_imdb_id":100260,"title":"Nightbreed","year":1990,"rating":3,"dubious":false,"date":"2021-08-18 11:29"},{"_id":"32","normalized_imdb_id":102926,"title":"Silence of the Lambs, The","year":1991,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"183","normalized_imdb_id":101414,"title":"Beauty and the Beast","year":1991,"rating":3,"dubious":false,"date":"2008-09-13 11:06"},{"_id":"266","normalized_imdb_id":103074,"title":"Thelma & Louise","year":1991,"rating":3,"dubious":false,"date":"2009-01-31 23:19"},{"_id":"308","normalized_imdb_id":102587,"title":"Omohide poro poro","year":1991,"rating":3,"dubious":false,"date":"2009-03-29 22:17"},{"_id":"467","normalized_imdb_id":102609,"title":"Other People's Money","year":1991,"rating":3,"dubious":false,"date":"2009-08-17 19:58"},{"_id":"512","normalized_imdb_id":102685,"title":"Point Break","year":1991,"rating":0,"dubious":false,"date":"2009-09-21 23:22"},{"_id":"710","normalized_imdb_id":103030,"title":"Tacones Lejanos","year":1991,"rating":3,"dubious":false,"date":"2010-03-30 09:56"},{"_id":"767","normalized_imdb_id":101921,"title":"Fried Green Tomatoes","year":1991,"rating":3,"dubious":false,"date":"2010-04-26 15:37"},{"_id":"847","normalized_imdb_id":103064,"title":"Terminator 2: Judgement Day","year":1991,"rating":3,"dubious":true,"date":"2010-05-27 20:28"},{"_id":"879","normalized_imdb_id":102898,"title":"Shakes the Clown","year":1991,"rating":3,"dubious":false,"date":"2010-05-30 02:11"},{"_id":"913","normalized_imdb_id":102103,"title":"Impromptu","year":1991,"rating":3,"dubious":false,"date":"2010-06-07 03:13"},{"_id":"1033","normalized_imdb_id":102057,"title":"Hook","year":1991,"rating":2,"dubious":false,"date":"2010-07-03 01:11"},{"_id":"1346","normalized_imdb_id":101898,"title":"Flirting","year":1991,"rating":2,"dubious":false,"date":"2010-07-26 20:20"},{"_id":"1297","normalized_imdb_id":101640,"title":"Raise the Red Lantern","year":1991,"rating":3,"dubious":true,"date":"2010-07-24 05:54"},{"_id":"1125","normalized_imdb_id":103247,"title":"White Fang","year":1991,"rating":1,"dubious":false,"date":"2010-07-09 04:57"},{"_id":"1429","normalized_imdb_id":101597,"title":"Closet Land","year":1991,"rating":0,"dubious":false,"date":"2010-08-02 20:03"},{"_id":"1089","normalized_imdb_id":101745,"title":"Doc Hollywood","year":1991,"rating":1,"dubious":false,"date":"2010-07-04 22:53"},{"_id":"1579","normalized_imdb_id":102798,"title":"Robin Hood: Prince of Thieves","year":1991,"rating":3,"dubious":true,"date":"2010-09-19 21:18"},{"_id":"1405","normalized_imdb_id":101889,"title":"Fisher King, The","year":1991,"rating":3,"dubious":true,"date":"2010-07-29 22:22"},{"_id":"1697","normalized_imdb_id":103112,"title":"Toy Soldiers","year":1991,"rating":0,"dubious":false,"date":"2010-10-24 18:23"},{"_id":"1825","normalized_imdb_id":102510,"title":"Naked Gun 2 1/2: The Smell of Fear, The","year":1991,"rating":1,"dubious":false,"date":"2010-12-05 06:47"},{"_id":"1846","normalized_imdb_id":102943,"title":"Slacker","year":1991,"rating":3,"dubious":false,"date":"2010-12-13 04:35"},{"_id":"2180","normalized_imdb_id":101765,"title":"Double Life of Veronique, The","year":1991,"rating":3,"dubious":false,"date":"2011-04-09 20:11"},{"_id":"2216","normalized_imdb_id":102829,"title":"Salmonberries","year":1991,"rating":3,"dubious":false,"date":"2011-04-23 18:30"},{"_id":"2315","normalized_imdb_id":101410,"title":"Barton Fink","year":1991,"rating":1,"dubious":false,"date":"2011-05-20 20:09"},{"_id":"2326","normalized_imdb_id":101465,"title":"Black Robe","year":1991,"rating":1,"dubious":false,"date":"2011-05-23 01:54"},{"_id":"2408","normalized_imdb_id":102436,"title":"'Merci la vie'","year":1991,"rating":3,"dubious":false,"date":"2011-06-17 13:43"},{"_id":"2455","normalized_imdb_id":104057,"title":"Daughters of the Dust","year":1991,"rating":3,"dubious":false,"date":"2011-06-29 12:57"},{"_id":"2491","normalized_imdb_id":101329,"title":"An American Tail: Fievel Goes West","year":1991,"rating":3,"dubious":false,"date":"2011-07-06 06:40"},{"_id":"2637","normalized_imdb_id":101757,"title":"Don't Tell Mom the Babysitter's Dead","year":1991,"rating":3,"dubious":false,"date":"2011-08-24 14:57"},{"_id":"2740","normalized_imdb_id":103060,"title":"Teenage Mutant Ninja Turtles II: The Secret of the Ooze","year":1991,"rating":3,"dubious":false,"date":"2011-10-05 22:42"},{"_id":"2785","normalized_imdb_id":101701,"title":"Delirious","year":1991,"rating":1,"dubious":false,"date":"2011-10-21 06:49"},{"_id":"2846","normalized_imdb_id":102536,"title":"Night on Earth","year":1991,"rating":3,"dubious":false,"date":"2011-11-18 15:21"},{"_id":"2857","normalized_imdb_id":104922,"title":"Motorama","year":1991,"rating":1,"dubious":false,"date":"2011-11-20 22:29"},{"_id":"2913","normalized_imdb_id":101627,"title":"Critters 3","year":1991,"rating":3,"dubious":false,"date":"2011-12-08 00:56"},{"_id":"3036","normalized_imdb_id":102817,"title":"Rubin and Ed","year":1991,"rating":0,"dubious":false,"date":"2012-02-09 18:07"},{"_id":"3058","normalized_imdb_id":102573,"title":"Object of Beauty, The","year":1991,"rating":3,"dubious":false,"date":"2012-02-20 00:52"},{"_id":"3251","normalized_imdb_id":101452,"title":"Bill & Ted's Bogus Journey","year":1991,"rating":1,"dubious":false,"date":"2012-05-12 14:54"},{"_id":"3292","normalized_imdb_id":103241,"title":"What About Bob?","year":1991,"rating":2,"dubious":false,"date":"2012-05-29 07:12"},{"_id":"3544","normalized_imdb_id":102070,"title":"Hudson Hawk","year":1991,"rating":3,"dubious":false,"date":"2012-09-24 10:25"},{"_id":"3563","normalized_imdb_id":102059,"title":"Hot Shots!","year":1991,"rating":1,"dubious":false,"date":"2012-09-29 22:22"},{"_id":"3592","normalized_imdb_id":102975,"title":"Star Trek VI: The Undiscovered Country","year":1991,"rating":2,"dubious":true,"date":"2012-10-15 00:03"},{"_id":"3595","normalized_imdb_id":101272,"title":"Addams Family, The","year":1991,"rating":3,"dubious":false,"date":"2012-10-15 15:52"},{"_id":"3987","normalized_imdb_id":102803,"title":"Rocketeer, The","year":1991,"rating":1,"dubious":false,"date":"2013-03-17 17:41"},{"_id":"4241","normalized_imdb_id":99851,"title":"Into The Woods","year":1991,"rating":3,"dubious":false,"date":"2013-06-14 19:12"},{"_id":"4290","normalized_imdb_id":102266,"title":"Last Boy Scout, The","year":1991,"rating":3,"dubious":true,"date":"2013-06-29 12:44"},{"_id":"4358","normalized_imdb_id":104981,"title":"Neon City","year":1991,"rating":3,"dubious":false,"date":"2013-07-17 12:06"},{"_id":"4577","normalized_imdb_id":102303,"title":"Life Stinks","year":1991,"rating":0,"dubious":false,"date":"2013-09-14 18:13"},{"_id":"4631","normalized_imdb_id":101698,"title":"Defending Your Life","year":1991,"rating":3,"dubious":true,"date":"2013-09-27 01:03"},{"_id":"4666","normalized_imdb_id":102250,"title":"L.A. Story","year":1991,"rating":3,"dubious":true,"date":"2013-10-06 15:34"},{"_id":"4736","normalized_imdb_id":101829,"title":"Europa","year":1991,"rating":0,"dubious":false,"date":"2013-10-25 20:19"},{"_id":"4973","normalized_imdb_id":107875,"title":"Princess and the Goblin, The","year":1991,"rating":3,"dubious":false,"date":"2013-12-22 20:23"},{"_id":"5133","normalized_imdb_id":100009,"title":"Lethal Games","year":1991,"rating":3,"dubious":false,"date":"2014-02-04 02:39"},{"_id":"5260","normalized_imdb_id":102370,"title":"Madonna: Truth or Dare","year":1991,"rating":3,"dubious":false,"date":"2014-03-09 03:43"},{"_id":"5265","normalized_imdb_id":102492,"title":"My Girl","year":1991,"rating":3,"dubious":false,"date":"2014-03-09 22:16"},{"_id":"5332","normalized_imdb_id":101318,"title":"Lovers on the Bridge, The","year":1991,"rating":1,"dubious":false,"date":"2014-03-28 07:51"},{"_id":"5638","normalized_imdb_id":101507,"title":"Boyz n the Hood","year":1991,"rating":2,"dubious":false,"date":"2014-07-14 13:11"},{"_id":"5639","normalized_imdb_id":102313,"title":"Linguini Incident, The","year":1991,"rating":3,"dubious":false,"date":"2014-07-15 01:49"},{"_id":"5814","normalized_imdb_id":101891,"title":"Five Heartbeats, The","year":1991,"rating":1,"dubious":false,"date":"2014-10-07 19:48"},{"_id":"5833","normalized_imdb_id":99422,"title":"Dick Tracy","year":1991,"rating":1,"dubious":false,"date":"2014-10-11 22:41"},{"_id":"6028","normalized_imdb_id":101917,"title":"Freddy's Dead: The Final Nightmare","year":1991,"rating":2,"dubious":false,"date":"2015-01-07 23:07"},{"_id":"6089","normalized_imdb_id":1125254,"title":"Dragon Ball Z: Cooler's Revenge","year":1991,"rating":0,"dubious":false,"date":"2015-02-01 02:14"},{"_id":"6335","normalized_imdb_id":102522,"title":"Nekromantik 2","year":1991,"rating":1,"dubious":false,"date":"2015-06-29 15:02"},{"_id":"6371","normalized_imdb_id":102951,"title":"Soapdish","year":1991,"rating":3,"dubious":false,"date":"2015-07-26 10:33"},{"_id":"7146","normalized_imdb_id":102797,"title":"Robin Hood","year":1991,"rating":1,"dubious":false,"date":"2016-09-26 20:29"},{"_id":"7163","normalized_imdb_id":105121,"title":"People Under the Stairs, The","year":1991,"rating":3,"dubious":false,"date":"2016-09-29 22:01"},{"_id":"7172","normalized_imdb_id":101991,"title":"Hachi-gatsu no rapusodi","year":1991,"rating":3,"dubious":false,"date":"2016-10-06 06:50"},{"_id":"7235","normalized_imdb_id":98063,"title":"Paprika","year":1991,"rating":3,"dubious":false,"date":"2016-11-02 09:00"},{"_id":"7200","normalized_imdb_id":102138,"title":"JFK","year":1991,"rating":3,"dubious":false,"date":"2016-10-15 22:46"},{"_id":"7365","normalized_imdb_id":101587,"title":"City Slickers","year":1991,"rating":3,"dubious":false,"date":"2016-12-29 20:59"},{"_id":"7609","normalized_imdb_id":100491,"title":"Riff-Raff","year":1991,"rating":0,"dubious":false,"date":"2017-05-17 13:14"},{"_id":"7632","normalized_imdb_id":101912,"title":"Frankie and Johnny","year":1991,"rating":1,"dubious":false,"date":"2017-05-21 12:55"},{"_id":"7650","normalized_imdb_id":102494,"title":"My Own Private Idaho","year":1991,"rating":1,"dubious":false,"date":"2017-05-21 15:27"},{"_id":"7655","normalized_imdb_id":102603,"title":"Oscar","year":1991,"rating":2,"dubious":false,"date":"2017-05-21 17:34"},{"_id":"7938","normalized_imdb_id":101540,"title":"Cape Fear","year":1991,"rating":3,"dubious":false,"date":"2017-12-09 22:54"},{"_id":"8062","normalized_imdb_id":102426,"title":"Mediterraneo","year":1991,"rating":2,"dubious":true,"date":"2018-02-17 14:14"},{"_id":"9094","normalized_imdb_id":101458,"title":"Until the End of the World","year":1991,"rating":3,"dubious":false,"date":"2020-04-26 19:27"},{"_id":"9322","normalized_imdb_id":130236,"title":"Samurai Cop","year":1991,"rating":1,"dubious":false,"date":"2020-11-06 04:42"},{"_id":"9378","normalized_imdb_id":102034,"title":"Highlander II","year":1991,"rating":1,"dubious":false,"date":"2020-12-14 13:49"},{"_id":"9517","normalized_imdb_id":99388,"title":"Deathstalker IV: Match of Titans","year":1991,"rating":1,"dubious":false,"date":"2021-03-13 15:01"},{"_id":"9533","normalized_imdb_id":101702,"title":"Delta Force 3: The Killing Game","year":1991,"rating":0,"dubious":false,"date":"2021-03-14 14:52"},{"_id":"9548","normalized_imdb_id":102202,"title":"Kickboxer 2: The Road Back","year":1991,"rating":0,"dubious":false,"date":"2021-03-14 20:30"},{"_id":"9564","normalized_imdb_id":101764,"title":"Double Impact","year":1991,"rating":1,"dubious":false,"date":"2021-03-16 08:30"},{"_id":"9810","normalized_imdb_id":102397,"title":"Manta, Manta","year":1991,"rating":3,"dubious":false,"date":"2021-05-12 19:46"},{"_id":"9847","normalized_imdb_id":103956,"title":"Child's Play 3","year":1991,"rating":2,"dubious":false,"date":"2021-05-25 05:53"},{"_id":"10117","normalized_imdb_id":102915,"title":"Showdown in Little Tokyo","year":1991,"rating":3,"dubious":true,"date":"2021-11-03 16:51"},{"_id":"18","normalized_imdb_id":105236,"title":"Reservoir Dogs","year":1992,"rating":0,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"98","normalized_imdb_id":103639,"title":"Aladdin","year":1992,"rating":0,"dubious":false,"date":"2008-07-30 00:36"},{"_id":"296","normalized_imdb_id":103644,"title":"Alien 3","year":1992,"rating":0,"dubious":false,"date":"2009-03-07 20:40"},{"_id":"433","normalized_imdb_id":104431,"title":"Home Alone 2: Lost in New York","year":1992,"rating":3,"dubious":false,"date":"2009-08-09 22:24"},{"_id":"450","normalized_imdb_id":104348,"title":"Glengarry Glen Ross","year":1992,"rating":0,"dubious":false,"date":"2009-08-12 20:37"},{"_id":"451","normalized_imdb_id":104257,"title":"A Few Good Men","year":1992,"rating":1,"dubious":false,"date":"2009-08-12 23:26"},{"_id":"560","normalized_imdb_id":104694,"title":"A League of Their Own","year":1992,"rating":3,"dubious":false,"date":"2009-12-11 01:53"},{"_id":"748","normalized_imdb_id":103893,"title":"Buffy the Vampire Slayer","year":1992,"rating":3,"dubious":false,"date":"2010-04-24 05:55"},{"_id":"818","normalized_imdb_id":103850,"title":"Bob Roberts","year":1992,"rating":1,"dubious":false,"date":"2010-05-19 13:30"},{"_id":"1025","normalized_imdb_id":103776,"title":"Batman Returns","year":1992,"rating":0,"dubious":false,"date":"2010-07-03 00:04"},{"_id":"1345","normalized_imdb_id":104321,"title":"Gas Food Lodging","year":1992,"rating":3,"dubious":false,"date":"2010-07-26 20:17"},{"_id":"1352","normalized_imdb_id":105417,"title":"Sister Act","year":1992,"rating":3,"dubious":false,"date":"2010-07-27 01:51"},{"_id":"1276","normalized_imdb_id":106308,"title":"Army of Darkness","year":1992,"rating":2,"dubious":false,"date":"2010-07-23 01:08"},{"_id":"1101","normalized_imdb_id":104940,"title":"Muppet Christmas Carol, The","year":1992,"rating":3,"dubious":false,"date":"2010-07-05 00:09"},{"_id":"1126","normalized_imdb_id":104868,"title":"Mighty Ducks, The","year":1992,"rating":1,"dubious":false,"date":"2010-07-09 04:58"},{"_id":"1157","normalized_imdb_id":104254,"title":"FernGully: The Last Rainforest","year":1992,"rating":3,"dubious":false,"date":"2010-07-11 00:32"},{"_id":"1836","normalized_imdb_id":105629,"title":"Toys","year":1992,"rating":3,"dubious":false,"date":"2010-12-10 06:23"},{"_id":"1867","normalized_imdb_id":105851,"title":"Full Contact","year":1992,"rating":1,"dubious":false,"date":"2010-12-21 07:08"},{"_id":"1869","normalized_imdb_id":104070,"title":"Death Becomes Her","year":1992,"rating":3,"dubious":false,"date":"2010-12-24 12:05"},{"_id":"1877","normalized_imdb_id":107756,"title":"Orlando","year":1992,"rating":2,"dubious":true,"date":"2010-12-25 22:06"},{"_id":"1886","normalized_imdb_id":104815,"title":"El Mariachi","year":1992,"rating":0,"dubious":false,"date":"2011-01-02 16:11"},{"_id":"1895","normalized_imdb_id":104952,"title":"My Cousin Vinny","year":1992,"rating":1,"dubious":false,"date":"2011-01-07 03:12"},{"_id":"2128","normalized_imdb_id":101811,"title":"Enchanted April","year":1992,"rating":3,"dubious":false,"date":"2011-03-20 04:29"},{"_id":"2349","normalized_imdb_id":105107,"title":"Passion Fish","year":1992,"rating":3,"dubious":false,"date":"2011-05-26 19:33"},{"_id":"2415","normalized_imdb_id":104454,"title":"Howards End","year":1992,"rating":3,"dubious":false,"date":"2011-06-20 03:13"},{"_id":"2432","normalized_imdb_id":105665,"title":"Twin Peaks: Fire Walk With Me","year":1992,"rating":3,"dubious":false,"date":"2011-06-22 07:29"},{"_id":"2457","normalized_imdb_id":105316,"title":"Sarafina!","year":1992,"rating":3,"dubious":false,"date":"2011-06-29 13:35"},{"_id":"2466","normalized_imdb_id":104697,"title":"Leaving Normal","year":1992,"rating":3,"dubious":false,"date":"2011-06-29 17:51"},{"_id":"2504","normalized_imdb_id":105414,"title":"Single White Female","year":1992,"rating":3,"dubious":false,"date":"2011-07-07 07:42"},{"_id":"2506","normalized_imdb_id":105577,"title":"This is My Life","year":1992,"rating":3,"dubious":false,"date":"2011-07-07 07:49"},{"_id":"2628","normalized_imdb_id":104990,"title":"Newsies","year":1992,"rating":1,"dubious":false,"date":"2011-08-21 02:26"},{"_id":"2709","normalized_imdb_id":105481,"title":"Straight Talk","year":1992,"rating":3,"dubious":false,"date":"2011-09-25 05:24"},{"_id":"3141","normalized_imdb_id":104036,"title":"Crying Game, The","year":1992,"rating":2,"dubious":false,"date":"2012-03-24 00:55"},{"_id":"3414","normalized_imdb_id":104652,"title":"Porco Rosso (Kurenai no Buta)","year":1992,"rating":1,"dubious":false,"date":"2012-07-10 16:47"},{"_id":"3556","normalized_imdb_id":100963,"title":"King of Beggars","year":1992,"rating":2,"dubious":false,"date":"2012-09-27 06:59"},{"_id":"3636","normalized_imdb_id":105151,"title":"Player, The","year":1992,"rating":3,"dubious":false,"date":"2012-10-29 06:34"},{"_id":"3787","normalized_imdb_id":105323,"title":"Scent of a Woman","year":1992,"rating":1,"dubious":false,"date":"2012-12-29 23:51"},{"_id":"3937","normalized_imdb_id":103767,"title":"Baraka","year":1992,"rating":0,"dubious":false,"date":"2013-02-26 22:24"},{"_id":"4141","normalized_imdb_id":103873,"title":"Dead Alive","year":1992,"rating":3,"dubious":false,"date":"2013-05-19 07:44"},{"_id":"4391","normalized_imdb_id":104797,"title":"Malcolm X","year":1992,"rating":3,"dubious":true,"date":"2013-07-25 05:28"},{"_id":"4731","normalized_imdb_id":105793,"title":"Wayne's World","year":1992,"rating":1,"dubious":false,"date":"2013-10-22 23:50"},{"_id":"4779","normalized_imdb_id":105477,"title":"Stop! Or My Mom Will Shoot","year":1992,"rating":2,"dubious":false,"date":"2013-11-04 21:38"},{"_id":"4782","normalized_imdb_id":103939,"title":"Chaplin","year":1992,"rating":1,"dubious":false,"date":"2013-11-05 19:22"},{"_id":"4839","normalized_imdb_id":104040,"title":"Cutting Edge, The","year":1992,"rating":3,"dubious":true,"date":"2013-11-16 12:56"},{"_id":"4837","normalized_imdb_id":104670,"title":"Ladybugs","year":1992,"rating":3,"dubious":false,"date":"2013-11-15 18:37"},{"_id":"4838","normalized_imdb_id":103994,"title":"Como agua para chocolate","year":1992,"rating":3,"dubious":true,"date":"2013-11-16 08:46"},{"_id":"4903","normalized_imdb_id":104466,"title":"Husbands and Wives","year":1992,"rating":3,"dubious":false,"date":"2013-12-03 01:02"},{"_id":"4940","normalized_imdb_id":103772,"title":"Basic Instinct","year":1992,"rating":1,"dubious":false,"date":"2013-12-11 21:52"},{"_id":"4947","normalized_imdb_id":103874,"title":"Dracula","year":1992,"rating":3,"dubious":false,"date":"2013-12-14 03:24"},{"_id":"4952","normalized_imdb_id":104237,"title":"Damage","year":1992,"rating":3,"dubious":false,"date":"2013-12-16 00:18"},{"_id":"4999","normalized_imdb_id":104412,"title":"Hero","year":1992,"rating":1,"dubious":false,"date":"2013-12-28 04:51"},{"_id":"5005","normalized_imdb_id":103919,"title":"Candyman","year":1992,"rating":3,"dubious":false,"date":"2013-12-29 12:13"},{"_id":"5241","normalized_imdb_id":104692,"title":"Lawnmower Man, The","year":1992,"rating":1,"dubious":false,"date":"2014-03-06 16:20"},{"_id":"5318","normalized_imdb_id":103859,"title":"Boomerang","year":1992,"rating":3,"dubious":false,"date":"2014-03-24 10:52"},{"_id":"5425","normalized_imdb_id":105682,"title":"Un Coeur en Hiver","year":1992,"rating":3,"dubious":false,"date":"2014-04-30 20:52"},{"_id":"5533","normalized_imdb_id":103812,"title":"Bikini Carwash Company, The","year":1992,"rating":3,"dubious":false,"date":"2014-06-04 20:33"},{"_id":"5654","normalized_imdb_id":105435,"title":"Sneakers","year":1992,"rating":1,"dubious":false,"date":"2014-07-26 16:09"},{"_id":"6090","normalized_imdb_id":142237,"title":"Dragon Ball Z: The Return of Cooler","year":1992,"rating":0,"dubious":false,"date":"2015-02-01 02:15"},{"_id":"6123","normalized_imdb_id":105265,"title":"A River Runs Through It","year":1992,"rating":2,"dubious":false,"date":"2015-02-25 00:47"},{"_id":"6317","normalized_imdb_id":105415,"title":"Singles","year":1992,"rating":2,"dubious":false,"date":"2015-06-17 08:24"},{"_id":"6397","normalized_imdb_id":104409,"title":"Hellraiser III: Hell on Earth","year":1992,"rating":3,"dubious":false,"date":"2015-08-10 03:16"},{"_id":"6702","normalized_imdb_id":105130,"title":"Peter's Friends","year":1992,"rating":3,"dubious":false,"date":"2016-01-31 23:34"},{"_id":"6862","normalized_imdb_id":105859,"title":"Dragon Inn","year":1992,"rating":3,"dubious":false,"date":"2016-04-29 18:34"},{"_id":"7006","normalized_imdb_id":105695,"title":"Unforgiven","year":1992,"rating":3,"dubious":false,"date":"2016-07-29 08:43"},{"_id":"7601","normalized_imdb_id":104298,"title":"Freddie as F.R.O.7.","year":1992,"rating":1,"dubious":false,"date":"2017-05-03 16:24"},{"_id":"7031","normalized_imdb_id":104691,"title":"Last of the Mohicans, The","year":1992,"rating":2,"dubious":false,"date":"2016-08-08 17:09"},{"_id":"7179","normalized_imdb_id":105459,"title":"Split Second","year":1992,"rating":0,"dubious":false,"date":"2016-10-09 08:20"},{"_id":"7191","normalized_imdb_id":105616,"title":"Tom and Jerry: The Movie","year":1992,"rating":3,"dubious":false,"date":"2016-10-12 15:38"},{"_id":"7245","normalized_imdb_id":104684,"title":"Hard Boiled","year":1992,"rating":0,"dubious":false,"date":"2016-11-06 13:47"},{"_id":"7640","normalized_imdb_id":104452,"title":"HouseSitter","year":1992,"rating":1,"dubious":false,"date":"2017-05-21 13:34"},{"_id":"8287","normalized_imdb_id":104779,"title":"Bitter Moon","year":1992,"rating":3,"dubious":false,"date":"2018-06-14 00:55"},{"_id":"8393","normalized_imdb_id":101628,"title":"Critters 4","year":1992,"rating":1,"dubious":false,"date":"2018-08-31 07:53"},{"_id":"8583","normalized_imdb_id":104695,"title":"Leap of Faith","year":1992,"rating":2,"dubious":false,"date":"2019-01-03 22:04"},{"_id":"8622","normalized_imdb_id":104187,"title":"Encino Man","year":1992,"rating":1,"dubious":false,"date":"2019-01-31 07:13"},{"_id":"8991","normalized_imdb_id":103855,"title":"Bodyguard, The","year":1992,"rating":2,"dubious":false,"date":"2020-01-27 23:44"},{"_id":"9000","normalized_imdb_id":104575,"title":"Just another girl on the I.R.T","year":1992,"rating":1,"dubious":false,"date":"2020-02-04 17:37"},{"_id":"9922","normalized_imdb_id":104389,"title":"Hand That Rocks the Cradle, The","year":1992,"rating":3,"dubious":false,"date":"2021-07-02 00:13"},{"_id":"9107","normalized_imdb_id":104105,"title":"Dien Bien Phu","year":1992,"rating":0,"dubious":false,"date":"2020-05-02 16:46"},{"_id":"9221","normalized_imdb_id":101316,"title":"Lover / L'amant, The","year":1992,"rating":1,"dubious":false,"date":"2020-08-03 00:09"},{"_id":"9242","normalized_imdb_id":105466,"title":"Stay Tuned","year":1992,"rating":2,"dubious":false,"date":"2020-08-15 16:00"},{"_id":"9331","normalized_imdb_id":105488,"title":"Strictly Ballroom","year":1992,"rating":1,"dubious":false,"date":"2020-11-15 20:33"},{"_id":"9785","normalized_imdb_id":105104,"title":"Passenger 57","year":1992,"rating":1,"dubious":false,"date":"2021-05-02 13:00"},{"_id":"9812","normalized_imdb_id":105328,"title":"Schtonk","year":1992,"rating":3,"dubious":false,"date":"2021-05-12 19:59"},{"_id":"109","normalized_imdb_id":107290,"title":"Jurassic Park","year":1993,"rating":3,"dubious":false,"date":"2008-07-31 00:27"},{"_id":"114","normalized_imdb_id":107048,"title":"Groundhog Day","year":1993,"rating":2,"dubious":false,"date":"2008-07-31 22:33"},{"_id":"117","normalized_imdb_id":106697,"title":"Demolition Man","year":1993,"rating":0,"dubious":false,"date":"2008-07-31 23:50"},{"_id":"436","normalized_imdb_id":107614,"title":"Mrs. Doubtfire","year":1993,"rating":3,"dubious":false,"date":"2009-08-10 12:21"},{"_id":"543","normalized_imdb_id":107843,"title":"Point of No Return/The Assassin","year":1993,"rating":3,"dubious":false,"date":"2009-11-13 18:16"},{"_id":"556","normalized_imdb_id":108160,"title":"Sleepless in Seattle","year":1993,"rating":2,"dubious":false,"date":"2009-12-06 23:39"},{"_id":"558","normalized_imdb_id":108432,"title":"Umi ga kikoeru","year":1993,"rating":3,"dubious":false,"date":"2009-12-08 19:15"},{"_id":"587","normalized_imdb_id":107120,"title":"Hocus Pocus","year":1993,"rating":3,"dubious":false,"date":"2009-12-27 20:26"},{"_id":"727","normalized_imdb_id":108265,"title":"Swing Kids","year":1993,"rating":1,"dubious":false,"date":"2010-04-07 15:30"},{"_id":"810","normalized_imdb_id":107507,"title":"Manhattan Murder Mystery","year":1993,"rating":3,"dubious":false,"date":"2010-05-16 22:17"},{"_id":"852","normalized_imdb_id":108000,"title":"Ruby in Paradise","year":1993,"rating":3,"dubious":false,"date":"2010-05-27 22:27"},{"_id":"861","normalized_imdb_id":106677,"title":"Dazed and Confused","year":1993,"rating":3,"dubious":false,"date":"2010-05-28 03:48"},{"_id":"899","normalized_imdb_id":108037,"title":"Sandlot, The","year":1993,"rating":0,"dubious":false,"date":"2010-06-04 23:52"},{"_id":"950","normalized_imdb_id":106341,"title":"Bad Boy Bubby","year":1993,"rating":1,"dubious":false,"date":"2010-06-16 14:08"},{"_id":"984","normalized_imdb_id":108394,"title":"Three Colors: Blue","year":1993,"rating":3,"dubious":false,"date":"2010-06-26 19:40"},{"_id":"1067","normalized_imdb_id":107977,"title":"Robin Hood: Men in Tights","year":1993,"rating":3,"dubious":false,"date":"2010-07-04 04:50"},{"_id":"1602","normalized_imdb_id":106611,"title":"Cool Runnings","year":1993,"rating":1,"dubious":false,"date":"2010-09-23 02:05"},{"_id":"1517","normalized_imdb_id":106471,"title":"Boxing Helena","year":1993,"rating":1,"dubious":false,"date":"2010-08-31 02:15"},{"_id":"1195","normalized_imdb_id":107156,"title":"Wedding Banquet, The","year":1993,"rating":3,"dubious":false,"date":"2010-07-19 21:55"},{"_id":"1088","normalized_imdb_id":107131,"title":"Homeward Bound: The Incredible Journey","year":1993,"rating":1,"dubious":false,"date":"2010-07-04 22:51"},{"_id":"1133","normalized_imdb_id":106673,"title":"Dave","year":1993,"rating":3,"dubious":false,"date":"2010-07-09 05:48"},{"_id":"1434","normalized_imdb_id":108071,"title":"Secret Garden, The","year":1993,"rating":3,"dubious":false,"date":"2010-08-03 14:13"},{"_id":"1436","normalized_imdb_id":106220,"title":"Addams Family Values","year":1993,"rating":3,"dubious":false,"date":"2010-08-03 14:26"},{"_id":"1353","normalized_imdb_id":108147,"title":"Sister Act 2: Back in the Habit","year":1993,"rating":3,"dubious":false,"date":"2010-07-27 01:53"},{"_id":"1097","normalized_imdb_id":108442,"title":"Undercover Blues","year":1993,"rating":1,"dubious":false,"date":"2010-07-04 23:50"},{"_id":"1497","normalized_imdb_id":108052,"title":"Schindler's List","year":1993,"rating":3,"dubious":false,"date":"2010-08-23 23:37"},{"_id":"1637","normalized_imdb_id":104246,"title":"Fei hu wai zhuan","year":1993,"rating":2,"dubious":false,"date":"2010-10-04 06:50"},{"_id":"1666","normalized_imdb_id":106689,"title":"Death Train","year":1993,"rating":3,"dubious":false,"date":"2010-10-16 20:31"},{"_id":"1790","normalized_imdb_id":106834,"title":"Even Cowgirls Get The Blues","year":1993,"rating":3,"dubious":false,"date":"2010-11-30 17:43"},{"_id":"1856","normalized_imdb_id":106873,"title":"Fatal Instinct","year":1993,"rating":3,"dubious":true,"date":"2010-12-18 12:49"},{"_id":"1940","normalized_imdb_id":112389,"title":"Princess and the Cobbler, The","year":1993,"rating":0,"dubious":false,"date":"2011-01-29 22:26"},{"_id":"2182","normalized_imdb_id":108388,"title":"Trial, The","year":1993,"rating":1,"dubious":false,"date":"2011-04-11 08:50"},{"_id":"2230","normalized_imdb_id":107822,"title":"Piano, The","year":1993,"rating":3,"dubious":true,"date":"2011-04-23 19:13"},{"_id":"2492","normalized_imdb_id":107745,"title":"Once Upon a Forest","year":1993,"rating":3,"dubious":true,"date":"2011-07-06 07:25"},{"_id":"2543","normalized_imdb_id":107688,"title":"Nightmare Before Christmas, The","year":1993,"rating":1,"dubious":false,"date":"2011-07-16 15:18"},{"_id":"2847","normalized_imdb_id":108188,"title":"Sonatine","year":1993,"rating":0,"dubious":false,"date":"2011-11-19 16:00"},{"_id":"2892","normalized_imdb_id":107426,"title":"Little Buddha","year":1993,"rating":1,"dubious":false,"date":"2011-12-02 05:12"},{"_id":"2916","normalized_imdb_id":106977,"title":"Fugitive, The","year":1993,"rating":2,"dubious":false,"date":"2011-12-10 02:38"},{"_id":"3088","normalized_imdb_id":107282,"title":"Joy Luck Club, The","year":1993,"rating":3,"dubious":false,"date":"2012-03-04 01:34"},{"_id":"3097","normalized_imdb_id":106226,"title":"Age of Innocence, The","year":1993,"rating":3,"dubious":false,"date":"2012-03-09 06:19"},{"_id":"3123","normalized_imdb_id":107091,"title":"Heart and Souls","year":1993,"rating":2,"dubious":false,"date":"2012-03-16 04:35"},{"_id":"3176","normalized_imdb_id":311648,"title":"Pieces of April","year":1993,"rating":3,"dubious":false,"date":"2012-04-11 01:20"},{"_id":"3180","normalized_imdb_id":108358,"title":"Tombstone","year":1993,"rating":3,"dubious":false,"date":"2012-04-12 21:28"},{"_id":"3336","normalized_imdb_id":108065,"title":"Searching for Bobby Fischer","year":1993,"rating":0,"dubious":false,"date":"2012-06-10 16:42"},{"_id":"3369","normalized_imdb_id":106582,"title":"Cliffhanger","year":1993,"rating":1,"dubious":false,"date":"2012-06-21 08:04"},{"_id":"3396","normalized_imdb_id":108451,"title":"Untamed Heart","year":1993,"rating":3,"dubious":false,"date":"2012-07-03 04:47"},{"_id":"3405","normalized_imdb_id":105619,"title":"Heroic Trio, The","year":1993,"rating":3,"dubious":false,"date":"2012-07-08 09:33"},{"_id":"3550","normalized_imdb_id":107653,"title":"Naked","year":1993,"rating":3,"dubious":false,"date":"2012-09-26 15:44"},{"_id":"3692","normalized_imdb_id":108624,"title":"Evil Cult, The","year":1993,"rating":3,"dubious":false,"date":"2012-11-26 13:48"},{"_id":"3704","normalized_imdb_id":106400,"title":"Beverly Hillbillies, The","year":1993,"rating":3,"dubious":false,"date":"2012-12-02 20:47"},{"_id":"3715","normalized_imdb_id":107065,"title":"Gypsy","year":1993,"rating":3,"dubious":false,"date":"2012-12-06 02:00"},{"_id":"3761","normalized_imdb_id":107943,"title":"Remains of the Day, The","year":1993,"rating":1,"dubious":false,"date":"2012-12-20 17:17"},{"_id":"3921","normalized_imdb_id":115819,"title":"Cannibal! The Musical","year":1993,"rating":0,"dubious":true,"date":"2013-02-21 13:03"},{"_id":"4337","normalized_imdb_id":107214,"title":"Indien","year":1993,"rating":0,"dubious":false,"date":"2013-07-12 13:42"},{"_id":"4422","normalized_imdb_id":108255,"title":"Super Mario Bros.","year":1993,"rating":3,"dubious":true,"date":"2013-07-30 06:03"},{"_id":"4555","normalized_imdb_id":108310,"title":"Telling Secrets","year":1993,"rating":3,"dubious":false,"date":"2013-09-11 20:34"},{"_id":"4636","normalized_imdb_id":106598,"title":"Coneheads","year":1993,"rating":3,"dubious":false,"date":"2013-09-27 02:47"},{"_id":"4877","normalized_imdb_id":106364,"title":"Batman: Mask of the Phantasm","year":1993,"rating":0,"dubious":false,"date":"2013-11-25 21:54"},{"_id":"4917","normalized_imdb_id":107007,"title":"Gettysburg","year":1993,"rating":0,"dubious":false,"date":"2013-12-05 22:38"},{"_id":"5065","normalized_imdb_id":107212,"title":"Indian Summer","year":1993,"rating":3,"dubious":false,"date":"2014-01-12 02:50"},{"_id":"5083","normalized_imdb_id":106770,"title":"Dragon: The Bruce Lee Story","year":1993,"rating":3,"dubious":false,"date":"2014-01-17 19:13"},{"_id":"5238","normalized_imdb_id":107978,"title":"RoboCop 3","year":1993,"rating":3,"dubious":false,"date":"2014-03-05 23:40"},{"_id":"5243","normalized_imdb_id":106453,"title":"Body of Evidence","year":1993,"rating":3,"dubious":true,"date":"2014-03-06 21:19"},{"_id":"5285","normalized_imdb_id":107099,"title":"Heidi","year":1993,"rating":3,"dubious":false,"date":"2014-03-16 16:41"},{"_id":"5316","normalized_imdb_id":108122,"title":"Short Cuts","year":1993,"rating":3,"dubious":false,"date":"2014-03-24 04:48"},{"_id":"5521","normalized_imdb_id":106452,"title":"Body Snatchers","year":1993,"rating":3,"dubious":false,"date":"2014-06-01 08:46"},{"_id":"5580","normalized_imdb_id":107969,"title":"Rising Sun","year":1993,"rating":1,"dubious":false,"date":"2014-06-20 11:12"},{"_id":"6474","normalized_imdb_id":106918,"title":"Firm, The","year":1993,"rating":3,"dubious":false,"date":"2015-10-02 02:25"},{"_id":"5665","normalized_imdb_id":106469,"title":"Blood In, Blood Out","year":1993,"rating":0,"dubious":false,"date":"2014-07-31 00:13"},{"_id":"5725","normalized_imdb_id":106408,"title":"Bhaji on the Beach","year":1993,"rating":3,"dubious":false,"date":"2014-09-04 20:16"},{"_id":"5919","normalized_imdb_id":107818,"title":"Philadelphia","year":1993,"rating":2,"dubious":false,"date":"2014-11-13 20:40"},{"_id":"6076","normalized_imdb_id":108162,"title":"Sliver","year":1993,"rating":3,"dubious":false,"date":"2015-01-27 02:53"},{"_id":"6173","normalized_imdb_id":107144,"title":"Hot Shots! Part Deux","year":1993,"rating":3,"dubious":false,"date":"2015-03-29 12:55"},{"_id":"6215","normalized_imdb_id":106332,"title":"Farewell My Concubine","year":1993,"rating":0,"dubious":false,"date":"2015-04-21 20:38"},{"_id":"6349","normalized_imdb_id":108399,"title":"True Romance","year":1993,"rating":1,"dubious":false,"date":"2015-07-12 08:21"},{"_id":"6492","normalized_imdb_id":108550,"title":"What's Eating Gilbert Grape","year":1993,"rating":3,"dubious":true,"date":"2015-10-14 16:46"},{"_id":"6844","normalized_imdb_id":107529,"title":"Matinee","year":1993,"rating":1,"dubious":false,"date":"2016-04-21 06:53"},{"_id":"7055","normalized_imdb_id":106303,"title":"Arctic Blue","year":1993,"rating":1,"dubious":false,"date":"2016-08-21 19:53"},{"_id":"7209","normalized_imdb_id":142247,"title":"Dragon Ball Z: The History of Trunks","year":1993,"rating":1,"dubious":false,"date":"2016-10-17 19:38"},{"_id":"7272","normalized_imdb_id":106449,"title":"Body Bags","year":1993,"rating":1,"dubious":false,"date":"2016-11-18 12:48"},{"_id":"7277","normalized_imdb_id":107798,"title":"Pelican Brief, The","year":1993,"rating":3,"dubious":false,"date":"2016-11-21 07:14"},{"_id":"7418","normalized_imdb_id":107492,"title":"Making of '...And God Spoke', The","year":1993,"rating":1,"dubious":false,"date":"2017-01-25 15:27"},{"_id":"7514","normalized_imdb_id":107207,"title":"In the Name of the Father","year":1993,"rating":2,"dubious":false,"date":"2017-03-14 13:38"},{"_id":"7526","normalized_imdb_id":108551,"title":"What's Love Got to Do with It","year":1993,"rating":3,"dubious":true,"date":"2017-03-21 07:19"},{"_id":"7611","normalized_imdb_id":107808,"title":"A perfect world","year":1993,"rating":1,"dubious":false,"date":"2017-05-21 10:55"},{"_id":"7619","normalized_imdb_id":106387,"title":"Benny & Joon","year":1993,"rating":1,"dubious":false,"date":"2017-05-21 11:09"},{"_id":"7642","normalized_imdb_id":107211,"title":"Indecent Proposal","year":1993,"rating":0,"dubious":false,"date":"2017-05-21 13:45"},{"_id":"7667","normalized_imdb_id":107206,"title":"In the Line of Fire","year":1993,"rating":1,"dubious":true,"date":"2017-05-28 21:23"},{"_id":"7699","normalized_imdb_id":107315,"title":"Kika","year":1993,"rating":3,"dubious":false,"date":"2017-06-20 22:37"},{"_id":"8148","normalized_imdb_id":107840,"title":"Poetic Justice","year":1993,"rating":3,"dubious":false,"date":"2018-04-06 20:49"},{"_id":"8552","normalized_imdb_id":107501,"title":"Man Without a Face, The","year":1993,"rating":1,"dubious":false,"date":"2018-12-14 23:47"},{"_id":"8568","normalized_imdb_id":107566,"title":"Mi vida loca","year":1993,"rating":3,"dubious":false,"date":"2018-12-18 21:57"},{"_id":"8652","normalized_imdb_id":107096,"title":"Heaven & Earth","year":1993,"rating":2,"dubious":false,"date":"2019-02-26 05:06"},{"_id":"8759","normalized_imdb_id":108149,"title":"Six Degrees of Separation","year":1993,"rating":3,"dubious":false,"date":"2019-06-01 20:49"},{"_id":"9033","normalized_imdb_id":107616,"title":"Much Ado About Nothing","year":1993,"rating":1,"dubious":true,"date":"2020-03-10 04:47"},{"_id":"9155","normalized_imdb_id":106880,"title":"Fear of a Black hat","year":1993,"rating":1,"dubious":false,"date":"2020-06-06 20:16"},{"_id":"9398","normalized_imdb_id":166222,"title":"I Killed My Lesbian Wife, Hung Her on a Meathook, and Now I Have a Three Picture Deal at Disney","year":1993,"rating":3,"dubious":false,"date":"2020-12-20 15:20"},{"_id":"9466","normalized_imdb_id":107362,"title":"Last Action Hero","year":1993,"rating":1,"dubious":false,"date":"2021-02-03 10:39"},{"_id":"9565","normalized_imdb_id":107076,"title":"Hard Target","year":1993,"rating":1,"dubious":false,"date":"2021-03-16 08:34"},{"_id":"9735","normalized_imdb_id":314713,"title":"Space Zombie Bingo!!!","year":1993,"rating":0,"dubious":false,"date":"2021-04-29 18:08"},{"_id":"10136","normalized_imdb_id":107387,"title":"Leprechaun","year":1993,"rating":1,"dubious":false,"date":"2021-11-21 05:59"},{"_id":"91","normalized_imdb_id":110912,"title":"Pulp Fiction","year":1994,"rating":3,"dubious":false,"date":"2008-07-29 17:23"},{"_id":"100","normalized_imdb_id":110357,"title":"Lion King, The","year":1994,"rating":1,"dubious":false,"date":"2008-07-30 01:03"},{"_id":"120","normalized_imdb_id":110148,"title":"Interview with the Vampire","year":1994,"rating":1,"dubious":false,"date":"2008-08-01 15:30"},{"_id":"261","normalized_imdb_id":110008,"title":"Heisei tanuki gassen pompoko","year":1994,"rating":1,"dubious":false,"date":"2009-01-22 01:18"},{"_id":"339","normalized_imdb_id":111161,"title":"Shawshank Redemption, The","year":1994,"rating":0,"dubious":false,"date":"2009-06-13 14:43"},{"_id":"440","normalized_imdb_id":111257,"title":"Speed","year":1994,"rating":3,"dubious":false,"date":"2009-08-10 15:11"},{"_id":"441","normalized_imdb_id":109040,"title":"Ace Ventura: Pet Detective","year":1994,"rating":2,"dubious":false,"date":"2009-08-10 16:29"},{"_id":"488","normalized_imdb_id":109445,"title":"Clerks.","year":1994,"rating":1,"dubious":false,"date":"2009-08-30 14:24"},{"_id":"537","normalized_imdb_id":108941,"title":"Stand, The","year":1994,"rating":3,"dubious":false,"date":"2009-11-01 18:02"},{"_id":"567","normalized_imdb_id":110005,"title":"Heavenly Creatures","year":1994,"rating":3,"dubious":false,"date":"2009-12-17 23:20"},{"_id":"571","normalized_imdb_id":109676,"title":"Drop Zone","year":1994,"rating":2,"dubious":false,"date":"2009-12-19 18:09"},{"_id":"574","normalized_imdb_id":111438,"title":"Timecop","year":1994,"rating":1,"dubious":false,"date":"2009-12-20 21:58"},{"_id":"776","normalized_imdb_id":109830,"title":"Forrest Gump","year":1994,"rating":1,"dubious":false,"date":"2010-05-03 14:20"},{"_id":"860","normalized_imdb_id":110950,"title":"Reality Bites","year":1994,"rating":3,"dubious":false,"date":"2010-05-28 03:45"},{"_id":"890","normalized_imdb_id":109686,"title":"Dumb & Dumber","year":1994,"rating":2,"dubious":false,"date":"2010-06-03 06:23"},{"_id":"959","normalized_imdb_id":111282,"title":"Stargate","year":1994,"rating":1,"dubious":false,"date":"2010-06-17 17:53"},{"_id":"960","normalized_imdb_id":110367,"title":"Little Women","year":1994,"rating":3,"dubious":false,"date":"2010-06-17 17:57"},{"_id":"1051","normalized_imdb_id":111070,"title":"Santa Clause, The","year":1994,"rating":1,"dubious":false,"date":"2010-07-04 03:23"},{"_id":"1066","normalized_imdb_id":107952,"title":"Return of Jafar, The","year":1994,"rating":0,"dubious":false,"date":"2010-07-04 04:40"},{"_id":"1208","normalized_imdb_id":110763,"title":"Pagemaster, The","year":1994,"rating":1,"dubious":false,"date":"2010-07-20 08:41"},{"_id":"1128","normalized_imdb_id":109127,"title":"Angels in the Outfield","year":1994,"rating":1,"dubious":false,"date":"2010-07-09 05:01"},{"_id":"1098","normalized_imdb_id":111503,"title":"True Lies","year":1994,"rating":3,"dubious":false,"date":"2010-07-04 23:59"},{"_id":"1535","normalized_imdb_id":109446,"title":"Client, The","year":1994,"rating":3,"dubious":false,"date":"2010-09-06 03:13"},{"_id":"1571","normalized_imdb_id":109093,"title":"Amateur","year":1994,"rating":3,"dubious":false,"date":"2010-09-15 17:18"},{"_id":"1734","normalized_imdb_id":124829,"title":"Pat and Margaret","year":1994,"rating":3,"dubious":false,"date":"2010-11-04 14:15"},{"_id":"1755","normalized_imdb_id":110413,"title":"Professional, The","year":1994,"rating":3,"dubious":false,"date":"2010-11-14 23:23"},{"_id":"1786","normalized_imdb_id":109198,"title":"Bad Girls","year":1994,"rating":3,"dubious":false,"date":"2010-11-30 17:25"},{"_id":"1788","normalized_imdb_id":109913,"title":"Go Fish","year":1994,"rating":3,"dubious":false,"date":"2010-11-30 17:37"},{"_id":"1826","normalized_imdb_id":110622,"title":"Naked Gun 33 1/3: The Final Insult","year":1994,"rating":2,"dubious":false,"date":"2010-12-05 09:07"},{"_id":"1850","normalized_imdb_id":109254,"title":"Beverly Hills Cop III","year":1994,"rating":0,"dubious":false,"date":"2010-12-14 11:37"},{"_id":"1914","normalized_imdb_id":110857,"title":"Police Academy: Mission to Moscow","year":1994,"rating":1,"dubious":false,"date":"2011-01-15 16:35"},{"_id":"1920","normalized_imdb_id":109707,"title":"Ed Wood","year":1994,"rating":3,"dubious":false,"date":"2011-01-16 23:47"},{"_id":"2121","normalized_imdb_id":111797,"title":"Eat Drink Man Woman","year":1994,"rating":3,"dubious":false,"date":"2011-03-16 02:18"},{"_id":"2209","normalized_imdb_id":110598,"title":"Muriel's Wedding","year":1994,"rating":3,"dubious":false,"date":"2011-04-23 15:14"},{"_id":"2210","normalized_imdb_id":110521,"title":"Mina Tannenbaum","year":1994,"rating":3,"dubious":false,"date":"2011-04-23 15:22"},{"_id":"2350","normalized_imdb_id":109504,"title":"Crooklyn","year":1994,"rating":3,"dubious":false,"date":"2011-05-26 19:48"},{"_id":"2535","normalized_imdb_id":111143,"title":"Shadow, The","year":1994,"rating":0,"dubious":false,"date":"2011-07-14 05:45"},{"_id":"2852","normalized_imdb_id":110889,"title":"Priest","year":1994,"rating":3,"dubious":false,"date":"2011-11-19 17:11"},{"_id":"4326","normalized_imdb_id":110054,"title":"Legend of the Red Dragon / Hong Xi Guan: Zhi Shao Lin wu zu","year":1994,"rating":3,"dubious":true,"date":"2013-07-10 15:33"},{"_id":"2972","normalized_imdb_id":109440,"title":"Fear City: A Family-Style Comedy","year":1994,"rating":3,"dubious":false,"date":"2012-01-05 02:48"},{"_id":"3004","normalized_imdb_id":109306,"title":"Blue Sky","year":1994,"rating":3,"dubious":false,"date":"2012-01-26 23:51"},{"_id":"3008","normalized_imdb_id":110171,"title":"J'ai pas sommeil","year":1994,"rating":3,"dubious":false,"date":"2012-01-27 19:54"},{"_id":"3044","normalized_imdb_id":111470,"title":"Trading Mom","year":1994,"rating":3,"dubious":false,"date":"2012-02-12 15:51"},{"_id":"3062","normalized_imdb_id":110074,"title":"Hudsucker Proxy, The","year":1994,"rating":1,"dubious":false,"date":"2012-02-20 17:41"},{"_id":"3104","normalized_imdb_id":110308,"title":"Last Seduction, The","year":1994,"rating":1,"dubious":false,"date":"2012-03-10 06:33"},{"_id":"3106","normalized_imdb_id":111800,"title":"Wing Chun","year":1994,"rating":2,"dubious":false,"date":"2012-03-11 02:34"},{"_id":"3133","normalized_imdb_id":109900,"title":"Giorgino","year":1994,"rating":3,"dubious":false,"date":"2012-03-20 17:29"},{"_id":"3162","normalized_imdb_id":109770,"title":"Fantastic Four, The","year":1994,"rating":1,"dubious":false,"date":"2012-04-04 00:47"},{"_id":"3179","normalized_imdb_id":110091,"title":"I Like It Like That","year":1994,"rating":3,"dubious":false,"date":"2012-04-12 06:14"},{"_id":"3243","normalized_imdb_id":110678,"title":"No Escape","year":1994,"rating":0,"dubious":false,"date":"2012-05-09 09:58"},{"_id":"3431","normalized_imdb_id":110722,"title":"Oleanna","year":1994,"rating":0,"dubious":false,"date":"2012-07-17 05:10"},{"_id":"3501","normalized_imdb_id":109045,"title":"Adventures of Priscilla, Queen of the Desert, The","year":1994,"rating":3,"dubious":false,"date":"2012-08-29 00:54"},{"_id":"3522","normalized_imdb_id":111301,"title":"Street Fighter","year":1994,"rating":3,"dubious":false,"date":"2012-09-07 22:50"},{"_id":"3657","normalized_imdb_id":110524,"title":"Getting Any?","year":1994,"rating":0,"dubious":false,"date":"2012-11-04 20:23"},{"_id":"3788","normalized_imdb_id":111255,"title":"Specialist, The","year":1994,"rating":1,"dubious":false,"date":"2012-12-30 17:02"},{"_id":"3820","normalized_imdb_id":109506,"title":"Crow, The","year":1994,"rating":3,"dubious":false,"date":"2013-01-12 23:51"},{"_id":"3840","normalized_imdb_id":109484,"title":"Corrina, Corrina","year":1994,"rating":3,"dubious":false,"date":"2013-01-19 01:26"},{"_id":"3973","normalized_imdb_id":111333,"title":"Swan Princess, The","year":1994,"rating":1,"dubious":false,"date":"2013-03-11 10:08"},{"_id":"4056","normalized_imdb_id":109424,"title":"Chungking Express","year":1994,"rating":1,"dubious":false,"date":"2013-04-14 20:06"},{"_id":"4112","normalized_imdb_id":111001,"title":"Road to Wellville, The","year":1994,"rating":3,"dubious":false,"date":"2013-04-28 03:02"},{"_id":"4421","normalized_imdb_id":110169,"title":"It's Pat","year":1994,"rating":3,"dubious":true,"date":"2013-07-30 05:42"},{"_id":"4515","normalized_imdb_id":111507,"title":"Three Colors: White","year":1994,"rating":1,"dubious":false,"date":"2013-08-28 21:56"},{"_id":"4602","normalized_imdb_id":111205,"title":"Sister My Sister","year":1994,"rating":3,"dubious":false,"date":"2013-09-18 14:19"},{"_id":"4618","normalized_imdb_id":111280,"title":"Star Trek Generations","year":1994,"rating":3,"dubious":false,"date":"2013-09-22 19:34"},{"_id":"4645","normalized_imdb_id":109275,"title":"Birds 2: Land's End","year":1994,"rating":3,"dubious":false,"date":"2013-09-29 14:11"},{"_id":"4697","normalized_imdb_id":110475,"title":"Mask, The","year":1994,"rating":1,"dubious":false,"date":"2013-10-14 22:08"},{"_id":"4717","normalized_imdb_id":109791,"title":"Felidae","year":1994,"rating":1,"dubious":false,"date":"2013-10-20 06:00"},{"_id":"4841","normalized_imdb_id":110322,"title":"Legends of the Fall","year":1994,"rating":3,"dubious":false,"date":"2013-11-16 15:57"},{"_id":"4869","normalized_imdb_id":111549,"title":"Uncovered","year":1994,"rating":3,"dubious":false,"date":"2013-11-24 11:17"},{"_id":"4920","normalized_imdb_id":109327,"title":"Brainscan","year":1994,"rating":1,"dubious":false,"date":"2013-12-06 18:42"},{"_id":"4954","normalized_imdb_id":110932,"title":"Quiz Show","year":1994,"rating":2,"dubious":false,"date":"2013-12-16 05:22"},{"_id":"5078","normalized_imdb_id":109456,"title":"Color of Night","year":1994,"rating":3,"dubious":false,"date":"2014-01-15 18:00"},{"_id":"5189","normalized_imdb_id":109849,"title":"Fritänkaren","year":1994,"rating":3,"dubious":false,"date":"2014-02-20 23:17"},{"_id":"5206","normalized_imdb_id":113409,"title":"In the Mouth of Madness","year":1994,"rating":1,"dubious":false,"date":"2014-02-26 13:52"},{"_id":"5334","normalized_imdb_id":109144,"title":"A.P.E.X.","year":1994,"rating":1,"dubious":false,"date":"2014-03-28 11:12"},{"_id":"5341","normalized_imdb_id":109068,"title":"Airheads","year":1994,"rating":1,"dubious":false,"date":"2014-03-31 08:42"},{"_id":"5459","normalized_imdb_id":110632,"title":"Natural Born Killers","year":1994,"rating":3,"dubious":false,"date":"2014-05-10 18:56"},{"_id":"5738","normalized_imdb_id":109813,"title":"Flintstones, The","year":1994,"rating":3,"dubious":false,"date":"2014-09-12 05:28"},{"_id":"5890","normalized_imdb_id":111751,"title":"Wrony","year":1994,"rating":3,"dubious":false,"date":"2014-11-01 06:30"},{"_id":"5909","normalized_imdb_id":110366,"title":"Little Rascals, The","year":1994,"rating":2,"dubious":false,"date":"2014-11-09 10:45"},{"_id":"6029","normalized_imdb_id":111686,"title":"New Nightmare","year":1994,"rating":3,"dubious":false,"date":"2015-01-08 04:12"},{"_id":"6154","normalized_imdb_id":110958,"title":"See How They Fall","year":1994,"rating":1,"dubious":false,"date":"2015-03-20 15:27"},{"_id":"6451","normalized_imdb_id":109831,"title":"Four Weddings and a Funeral","year":1994,"rating":3,"dubious":false,"date":"2015-09-14 08:32"},{"_id":"6477","normalized_imdb_id":111127,"title":"Serial Mom","year":1994,"rating":3,"dubious":false,"date":"2015-10-02 08:21"},{"_id":"6981","normalized_imdb_id":109279,"title":"Black Beauty","year":1994,"rating":3,"dubious":false,"date":"2016-07-16 07:57"},{"_id":"7032","normalized_imdb_id":109699,"title":"Dias contados","year":1994,"rating":3,"dubious":false,"date":"2016-08-08 21:32"},{"_id":"7160","normalized_imdb_id":109520,"title":"D2: The Mighty Ducks","year":1994,"rating":1,"dubious":false,"date":"2016-09-29 02:51"},{"_id":"7211","normalized_imdb_id":109579,"title":"Death and the Maiden","year":1994,"rating":0,"dubious":false,"date":"2016-10-17 21:06"},{"_id":"7263","normalized_imdb_id":110099,"title":"I.Q.","year":1994,"rating":0,"dubious":false,"date":"2016-11-15 13:29"},{"_id":"7295","normalized_imdb_id":109644,"title":"Don't Drink the Water","year":1994,"rating":1,"dubious":false,"date":"2016-11-24 17:37"},{"_id":"7643","normalized_imdb_id":110167,"title":"It Could Happen to You","year":1994,"rating":1,"dubious":false,"date":"2017-05-21 13:48"},{"_id":"7933","normalized_imdb_id":111512,"title":"Legend of Drunken Master, The","year":1994,"rating":3,"dubious":false,"date":"2017-12-01 08:38"},{"_id":"7935","normalized_imdb_id":110297,"title":"Lakota Woman: Siege at Wounded Knee","year":1994,"rating":3,"dubious":false,"date":"2017-12-02 06:00"},{"_id":"7972","normalized_imdb_id":110236,"title":"Kan du vissla Johanna?","year":1994,"rating":0,"dubious":false,"date":"2017-12-29 16:49"},{"_id":"8004","normalized_imdb_id":111033,"title":"Runaway Daughters","year":1994,"rating":3,"dubious":false,"date":"2018-01-10 22:03"},{"_id":"8446","normalized_imdb_id":111112,"title":"Secret of Roan Inish, The","year":1994,"rating":3,"dubious":false,"date":"2018-10-16 06:41"},{"_id":"8460","normalized_imdb_id":111201,"title":"Sirens","year":1994,"rating":3,"dubious":false,"date":"2018-10-29 20:07"},{"_id":"8494","normalized_imdb_id":3289712,"title":"Jenny's Wedding","year":1994,"rating":3,"dubious":false,"date":"2018-11-25 19:19"},{"_id":"8592","normalized_imdb_id":5818818,"title":"Die gottliche Ordnung","year":1994,"rating":3,"dubious":false,"date":"2019-01-14 00:56"},{"_id":"8735","normalized_imdb_id":109066,"title":"Vive L'Amour","year":1994,"rating":0,"dubious":false,"date":"2019-05-05 14:19"},{"_id":"8990","normalized_imdb_id":110527,"title":"Miracle on 34th Street","year":1994,"rating":3,"dubious":true,"date":"2020-01-27 23:26"},{"_id":"9108","normalized_imdb_id":109444,"title":"Clear and Present Danger","year":1994,"rating":0,"dubious":false,"date":"2020-05-03 02:54"},{"_id":"9406","normalized_imdb_id":110657,"title":"Next Karate Kid, The","year":1994,"rating":3,"dubious":false,"date":"2020-12-26 15:04"},{"_id":"9525","normalized_imdb_id":109798,"title":"Revenge of the Musketeers","year":1994,"rating":3,"dubious":false,"date":"2021-03-14 12:38"},{"_id":"9768","normalized_imdb_id":110490,"title":"Men of War","year":1994,"rating":1,"dubious":false,"date":"2021-05-01 10:31"},{"_id":"9772","normalized_imdb_id":110805,"title":"Pentathlon","year":1994,"rating":0,"dubious":false,"date":"2021-05-01 11:56"},{"_id":"9780","normalized_imdb_id":111520,"title":"Twilight Zone: Rod Serling's Lost Classics","year":1994,"rating":2,"dubious":false,"date":"2021-05-02 03:55"},{"_id":"9811","normalized_imdb_id":111640,"title":"Voll normaaal","year":1994,"rating":1,"dubious":false,"date":"2021-05-12 19:52"},{"_id":"9814","normalized_imdb_id":114129,"title":"Picture Bride","year":1994,"rating":3,"dubious":false,"date":"2021-05-12 20:38"},{"_id":"10077","normalized_imdb_id":110971,"title":"Renaissance Man","year":1994,"rating":2,"dubious":false,"date":"2021-10-10 03:08"},{"_id":"54","normalized_imdb_id":114814,"title":"Usual Suspects, The","year":1995,"rating":1,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"69","normalized_imdb_id":114369,"title":"Se7en","year":1995,"rating":1,"dubious":false,"date":"2008-07-24 00:00"},{"_id":"87","normalized_imdb_id":114709,"title":"Toy Story","year":1995,"rating":1,"dubious":false,"date":"2008-07-28 15:55"},{"_id":"97","normalized_imdb_id":113243,"title":"Hackers","year":1995,"rating":2,"dubious":false,"date":"2008-07-30 00:22"},{"_id":"106","normalized_imdb_id":112642,"title":"Casper","year":1995,"rating":3,"dubious":false,"date":"2008-07-30 22:18"},{"_id":"110","normalized_imdb_id":114069,"title":"Outbreak","year":1995,"rating":3,"dubious":false,"date":"2008-07-31 13:26"},{"_id":"147","normalized_imdb_id":112864,"title":"Die Hard: With a Vengeance","year":1995,"rating":1,"dubious":false,"date":"2008-08-06 19:23"},{"_id":"163","normalized_imdb_id":112950,"title":"Empire Records","year":1995,"rating":3,"dubious":false,"date":"2008-08-11 14:02"},{"_id":"184","normalized_imdb_id":112508,"title":"Billy Madison","year":1995,"rating":1,"dubious":false,"date":"2008-09-16 23:04"},{"_id":"205","normalized_imdb_id":112573,"title":"Braveheart","year":1995,"rating":2,"dubious":false,"date":"2008-10-23 16:19"},{"_id":"207","normalized_imdb_id":114148,"title":"Pocahontas","year":1995,"rating":3,"dubious":false,"date":"2008-10-23 16:23"},{"_id":"267","normalized_imdb_id":114388,"title":"Sense and Sensibility","year":1995,"rating":3,"dubious":false,"date":"2009-02-02 23:30"},{"_id":"287","normalized_imdb_id":113824,"title":"Mimi wo sumaseba (Whisper of the Heart)","year":1995,"rating":3,"dubious":false,"date":"2009-02-20 23:45"},{"_id":"294","normalized_imdb_id":112579,"title":"Bridges of Madison County, The","year":1995,"rating":3,"dubious":false,"date":"2009-03-04 02:43"},{"_id":"489","normalized_imdb_id":113749,"title":"Mallrats","year":1995,"rating":2,"dubious":false,"date":"2009-08-30 14:24"},{"_id":"566","normalized_imdb_id":114436,"title":"Showgirls","year":1995,"rating":3,"dubious":false,"date":"2009-12-17 23:04"},{"_id":"569","normalized_imdb_id":114614,"title":"Tank Girl","year":1995,"rating":3,"dubious":false,"date":"2009-12-18 00:31"},{"_id":"637","normalized_imdb_id":112701,"title":"Cold Comfort Farm","year":1995,"rating":3,"dubious":false,"date":"2010-01-12 17:32"},{"_id":"640","normalized_imdb_id":113347,"title":"How to Make an American Quilt","year":1995,"rating":3,"dubious":false,"date":"2010-01-18 08:27"},{"_id":"659","normalized_imdb_id":113568,"title":"Kôkaku kidôtai (Ghost in the Shell)","year":1995,"rating":0,"dubious":false,"date":"2010-01-22 01:45"},{"_id":"675","normalized_imdb_id":114558,"title":"Strange Days","year":1995,"rating":3,"dubious":true,"date":"2010-01-31 05:19"},{"_id":"749","normalized_imdb_id":112697,"title":"Clueless","year":1995,"rating":3,"dubious":false,"date":"2010-04-24 06:01"},{"_id":"897","normalized_imdb_id":114011,"title":"Now and Then","year":1995,"rating":3,"dubious":false,"date":"2010-06-04 23:48"},{"_id":"905","normalized_imdb_id":112679,"title":"Circle of Friends","year":1995,"rating":3,"dubious":false,"date":"2010-06-05 12:19"},{"_id":"947","normalized_imdb_id":114916,"title":"When Night is Falling","year":1995,"rating":3,"dubious":false,"date":"2010-06-16 13:19"},{"_id":"955","normalized_imdb_id":113855,"title":"Mortal Kombat","year":1995,"rating":1,"dubious":false,"date":"2010-06-17 17:37"},{"_id":"974","normalized_imdb_id":114906,"title":"Welcome to the Dollhouse","year":1995,"rating":3,"dubious":false,"date":"2010-06-24 06:37"},{"_id":"982","normalized_imdb_id":112379,"title":"Antonia's Line","year":1995,"rating":3,"dubious":false,"date":"2010-06-26 10:35"},{"_id":"986","normalized_imdb_id":113101,"title":"Four rooms","year":1995,"rating":3,"dubious":true,"date":"2010-06-26 21:14"},{"_id":"1024","normalized_imdb_id":112462,"title":"Batman Forever","year":1995,"rating":1,"dubious":false,"date":"2010-07-02 23:58"},{"_id":"1031","normalized_imdb_id":112453,"title":"Balto","year":1995,"rating":2,"dubious":false,"date":"2010-07-03 01:03"},{"_id":"1032","normalized_imdb_id":114924,"title":"While You Were Sleeping","year":1995,"rating":3,"dubious":false,"date":"2010-07-03 01:05"},{"_id":"1037","normalized_imdb_id":113277,"title":"Heat","year":1995,"rating":2,"dubious":false,"date":"2010-07-03 14:35"},{"_id":"1065","normalized_imdb_id":115491,"title":"Aladdin and the King of Thieves","year":1995,"rating":1,"dubious":false,"date":"2010-07-04 04:38"},{"_id":"1563","normalized_imdb_id":112130,"title":"Pride and Prejudice","year":1995,"rating":3,"dubious":false,"date":"2010-09-10 15:29"},{"_id":"1132","normalized_imdb_id":113117,"title":"French Kiss","year":1995,"rating":2,"dubious":false,"date":"2010-07-09 05:44"},{"_id":"1160","normalized_imdb_id":113198,"title":"A Goofy Movie","year":1995,"rating":2,"dubious":false,"date":"2010-07-11 00:46"},{"_id":"1433","normalized_imdb_id":113188,"title":"Gold Diggers: The Secret of Bear Mountain","year":1995,"rating":3,"dubious":false,"date":"2010-08-03 14:05"},{"_id":"1435","normalized_imdb_id":113670,"title":"A little princess","year":1995,"rating":3,"dubious":false,"date":"2010-08-03 14:17"},{"_id":"1643","normalized_imdb_id":114319,"title":"Sabrina","year":1995,"rating":3,"dubious":false,"date":"2010-10-05 03:00"},{"_id":"2060","normalized_imdb_id":112384,"title":"Apollo 13","year":1995,"rating":3,"dubious":false,"date":"2011-02-20 09:17"},{"_id":"2071","normalized_imdb_id":112571,"title":"Boys on the Side","year":1995,"rating":3,"dubious":false,"date":"2011-02-26 07:44"},{"_id":"2100","normalized_imdb_id":112722,"title":"Copycat","year":1995,"rating":3,"dubious":true,"date":"2011-03-08 07:03"},{"_id":"2163","normalized_imdb_id":114682,"title":"To Wong Foo, Thanks for Everything! Julie Newmar","year":1995,"rating":3,"dubious":false,"date":"2011-04-05 05:12"},{"_id":"2220","normalized_imdb_id":112641,"title":"Casino","year":1995,"rating":2,"dubious":true,"date":"2011-04-23 18:40"},{"_id":"2882","normalized_imdb_id":112792,"title":"Dangerous Minds","year":1995,"rating":3,"dubious":false,"date":"2011-11-29 20:06"},{"_id":"2303","normalized_imdb_id":114898,"title":"Waterworld","year":1995,"rating":2,"dubious":false,"date":"2011-05-17 21:28"},{"_id":"2366","normalized_imdb_id":114323,"title":"Safe","year":1995,"rating":3,"dubious":false,"date":"2011-05-30 21:47"},{"_id":"2394","normalized_imdb_id":109642,"title":"Dolores Claiborne","year":1995,"rating":3,"dubious":false,"date":"2011-06-12 04:20"},{"_id":"2422","normalized_imdb_id":112604,"title":"Butterfly Kiss","year":1995,"rating":3,"dubious":false,"date":"2011-06-21 15:16"},{"_id":"2573","normalized_imdb_id":109370,"title":"Canadian Bacon","year":1995,"rating":1,"dubious":true,"date":"2011-07-27 02:57"},{"_id":"2684","normalized_imdb_id":112288,"title":"Addiction, The","year":1995,"rating":3,"dubious":false,"date":"2011-09-16 13:20"},{"_id":"2690","normalized_imdb_id":112651,"title":"Celluloid Closet, The","year":1995,"rating":3,"dubious":false,"date":"2011-09-18 04:17"},{"_id":"2835","normalized_imdb_id":113326,"title":"Rumble in the Bronx (Hung fan kui)","year":1995,"rating":1,"dubious":false,"date":"2011-11-09 08:56"},{"_id":"2864","normalized_imdb_id":114746,"title":"Twelve Monkeys","year":1995,"rating":1,"dubious":false,"date":"2011-11-26 14:45"},{"_id":"2914","normalized_imdb_id":113957,"title":"Net, The","year":1995,"rating":3,"dubious":false,"date":"2011-12-08 15:09"},{"_id":"2931","normalized_imdb_id":113416,"title":"Incredibly True Adventures of Two Girls in Love, The","year":1995,"rating":3,"dubious":false,"date":"2011-12-16 01:08"},{"_id":"3027","normalized_imdb_id":114395,"title":"Serving in Silence","year":1995,"rating":3,"dubious":false,"date":"2012-02-01 06:38"},{"_id":"3090","normalized_imdb_id":112435,"title":"Baby-Sitters Club, The","year":1995,"rating":3,"dubious":false,"date":"2012-03-05 03:26"},{"_id":"3142","normalized_imdb_id":114117,"title":"Persuasion","year":1995,"rating":3,"dubious":false,"date":"2012-03-25 00:20"},{"_id":"3267","normalized_imdb_id":114108,"title":"Pebble and the Penguin, The","year":1995,"rating":2,"dubious":false,"date":"2012-05-17 22:01"},{"_id":"3298","normalized_imdb_id":112913,"title":"Fallen Angels","year":1995,"rating":1,"dubious":false,"date":"2012-05-31 23:00"},{"_id":"3332","normalized_imdb_id":112513,"title":"Sailor Moon SuperS the Movie, The Ten Senshi Unite, Mystery of the Black Dream Hole (Sailor Moon Super S the Movie: Black Dream","year":1995,"rating":3,"dubious":false,"date":"2012-06-07 15:07"},{"_id":"3370","normalized_imdb_id":113820,"title":"Mighty Morphin Power Rangers: The Movie","year":1995,"rating":3,"dubious":false,"date":"2012-06-21 23:57"},{"_id":"3684","normalized_imdb_id":112346,"title":"American President, The","year":1995,"rating":3,"dubious":false,"date":"2012-11-21 09:08"},{"_id":"3801","normalized_imdb_id":113497,"title":"Jumanji","year":1995,"rating":3,"dubious":false,"date":"2013-01-03 20:06"},{"_id":"3877","normalized_imdb_id":113247,"title":"La Haine","year":1995,"rating":0,"dubious":false,"date":"2013-02-06 22:12"},{"_id":"4020","normalized_imdb_id":112471,"title":"Before Sunrise","year":1995,"rating":0,"dubious":false,"date":"2013-03-27 13:43"},{"_id":"4169","normalized_imdb_id":114508,"title":"Species","year":1995,"rating":3,"dubious":true,"date":"2013-05-27 03:06"},{"_id":"4247","normalized_imdb_id":114214,"title":"Quick and the Dead, The","year":1995,"rating":3,"dubious":false,"date":"2013-06-16 04:36"},{"_id":"4640","normalized_imdb_id":112401,"title":"Assassins","year":1995,"rating":1,"dubious":false,"date":"2013-09-28 09:11"},{"_id":"4678","normalized_imdb_id":113725,"title":"Maborosi","year":1995,"rating":3,"dubious":false,"date":"2013-10-08 05:48"},{"_id":"4749","normalized_imdb_id":114787,"title":"Underground","year":1995,"rating":1,"dubious":false,"date":"2013-10-29 16:53"},{"_id":"4791","normalized_imdb_id":112040,"title":"Langoliers, The","year":1995,"rating":3,"dubious":false,"date":"2013-11-06 17:49"},{"_id":"4902","normalized_imdb_id":112715,"title":"Congo","year":1995,"rating":0,"dubious":false,"date":"2013-12-03 00:36"},{"_id":"4904","normalized_imdb_id":113321,"title":"Home for the holidays","year":1995,"rating":3,"dubious":false,"date":"2013-12-03 01:23"},{"_id":"5084","normalized_imdb_id":112896,"title":"Dracula: Dead and Loving It","year":1995,"rating":3,"dubious":false,"date":"2014-01-18 08:13"},{"_id":"5199","normalized_imdb_id":235133,"title":"Ringu Kanzenban","year":1995,"rating":1,"dubious":false,"date":"2014-02-24 01:33"},{"_id":"5317","normalized_imdb_id":112857,"title":"Devil in a Blue Dress","year":1995,"rating":1,"dubious":false,"date":"2014-03-24 10:28"},{"_id":"5596","normalized_imdb_id":112682,"title":"City of Lost Children, The","year":1995,"rating":3,"dubious":true,"date":"2014-06-27 21:23"},{"_id":"5655","normalized_imdb_id":142243,"title":"Dragon Ball Z: Wrath of the Dragon","year":1995,"rating":2,"dubious":false,"date":"2014-07-27 02:01"},{"_id":"5710","normalized_imdb_id":112281,"title":"Ace Ventura: When Nature Calls","year":1995,"rating":0,"dubious":false,"date":"2014-08-21 16:46"},{"_id":"5728","normalized_imdb_id":112870,"title":"Dilwale Dulhania Le Jayenge","year":1995,"rating":3,"dubious":false,"date":"2014-09-06 15:46"},{"_id":"5771","normalized_imdb_id":113540,"title":"Kids","year":1995,"rating":3,"dubious":true,"date":"2014-09-21 09:41"},{"_id":"5812","normalized_imdb_id":112819,"title":"Dead Presidents","year":1995,"rating":3,"dubious":true,"date":"2014-10-06 23:32"},{"_id":"5816","normalized_imdb_id":113071,"title":"First Knight","year":1995,"rating":2,"dubious":true,"date":"2014-10-07 21:23"},{"_id":"5823","normalized_imdb_id":113305,"title":"Higher Learning","year":1995,"rating":3,"dubious":false,"date":"2014-10-09 00:42"},{"_id":"6251","normalized_imdb_id":113189,"title":"GoldenEye","year":1995,"rating":3,"dubious":true,"date":"2015-05-18 21:52"},{"_id":"6544","normalized_imdb_id":114057,"title":"Othello","year":1995,"rating":2,"dubious":false,"date":"2015-11-16 05:36"},{"_id":"6625","normalized_imdb_id":112851,"title":"Desperado","year":1995,"rating":1,"dubious":false,"date":"2015-12-24 22:16"},{"_id":"6912","normalized_imdb_id":114095,"title":"Party Girl","year":1995,"rating":3,"dubious":false,"date":"2016-05-31 07:44"},{"_id":"7073","normalized_imdb_id":113918,"title":"Nadie hablara de nosotras cuando hayamos muerto","year":1995,"rating":3,"dubious":false,"date":"2016-08-27 12:10"},{"_id":"7364","normalized_imdb_id":112431,"title":"Babe","year":1995,"rating":3,"dubious":false,"date":"2016-12-29 20:24"},{"_id":"7388","normalized_imdb_id":112922,"title":"El dia de la bestia","year":1995,"rating":3,"dubious":true,"date":"2017-01-11 21:59"},{"_id":"7547","normalized_imdb_id":114852,"title":"Village of the Damned","year":1995,"rating":3,"dubious":false,"date":"2017-03-31 11:56"},{"_id":"7566","normalized_imdb_id":113221,"title":"Grim","year":1995,"rating":3,"dubious":false,"date":"2017-04-08 14:48"},{"_id":"7568","normalized_imdb_id":114689,"title":"Catnapped! The Movie","year":1995,"rating":3,"dubious":false,"date":"2017-04-13 05:56"},{"_id":"7651","normalized_imdb_id":113972,"title":"Nick of Time","year":1995,"rating":3,"dubious":false,"date":"2017-05-21 15:30"},{"_id":"7663","normalized_imdb_id":114671,"title":"Land and Freedom","year":1995,"rating":1,"dubious":false,"date":"2017-05-24 13:57"},{"_id":"7702","normalized_imdb_id":113083,"title":"La flor de mi secreto","year":1995,"rating":3,"dubious":false,"date":"2017-06-23 13:15"},{"_id":"7791","normalized_imdb_id":113118,"title":"Friday","year":1995,"rating":2,"dubious":false,"date":"2017-08-31 05:25"},{"_id":"7805","normalized_imdb_id":114694,"title":"Tommy Boy","year":1995,"rating":3,"dubious":false,"date":"2017-09-19 15:08"},{"_id":"7892","normalized_imdb_id":113492,"title":"Judge Dredd","year":1995,"rating":3,"dubious":false,"date":"2017-11-07 19:00"},{"_id":"8442","normalized_imdb_id":113737,"title":"Magic in the Water","year":1995,"rating":1,"dubious":true,"date":"2018-10-15 00:19"},{"_id":"8451","normalized_imdb_id":112818,"title":"Dead Man Walking","year":1995,"rating":3,"dubious":false,"date":"2018-10-22 02:13"},{"_id":"8526","normalized_imdb_id":112461,"title":"Basketball Diaries, The","year":1995,"rating":1,"dubious":false,"date":"2018-12-14 22:15"},{"_id":"8539","normalized_imdb_id":114702,"title":"Total Eclipse","year":1995,"rating":1,"dubious":false,"date":"2018-12-14 23:15"},{"_id":"8919","normalized_imdb_id":111359,"title":"Tall Tale","year":1995,"rating":1,"dubious":false,"date":"2019-12-04 02:39"},{"_id":"8923","normalized_imdb_id":113627,"title":"Leaving Las Vegas","year":1995,"rating":2,"dubious":false,"date":"2019-12-08 07:08"},{"_id":"8930","normalized_imdb_id":110006,"title":"Heavyweights","year":1995,"rating":0,"dubious":false,"date":"2019-12-12 20:15"},{"_id":"9064","normalized_imdb_id":112966,"title":"Englishman Who Went Up a Hill But Came Down a Mountain, The","year":1995,"rating":0,"dubious":false,"date":"2020-04-04 07:25"},{"_id":"9104","normalized_imdb_id":114885,"title":"Waiting To Exhale","year":1995,"rating":2,"dubious":false,"date":"2020-05-01 02:27"},{"_id":"9230","normalized_imdb_id":113442,"title":"It Takes Two","year":1995,"rating":1,"dubious":false,"date":"2020-08-09 01:23"},{"_id":"9588","normalized_imdb_id":114287,"title":"Rob Roy","year":1995,"rating":0,"dubious":false,"date":"2021-03-27 18:18"},{"_id":"9958","normalized_imdb_id":121401,"title":"Indira","year":1995,"rating":2,"dubious":false,"date":"2021-07-11 09:19"},{"_id":"10039","normalized_imdb_id":110443,"title":"Major Payne","year":1995,"rating":0,"dubious":false,"date":"2021-09-07 00:05"},{"_id":"9991","normalized_imdb_id":112769,"title":"La cérémonie","year":1995,"rating":3,"dubious":false,"date":"2021-08-03 20:38"},{"_id":"10069","normalized_imdb_id":112386,"title":"Les apprentis","year":1995,"rating":1,"dubious":false,"date":"2021-09-29 19:47"},{"_id":"10099","normalized_imdb_id":114736,"title":"True Crime","year":1995,"rating":3,"dubious":false,"date":"2021-10-23 02:15"},{"_id":"38","normalized_imdb_id":117500,"title":"Rock, The","year":1996,"rating":1,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"111","normalized_imdb_id":116684,"title":"Jane Eyre","year":1996,"rating":3,"dubious":false,"date":"2008-07-31 17:54"},{"_id":"129","normalized_imdb_id":117723,"title":"Spy Hard","year":1996,"rating":1,"dubious":false,"date":"2008-08-02 01:44"},{"_id":"137","normalized_imdb_id":117951,"title":"Trainspotting","year":1996,"rating":2,"dubious":false,"date":"2008-08-03 00:20"},{"_id":"182","normalized_imdb_id":115736,"title":"Bound","year":1996,"rating":3,"dubious":false,"date":"2008-09-12 14:50"},{"_id":"369","normalized_imdb_id":117008,"title":"Matilda","year":1996,"rating":3,"dubious":false,"date":"2009-07-13 10:40"},{"_id":"431","normalized_imdb_id":115759,"title":"Broken Arrow","year":1996,"rating":0,"dubious":false,"date":"2009-08-09 18:55"},{"_id":"435","normalized_imdb_id":117705,"title":"Space Jam","year":1996,"rating":1,"dubious":false,"date":"2009-08-10 10:58"},{"_id":"444","normalized_imdb_id":116629,"title":"Independence Day","year":1996,"rating":3,"dubious":false,"date":"2009-08-11 00:16"},{"_id":"445","normalized_imdb_id":117060,"title":"Mission: Impossible","year":1996,"rating":1,"dubious":false,"date":"2009-08-11 09:39"},{"_id":"448","normalized_imdb_id":116367,"title":"From Dusk Till Dawn","year":1996,"rating":1,"dubious":false,"date":"2009-08-12 15:18"},{"_id":"449","normalized_imdb_id":115798,"title":"Cable Guy, The","year":1996,"rating":1,"dubious":false,"date":"2009-08-12 17:17"},{"_id":"525","normalized_imdb_id":117420,"title":"Quest, The","year":1996,"rating":0,"dubious":false,"date":"2009-10-11 08:54"},{"_id":"535","normalized_imdb_id":116130,"title":"Down Periscope","year":1996,"rating":0,"dubious":false,"date":"2009-10-31 08:23"},{"_id":"649","normalized_imdb_id":117571,"title":"Scream","year":1996,"rating":3,"dubious":false,"date":"2010-01-20 00:28"},{"_id":"741","normalized_imdb_id":113649,"title":"Libertarias","year":1996,"rating":3,"dubious":false,"date":"2010-04-18 14:50"},{"_id":"760","normalized_imdb_id":116493,"title":"Harriet the Spy","year":1996,"rating":3,"dubious":false,"date":"2010-04-26 15:25"},{"_id":"881","normalized_imdb_id":116308,"title":"Fire","year":1996,"rating":3,"dubious":false,"date":"2010-05-31 04:42"},{"_id":"912","normalized_imdb_id":116313,"title":"First Wives Club, The","year":1996,"rating":3,"dubious":false,"date":"2010-06-06 16:43"},{"_id":"970","normalized_imdb_id":116594,"title":"I Shot Andy Warhol","year":1996,"rating":3,"dubious":false,"date":"2010-06-23 07:31"},{"_id":"977","normalized_imdb_id":116418,"title":"Girls Town","year":1996,"rating":3,"dubious":false,"date":"2010-06-25 01:13"},{"_id":"981","normalized_imdb_id":116353,"title":"Foxfire","year":1996,"rating":3,"dubious":false,"date":"2010-06-26 10:25"},{"_id":"1010","normalized_imdb_id":116361,"title":"Freeway","year":1996,"rating":3,"dubious":false,"date":"2010-06-30 05:54"},{"_id":"1030","normalized_imdb_id":116136,"title":"DragonHeart","year":1996,"rating":2,"dubious":false,"date":"2010-07-03 01:01"},{"_id":"1062","normalized_imdb_id":116583,"title":"Hunchback of Notre Dame, The","year":1996,"rating":1,"dubious":false,"date":"2010-07-04 04:31"},{"_id":"1340","normalized_imdb_id":116908,"title":"Long Kiss Goodnight, The","year":1996,"rating":3,"dubious":false,"date":"2010-07-26 13:18"},{"_id":"1343","normalized_imdb_id":116931,"title":"Love and Other Catastrophes","year":1996,"rating":3,"dubious":false,"date":"2010-07-26 13:46"},{"_id":"1411","normalized_imdb_id":117589,"title":"Secrets & Lies","year":1996,"rating":3,"dubious":false,"date":"2010-07-31 09:16"},{"_id":"1233","normalized_imdb_id":116477,"title":"Hamlet","year":1996,"rating":1,"dubious":false,"date":"2010-07-22 23:21"},{"_id":"1099","normalized_imdb_id":117477,"title":"Ridicule","year":1996,"rating":1,"dubious":false,"date":"2010-07-05 00:02"},{"_id":"1129","normalized_imdb_id":117110,"title":"Muppet Treasure Island","year":1996,"rating":1,"dubious":false,"date":"2010-07-09 05:02"},{"_id":"1156","normalized_imdb_id":115963,"title":"Craft, The","year":1996,"rating":3,"dubious":false,"date":"2010-07-11 00:27"},{"_id":"1428","normalized_imdb_id":116225,"title":"Escape from L.A.","year":1996,"rating":1,"dubious":false,"date":"2010-08-02 19:37"},{"_id":"1569","normalized_imdb_id":116329,"title":"Fly Away Home","year":1996,"rating":3,"dubious":true,"date":"2010-09-14 20:03"},{"_id":"1172","normalized_imdb_id":115433,"title":"101 Dalmatians","year":1996,"rating":3,"dubious":false,"date":"2010-07-13 19:27"},{"_id":"1538","normalized_imdb_id":377683,"title":"Connie Gomper & the Pack","year":1996,"rating":0,"dubious":false,"date":"2010-09-06 06:48"},{"_id":"1087","normalized_imdb_id":116552,"title":"Homeward Bound II: Lost in San Francisco","year":1996,"rating":1,"dubious":false,"date":"2010-07-04 22:50"},{"_id":"1082","normalized_imdb_id":117998,"title":"Twister","year":1996,"rating":3,"dubious":false,"date":"2010-07-04 22:29"},{"_id":"1722","normalized_imdb_id":116705,"title":"Jingle All the Way","year":1996,"rating":1,"dubious":false,"date":"2010-11-02 03:49"},{"_id":"1791","normalized_imdb_id":116293,"title":"Female Perversions","year":1996,"rating":3,"dubious":false,"date":"2010-11-30 17:44"},{"_id":"1818","normalized_imdb_id":117765,"title":"Striptease","year":1996,"rating":3,"dubious":true,"date":"2010-12-03 10:20"},{"_id":"1852","normalized_imdb_id":116282,"title":"Fargo","year":1996,"rating":2,"dubious":false,"date":"2010-12-14 23:36"},{"_id":"1859","normalized_imdb_id":115580,"title":"Associate, The","year":1996,"rating":3,"dubious":false,"date":"2010-12-19 21:49"},{"_id":"1874","normalized_imdb_id":115133,"title":"Charlot og Charlotte","year":1996,"rating":3,"dubious":false,"date":"2010-12-25 21:24"},{"_id":"2106","normalized_imdb_id":116692,"title":"Beyond Silence (Jenseits der Stille)","year":1996,"rating":3,"dubious":false,"date":"2011-03-10 03:43"},{"_id":"2154","normalized_imdb_id":117603,"title":"Set It Off","year":1996,"rating":3,"dubious":false,"date":"2011-03-29 06:25"},{"_id":"2208","normalized_imdb_id":116442,"title":"Grace of my heart","year":1996,"rating":3,"dubious":false,"date":"2011-04-23 15:10"},{"_id":"2221","normalized_imdb_id":116191,"title":"Emma","year":1996,"rating":3,"dubious":false,"date":"2011-04-23 18:43"},{"_id":"2449","normalized_imdb_id":116209,"title":"English Patient, The","year":1996,"rating":3,"dubious":false,"date":"2011-06-27 02:25"},{"_id":"2885","normalized_imdb_id":117718,"title":"Spitfire Grill, The","year":1996,"rating":3,"dubious":false,"date":"2011-11-29 20:17"},{"_id":"2937","normalized_imdb_id":117057,"title":"Mirror Has Two Faces, The","year":1996,"rating":3,"dubious":false,"date":"2011-12-17 20:52"},{"_id":"2994","normalized_imdb_id":117407,"title":"Pusher","year":1996,"rating":0,"dubious":false,"date":"2012-01-16 14:44"},{"_id":"3017","normalized_imdb_id":117797,"title":"Swallowtail Butterfly","year":1996,"rating":3,"dubious":false,"date":"2012-01-28 20:02"},{"_id":"3023","normalized_imdb_id":117887,"title":"That Thing You Do!","year":1996,"rating":3,"dubious":false,"date":"2012-01-29 22:39"},{"_id":"3038","normalized_imdb_id":115744,"title":"Brassed Off","year":1996,"rating":3,"dubious":false,"date":"2012-02-11 16:12"},{"_id":"3059","normalized_imdb_id":118113,"title":"Walking and Talking","year":1996,"rating":3,"dubious":false,"date":"2012-02-20 13:11"},{"_id":"3081","normalized_imdb_id":115639,"title":"Beautiful Girls","year":1996,"rating":3,"dubious":false,"date":"2012-02-29 15:26"},{"_id":"3242","normalized_imdb_id":115856,"title":"When the Cat's Away","year":1996,"rating":3,"dubious":false,"date":"2012-05-09 09:09"},{"_id":"3291","normalized_imdb_id":117093,"title":"Mother Night","year":1996,"rating":1,"dubious":false,"date":"2012-05-29 00:33"},{"_id":"3383","normalized_imdb_id":115591,"title":"August","year":1996,"rating":3,"dubious":true,"date":"2012-06-26 16:49"},{"_id":"3402","normalized_imdb_id":117731,"title":"Star Trek: First Contact","year":1996,"rating":3,"dubious":false,"date":"2012-07-07 15:48"},{"_id":"3410","normalized_imdb_id":116421,"title":"Glimmer Man, The","year":1996,"rating":1,"dubious":false,"date":"2012-07-09 21:40"},{"_id":"3526","normalized_imdb_id":119256,"title":"Hard Eight","year":1996,"rating":0,"dubious":false,"date":"2012-09-10 13:21"},{"_id":"3553","normalized_imdb_id":116426,"title":"God of Cookery, The","year":1996,"rating":1,"dubious":false,"date":"2012-09-27 06:00"},{"_id":"3679","normalized_imdb_id":116365,"title":"Frighteners, The","year":1996,"rating":3,"dubious":false,"date":"2012-11-20 14:59"},{"_id":"3703","normalized_imdb_id":116767,"title":"Kids Return","year":1996,"rating":3,"dubious":true,"date":"2012-12-02 16:31"},{"_id":"3822","normalized_imdb_id":116778,"title":"Kingpin","year":1996,"rating":1,"dubious":false,"date":"2013-01-13 21:14"},{"_id":"3966","normalized_imdb_id":115678,"title":"Big Night","year":1996,"rating":3,"dubious":false,"date":"2013-03-10 05:46"},{"_id":"3970","normalized_imdb_id":116683,"title":"James and the Giant Peach","year":1996,"rating":3,"dubious":false,"date":"2013-03-11 01:26"},{"_id":"4067","normalized_imdb_id":117509,"title":"Romeo + Juliet","year":1996,"rating":3,"dubious":true,"date":"2013-04-17 16:00"},{"_id":"4353","normalized_imdb_id":116287,"title":"Fear","year":1996,"rating":3,"dubious":false,"date":"2013-07-16 00:28"},{"_id":"4425","normalized_imdb_id":117534,"title":"Sabrina the Teenage Witch","year":1996,"rating":3,"dubious":false,"date":"2013-07-30 23:30"},{"_id":"4482","normalized_imdb_id":117968,"title":"Three Lives and Only One Death","year":1996,"rating":2,"dubious":false,"date":"2013-08-17 12:35"},{"_id":"4621","normalized_imdb_id":116996,"title":"Mars Attacks!","year":1996,"rating":3,"dubious":false,"date":"2013-09-22 20:18"},{"_id":"4778","normalized_imdb_id":116277,"title":"Fan, The","year":1996,"rating":1,"dubious":false,"date":"2013-11-04 21:16"},{"_id":"4822","normalized_imdb_id":117102,"title":"Mr. Wrong","year":1996,"rating":3,"dubious":false,"date":"2013-11-13 22:07"},{"_id":"4831","normalized_imdb_id":116650,"title":"Irma Vep","year":1996,"rating":3,"dubious":false,"date":"2013-11-15 05:49"},{"_id":"4859","normalized_imdb_id":116260,"title":"Eye for an Eye","year":1996,"rating":3,"dubious":false,"date":"2013-11-20 18:29"},{"_id":"4890","normalized_imdb_id":117979,"title":"Truth About Cats & Dogs, The","year":1996,"rating":3,"dubious":false,"date":"2013-11-29 22:53"},{"_id":"4967","normalized_imdb_id":115857,"title":"Chain Reaction","year":1996,"rating":1,"dubious":false,"date":"2013-12-20 18:36"},{"_id":"4972","normalized_imdb_id":114151,"title":"Poison Ivy II","year":1996,"rating":3,"dubious":false,"date":"2013-12-22 19:53"},{"_id":"4977","normalized_imdb_id":115685,"title":"Birdcage, The","year":1996,"rating":2,"dubious":true,"date":"2013-12-24 06:35"},{"_id":"5125","normalized_imdb_id":116985,"title":"Manny & Lo","year":1996,"rating":3,"dubious":false,"date":"2014-02-01 20:10"},{"_id":"5266","normalized_imdb_id":116514,"title":"Hellraiser: Bloodline","year":1996,"rating":1,"dubious":false,"date":"2014-03-10 13:11"},{"_id":"5295","normalized_imdb_id":116905,"title":"Lone Star","year":1996,"rating":2,"dubious":false,"date":"2014-03-17 22:35"},{"_id":"5326","normalized_imdb_id":117372,"title":"Preacher's Wife, The","year":1996,"rating":3,"dubious":false,"date":"2014-03-25 08:57"},{"_id":"5343","normalized_imdb_id":313773,"title":"Welcome to the Discworld","year":1996,"rating":0,"dubious":false,"date":"2014-03-31 12:52"},{"_id":"5413","normalized_imdb_id":117802,"title":"Swingers","year":1996,"rating":2,"dubious":false,"date":"2014-04-22 22:07"},{"_id":"5493","normalized_imdb_id":115641,"title":"Beavis and Butt-Head Do America","year":1996,"rating":1,"dubious":false,"date":"2014-05-20 00:02"},{"_id":"5551","normalized_imdb_id":115964,"title":"Crash","year":1996,"rating":3,"dubious":false,"date":"2014-06-08 21:22"},{"_id":"5698","normalized_imdb_id":115640,"title":"Beautiful Thing","year":1996,"rating":3,"dubious":false,"date":"2014-08-13 20:07"},{"_id":"5778","normalized_imdb_id":116041,"title":"Daytrippers, The","year":1996,"rating":3,"dubious":false,"date":"2014-09-25 17:08"},{"_id":"5786","normalized_imdb_id":118111,"title":"Waiting for Guffman","year":1996,"rating":3,"dubious":false,"date":"2014-09-28 11:47"},{"_id":"5855","normalized_imdb_id":115485,"title":"A Jin de gushi / Ah Kam, the Stunt woman","year":1996,"rating":1,"dubious":false,"date":"2014-10-19 22:28"},{"_id":"5883","normalized_imdb_id":117737,"title":"Stealing Beauty","year":1996,"rating":3,"dubious":true,"date":"2014-10-29 02:05"},{"_id":"5932","normalized_imdb_id":117876,"title":"Tenchi Muyô! In Love","year":1996,"rating":3,"dubious":false,"date":"2014-11-20 21:30"},{"_id":"6074","normalized_imdb_id":115632,"title":"Basquiat","year":1996,"rating":2,"dubious":false,"date":"2015-01-27 02:46"},{"_id":"6169","normalized_imdb_id":118105,"title":"Va' dove ti porta il cuore","year":1996,"rating":3,"dubious":false,"date":"2015-03-28 11:49"},{"_id":"6441","normalized_imdb_id":117128,"title":"Mystery Science Theater 3000: The Movie","year":1996,"rating":1,"dubious":false,"date":"2015-09-11 21:55"},{"_id":"6536","normalized_imdb_id":116212,"title":"Entertaining Angels: The Dorothy Day Story","year":1996,"rating":3,"dubious":false,"date":"2015-11-06 05:02"},{"_id":"6623","normalized_imdb_id":117038,"title":"Michael","year":1996,"rating":3,"dubious":true,"date":"2015-12-21 20:53"},{"_id":"6738","normalized_imdb_id":115994,"title":"Curdled","year":1996,"rating":3,"dubious":false,"date":"2016-02-19 21:59"},{"_id":"6754","normalized_imdb_id":115650,"title":"La belle verte","year":1996,"rating":3,"dubious":false,"date":"2016-03-01 13:15"},{"_id":"6839","normalized_imdb_id":116213,"title":"Eraser","year":1996,"rating":3,"dubious":true,"date":"2016-04-19 04:05"},{"_id":"6943","normalized_imdb_id":117991,"title":"Twelfth Night or What You Will","year":1996,"rating":3,"dubious":false,"date":"2016-06-22 02:10"},{"_id":"7051","normalized_imdb_id":116378,"title":"Funeral, The","year":1996,"rating":3,"dubious":true,"date":"2016-08-18 22:28"},{"_id":"7352","normalized_imdb_id":117665,"title":"Sleepers","year":1996,"rating":1,"dubious":false,"date":"2016-12-25 01:47"},{"_id":"7598","normalized_imdb_id":118015,"title":"Un air de famille","year":1996,"rating":3,"dubious":false,"date":"2017-05-01 08:56"},{"_id":"7630","normalized_imdb_id":116250,"title":"Evita","year":1996,"rating":3,"dubious":true,"date":"2017-05-21 12:16"},{"_id":"7644","normalized_imdb_id":116669,"title":"Jack","year":1996,"rating":2,"dubious":false,"date":"2017-05-21 13:52"},{"_id":"7658","normalized_imdb_id":117381,"title":"Primal Fear","year":1996,"rating":1,"dubious":false,"date":"2017-05-21 18:02"},{"_id":"7678","normalized_imdb_id":114720,"title":"Tremors II: Aftershocks","year":1996,"rating":0,"dubious":false,"date":"2017-06-07 21:34"},{"_id":"7932","normalized_imdb_id":115988,"title":"Crucible, The","year":1996,"rating":3,"dubious":false,"date":"2017-12-01 08:37"},{"_id":"8008","normalized_imdb_id":116695,"title":"Jerry Maguire","year":1996,"rating":2,"dubious":false,"date":"2018-01-13 01:38"},{"_id":"8057","normalized_imdb_id":116999,"title":"Marvin's Room","year":1996,"rating":3,"dubious":true,"date":"2018-02-15 01:29"},{"_id":"8124","normalized_imdb_id":237765,"title":"Sonic the Hedgehog: The Movie","year":1996,"rating":0,"dubious":false,"date":"2018-03-20 04:50"},{"_id":"8208","normalized_imdb_id":116830,"title":"Last Man Standing","year":1996,"rating":1,"dubious":false,"date":"2018-05-15 21:16"},{"_id":"8638","normalized_imdb_id":115438,"title":"2 Days in the Valley","year":1996,"rating":3,"dubious":true,"date":"2019-02-08 06:17"},{"_id":"9065","normalized_imdb_id":117918,"title":"Tin Cup","year":1996,"rating":3,"dubious":true,"date":"2020-04-04 17:09"},{"_id":"9088","normalized_imdb_id":118125,"title":"Watermelon Woman, The","year":1996,"rating":3,"dubious":false,"date":"2020-04-22 06:32"},{"_id":"9319","normalized_imdb_id":117091,"title":"Mother","year":1996,"rating":3,"dubious":true,"date":"2020-11-04 02:27"},{"_id":"9457","normalized_imdb_id":116770,"title":"La lengua asesina","year":1996,"rating":3,"dubious":true,"date":"2021-01-29 09:10"},{"_id":"9725","normalized_imdb_id":116040,"title":"Daylight","year":1996,"rating":1,"dubious":false,"date":"2021-04-29 17:35"},{"_id":"9782","normalized_imdb_id":115624,"title":"Barb Wire","year":1996,"rating":1,"dubious":false,"date":"2021-05-02 10:52"},{"_id":"9790","normalized_imdb_id":207061,"title":"Rollergator","year":1996,"rating":3,"dubious":false,"date":"2021-05-05 19:18"},{"_id":"10042","normalized_imdb_id":117039,"title":"Michael Collins","year":1996,"rating":1,"dubious":false,"date":"2021-09-09 07:11"},{"_id":"10098","normalized_imdb_id":117331,"title":"Phantom, The","year":1996,"rating":3,"dubious":true,"date":"2021-10-22 20:35"},{"_id":"5","normalized_imdb_id":118655,"title":"Austin Powers: International Man of Mystery","year":1997,"rating":2,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"22","normalized_imdb_id":119116,"title":"Fifth Element, The","year":1997,"rating":1,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"68","normalized_imdb_id":119174,"title":"Game, The","year":1997,"rating":1,"dubious":false,"date":"2008-07-24 00:00"},{"_id":"70","normalized_imdb_id":119731,"title":"Murder at 1600","year":1997,"rating":1,"dubious":false,"date":"2008-07-24 00:00"},{"_id":"77","normalized_imdb_id":119177,"title":"Gattaca","year":1997,"rating":1,"dubious":false,"date":"2008-07-28 01:23"},{"_id":"83","normalized_imdb_id":119654,"title":"Men in Black","year":1997,"rating":1,"dubious":false,"date":"2008-07-28 12:36"},{"_id":"105","normalized_imdb_id":118971,"title":"Devil's Advocate, The","year":1997,"rating":3,"dubious":false,"date":"2008-07-30 20:31"},{"_id":"107","normalized_imdb_id":120201,"title":"Starship Troopers","year":1997,"rating":3,"dubious":false,"date":"2008-07-30 22:25"},{"_id":"297","normalized_imdb_id":118583,"title":"Alien: Resurrection","year":1997,"rating":3,"dubious":false,"date":"2009-03-07 22:27"},{"_id":"318","normalized_imdb_id":118883,"title":"Conspiracy Theory","year":1997,"rating":2,"dubious":false,"date":"2009-05-04 14:23"},{"_id":"326","normalized_imdb_id":119698,"title":"Mononoke-hime","year":1997,"rating":3,"dubious":false,"date":"2009-05-18 07:58"},{"_id":"343","normalized_imdb_id":120514,"title":"Wilde","year":1997,"rating":3,"dubious":true,"date":"2009-06-14 22:34"},{"_id":"345","normalized_imdb_id":120338,"title":"Titanic","year":1997,"rating":3,"dubious":false,"date":"2009-06-17 04:00"},{"_id":"424","normalized_imdb_id":118928,"title":"Dante's Peak","year":1997,"rating":3,"dubious":false,"date":"2009-08-07 23:37"},{"_id":"425","normalized_imdb_id":119528,"title":"Liar Liar","year":1997,"rating":1,"dubious":false,"date":"2009-08-08 09:01"},{"_id":"426","normalized_imdb_id":119137,"title":"Flubber","year":1997,"rating":2,"dubious":false,"date":"2009-08-08 10:48"},{"_id":"524","normalized_imdb_id":119173,"title":"G.I. Jane","year":1997,"rating":3,"dubious":false,"date":"2009-10-10 21:44"},{"_id":"573","normalized_imdb_id":118880,"title":"Con Air","year":1997,"rating":2,"dubious":false,"date":"2009-12-20 17:50"},{"_id":"614","normalized_imdb_id":118799,"title":"La vita è bella","year":1997,"rating":0,"dubious":false,"date":"2009-12-28 04:16"},{"_id":"623","normalized_imdb_id":119217,"title":"Good Will Hunting","year":1997,"rating":0,"dubious":false,"date":"2009-12-28 23:23"},{"_id":"634","normalized_imdb_id":119925,"title":"Postman, The","year":1997,"rating":1,"dubious":false,"date":"2010-01-07 20:52"},{"_id":"662","normalized_imdb_id":119081,"title":"Event Horizon","year":1997,"rating":3,"dubious":false,"date":"2010-01-23 22:50"},{"_id":"729","normalized_imdb_id":119282,"title":"Hercules","year":1997,"rating":3,"dubious":false,"date":"2010-04-11 03:24"},{"_id":"754","normalized_imdb_id":120032,"title":"Romy and Michelle's High School Reunion","year":1997,"rating":3,"dubious":false,"date":"2010-04-24 06:20"},{"_id":"792","normalized_imdb_id":123755,"title":"Cube","year":1997,"rating":3,"dubious":false,"date":"2010-05-12 11:45"},{"_id":"904","normalized_imdb_id":118884,"title":"Contact","year":1997,"rating":3,"dubious":false,"date":"2010-06-05 11:17"},{"_id":"931","normalized_imdb_id":118818,"title":"Career Girls","year":1997,"rating":1,"dubious":false,"date":"2010-06-11 02:55"},{"_id":"936","normalized_imdb_id":119822,"title":"As Good as It Gets","year":1997,"rating":3,"dubious":false,"date":"2010-06-12 09:41"},{"_id":"1000","normalized_imdb_id":119229,"title":"Grosse Pointe Blank","year":1997,"rating":3,"dubious":false,"date":"2010-06-28 17:18"},{"_id":"1026","normalized_imdb_id":118688,"title":"Batman & Robin","year":1997,"rating":2,"dubious":false,"date":"2010-07-03 00:10"},{"_id":"1054","normalized_imdb_id":119432,"title":"Jungle 2 Jungle","year":1997,"rating":2,"dubious":false,"date":"2010-07-04 03:30"},{"_id":"1055","normalized_imdb_id":119142,"title":"For Richer or Poorer","year":1997,"rating":3,"dubious":false,"date":"2010-07-04 03:34"},{"_id":"1068","normalized_imdb_id":118571,"title":"Air Force One","year":1997,"rating":1,"dubious":false,"date":"2010-07-04 04:59"},{"_id":"1409","normalized_imdb_id":120521,"title":"Winter Guest, The","year":1997,"rating":3,"dubious":false,"date":"2010-07-31 09:06"},{"_id":"1483","normalized_imdb_id":119369,"title":"Inheritance, The","year":1997,"rating":3,"dubious":false,"date":"2010-08-20 17:07"},{"_id":"1595","normalized_imdb_id":120512,"title":"Wild America","year":1997,"rating":2,"dubious":false,"date":"2010-09-22 17:45"},{"_id":"1193","normalized_imdb_id":119167,"title":"Funny Games","year":1997,"rating":3,"dubious":true,"date":"2010-07-18 21:35"},{"_id":"1202","normalized_imdb_id":119738,"title":"My Best Friend's Wedding","year":1997,"rating":2,"dubious":false,"date":"2010-07-20 06:03"},{"_id":"1218","normalized_imdb_id":118617,"title":"Anastasia","year":1997,"rating":3,"dubious":false,"date":"2010-07-22 16:06"},{"_id":"1127","normalized_imdb_id":118570,"title":"Air Bud","year":1997,"rating":1,"dubious":false,"date":"2010-07-09 04:59"},{"_id":"1159","normalized_imdb_id":119215,"title":"Good Burger","year":1997,"rating":1,"dubious":false,"date":"2010-07-11 00:43"},{"_id":"1584","normalized_imdb_id":128996,"title":"Cinderella","year":1997,"rating":3,"dubious":false,"date":"2010-09-21 22:17"},{"_id":"1406","normalized_imdb_id":120185,"title":"Spice World","year":1997,"rating":3,"dubious":false,"date":"2010-07-30 22:23"},{"_id":"1794","normalized_imdb_id":115462,"title":"Actrius","year":1997,"rating":3,"dubious":false,"date":"2010-11-30 23:26"},{"_id":"1810","normalized_imdb_id":120265,"title":"Taste of Cherry","year":1997,"rating":0,"dubious":false,"date":"2010-12-01 08:12"},{"_id":"1816","normalized_imdb_id":119115,"title":"Fierce Creatures","year":1997,"rating":1,"dubious":false,"date":"2010-12-03 08:53"},{"_id":"1830","normalized_imdb_id":118826,"title":"Castle, The","year":1997,"rating":3,"dubious":false,"date":"2010-12-08 08:42"},{"_id":"1900","normalized_imdb_id":118866,"title":"Clockwatchers","year":1997,"rating":3,"dubious":false,"date":"2011-01-12 06:00"},{"_id":"1947","normalized_imdb_id":118829,"title":"Cats Don't Dance","year":1997,"rating":3,"dubious":false,"date":"2011-01-29 23:54"},{"_id":"2101","normalized_imdb_id":119080,"title":"Eve's Bayou","year":1997,"rating":3,"dubious":false,"date":"2011-03-09 00:48"},{"_id":"2176","normalized_imdb_id":119396,"title":"Jackie Brown","year":1997,"rating":3,"dubious":false,"date":"2011-04-08 20:24"},{"_id":"2236","normalized_imdb_id":119488,"title":"L.A. Confidential","year":1997,"rating":1,"dubious":false,"date":"2011-04-23 20:21"},{"_id":"2347","normalized_imdb_id":118749,"title":"Boogie Nights","year":1997,"rating":3,"dubious":false,"date":"2011-05-25 23:28"},{"_id":"2395","normalized_imdb_id":120461,"title":"Volcano","year":1997,"rating":3,"dubious":false,"date":"2011-06-12 16:04"},{"_id":"2423","normalized_imdb_id":118842,"title":"Chasing Amy","year":1997,"rating":3,"dubious":false,"date":"2011-06-21 15:58"},{"_id":"2494","normalized_imdb_id":119859,"title":"Paradise Road","year":1997,"rating":3,"dubious":false,"date":"2011-07-06 10:28"},{"_id":"2666","normalized_imdb_id":120493,"title":"Well, The","year":1997,"rating":3,"dubious":false,"date":"2011-09-08 13:15"},{"_id":"3148","normalized_imdb_id":120434,"title":"Vegas Vacation","year":1997,"rating":3,"dubious":false,"date":"2012-03-27 13:59"},{"_id":"3195","normalized_imdb_id":120094,"title":"Selena","year":1997,"rating":3,"dubious":false,"date":"2012-04-20 00:46"},{"_id":"3223","normalized_imdb_id":120133,"title":"A Simple Wish","year":1997,"rating":3,"dubious":false,"date":"2012-05-03 04:04"},{"_id":"3232","normalized_imdb_id":118845,"title":"Chun gwong cha sit (Happy Together)","year":1997,"rating":0,"dubious":false,"date":"2012-05-08 04:38"},{"_id":"3371","normalized_imdb_id":120389,"title":"Turbo: A Power Rangers Movie","year":1997,"rating":3,"dubious":false,"date":"2012-06-22 03:50"},{"_id":"3373","normalized_imdb_id":120177,"title":"Spawn","year":1997,"rating":3,"dubious":false,"date":"2012-06-22 19:59"},{"_id":"3882","normalized_imdb_id":119468,"title":"Kiss the Girls","year":1997,"rating":2,"dubious":false,"date":"2013-02-08 23:40"},{"_id":"3917","normalized_imdb_id":124819,"title":"Orgazmo","year":1997,"rating":1,"dubious":true,"date":"2013-02-21 12:34"},{"_id":"3928","normalized_imdb_id":119227,"title":"Snow White: A Tale of Terror","year":1997,"rating":3,"dubious":false,"date":"2013-02-22 18:34"},{"_id":"4064","normalized_imdb_id":119707,"title":"Mortal Kombat: Annihilation","year":1997,"rating":3,"dubious":false,"date":"2013-04-15 23:49"},{"_id":"4154","normalized_imdb_id":116922,"title":"Lost Highway","year":1997,"rating":1,"dubious":false,"date":"2013-05-22 06:16"},{"_id":"4164","normalized_imdb_id":120152,"title":"Smilla's Sense of Snow","year":1997,"rating":3,"dubious":false,"date":"2013-05-25 06:21"},{"_id":"4216","normalized_imdb_id":119590,"title":"My Life in Pink ( Ma Vie En Rose )","year":1997,"rating":3,"dubious":false,"date":"2013-06-07 09:52"},{"_id":"4333","normalized_imdb_id":119114,"title":"Fever Pitch","year":1997,"rating":3,"dubious":false,"date":"2013-07-12 05:45"},{"_id":"4360","normalized_imdb_id":119190,"title":"George of the Jungle","year":1997,"rating":3,"dubious":false,"date":"2013-07-17 20:53"},{"_id":"4380","normalized_imdb_id":117056,"title":"Ayneh","year":1997,"rating":3,"dubious":false,"date":"2013-07-21 16:53"},{"_id":"4383","normalized_imdb_id":119874,"title":"Peacemaker, The","year":1997,"rating":3,"dubious":true,"date":"2013-07-22 18:02"},{"_id":"4496","normalized_imdb_id":119361,"title":"In the Company of Men","year":1997,"rating":1,"dubious":false,"date":"2013-08-21 02:01"},{"_id":"4527","normalized_imdb_id":119723,"title":"Mrs Dalloway","year":1997,"rating":3,"dubious":false,"date":"2013-08-31 20:08"},{"_id":"4635","normalized_imdb_id":120536,"title":"Wrong Guy, The","year":1997,"rating":1,"dubious":false,"date":"2013-09-27 02:28"},{"_id":"4643","normalized_imdb_id":120082,"title":"Scream 2","year":1997,"rating":3,"dubious":false,"date":"2013-09-29 13:18"},{"_id":"4657","normalized_imdb_id":119345,"title":"I Know What You Did Last Summer","year":1997,"rating":3,"dubious":false,"date":"2013-10-02 16:30"},{"_id":"4932","normalized_imdb_id":125209,"title":"I Think I Do","year":1997,"rating":3,"dubious":false,"date":"2013-12-09 23:09"},{"_id":"4987","normalized_imdb_id":178844,"title":"La principessa e il povero","year":1997,"rating":3,"dubious":true,"date":"2013-12-26 02:24"},{"_id":"5058","normalized_imdb_id":118550,"title":"Le Acrobate","year":1997,"rating":3,"dubious":false,"date":"2014-01-10 08:46"},{"_id":"5074","normalized_imdb_id":119567,"title":"Lost World: Jurassic Park, The","year":1997,"rating":3,"dubious":true,"date":"2014-01-14 18:40"},{"_id":"5108","normalized_imdb_id":169858,"title":"Neon Genesis Evangelion: The End of Evangelion","year":1997,"rating":3,"dubious":false,"date":"2014-01-26 00:08"},{"_id":"5136","normalized_imdb_id":119152,"title":"Free Willy 3: The Rescue","year":1997,"rating":1,"dubious":false,"date":"2014-02-04 19:49"},{"_id":"5143","normalized_imdb_id":119472,"title":"Knockin' on Heaven's Door","year":1997,"rating":1,"dubious":false,"date":"2014-02-06 22:54"},{"_id":"5172","normalized_imdb_id":119896,"title":"Picture Perfect","year":1997,"rating":3,"dubious":false,"date":"2014-02-16 00:23"},{"_id":"5329","normalized_imdb_id":119094,"title":"Face/Off","year":1997,"rating":1,"dubious":false,"date":"2014-03-27 17:10"},{"_id":"5820","normalized_imdb_id":120169,"title":"Soul Food","year":1997,"rating":3,"dubious":false,"date":"2014-10-08 22:57"},{"_id":"5865","normalized_imdb_id":119784,"title":"Night Flier, The","year":1997,"rating":3,"dubious":true,"date":"2014-10-23 08:45"},{"_id":"6071","normalized_imdb_id":131620,"title":"Tower of Terror","year":1997,"rating":3,"dubious":false,"date":"2015-01-27 02:33"},{"_id":"6204","normalized_imdb_id":124317,"title":"Clover","year":1997,"rating":3,"dubious":false,"date":"2015-04-15 21:24"},{"_id":"6241","normalized_imdb_id":118414,"title":"Odyssey, The","year":1997,"rating":2,"dubious":false,"date":"2015-05-14 03:00"},{"_id":"6249","normalized_imdb_id":122648,"title":"Hardboiled Egg","year":1997,"rating":2,"dubious":true,"date":"2015-05-17 20:32"},{"_id":"6691","normalized_imdb_id":125659,"title":"Open Your Eyes","year":1997,"rating":1,"dubious":false,"date":"2016-01-28 19:35"},{"_id":"6736","normalized_imdb_id":119324,"title":"House of Yes, The","year":1997,"rating":3,"dubious":false,"date":"2016-02-19 17:48"},{"_id":"6749","normalized_imdb_id":127302,"title":"Sticky Fingers of Time, The","year":1997,"rating":3,"dubious":false,"date":"2016-02-26 23:18"},{"_id":"6800","normalized_imdb_id":119250,"title":"Fireworks","year":1997,"rating":1,"dubious":false,"date":"2016-03-26 08:29"},{"_id":"6805","normalized_imdb_id":119164,"title":"Full Monty, The","year":1997,"rating":2,"dubious":false,"date":"2016-03-26 09:04"},{"_id":"7174","normalized_imdb_id":123948,"title":"Cure","year":1997,"rating":1,"dubious":false,"date":"2016-10-07 09:58"},{"_id":"7371","normalized_imdb_id":119918,"title":"Pooh's Grand Adventure: The Search for Christopher Robin","year":1997,"rating":0,"dubious":false,"date":"2017-01-03 03:02"},{"_id":"7534","normalized_imdb_id":119535,"title":"A Life Less Ordinary","year":1997,"rating":2,"dubious":false,"date":"2017-03-26 20:37"},{"_id":"7627","normalized_imdb_id":119008,"title":"Donnie Brasco","year":1997,"rating":1,"dubious":false,"date":"2017-05-21 12:00"},{"_id":"7660","normalized_imdb_id":120102,"title":"Seven Years in Tibet","year":1997,"rating":1,"dubious":false,"date":"2017-05-21 18:19"},{"_id":"7675","normalized_imdb_id":118604,"title":"An American Werewolf in Paris","year":1997,"rating":1,"dubious":false,"date":"2017-06-06 13:24"},{"_id":"7710","normalized_imdb_id":118819,"title":"Carne trémula [Live Flesh]","year":1997,"rating":2,"dubious":false,"date":"2017-06-29 21:20"},{"_id":"8564","normalized_imdb_id":118906,"title":"Csinibaba","year":1997,"rating":1,"dubious":false,"date":"2018-12-15 00:11"},{"_id":"8800","normalized_imdb_id":119237,"title":"Gummo","year":1997,"rating":3,"dubious":false,"date":"2019-07-29 14:06"},{"_id":"9151","normalized_imdb_id":118887,"title":"Cop Land","year":1997,"rating":0,"dubious":true,"date":"2020-06-01 14:24"},{"_id":"9220","normalized_imdb_id":119558,"title":"Lolita","year":1997,"rating":3,"dubious":true,"date":"2020-08-02 23:55"},{"_id":"9275","normalized_imdb_id":118615,"title":"Anaconda","year":1997,"rating":2,"dubious":true,"date":"2020-09-17 02:15"},{"_id":"9280","normalized_imdb_id":119280,"title":"Mrs. Brown","year":1997,"rating":3,"dubious":false,"date":"2020-09-23 21:11"},{"_id":"9336","normalized_imdb_id":120347,"title":"Tomorrow Never Dies","year":1997,"rating":1,"dubious":false,"date":"2020-11-21 20:40"},{"_id":"9407","normalized_imdb_id":119303,"title":"Home Alone 3","year":1997,"rating":3,"dubious":false,"date":"2020-12-26 15:44"},{"_id":"9989","normalized_imdb_id":117468,"title":"Retroactive","year":1997,"rating":2,"dubious":false,"date":"2021-08-01 13:52"},{"_id":"35","normalized_imdb_id":120768,"title":"Negotiator, The","year":1998,"rating":1,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"42","normalized_imdb_id":120611,"title":"Blade","year":1998,"rating":1,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"95","normalized_imdb_id":120647,"title":"Deep Impact","year":1998,"rating":3,"dubious":false,"date":"2008-07-29 23:12"},{"_id":"127","normalized_imdb_id":158409,"title":"Future Sport","year":1998,"rating":1,"dubious":false,"date":"2008-08-02 00:10"},{"_id":"157","normalized_imdb_id":120762,"title":"Mulan","year":1998,"rating":3,"dubious":true,"date":"2008-08-10 19:28"},{"_id":"165","normalized_imdb_id":120382,"title":"Truman Show, The","year":1998,"rating":1,"dubious":false,"date":"2008-08-11 15:57"},{"_id":"216","normalized_imdb_id":120631,"title":"Ever After","year":1998,"rating":3,"dubious":false,"date":"2008-11-18 05:50"},{"_id":"272","normalized_imdb_id":120863,"title":"Thin Red Line, The","year":1998,"rating":1,"dubious":false,"date":"2009-02-07 15:48"},{"_id":"300","normalized_imdb_id":120692,"title":"Strike!","year":1998,"rating":3,"dubious":false,"date":"2009-03-22 17:25"},{"_id":"365","normalized_imdb_id":120777,"title":"Opposite of Sex, The","year":1998,"rating":3,"dubious":false,"date":"2009-07-13 10:10"},{"_id":"404","normalized_imdb_id":128445,"title":"Rushmore","year":1998,"rating":3,"dubious":false,"date":"2009-07-31 17:31"},{"_id":"446","normalized_imdb_id":120184,"title":"Sphere","year":1998,"rating":1,"dubious":false,"date":"2009-08-11 21:41"},{"_id":"460","normalized_imdb_id":118636,"title":"Apt Pupil","year":1998,"rating":1,"dubious":false,"date":"2009-08-15 19:59"},{"_id":"505","normalized_imdb_id":118715,"title":"Big Lebowski, The","year":1998,"rating":1,"dubious":false,"date":"2009-09-11 23:44"},{"_id":"506","normalized_imdb_id":120669,"title":"Fear and Loathing in Las Vegas","year":1998,"rating":1,"dubious":false,"date":"2009-09-12 00:01"},{"_id":"516","normalized_imdb_id":120879,"title":"Velvet Goldmine","year":1998,"rating":2,"dubious":false,"date":"2009-09-23 23:05"},{"_id":"532","normalized_imdb_id":133751,"title":"Faculty, The","year":1998,"rating":3,"dubious":true,"date":"2009-10-29 01:00"},{"_id":"554","normalized_imdb_id":120888,"title":"Wedding Singer, The","year":1998,"rating":3,"dubious":false,"date":"2009-12-05 05:49"},{"_id":"592","normalized_imdb_id":147004,"title":"Little Voice","year":1998,"rating":3,"dubious":false,"date":"2009-12-27 21:55"},{"_id":"772","normalized_imdb_id":123865,"title":"Gia","year":1998,"rating":3,"dubious":false,"date":"2010-05-01 11:27"},{"_id":"775","normalized_imdb_id":120591,"title":"Armageddon","year":1998,"rating":1,"dubious":false,"date":"2010-05-03 14:12"},{"_id":"783","normalized_imdb_id":128853,"title":"You've Got Mail","year":1998,"rating":3,"dubious":false,"date":"2010-05-03 14:49"},{"_id":"789","normalized_imdb_id":139362,"title":"High Art","year":1998,"rating":3,"dubious":false,"date":"2010-05-12 00:01"},{"_id":"805","normalized_imdb_id":119891,"title":"Phantoms","year":1998,"rating":3,"dubious":false,"date":"2010-05-14 05:08"},{"_id":"937","normalized_imdb_id":136244,"title":"Hideous Kinky","year":1998,"rating":3,"dubious":false,"date":"2010-06-12 09:43"},{"_id":"942","normalized_imdb_id":120802,"title":"Red Violin, The","year":1998,"rating":3,"dubious":false,"date":"2010-06-12 13:19"},{"_id":"973","normalized_imdb_id":147612,"title":"Happiness","year":1998,"rating":3,"dubious":false,"date":"2010-06-24 06:26"},{"_id":"975","normalized_imdb_id":150662,"title":"Show Me Love","year":1998,"rating":3,"dubious":false,"date":"2010-06-24 06:38"},{"_id":"1040","normalized_imdb_id":120577,"title":"54","year":1998,"rating":1,"dubious":false,"date":"2010-07-03 14:41"},{"_id":"1056","normalized_imdb_id":120844,"title":"Star Trek: Insurrection","year":1998,"rating":3,"dubious":false,"date":"2010-07-04 03:42"},{"_id":"1058","normalized_imdb_id":120746,"title":"Mask of Zorro, The","year":1998,"rating":1,"dubious":true,"date":"2010-07-04 04:15"},{"_id":"1069","normalized_imdb_id":120828,"title":"Six Days Seven Nights","year":1998,"rating":1,"dubious":false,"date":"2010-07-04 05:03"},{"_id":"1511","normalized_imdb_id":171725,"title":"Secret of NIMH 2: Timmy to the Rescue, The","year":1998,"rating":1,"dubious":true,"date":"2010-08-28 02:01"},{"_id":"1294","normalized_imdb_id":120449,"title":"Dreamlife of Angels, The","year":1998,"rating":3,"dubious":false,"date":"2010-07-23 18:03"},{"_id":"1219","normalized_imdb_id":120791,"title":"Practical Magic","year":1998,"rating":3,"dubious":false,"date":"2010-07-22 17:44"},{"_id":"1109","normalized_imdb_id":120789,"title":"Pleasantville","year":1998,"rating":3,"dubious":true,"date":"2010-07-07 21:01"},{"_id":"1154","normalized_imdb_id":120744,"title":"Man in the Iron Mask, The","year":1998,"rating":1,"dubious":false,"date":"2010-07-10 23:59"},{"_id":"1090","normalized_imdb_id":120815,"title":"Saving Private Ryan","year":1998,"rating":0,"dubious":false,"date":"2010-07-04 22:58"},{"_id":"1094","normalized_imdb_id":120783,"title":"Parent Trap, The","year":1998,"rating":3,"dubious":false,"date":"2010-07-04 23:40"},{"_id":"1553","normalized_imdb_id":120686,"title":"Stepmom","year":1998,"rating":3,"dubious":false,"date":"2010-09-08 12:09"},{"_id":"1392","normalized_imdb_id":120812,"title":"Rush Hour","year":1998,"rating":1,"dubious":false,"date":"2010-07-28 00:57"},{"_id":"1399","normalized_imdb_id":128442,"title":"Rounders","year":1998,"rating":1,"dubious":false,"date":"2010-07-28 14:58"},{"_id":"1403","normalized_imdb_id":138704,"title":"Pi","year":1998,"rating":2,"dubious":false,"date":"2010-07-28 20:57"},{"_id":"1079","normalized_imdb_id":120794,"title":"Prince of Egypt, The","year":1998,"rating":3,"dubious":false,"date":"2010-07-04 22:05"},{"_id":"1668","normalized_imdb_id":120735,"title":"Lock, Stock and Two Smoking Barrels","year":1998,"rating":1,"dubious":false,"date":"2010-10-18 01:39"},{"_id":"1838","normalized_imdb_id":119517,"title":"Your Friends and Neighbors","year":1998,"rating":3,"dubious":false,"date":"2010-12-11 07:25"},{"_id":"1855","normalized_imdb_id":118929,"title":"Dark City","year":1998,"rating":1,"dubious":false,"date":"2010-12-16 06:20"},{"_id":"1926","normalized_imdb_id":138097,"title":"Shakespeare in Love","year":1998,"rating":3,"dubious":false,"date":"2011-01-22 22:29"},{"_id":"1942","normalized_imdb_id":120800,"title":"Quest for Camelot","year":1998,"rating":3,"dubious":false,"date":"2011-01-29 22:59"},{"_id":"1948","normalized_imdb_id":156887,"title":"Perfect Blue","year":1998,"rating":3,"dubious":false,"date":"2011-01-31 00:06"},{"_id":"2058","normalized_imdb_id":120902,"title":"X Files, The","year":1998,"rating":3,"dubious":false,"date":"2011-02-19 18:06"},{"_id":"2076","normalized_imdb_id":168972,"title":"Love & Pop","year":1998,"rating":3,"dubious":false,"date":"2011-02-27 05:47"},{"_id":"2138","normalized_imdb_id":127536,"title":"Elizabeth","year":1998,"rating":3,"dubious":false,"date":"2011-03-25 15:46"},{"_id":"2139","normalized_imdb_id":118789,"title":"Buffalo '66","year":1998,"rating":1,"dubious":false,"date":"2011-03-26 05:56"},{"_id":"2191","normalized_imdb_id":130827,"title":"Run Lola Run","year":1998,"rating":3,"dubious":false,"date":"2011-04-16 19:57"},{"_id":"2198","normalized_imdb_id":120623,"title":"A Bug's Life","year":1998,"rating":3,"dubious":false,"date":"2011-04-18 21:35"},{"_id":"2238","normalized_imdb_id":120685,"title":"Godzilla","year":1998,"rating":3,"dubious":true,"date":"2011-04-24 08:19"},{"_id":"2247","normalized_imdb_id":120780,"title":"Out of Sight","year":1998,"rating":2,"dubious":false,"date":"2011-04-26 20:58"},{"_id":"2440","normalized_imdb_id":162973,"title":"Get Real","year":1998,"rating":2,"dubious":false,"date":"2011-06-25 16:28"},{"_id":"2475","normalized_imdb_id":119942,"title":"Primary Colors","year":1998,"rating":3,"dubious":false,"date":"2011-07-01 20:13"},{"_id":"2526","normalized_imdb_id":154421,"title":"Idiots, The","year":1998,"rating":3,"dubious":false,"date":"2011-07-13 09:27"},{"_id":"2548","normalized_imdb_id":120586,"title":"American History X","year":1998,"rating":2,"dubious":false,"date":"2011-07-18 07:16"},{"_id":"2641","normalized_imdb_id":120643,"title":"Dancing at Lughnasa","year":1998,"rating":3,"dubious":false,"date":"2011-08-24 23:04"},{"_id":"2681","normalized_imdb_id":120831,"title":"Slums of Beverly Hills","year":1998,"rating":3,"dubious":false,"date":"2011-09-16 04:29"},{"_id":"2868","normalized_imdb_id":154420,"title":"Festen (The Celebration)","year":1998,"rating":3,"dubious":true,"date":"2011-11-26 17:33"},{"_id":"2896","normalized_imdb_id":122718,"title":"Small Soldiers","year":1998,"rating":1,"dubious":false,"date":"2011-12-03 15:44"},{"_id":"2912","normalized_imdb_id":129023,"title":"Dark Harbor","year":1998,"rating":1,"dubious":false,"date":"2011-12-07 22:31"},{"_id":"3393","normalized_imdb_id":133189,"title":"SLC Punk!","year":1998,"rating":1,"dubious":false,"date":"2012-07-02 20:54"},{"_id":"3035","normalized_imdb_id":120813,"title":"Safe Men","year":1998,"rating":0,"dubious":false,"date":"2012-02-09 18:06"},{"_id":"3447","normalized_imdb_id":166792,"title":"Scooby-Doo on Zombie Island","year":1998,"rating":3,"dubious":false,"date":"2012-07-27 14:57"},{"_id":"3509","normalized_imdb_id":120321,"title":"Smoke Signals","year":1998,"rating":3,"dubious":false,"date":"2012-09-02 08:47"},{"_id":"3552","normalized_imdb_id":165499,"title":"Storm Riders, The","year":1998,"rating":1,"dubious":false,"date":"2012-09-27 05:49"},{"_id":"3687","normalized_imdb_id":120131,"title":"Lion King 2: Simba's Pride, The","year":1998,"rating":3,"dubious":false,"date":"2012-11-22 09:46"},{"_id":"3791","normalized_imdb_id":120749,"title":"Mercury Rising","year":1998,"rating":1,"dubious":false,"date":"2012-12-31 15:23"},{"_id":"3919","normalized_imdb_id":131857,"title":"BASEketball","year":1998,"rating":1,"dubious":true,"date":"2013-02-21 12:48"},{"_id":"4160","normalized_imdb_id":134619,"title":"Disturbing Behavior","year":1998,"rating":1,"dubious":false,"date":"2013-05-24 10:46"},{"_id":"4215","normalized_imdb_id":120877,"title":"Vampires (John Carpenter's)","year":1998,"rating":0,"dubious":false,"date":"2013-06-07 09:44"},{"_id":"4250","normalized_imdb_id":120148,"title":"Sliding Doors","year":1998,"rating":3,"dubious":false,"date":"2013-06-19 06:49"},{"_id":"4357","normalized_imdb_id":120728,"title":"Last Days of Disco, The","year":1998,"rating":3,"dubious":false,"date":"2013-07-16 20:42"},{"_id":"4400","normalized_imdb_id":120603,"title":"Beloved","year":1998,"rating":3,"dubious":false,"date":"2013-07-25 20:25"},{"_id":"4423","normalized_imdb_id":120841,"title":"Species II","year":1998,"rating":3,"dubious":false,"date":"2013-07-30 18:37"},{"_id":"4437","normalized_imdb_id":140888,"title":"Central Station","year":1998,"rating":3,"dubious":false,"date":"2013-08-04 01:15"},{"_id":"4534","normalized_imdb_id":119204,"title":"Glasblasarns barn","year":1998,"rating":3,"dubious":false,"date":"2013-09-01 01:31"},{"_id":"4547","normalized_imdb_id":119313,"title":"Hope Floats","year":1998,"rating":3,"dubious":false,"date":"2013-09-07 15:13"},{"_id":"4611","normalized_imdb_id":120108,"title":"Proposition, The","year":1998,"rating":2,"dubious":false,"date":"2013-09-22 11:53"},{"_id":"4638","normalized_imdb_id":144120,"title":"Bride of Chucky","year":1998,"rating":1,"dubious":false,"date":"2013-09-27 15:29"},{"_id":"4649","normalized_imdb_id":146336,"title":"Urban Legend","year":1998,"rating":3,"dubious":false,"date":"2013-09-30 16:08"},{"_id":"4675","normalized_imdb_id":178868,"title":"Ring (Ringu)","year":1998,"rating":3,"dubious":false,"date":"2013-10-07 14:34"},{"_id":"4709","normalized_imdb_id":120694,"title":"Halloween H20: 20 Years Later","year":1998,"rating":3,"dubious":false,"date":"2013-10-18 12:00"},{"_id":"4752","normalized_imdb_id":120890,"title":"Wild Things","year":1998,"rating":3,"dubious":false,"date":"2013-10-29 19:33"},{"_id":"4787","normalized_imdb_id":118843,"title":"Black Cat, White Cat","year":1998,"rating":3,"dubious":false,"date":"2013-11-06 08:44"},{"_id":"4817","normalized_imdb_id":118661,"title":"Avengers, The","year":1998,"rating":3,"dubious":false,"date":"2013-11-12 21:15"},{"_id":"4850","normalized_imdb_id":241073,"title":"Yeogo goedam","year":1998,"rating":3,"dubious":false,"date":"2013-11-18 01:11"},{"_id":"4955","normalized_imdb_id":120660,"title":"Enemy of the State","year":1998,"rating":1,"dubious":false,"date":"2013-12-16 14:45"},{"_id":"5060","normalized_imdb_id":120738,"title":"Lost in Space","year":1998,"rating":3,"dubious":false,"date":"2014-01-10 21:54"},{"_id":"5183","normalized_imdb_id":129387,"title":"There's Something About Mary","year":1998,"rating":3,"dubious":false,"date":"2014-02-17 18:20"},{"_id":"5211","normalized_imdb_id":158011,"title":"Trance (The Eternal)","year":1998,"rating":3,"dubious":true,"date":"2014-02-27 23:05"},{"_id":"5226","normalized_imdb_id":134928,"title":"Rasen","year":1998,"rating":1,"dubious":false,"date":"2014-03-03 22:05"},{"_id":"5242","normalized_imdb_id":119038,"title":"Dinner Game, The","year":1998,"rating":1,"dubious":false,"date":"2014-03-06 20:03"},{"_id":"5286","normalized_imdb_id":120756,"title":"Moby Dick","year":1998,"rating":0,"dubious":false,"date":"2014-03-16 16:48"},{"_id":"5369","normalized_imdb_id":120632,"title":"City of Angels","year":1998,"rating":3,"dubious":false,"date":"2014-04-08 01:50"},{"_id":"5494","normalized_imdb_id":119336,"title":"Hurlyburly","year":1998,"rating":1,"dubious":false,"date":"2014-05-20 06:35"},{"_id":"5715","normalized_imdb_id":154506,"title":"Following","year":1998,"rating":0,"dubious":false,"date":"2014-08-24 20:48"},{"_id":"5744","normalized_imdb_id":129290,"title":"Patch Adams","year":1998,"rating":3,"dubious":true,"date":"2014-09-14 04:42"},{"_id":"5794","normalized_imdb_id":134067,"title":"Rugrats Movie, The","year":1998,"rating":3,"dubious":false,"date":"2014-10-01 01:18"},{"_id":"5844","normalized_imdb_id":130018,"title":"I Still Know What You Did Last Summer","year":1998,"rating":3,"dubious":false,"date":"2014-10-15 20:41"},{"_id":"5885","normalized_imdb_id":172684,"title":"Kuch Kuch Hota Hai","year":1998,"rating":3,"dubious":false,"date":"2014-10-30 05:20"},{"_id":"6160","normalized_imdb_id":142964,"title":"Vildspor","year":1998,"rating":1,"dubious":false,"date":"2015-03-22 18:32"},{"_id":"6184","normalized_imdb_id":126604,"title":"Pecker","year":1998,"rating":3,"dubious":false,"date":"2015-04-02 08:37"},{"_id":"6339","normalized_imdb_id":122690,"title":"Ronin","year":1998,"rating":1,"dubious":false,"date":"2015-07-01 16:43"},{"_id":"6353","normalized_imdb_id":143127,"title":"Batman & Mr. Freeze: SubZero","year":1998,"rating":2,"dubious":false,"date":"2015-07-14 21:42"},{"_id":"6531","normalized_imdb_id":197626,"title":"Lick the Star","year":1998,"rating":3,"dubious":false,"date":"2015-11-02 08:51"},{"_id":"6591","normalized_imdb_id":120484,"title":"Waterboy, The","year":1998,"rating":2,"dubious":false,"date":"2015-12-11 01:02"},{"_id":"6679","normalized_imdb_id":140627,"title":"Tomorrow Night","year":1998,"rating":2,"dubious":false,"date":"2016-01-24 16:15"},{"_id":"6718","normalized_imdb_id":156729,"title":"Last Night","year":1998,"rating":1,"dubious":false,"date":"2016-02-10 20:28"},{"_id":"6814","normalized_imdb_id":120832,"title":"Snake Eyes","year":1998,"rating":1,"dubious":false,"date":"2016-03-31 07:56"},{"_id":"6832","normalized_imdb_id":120274,"title":"Tango","year":1998,"rating":1,"dubious":false,"date":"2016-04-14 22:23"},{"_id":"7168","normalized_imdb_id":146468,"title":"Barrio","year":1998,"rating":3,"dubious":false,"date":"2016-10-02 15:37"},{"_id":"7298","normalized_imdb_id":120533,"title":"Celebrity","year":1998,"rating":3,"dubious":false,"date":"2016-11-25 13:08"},{"_id":"7384","normalized_imdb_id":158446,"title":"2 seconds","year":1998,"rating":3,"dubious":false,"date":"2017-01-08 18:24"},{"_id":"7635","normalized_imdb_id":119223,"title":"Great Expectations","year":1998,"rating":1,"dubious":false,"date":"2017-05-21 13:12"},{"_id":"7646","normalized_imdb_id":119643,"title":"Meet Joe Black","year":1998,"rating":1,"dubious":false,"date":"2017-05-21 15:00"},{"_id":"7664","normalized_imdb_id":151691,"title":"My Name Is Joe","year":1998,"rating":3,"dubious":false,"date":"2017-05-26 12:58"},{"_id":"7687","normalized_imdb_id":124901,"title":"Thursday","year":1998,"rating":1,"dubious":false,"date":"2017-06-14 18:54"},{"_id":"7893","normalized_imdb_id":122151,"title":"Lethal Weapon 4","year":1998,"rating":1,"dubious":false,"date":"2017-11-11 23:44"},{"_id":"8016","normalized_imdb_id":123987,"title":"Madeline","year":1998,"rating":3,"dubious":false,"date":"2018-01-19 09:32"},{"_id":"8041","normalized_imdb_id":120787,"title":"A Perfect Murder","year":1998,"rating":3,"dubious":false,"date":"2018-02-09 13:17"},{"_id":"8088","normalized_imdb_id":120587,"title":"Antz","year":1998,"rating":3,"dubious":false,"date":"2018-03-04 19:40"},{"_id":"8405","normalized_imdb_id":127723,"title":"Can't Hardly Wait","year":1998,"rating":1,"dubious":false,"date":"2018-09-06 13:46"},{"_id":"8438","normalized_imdb_id":181627,"title":"Kirikou and the Sorceress","year":1998,"rating":2,"dubious":true,"date":"2018-10-14 22:48"},{"_id":"8527","normalized_imdb_id":120889,"title":"What Dreams May Come","year":1998,"rating":1,"dubious":false,"date":"2018-12-14 22:24"},{"_id":"8565","normalized_imdb_id":134230,"title":"Zimmer Feri","year":1998,"rating":2,"dubious":false,"date":"2018-12-15 00:12"},{"_id":"8682","normalized_imdb_id":173886,"title":"Halloweentown","year":1998,"rating":3,"dubious":true,"date":"2019-03-23 00:18"},{"_id":"8933","normalized_imdb_id":165598,"title":"Thats 70s Show","year":1998,"rating":2,"dubious":false,"date":"2019-12-16 18:20"},{"_id":"9332","normalized_imdb_id":168740,"title":"L'ennui","year":1998,"rating":1,"dubious":false,"date":"2020-11-16 12:39"},{"_id":"9488","normalized_imdb_id":118892,"title":"Dangerous Beauty","year":1998,"rating":3,"dubious":false,"date":"2021-02-21 03:59"},{"_id":"9657","normalized_imdb_id":143808,"title":"Pocahontas 2: Journey to a New World","year":1998,"rating":3,"dubious":false,"date":"2021-04-19 02:03"},{"_id":"9874","normalized_imdb_id":119778,"title":"Next Stop Wonderland","year":1998,"rating":3,"dubious":false,"date":"2021-06-06 22:19"},{"_id":"10058","normalized_imdb_id":119699,"title":"Montana","year":1998,"rating":0,"dubious":false,"date":"2021-09-17 21:04"},{"_id":"6","normalized_imdb_id":145660,"title":"Austin Powers: The Spy Who Shagged Me","year":1999,"rating":1,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"82","normalized_imdb_id":144640,"title":"Three to Tango","year":1999,"rating":1,"dubious":false,"date":"2008-07-28 12:29"},{"_id":"31","normalized_imdb_id":151804,"title":"Office Space","year":1999,"rating":1,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"36","normalized_imdb_id":133093,"title":"Matrix, The","year":1999,"rating":3,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"71","normalized_imdb_id":169547,"title":"American Beauty","year":1999,"rating":3,"dubious":false,"date":"2008-07-25 16:32"},{"_id":"88","normalized_imdb_id":120363,"title":"Toy Story 2","year":1999,"rating":1,"dubious":false,"date":"2008-07-28 18:52"},{"_id":"124","normalized_imdb_id":162661,"title":"Sleepy Hollow","year":1999,"rating":3,"dubious":false,"date":"2008-08-01 22:21"},{"_id":"146","normalized_imdb_id":134273,"title":"8MM","year":1999,"rating":1,"dubious":false,"date":"2008-08-05 17:07"},{"_id":"170","normalized_imdb_id":181316,"title":"Blue Streak","year":1999,"rating":1,"dubious":false,"date":"2008-08-20 18:49"},{"_id":"210","normalized_imdb_id":137523,"title":"Fight Club","year":1999,"rating":1,"dubious":false,"date":"2008-10-25 14:19"},{"_id":"223","normalized_imdb_id":165798,"title":"Ghost Dog: The Way of the Samurai","year":1999,"rating":1,"dubious":false,"date":"2008-11-30 04:27"},{"_id":"244","normalized_imdb_id":179116,"title":"But I'm a Cheerleader","year":1999,"rating":3,"dubious":false,"date":"2008-12-19 23:19"},{"_id":"268","normalized_imdb_id":172493,"title":"Girl, Interrupted","year":1999,"rating":3,"dubious":false,"date":"2009-02-02 23:31"},{"_id":"282","normalized_imdb_id":171804,"title":"Boys Don't Cry","year":1999,"rating":2,"dubious":false,"date":"2009-02-17 08:13"},{"_id":"356","normalized_imdb_id":155776,"title":"Jawbreaker","year":1999,"rating":3,"dubious":false,"date":"2009-06-25 06:29"},{"_id":"367","normalized_imdb_id":185125,"title":"Todo sobre mi madre (All About My Mother)","year":1999,"rating":3,"dubious":false,"date":"2009-07-13 10:15"},{"_id":"374","normalized_imdb_id":147800,"title":"10 Things I Hate About You","year":1999,"rating":3,"dubious":false,"date":"2009-07-17 03:05"},{"_id":"672","normalized_imdb_id":120915,"title":"Star Wars: Episode I - The Phantom Menace","year":1999,"rating":3,"dubious":false,"date":"2010-01-26 22:37"},{"_id":"742","normalized_imdb_id":167404,"title":"Sixth Sense, The","year":1999,"rating":3,"dubious":true,"date":"2010-04-18 15:21"},{"_id":"790","normalized_imdb_id":177242,"title":"Sonnenallee","year":1999,"rating":1,"dubious":false,"date":"2010-05-12 00:04"},{"_id":"817","normalized_imdb_id":155711,"title":"Flawless","year":1999,"rating":1,"dubious":false,"date":"2010-05-18 16:02"},{"_id":"826","normalized_imdb_id":144117,"title":"Boondock Saints, The","year":1999,"rating":0,"dubious":false,"date":"2010-05-21 21:52"},{"_id":"827","normalized_imdb_id":120655,"title":"Dogma","year":1999,"rating":3,"dubious":true,"date":"2010-05-22 01:07"},{"_id":"839","normalized_imdb_id":120663,"title":"Eyes Wide Shut","year":1999,"rating":3,"dubious":false,"date":"2010-05-27 17:16"},{"_id":"840","normalized_imdb_id":123209,"title":"Other Sister, The","year":1999,"rating":3,"dubious":false,"date":"2010-05-27 17:29"},{"_id":"858","normalized_imdb_id":139239,"title":"Go!","year":1999,"rating":3,"dubious":false,"date":"2010-05-28 03:39"},{"_id":"867","normalized_imdb_id":126886,"title":"Election","year":1999,"rating":3,"dubious":false,"date":"2010-05-28 17:18"},{"_id":"884","normalized_imdb_id":129167,"title":"Iron Giant, The","year":1999,"rating":0,"dubious":false,"date":"2010-05-31 18:51"},{"_id":"917","normalized_imdb_id":120601,"title":"Being John Malkovich","year":1999,"rating":3,"dubious":false,"date":"2010-06-07 21:26"},{"_id":"1053","normalized_imdb_id":177789,"title":"Galaxy Quest","year":1999,"rating":1,"dubious":false,"date":"2010-07-04 03:26"},{"_id":"1564","normalized_imdb_id":215364,"title":"Wives and Daughters","year":1999,"rating":3,"dubious":false,"date":"2010-09-10 15:33"},{"_id":"1547","normalized_imdb_id":199683,"title":"Kikujiro","year":1999,"rating":0,"dubious":false,"date":"2010-09-07 16:45"},{"_id":"1209","normalized_imdb_id":120855,"title":"Tarzan","year":1999,"rating":2,"dubious":false,"date":"2010-07-20 08:43"},{"_id":"1134","normalized_imdb_id":120891,"title":"Wild Wild West","year":1999,"rating":2,"dubious":false,"date":"2010-07-09 05:49"},{"_id":"1135","normalized_imdb_id":140379,"title":"A Midsummer Night's Dream","year":1999,"rating":2,"dubious":false,"date":"2010-07-09 05:59"},{"_id":"1091","normalized_imdb_id":166485,"title":"Anna and the King","year":1999,"rating":3,"dubious":false,"date":"2010-07-04 23:04"},{"_id":"1588","normalized_imdb_id":190641,"title":"Pocket Monsters: Mewtwo Strikes Back!","year":1999,"rating":1,"dubious":false,"date":"2010-09-22 05:07"},{"_id":"1475","normalized_imdb_id":162556,"title":"Why Not Me?","year":1999,"rating":3,"dubious":false,"date":"2010-08-17 13:33"},{"_id":"1086","normalized_imdb_id":164912,"title":"Stuart Little","year":1999,"rating":1,"dubious":false,"date":"2010-07-04 22:48"},{"_id":"1623","normalized_imdb_id":168987,"title":"Better Than Chocolate","year":1999,"rating":3,"dubious":false,"date":"2010-10-02 10:32"},{"_id":"1844","normalized_imdb_id":157503,"title":"Drop Dead Gorgeous","year":1999,"rating":3,"dubious":false,"date":"2010-12-12 02:07"},{"_id":"2030","normalized_imdb_id":209189,"title":"Not One Less (Yi ge dou bu neng shao)","year":1999,"rating":3,"dubious":false,"date":"2011-02-15 03:44"},{"_id":"2133","normalized_imdb_id":149691,"title":"Anywhere But Here","year":1999,"rating":3,"dubious":true,"date":"2011-03-23 01:02"},{"_id":"2197","normalized_imdb_id":266075,"title":"Memento Mori","year":1999,"rating":3,"dubious":false,"date":"2011-04-18 18:52"},{"_id":"2309","normalized_imdb_id":158983,"title":"South Park: Bigger Longer & Uncut","year":1999,"rating":3,"dubious":true,"date":"2011-05-18 23:09"},{"_id":"2311","normalized_imdb_id":163651,"title":"American Pie","year":1999,"rating":2,"dubious":false,"date":"2011-05-19 14:28"},{"_id":"2318","normalized_imdb_id":189584,"title":"Big Kahuna, The","year":1999,"rating":0,"dubious":false,"date":"2011-05-20 20:42"},{"_id":"2346","normalized_imdb_id":175880,"title":"Magnolia","year":1999,"rating":3,"dubious":false,"date":"2011-05-25 23:15"},{"_id":"2354","normalized_imdb_id":120866,"title":"Titus","year":1999,"rating":3,"dubious":true,"date":"2011-05-28 10:21"},{"_id":"2617","normalized_imdb_id":139134,"title":"Cruel Intentions","year":1999,"rating":3,"dubious":false,"date":"2011-08-15 04:08"},{"_id":"2725","normalized_imdb_id":235154,"title":"6ixtynin9","year":1999,"rating":3,"dubious":false,"date":"2011-10-01 08:59"},{"_id":"2731","normalized_imdb_id":165643,"title":"Black and White","year":1999,"rating":3,"dubious":false,"date":"2011-10-02 12:43"},{"_id":"2793","normalized_imdb_id":213121,"title":"New Waterford Girl","year":1999,"rating":3,"dubious":false,"date":"2011-10-24 17:21"},{"_id":"2828","normalized_imdb_id":139151,"title":"Inferno","year":1999,"rating":2,"dubious":false,"date":"2011-11-05 17:52"},{"_id":"2850","normalized_imdb_id":144715,"title":"Holy Smoke","year":1999,"rating":3,"dubious":false,"date":"2011-11-19 16:42"},{"_id":"2897","normalized_imdb_id":120616,"title":"Mummy, The","year":1999,"rating":1,"dubious":true,"date":"2011-12-03 17:36"},{"_id":"2934","normalized_imdb_id":210358,"title":"Things You Can Tell Just by Looking at Her","year":1999,"rating":3,"dubious":false,"date":"2011-12-16 01:22"},{"_id":"2970","normalized_imdb_id":120458,"title":"Virus","year":1999,"rating":3,"dubious":true,"date":"2012-01-02 09:59"},{"_id":"2982","normalized_imdb_id":185937,"title":"Blair Witch Project, The","year":1999,"rating":3,"dubious":false,"date":"2012-01-11 03:52"},{"_id":"3030","normalized_imdb_id":120657,"title":"13th Warrior, The","year":1999,"rating":1,"dubious":false,"date":"2012-02-04 21:18"},{"_id":"3102","normalized_imdb_id":122933,"title":"Analyze This","year":1999,"rating":1,"dubious":false,"date":"2012-03-09 20:37"},{"_id":"3269","normalized_imdb_id":151738,"title":"Never Been Kissed","year":1999,"rating":3,"dubious":true,"date":"2012-05-18 05:30"},{"_id":"3495","normalized_imdb_id":125439,"title":"Notting Hill","year":1999,"rating":3,"dubious":false,"date":"2012-08-24 22:45"},{"_id":"3570","normalized_imdb_id":120784,"title":"Payback","year":1999,"rating":1,"dubious":false,"date":"2012-10-02 01:09"},{"_id":"3640","normalized_imdb_id":144814,"title":"Carrie 2: The Rage","year":1999,"rating":3,"dubious":false,"date":"2012-10-30 05:25"},{"_id":"3714","normalized_imdb_id":120689,"title":"Green Mile, The","year":1999,"rating":1,"dubious":false,"date":"2012-12-06 01:38"},{"_id":"3728","normalized_imdb_id":177721,"title":"Double Platinum","year":1999,"rating":3,"dubious":false,"date":"2012-12-07 07:28"},{"_id":"3751","normalized_imdb_id":124315,"title":"Cider House Rules, The","year":1999,"rating":3,"dubious":false,"date":"2012-12-16 14:52"},{"_id":"3765","normalized_imdb_id":127296,"title":"Splendor","year":1999,"rating":3,"dubious":false,"date":"2012-12-21 12:05"},{"_id":"3922","normalized_imdb_id":126916,"title":"For Love of the Game","year":1999,"rating":2,"dubious":false,"date":"2013-02-21 13:06"},{"_id":"4107","normalized_imdb_id":163178,"title":"Redball","year":1999,"rating":3,"dubious":false,"date":"2013-04-27 16:53"},{"_id":"4116","normalized_imdb_id":243558,"title":"Shojo kakumei Utena: Adolescence mokushiroku","year":1999,"rating":3,"dubious":false,"date":"2013-04-29 23:35"},{"_id":"4221","normalized_imdb_id":134119,"title":"Talented Mr. Ripley, The","year":1999,"rating":3,"dubious":true,"date":"2013-06-08 09:36"},{"_id":"4230","normalized_imdb_id":132347,"title":"Mystery Men","year":1999,"rating":1,"dubious":false,"date":"2013-06-11 06:56"},{"_id":"4267","normalized_imdb_id":151568,"title":"Topsy-Turvy","year":1999,"rating":3,"dubious":false,"date":"2013-06-24 01:52"},{"_id":"4413","normalized_imdb_id":205214,"title":"Magical Legend of the Leprechauns, The","year":1999,"rating":3,"dubious":false,"date":"2013-07-28 22:11"},{"_id":"4679","normalized_imdb_id":218553,"title":"Ring 2 (Ringu 2)","year":1999,"rating":3,"dubious":false,"date":"2013-10-08 16:48"},{"_id":"4799","normalized_imdb_id":167752,"title":"4th Floor, The","year":1999,"rating":3,"dubious":false,"date":"2013-11-08 19:38"},{"_id":"4804","normalized_imdb_id":129332,"title":"Ravenous","year":1999,"rating":1,"dubious":true,"date":"2013-11-11 02:19"},{"_id":"4824","normalized_imdb_id":131646,"title":"Wing Commander","year":1999,"rating":2,"dubious":false,"date":"2013-11-14 07:55"},{"_id":"4865","normalized_imdb_id":158811,"title":"Muppets From Space","year":1999,"rating":3,"dubious":false,"date":"2013-11-23 16:05"},{"_id":"4926","normalized_imdb_id":171363,"title":"Haunting, The","year":1999,"rating":3,"dubious":false,"date":"2013-12-07 11:24"},{"_id":"4971","normalized_imdb_id":133046,"title":"Teaching Mrs. Tingle","year":1999,"rating":3,"dubious":false,"date":"2013-12-21 17:01"},{"_id":"5163","normalized_imdb_id":177507,"title":"Gigantics","year":1999,"rating":1,"dubious":false,"date":"2014-02-13 22:53"},{"_id":"5195","normalized_imdb_id":144168,"title":"Dick","year":1999,"rating":3,"dubious":false,"date":"2014-02-23 03:14"},{"_id":"5246","normalized_imdb_id":120907,"title":"eXistenZ","year":1999,"rating":1,"dubious":false,"date":"2014-03-07 11:49"},{"_id":"5304","normalized_imdb_id":207972,"title":"Annie","year":1999,"rating":3,"dubious":false,"date":"2014-03-19 22:32"},{"_id":"5305","normalized_imdb_id":125664,"title":"Man on the Moon","year":1999,"rating":1,"dubious":false,"date":"2014-03-20 17:02"},{"_id":"5342","normalized_imdb_id":124298,"title":"Blast from the Past","year":1999,"rating":3,"dubious":false,"date":"2014-03-31 11:25"},{"_id":"5382","normalized_imdb_id":160862,"title":"She's All That","year":1999,"rating":3,"dubious":false,"date":"2014-04-10 20:58"},{"_id":"5472","normalized_imdb_id":166896,"title":"Straight Story, The","year":1999,"rating":3,"dubious":true,"date":"2014-05-15 02:39"},{"_id":"5528","normalized_imdb_id":120620,"title":"Brokedown Palace","year":1999,"rating":3,"dubious":false,"date":"2014-06-03 14:11"},{"_id":"5545","normalized_imdb_id":131369,"title":"EdTV","year":1999,"rating":1,"dubious":false,"date":"2014-06-07 06:03"},{"_id":"5716","normalized_imdb_id":159097,"title":"Virgin Suicides, The","year":1999,"rating":3,"dubious":false,"date":"2014-08-26 02:21"},{"_id":"5775","normalized_imdb_id":178737,"title":"Mansfield Park","year":1999,"rating":3,"dubious":false,"date":"2014-09-25 06:25"},{"_id":"5799","normalized_imdb_id":120613,"title":"A Walk on the Moon","year":1999,"rating":3,"dubious":false,"date":"2014-10-02 20:10"},{"_id":"5803","normalized_imdb_id":135659,"title":"Storm of the Century","year":1999,"rating":3,"dubious":false,"date":"2014-10-05 04:40"},{"_id":"5873","normalized_imdb_id":162710,"title":"Trick","year":1999,"rating":3,"dubious":false,"date":"2014-10-25 08:13"},{"_id":"5880","normalized_imdb_id":209933,"title":"Beau travail","year":1999,"rating":3,"dubious":true,"date":"2014-10-28 12:09"},{"_id":"6099","normalized_imdb_id":240119,"title":"Tomie","year":1999,"rating":3,"dubious":false,"date":"2015-02-05 01:29"},{"_id":"6104","normalized_imdb_id":284565,"title":"Tomie: Anaza Feisu","year":1999,"rating":2,"dubious":false,"date":"2015-02-08 17:01"},{"_id":"6116","normalized_imdb_id":131325,"title":"Bowfinger","year":1999,"rating":3,"dubious":false,"date":"2015-02-17 21:44"},{"_id":"6162","normalized_imdb_id":120857,"title":"Tea with Mussolini","year":1999,"rating":3,"dubious":false,"date":"2015-03-26 08:38"},{"_id":"6238","normalized_imdb_id":158692,"title":"Juha","year":1999,"rating":0,"dubious":false,"date":"2015-05-10 01:18"},{"_id":"6360","normalized_imdb_id":188674,"title":"Human Traffic","year":1999,"rating":3,"dubious":false,"date":"2015-07-17 16:00"},{"_id":"6522","normalized_imdb_id":235198,"title":"Audition","year":1999,"rating":1,"dubious":false,"date":"2015-10-30 03:37"},{"_id":"6540","normalized_imdb_id":174856,"title":"Hurricane, The","year":1999,"rating":2,"dubious":false,"date":"2015-11-12 09:40"},{"_id":"6561","normalized_imdb_id":169299,"title":"Terror Firmer","year":1999,"rating":3,"dubious":true,"date":"2015-11-26 14:37"},{"_id":"6629","normalized_imdb_id":172348,"title":"Introducing Dorothy Dandridge","year":1999,"rating":3,"dubious":false,"date":"2015-12-25 21:35"},{"_id":"6650","normalized_imdb_id":142688,"title":"Ninth Gate, The","year":1999,"rating":1,"dubious":false,"date":"2016-01-03 21:25"},{"_id":"6798","normalized_imdb_id":137338,"title":"200 Cigarettes","year":1999,"rating":3,"dubious":false,"date":"2016-03-26 08:09"},{"_id":"6806","normalized_imdb_id":130444,"title":"Aimee & Jaguar","year":1999,"rating":3,"dubious":false,"date":"2016-03-26 15:35"},{"_id":"6888","normalized_imdb_id":158371,"title":"Sweet and Lowdown","year":1999,"rating":1,"dubious":false,"date":"2016-05-17 13:30"},{"_id":"6930","normalized_imdb_id":289424,"title":"Ring","year":1999,"rating":3,"dubious":false,"date":"2016-06-13 02:25"},{"_id":"6933","normalized_imdb_id":204082,"title":"Aristocrats","year":1999,"rating":3,"dubious":false,"date":"2016-06-16 00:39"},{"_id":"6936","normalized_imdb_id":133385,"title":"Asterix and Obelix vs. Caesar","year":1999,"rating":1,"dubious":false,"date":"2016-06-17 01:52"},{"_id":"7130","normalized_imdb_id":143145,"title":"World is Not Enough, The","year":1999,"rating":2,"dubious":false,"date":"2016-09-21 19:23"},{"_id":"7265","normalized_imdb_id":182576,"title":"Family guy","year":1999,"rating":3,"dubious":false,"date":"2016-11-16 02:20"},{"_id":"7380","normalized_imdb_id":120910,"title":"Fantasia 2000","year":1999,"rating":1,"dubious":false,"date":"2017-01-06 00:16"},{"_id":"7407","normalized_imdb_id":222368,"title":"Los sin nombre","year":1999,"rating":3,"dubious":false,"date":"2017-01-18 16:46"},{"_id":"7620","normalized_imdb_id":182789,"title":"Bicentennial Man","year":1999,"rating":3,"dubious":true,"date":"2017-05-21 11:12"},{"_id":"7647","normalized_imdb_id":139462,"title":"Message in a Bottle","year":1999,"rating":1,"dubious":false,"date":"2017-05-21 15:03"},{"_id":"7674","normalized_imdb_id":311926,"title":"Screwed in Tallinn","year":1999,"rating":3,"dubious":false,"date":"2017-06-04 19:05"},{"_id":"7740","normalized_imdb_id":205000,"title":"Deuce Bigalow: Male Gigolo","year":1999,"rating":3,"dubious":false,"date":"2017-07-14 04:51"},{"_id":"7990","normalized_imdb_id":155267,"title":"Thomas Crown Affair, The","year":1999,"rating":1,"dubious":false,"date":"2018-01-07 23:50"},{"_id":"8114","normalized_imdb_id":166175,"title":"East Is East","year":1999,"rating":3,"dubious":true,"date":"2018-03-16 16:28"},{"_id":"8787","normalized_imdb_id":120646,"title":"Deep End of the Ocean, The","year":1999,"rating":2,"dubious":true,"date":"2019-07-18 14:59"},{"_id":"8898","normalized_imdb_id":159272,"title":"Beautiful People","year":1999,"rating":1,"dubious":false,"date":"2019-11-15 20:46"},{"_id":"8826","normalized_imdb_id":145531,"title":"Stigmata","year":1999,"rating":3,"dubious":false,"date":"2019-08-21 12:49"},{"_id":"8981","normalized_imdb_id":139414,"title":"Lake Placid","year":1999,"rating":3,"dubious":false,"date":"2020-01-25 22:49"},{"_id":"9001","normalized_imdb_id":192618,"title":"Smart House","year":1999,"rating":3,"dubious":false,"date":"2020-02-04 20:26"},{"_id":"9223","normalized_imdb_id":200208,"title":"Thirteenth Year, The","year":1999,"rating":2,"dubious":false,"date":"2020-08-04 17:35"},{"_id":"9239","normalized_imdb_id":150377,"title":"Double Jeopardy","year":1999,"rating":3,"dubious":false,"date":"2020-08-14 20:02"},{"_id":"9243","normalized_imdb_id":166943,"title":"Music of the Heart","year":1999,"rating":3,"dubious":false,"date":"2020-08-16 20:57"},{"_id":"9262","normalized_imdb_id":219964,"title":"Outer Space","year":1999,"rating":0,"dubious":false,"date":"2020-09-03 19:18"},{"_id":"9292","normalized_imdb_id":162735,"title":"Vendetta","year":1999,"rating":1,"dubious":true,"date":"2020-10-04 17:43"},{"_id":"9534","normalized_imdb_id":194800,"title":"Operation Delta Force 4: Deep Fault","year":1999,"rating":0,"dubious":false,"date":"2021-03-14 14:53"},{"_id":"9541","normalized_imdb_id":149261,"title":"Deep Blue Sea","year":1999,"rating":1,"dubious":false,"date":"2021-03-14 17:34"},{"_id":"9773","normalized_imdb_id":194722,"title":"Bridge of Dragons","year":1999,"rating":1,"dubious":false,"date":"2021-05-01 12:00"},{"_id":"10022","normalized_imdb_id":132477,"title":"October Sky","year":1999,"rating":1,"dubious":false,"date":"2021-08-26 04:02"},{"_id":"10142","normalized_imdb_id":163187,"title":"Runaway Bride","year":1999,"rating":1,"dubious":false,"date":"2021-11-25 06:57"},{"_id":"15","normalized_imdb_id":199753,"title":"Red Planet","year":2000,"rating":0,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"52","normalized_imdb_id":209144,"title":"Memento","year":2000,"rating":1,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"64","normalized_imdb_id":144084,"title":"American Psycho","year":2000,"rating":3,"dubious":false,"date":"2008-07-22 00:00"},{"_id":"78","normalized_imdb_id":164052,"title":"Hollow Man","year":2000,"rating":3,"dubious":false,"date":"2008-07-28 02:09"},{"_id":"90","normalized_imdb_id":183523,"title":"Mission to Mars","year":2000,"rating":1,"dubious":false,"date":"2008-07-28 20:08"},{"_id":"101","normalized_imdb_id":120903,"title":"X-Men","year":2000,"rating":1,"dubious":false,"date":"2008-07-30 01:14"},{"_id":"112","normalized_imdb_id":190865,"title":"Vertical Limit","year":2000,"rating":1,"dubious":false,"date":"2008-07-31 21:46"},{"_id":"122","normalized_imdb_id":184894,"title":"Shanghai Noon","year":2000,"rating":1,"dubious":false,"date":"2008-08-01 22:01"},{"_id":"130","normalized_imdb_id":242423,"title":"Dude, Where's My Car","year":2000,"rating":2,"dubious":false,"date":"2008-08-02 18:11"},{"_id":"131","normalized_imdb_id":190138,"title":"Whole Nine Yards, The","year":2000,"rating":3,"dubious":false,"date":"2008-08-02 18:29"},{"_id":"152","normalized_imdb_id":120917,"title":"Emperor's New Groove, The","year":2000,"rating":3,"dubious":false,"date":"2008-08-09 23:29"},{"_id":"153","normalized_imdb_id":160611,"title":"Ordinary Decent Criminal","year":2000,"rating":1,"dubious":false,"date":"2008-08-10 11:48"},{"_id":"249","normalized_imdb_id":197096,"title":"What's Cooking?","year":2000,"rating":3,"dubious":false,"date":"2009-01-02 22:17"},{"_id":"319","normalized_imdb_id":134847,"title":"Pitch Black","year":2000,"rating":3,"dubious":false,"date":"2009-05-04 15:56"},{"_id":"348","normalized_imdb_id":212826,"title":"Bread and Roses","year":2000,"rating":3,"dubious":false,"date":"2009-06-20 17:24"},{"_id":"430","normalized_imdb_id":217355,"title":"Dancing at the Blue Iguana","year":2000,"rating":3,"dubious":false,"date":"2009-08-09 05:45"},{"_id":"452","normalized_imdb_id":195685,"title":"Erin Brockovich","year":2000,"rating":3,"dubious":false,"date":"2009-08-13 09:27"},{"_id":"538","normalized_imdb_id":210070,"title":"Ginger Snaps","year":2000,"rating":3,"dubious":false,"date":"2009-11-02 16:34"},{"_id":"605","normalized_imdb_id":212604,"title":"Tully","year":2000,"rating":0,"dubious":false,"date":"2009-12-28 04:01"},{"_id":"625","normalized_imdb_id":181984,"title":"Boiler Room","year":2000,"rating":1,"dubious":false,"date":"2009-12-28 23:38"},{"_id":"655","normalized_imdb_id":212346,"title":"Miss Congeniality","year":2000,"rating":3,"dubious":false,"date":"2010-01-20 09:30"},{"_id":"687","normalized_imdb_id":120630,"title":"Chicken Run","year":2000,"rating":3,"dubious":false,"date":"2010-02-22 00:34"},{"_id":"765","normalized_imdb_id":204946,"title":"Bring It On","year":2000,"rating":3,"dubious":false,"date":"2010-04-26 15:30"},{"_id":"854","normalized_imdb_id":241303,"title":"Chocolat","year":2000,"rating":3,"dubious":false,"date":"2010-05-27 22:38"},{"_id":"855","normalized_imdb_id":190332,"title":"Wo hu cang long (Crouching Tiger, Hidden Dragon)","year":2000,"rating":3,"dubious":false,"date":"2010-05-27 22:42"},{"_id":"875","normalized_imdb_id":250440,"title":"Is It Fall Yet","year":2000,"rating":3,"dubious":false,"date":"2010-05-29 00:59"},{"_id":"877","normalized_imdb_id":181875,"title":"Almost Famous","year":2000,"rating":3,"dubious":false,"date":"2010-05-29 01:12"},{"_id":"882","normalized_imdb_id":198021,"title":"Where the Heart Is","year":2000,"rating":3,"dubious":false,"date":"2010-05-31 04:49"},{"_id":"928","normalized_imdb_id":218839,"title":"Best in Show","year":2000,"rating":3,"dubious":false,"date":"2010-06-09 16:09"},{"_id":"954","normalized_imdb_id":191754,"title":"28 Days","year":2000,"rating":3,"dubious":false,"date":"2010-06-17 17:33"},{"_id":"1006","normalized_imdb_id":146882,"title":"High Fidelity","year":2000,"rating":2,"dubious":false,"date":"2010-06-29 18:51"},{"_id":"1029","normalized_imdb_id":120913,"title":"Titan A.E.","year":2000,"rating":3,"dubious":false,"date":"2010-07-03 00:59"},{"_id":"1064","normalized_imdb_id":138749,"title":"Road to El Dorado, The","year":2000,"rating":0,"dubious":false,"date":"2010-07-04 04:36"},{"_id":"1071","normalized_imdb_id":161081,"title":"What Lies Beneath","year":2000,"rating":3,"dubious":false,"date":"2010-07-04 05:08"},{"_id":"1190","normalized_imdb_id":122459,"title":"Return to Me","year":2000,"rating":3,"dubious":true,"date":"2010-07-18 07:16"},{"_id":"1598","normalized_imdb_id":210945,"title":"Remember the Titans","year":2000,"rating":3,"dubious":false,"date":"2010-09-23 00:32"},{"_id":"1556","normalized_imdb_id":260991,"title":"J.S.A.: Joint Security Area","year":2000,"rating":2,"dubious":false,"date":"2010-09-08 23:03"},{"_id":"1589","normalized_imdb_id":257001,"title":"Pokemon: The Movie 2000","year":2000,"rating":3,"dubious":false,"date":"2010-09-22 05:11"},{"_id":"1414","normalized_imdb_id":208092,"title":"Snatch.","year":2000,"rating":0,"dubious":false,"date":"2010-08-01 13:04"},{"_id":"1593","normalized_imdb_id":208185,"title":"An Extremely Goofy Movie","year":2000,"rating":1,"dubious":false,"date":"2010-09-22 05:51"},{"_id":"1575","normalized_imdb_id":210075,"title":"Girlfight","year":2000,"rating":3,"dubious":false,"date":"2010-09-18 04:47"},{"_id":"1521","normalized_imdb_id":203119,"title":"Sexy Beast","year":2000,"rating":2,"dubious":true,"date":"2010-09-01 23:28"},{"_id":"1192","normalized_imdb_id":210616,"title":"Center Stage","year":2000,"rating":3,"dubious":false,"date":"2010-07-18 17:41"},{"_id":"1206","normalized_imdb_id":214641,"title":"Dragonheart: A New Beginning","year":2000,"rating":0,"dubious":false,"date":"2010-07-20 08:24"},{"_id":"1277","normalized_imdb_id":266308,"title":"Battle Royale","year":2000,"rating":3,"dubious":false,"date":"2010-07-23 01:10"},{"_id":"1114","normalized_imdb_id":217869,"title":"Unbreakable","year":2000,"rating":0,"dubious":false,"date":"2010-07-08 20:55"},{"_id":"1155","normalized_imdb_id":160127,"title":"Charlie's Angels","year":2000,"rating":3,"dubious":false,"date":"2010-07-11 00:25"},{"_id":"1163","normalized_imdb_id":172495,"title":"Gladiator","year":2000,"rating":0,"dubious":false,"date":"2010-07-11 07:33"},{"_id":"1093","normalized_imdb_id":200550,"title":"Coyote Ugly","year":2000,"rating":3,"dubious":false,"date":"2010-07-04 23:38"},{"_id":"1083","normalized_imdb_id":207201,"title":"What Women Want","year":2000,"rating":1,"dubious":false,"date":"2010-07-04 22:36"},{"_id":"1664","normalized_imdb_id":206036,"title":"If These Walls Could Talk 2","year":2000,"rating":3,"dubious":false,"date":"2010-10-15 22:14"},{"_id":"1843","normalized_imdb_id":168629,"title":"Dancer in the Dark","year":2000,"rating":3,"dubious":false,"date":"2010-12-12 01:56"},{"_id":"1897","normalized_imdb_id":210299,"title":"Songcatcher","year":2000,"rating":3,"dubious":false,"date":"2011-01-12 01:54"},{"_id":"1901","normalized_imdb_id":203540,"title":"Greenfingers","year":2000,"rating":3,"dubious":false,"date":"2011-01-12 08:50"},{"_id":"1921","normalized_imdb_id":256127,"title":"Kao (Face)","year":2000,"rating":3,"dubious":false,"date":"2011-01-17 11:14"},{"_id":"2050","normalized_imdb_id":180093,"title":"Requiem for a Dream","year":2000,"rating":3,"dubious":false,"date":"2011-02-15 17:34"},{"_id":"2137","normalized_imdb_id":221889,"title":"Beautiful Creatures","year":2000,"rating":3,"dubious":false,"date":"2011-03-25 01:50"},{"_id":"2234","normalized_imdb_id":255094,"title":"Circle, The","year":2000,"rating":3,"dubious":false,"date":"2011-04-23 19:58"},{"_id":"2295","normalized_imdb_id":205177,"title":"Kevin & Perry Go Large","year":2000,"rating":3,"dubious":true,"date":"2011-05-14 22:06"},{"_id":"2299","normalized_imdb_id":156807,"title":"Mr. Accident","year":2000,"rating":3,"dubious":false,"date":"2011-05-17 04:59"},{"_id":"2393","normalized_imdb_id":182508,"title":"Urbania","year":2000,"rating":1,"dubious":false,"date":"2011-06-12 00:45"},{"_id":"2414","normalized_imdb_id":206917,"title":"Man Who Cried, The","year":2000,"rating":3,"dubious":false,"date":"2011-06-20 02:54"},{"_id":"2562","normalized_imdb_id":212338,"title":"Meet the Parents","year":2000,"rating":2,"dubious":false,"date":"2011-07-21 03:14"},{"_id":"2563","normalized_imdb_id":264734,"title":"Joseph: King of Dreams","year":2000,"rating":3,"dubious":true,"date":"2011-07-22 12:43"},{"_id":"2646","normalized_imdb_id":199725,"title":"Love & Basketball","year":2000,"rating":3,"dubious":false,"date":"2011-08-31 01:21"},{"_id":"2723","normalized_imdb_id":203166,"title":"Together","year":2000,"rating":3,"dubious":false,"date":"2011-09-29 23:13"},{"_id":"2917","normalized_imdb_id":187078,"title":"Gone in Sixty Seconds","year":2000,"rating":1,"dubious":false,"date":"2011-12-10 04:24"},{"_id":"2923","normalized_imdb_id":187393,"title":"Patriot, The","year":2000,"rating":3,"dubious":true,"date":"2011-12-13 04:35"},{"_id":"2939","normalized_imdb_id":249462,"title":"Billy Elliot","year":2000,"rating":3,"dubious":false,"date":"2011-12-18 07:35"},{"_id":"3064","normalized_imdb_id":255589,"title":"Isle, The","year":2000,"rating":1,"dubious":false,"date":"2012-02-20 19:00"},{"_id":"3387","normalized_imdb_id":233298,"title":"Batman Beyond: Return of the Joker","year":2000,"rating":3,"dubious":false,"date":"2012-06-28 02:50"},{"_id":"3183","normalized_imdb_id":195234,"title":"Saving Grace","year":2000,"rating":3,"dubious":false,"date":"2012-04-14 20:01"},{"_id":"3233","normalized_imdb_id":118694,"title":"Fa yeung nin wa (In the Mood for Love)","year":2000,"rating":3,"dubious":false,"date":"2012-05-08 04:43"},{"_id":"3285","normalized_imdb_id":255067,"title":"La comunidad","year":2000,"rating":3,"dubious":false,"date":"2012-05-26 01:36"},{"_id":"3455","normalized_imdb_id":190590,"title":"O Brother, Where Art Thou?","year":2000,"rating":0,"dubious":true,"date":"2012-07-29 21:25"},{"_id":"3471","normalized_imdb_id":185431,"title":"Little Nicky","year":2000,"rating":1,"dubious":false,"date":"2012-08-13 22:48"},{"_id":"3551","normalized_imdb_id":146309,"title":"Thirteen days","year":2000,"rating":1,"dubious":false,"date":"2012-09-26 22:10"},{"_id":"3795","normalized_imdb_id":162222,"title":"Cast Away","year":2000,"rating":2,"dubious":false,"date":"2013-01-02 10:19"},{"_id":"3920","normalized_imdb_id":219699,"title":"Gift, The","year":2000,"rating":3,"dubious":true,"date":"2013-02-21 12:59"},{"_id":"3950","normalized_imdb_id":163978,"title":"Beach, The","year":2000,"rating":1,"dubious":false,"date":"2013-03-04 03:56"},{"_id":"3963","normalized_imdb_id":204640,"title":"Sordid Lives","year":2000,"rating":3,"dubious":false,"date":"2013-03-09 06:46"},{"_id":"4022","normalized_imdb_id":155723,"title":"A Good Baby","year":2000,"rating":3,"dubious":false,"date":"2013-04-03 15:45"},{"_id":"4082","normalized_imdb_id":215545,"title":"Bamboozlee","year":2000,"rating":1,"dubious":false,"date":"2013-04-24 04:39"},{"_id":"4122","normalized_imdb_id":200809,"title":"Life-Size","year":2000,"rating":3,"dubious":false,"date":"2013-05-07 19:28"},{"_id":"4172","normalized_imdb_id":286137,"title":"Something Between Us","year":2000,"rating":3,"dubious":false,"date":"2013-05-28 16:23"},{"_id":"4148","normalized_imdb_id":173716,"title":"Cecil B. Demented","year":2000,"rating":3,"dubious":false,"date":"2013-05-21 18:25"},{"_id":"4275","normalized_imdb_id":240684,"title":"Little Mermaid 2: Return to the Sea, The","year":2000,"rating":3,"dubious":false,"date":"2013-06-27 23:04"},{"_id":"4377","normalized_imdb_id":165929,"title":"Romeo Must Die","year":2000,"rating":0,"dubious":false,"date":"2013-07-21 11:58"},{"_id":"4445","normalized_imdb_id":209958,"title":"Cell, The","year":2000,"rating":2,"dubious":true,"date":"2013-08-06 09:10"},{"_id":"4506","normalized_imdb_id":249380,"title":"Baise-Moi","year":2000,"rating":3,"dubious":false,"date":"2013-08-25 20:59"},{"_id":"4557","normalized_imdb_id":195714,"title":"Final Destination","year":2000,"rating":1,"dubious":false,"date":"2013-09-12 13:40"},{"_id":"4560","normalized_imdb_id":205873,"title":"Dish, The","year":2000,"rating":3,"dubious":false,"date":"2013-09-12 20:00"},{"_id":"4600","normalized_imdb_id":247380,"title":"Gleaners and I, The","year":2000,"rating":3,"dubious":false,"date":"2013-09-18 13:42"},{"_id":"4644","normalized_imdb_id":134084,"title":"Scream 3","year":2000,"rating":3,"dubious":false,"date":"2013-09-29 13:54"},{"_id":"4703","normalized_imdb_id":202677,"title":"Way of the Gun, The","year":2000,"rating":2,"dubious":false,"date":"2013-10-17 14:29"},{"_id":"4716","normalized_imdb_id":142032,"title":"Dune","year":2000,"rating":3,"dubious":false,"date":"2013-10-20 05:36"},{"_id":"4720","normalized_imdb_id":213203,"title":"Rugrats in Paris:","year":2000,"rating":3,"dubious":false,"date":"2013-10-20 06:42"},{"_id":"4734","normalized_imdb_id":236027,"title":"Blinkende lygter ('Flickering Lights')","year":2000,"rating":1,"dubious":true,"date":"2013-10-25 20:11"},{"_id":"4821","normalized_imdb_id":175526,"title":"Cherry Falls","year":2000,"rating":3,"dubious":false,"date":"2013-11-13 20:54"},{"_id":"4835","normalized_imdb_id":260191,"title":"Gundam Wing: The Movie - Endless Waltz","year":2000,"rating":3,"dubious":false,"date":"2013-11-15 09:04"},{"_id":"4964","normalized_imdb_id":243862,"title":"Italian for Beginners","year":2000,"rating":3,"dubious":false,"date":"2013-12-19 06:28"},{"_id":"5073","normalized_imdb_id":263215,"title":"Picture Claire","year":2000,"rating":3,"dubious":false,"date":"2014-01-14 07:09"},{"_id":"5094","normalized_imdb_id":252227,"title":"Alvin and the Chipmunks Meet the Wolfman","year":2000,"rating":3,"dubious":false,"date":"2014-01-22 05:03"},{"_id":"5274","normalized_imdb_id":229440,"title":"Hellraiser: Inferno","year":2000,"rating":1,"dubious":false,"date":"2014-03-12 04:04"},{"_id":"5299","normalized_imdb_id":213847,"title":"Malèna","year":2000,"rating":3,"dubious":false,"date":"2014-03-18 06:31"},{"_id":"5365","normalized_imdb_id":216216,"title":"6th Day, The","year":2000,"rating":3,"dubious":true,"date":"2014-04-05 14:11"},{"_id":"5386","normalized_imdb_id":260332,"title":"Roozi ke zan shodam","year":2000,"rating":3,"dubious":false,"date":"2014-04-11 10:02"},{"_id":"5504","normalized_imdb_id":220099,"title":"Tigger Movie, The","year":2000,"rating":0,"dubious":false,"date":"2014-05-27 23:59"},{"_id":"5544","normalized_imdb_id":175142,"title":"Scary Movie","year":2000,"rating":3,"dubious":false,"date":"2014-06-07 02:35"},{"_id":"5605","normalized_imdb_id":120755,"title":"Mission: Impossible II","year":2000,"rating":0,"dubious":false,"date":"2014-06-30 04:30"},{"_id":"5711","normalized_imdb_id":235327,"title":"Dark Days","year":2000,"rating":0,"dubious":false,"date":"2014-08-22 02:25"},{"_id":"5743","normalized_imdb_id":244870,"title":"Spiral","year":2000,"rating":3,"dubious":false,"date":"2014-09-14 04:27"},{"_id":"5792","normalized_imdb_id":245712,"title":"Amores Perros","year":2000,"rating":1,"dubious":false,"date":"2014-09-30 07:51"},{"_id":"5851","normalized_imdb_id":282753,"title":"Spacked out","year":2000,"rating":1,"dubious":false,"date":"2014-10-19 21:49"},{"_id":"5866","normalized_imdb_id":186894,"title":"Bounce","year":2000,"rating":2,"dubious":false,"date":"2014-10-23 17:46"},{"_id":"6002","normalized_imdb_id":211181,"title":"102 Dalmatians","year":2000,"rating":3,"dubious":false,"date":"2014-12-31 06:43"},{"_id":"6039","normalized_imdb_id":156757,"title":"Mad About Mambo","year":2000,"rating":1,"dubious":false,"date":"2015-01-11 22:45"},{"_id":"6114","normalized_imdb_id":279474,"title":"Tomie: Replay","year":2000,"rating":3,"dubious":false,"date":"2015-02-16 21:34"},{"_id":"6131","normalized_imdb_id":271219,"title":"Tadpole","year":2000,"rating":2,"dubious":false,"date":"2015-03-03 19:59"},{"_id":"6136","normalized_imdb_id":209095,"title":"Leprechaun in the Hood","year":2000,"rating":1,"dubious":false,"date":"2015-03-08 00:44"},{"_id":"6380","normalized_imdb_id":193019,"title":"Blue's Big Musical Movie","year":2000,"rating":3,"dubious":false,"date":"2015-07-31 21:34"},{"_id":"6442","normalized_imdb_id":330500,"title":"Ju-on","year":2000,"rating":3,"dubious":false,"date":"2015-09-12 21:43"},{"_id":"6444","normalized_imdb_id":330501,"title":"Ju-on 2","year":2000,"rating":2,"dubious":false,"date":"2015-09-12 22:23"},{"_id":"6455","normalized_imdb_id":230183,"title":"Eeny Meeny","year":2000,"rating":3,"dubious":false,"date":"2015-09-15 14:39"},{"_id":"6512","normalized_imdb_id":162983,"title":"Hanging Up","year":2000,"rating":3,"dubious":false,"date":"2015-10-26 04:15"},{"_id":"6547","normalized_imdb_id":134983,"title":"Supernova","year":2000,"rating":3,"dubious":true,"date":"2015-11-18 06:16"},{"_id":"6598","normalized_imdb_id":204761,"title":"La fidelite","year":2000,"rating":3,"dubious":false,"date":"2015-12-12 22:01"},{"_id":"6604","normalized_imdb_id":251382,"title":"Santa who?","year":2000,"rating":1,"dubious":false,"date":"2015-12-13 18:59"},{"_id":"6618","normalized_imdb_id":282936,"title":"Sakuya: yokaiden","year":2000,"rating":3,"dubious":false,"date":"2015-12-20 02:25"},{"_id":"6809","normalized_imdb_id":218616,"title":"Some Voices","year":2000,"rating":2,"dubious":true,"date":"2016-03-29 15:38"},{"_id":"6874","normalized_imdb_id":229340,"title":"Dinner Rush","year":2000,"rating":3,"dubious":true,"date":"2016-05-06 22:56"},{"_id":"6858","normalized_imdb_id":186566,"title":"Space Cowboys","year":2000,"rating":2,"dubious":false,"date":"2016-04-28 22:19"},{"_id":"6904","normalized_imdb_id":330994,"title":"Titanic - La leggenda continua","year":2000,"rating":3,"dubious":false,"date":"2016-05-28 19:25"},{"_id":"7081","normalized_imdb_id":223897,"title":"Pay it Foward","year":2000,"rating":3,"dubious":true,"date":"2016-08-30 00:23"},{"_id":"7134","normalized_imdb_id":231844,"title":"Juste une question d'amour","year":2000,"rating":2,"dubious":false,"date":"2016-09-23 07:47"},{"_id":"7188","normalized_imdb_id":130623,"title":"Dinosaur","year":2000,"rating":3,"dubious":false,"date":"2016-10-12 01:52"},{"_id":"7542","normalized_imdb_id":181536,"title":"Finding Forrester","year":2000,"rating":2,"dubious":true,"date":"2017-03-30 14:01"},{"_id":"7616","normalized_imdb_id":174480,"title":"Autumn in New York","year":2000,"rating":1,"dubious":false,"date":"2017-05-21 11:00"},{"_id":"7621","normalized_imdb_id":163983,"title":"Bless the Child","year":2000,"rating":2,"dubious":false,"date":"2017-05-21 11:14"},{"_id":"7792","normalized_imdb_id":195945,"title":"Next Friday","year":2000,"rating":2,"dubious":false,"date":"2017-08-31 05:36"},{"_id":"7928","normalized_imdb_id":170016,"title":"How the Grinch Stole Christmas","year":2000,"rating":3,"dubious":false,"date":"2017-11-28 19:41"},{"_id":"7929","normalized_imdb_id":181865,"title":"Traffic","year":2000,"rating":3,"dubious":false,"date":"2017-11-28 19:42"},{"_id":"8493","normalized_imdb_id":4281724,"title":"Terrifier","year":2000,"rating":3,"dubious":false,"date":"2018-11-25 17:42"},{"_id":"8769","normalized_imdb_id":248254,"title":"Old School","year":2000,"rating":1,"dubious":false,"date":"2019-06-21 16:51"},{"_id":"8782","normalized_imdb_id":185014,"title":"Wonder Boys","year":2000,"rating":1,"dubious":false,"date":"2019-07-11 07:58"},{"_id":"8873","normalized_imdb_id":203019,"title":"Men of Honor","year":2000,"rating":1,"dubious":false,"date":"2019-10-22 18:55"},{"_id":"8909","normalized_imdb_id":218967,"title":"Family Man, The","year":2000,"rating":3,"dubious":true,"date":"2019-11-25 14:36"},{"_id":"9050","normalized_imdb_id":217990,"title":"Alley Cats Strike","year":2000,"rating":3,"dubious":false,"date":"2020-03-24 00:07"},{"_id":"9174","normalized_imdb_id":210567,"title":"Beautiful","year":2000,"rating":3,"dubious":false,"date":"2020-06-17 06:42"},{"_id":"9301","normalized_imdb_id":177971,"title":"Perfect Storm, The","year":2000,"rating":2,"dubious":false,"date":"2020-10-08 02:03"},{"_id":"9330","normalized_imdb_id":183505,"title":"Me, Myself and Irene","year":2000,"rating":1,"dubious":false,"date":"2020-11-15 18:33"},{"_id":"9535","normalized_imdb_id":227200,"title":"Operation Delta Force 5: Random Fire","year":2000,"rating":0,"dubious":false,"date":"2021-03-14 14:55"},{"_id":"9910","normalized_imdb_id":191397,"title":"Replacements, The","year":2000,"rating":3,"dubious":false,"date":"2021-06-20 23:04"},{"_id":"9974","normalized_imdb_id":244316,"title":"Yi Yi","year":2000,"rating":3,"dubious":false,"date":"2021-07-21 04:19"},{"_id":"49","normalized_imdb_id":160399,"title":"Impostor","year":2001,"rating":0,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"51","normalized_imdb_id":240772,"title":"Ocean's Eleven","year":2001,"rating":1,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"62","normalized_imdb_id":212720,"title":"Artificial Intelligence: AI","year":2001,"rating":1,"dubious":false,"date":"2008-07-21 00:00"},{"_id":"63","normalized_imdb_id":227984,"title":"51st State, The","year":2001,"rating":0,"dubious":false,"date":"2008-07-21 00:00"},{"_id":"79","normalized_imdb_id":260866,"title":"Don't Say A Word","year":2001,"rating":3,"dubious":false,"date":"2008-07-28 02:32"},{"_id":"85","normalized_imdb_id":268995,"title":"Majestic, The","year":2001,"rating":1,"dubious":false,"date":"2008-07-28 13:26"},{"_id":"93","normalized_imdb_id":211443,"title":"Jason X","year":2001,"rating":3,"dubious":false,"date":"2008-07-29 18:16"},{"_id":"94","normalized_imdb_id":164334,"title":"Along Came A Spider","year":2001,"rating":3,"dubious":false,"date":"2008-07-29 23:08"},{"_id":"148","normalized_imdb_id":198781,"title":"Monsters, Inc.","year":2001,"rating":1,"dubious":false,"date":"2008-08-07 23:34"},{"_id":"154","normalized_imdb_id":218817,"title":"Antitrust","year":2001,"rating":2,"dubious":false,"date":"2008-08-10 13:34"},{"_id":"155","normalized_imdb_id":261392,"title":"Jay and Silent Bob Strike Back","year":2001,"rating":3,"dubious":false,"date":"2008-08-10 14:33"},{"_id":"158","normalized_imdb_id":253126,"title":"High Heels and Low Lifes","year":2001,"rating":3,"dubious":false,"date":"2008-08-11 01:06"},{"_id":"161","normalized_imdb_id":126029,"title":"Shrek","year":2001,"rating":1,"dubious":false,"date":"2008-08-11 12:55"},{"_id":"164","normalized_imdb_id":251075,"title":"Evolution","year":2001,"rating":3,"dubious":false,"date":"2008-08-11 15:41"},{"_id":"175","normalized_imdb_id":258273,"title":"Lovely and Amazing","year":2001,"rating":3,"dubious":false,"date":"2008-09-04 01:39"},{"_id":"178","normalized_imdb_id":268978,"title":"A Beautiful Mind","year":2001,"rating":1,"dubious":false,"date":"2008-09-09 17:39"},{"_id":"225","normalized_imdb_id":286975,"title":"Slashers","year":2001,"rating":3,"dubious":false,"date":"2008-12-05 21:51"},{"_id":"226","normalized_imdb_id":162346,"title":"Ghost World","year":2001,"rating":3,"dubious":false,"date":"2008-12-06 17:32"},{"_id":"232","normalized_imdb_id":169102,"title":"Lagaan - Once Upon a Time in India","year":2001,"rating":3,"dubious":true,"date":"2008-12-10 00:05"},{"_id":"235","normalized_imdb_id":236348,"title":"Josie and the Pussycats","year":2001,"rating":3,"dubious":false,"date":"2008-12-10 21:48"},{"_id":"246","normalized_imdb_id":120737,"title":"Lord of the Rings: The Fellowship of the Ring, The","year":2001,"rating":1,"dubious":false,"date":"2009-01-02 22:03"},{"_id":"288","normalized_imdb_id":245238,"title":"Lost and Delirious","year":2001,"rating":3,"dubious":false,"date":"2009-02-22 10:14"},{"_id":"333","normalized_imdb_id":228333,"title":"Ghosts of Mars","year":2001,"rating":3,"dubious":false,"date":"2009-06-02 21:27"},{"_id":"359","normalized_imdb_id":247638,"title":"Princess Diaries, The","year":2001,"rating":3,"dubious":false,"date":"2009-07-06 00:17"},{"_id":"362","normalized_imdb_id":265666,"title":"Royal Tenenbaums, The","year":2001,"rating":3,"dubious":false,"date":"2009-07-13 09:54"},{"_id":"382","normalized_imdb_id":183790,"title":"A Knight's Tale","year":2001,"rating":2,"dubious":false,"date":"2009-07-28 04:36"},{"_id":"412","normalized_imdb_id":146316,"title":"Lara Croft: Tomb Raider","year":2001,"rating":0,"dubious":false,"date":"2009-08-03 14:53"},{"_id":"553","normalized_imdb_id":265343,"title":"Monsoon Wedding","year":2001,"rating":3,"dubious":false,"date":"2009-12-05 05:46"},{"_id":"568","normalized_imdb_id":166924,"title":"Mulholland Dr.","year":2001,"rating":3,"dubious":false,"date":"2009-12-18 00:19"},{"_id":"639","normalized_imdb_id":264761,"title":"Kissing Jessica Stein","year":2001,"rating":3,"dubious":false,"date":"2010-01-14 20:14"},{"_id":"698","normalized_imdb_id":265086,"title":"Black Hawk Down","year":2001,"rating":0,"dubious":false,"date":"2010-03-06 10:09"},{"_id":"733","normalized_imdb_id":250494,"title":"Legally Blonde","year":2001,"rating":3,"dubious":false,"date":"2010-04-13 18:23"},{"_id":"820","normalized_imdb_id":244353,"title":"Mists of Avalon, The","year":2001,"rating":3,"dubious":false,"date":"2010-05-20 10:24"},{"_id":"836","normalized_imdb_id":245574,"title":"Y tu mama tambien","year":2001,"rating":0,"dubious":true,"date":"2010-05-27 14:41"},{"_id":"838","normalized_imdb_id":243664,"title":"Wit","year":2001,"rating":3,"dubious":false,"date":"2010-05-27 15:13"},{"_id":"856","normalized_imdb_id":230600,"title":"Others, The","year":2001,"rating":3,"dubious":false,"date":"2010-05-27 22:45"},{"_id":"864","normalized_imdb_id":245429,"title":"Spirited Away","year":2001,"rating":3,"dubious":false,"date":"2010-05-28 06:02"},{"_id":"887","normalized_imdb_id":246578,"title":"Donnie Darko","year":2001,"rating":3,"dubious":true,"date":"2010-06-01 03:10"},{"_id":"1009","normalized_imdb_id":243017,"title":"Waking Life","year":2001,"rating":3,"dubious":false,"date":"2010-06-30 04:35"},{"_id":"1038","normalized_imdb_id":211915,"title":"Amelie","year":2001,"rating":3,"dubious":false,"date":"2010-07-03 14:40"},{"_id":"1188","normalized_imdb_id":263467,"title":"In the Time of the Butterflies","year":2001,"rating":3,"dubious":false,"date":"2010-07-18 03:22"},{"_id":"1322","normalized_imdb_id":254686,"title":"Piano Teacher, The","year":2001,"rating":3,"dubious":false,"date":"2010-07-25 19:16"},{"_id":"1204","normalized_imdb_id":209475,"title":"Wedding Planner, The","year":2001,"rating":3,"dubious":false,"date":"2010-07-20 06:08"},{"_id":"1106","normalized_imdb_id":280707,"title":"Gosford Park","year":2001,"rating":3,"dubious":false,"date":"2010-07-07 16:23"},{"_id":"1112","normalized_imdb_id":244000,"title":"American Outlaws","year":2001,"rating":1,"dubious":false,"date":"2010-07-08 13:34"},{"_id":"1141","normalized_imdb_id":246772,"title":"Mostly Martha","year":2001,"rating":3,"dubious":false,"date":"2010-07-10 05:57"},{"_id":"1459","normalized_imdb_id":219822,"title":"Human Nature","year":2001,"rating":3,"dubious":false,"date":"2010-08-11 02:39"},{"_id":"1085","normalized_imdb_id":230011,"title":"Atlantis: The Lost Empire","year":2001,"rating":1,"dubious":false,"date":"2010-07-04 22:43"},{"_id":"1704","normalized_imdb_id":282771,"title":"Mystic Masseur, The","year":2001,"rating":2,"dubious":false,"date":"2010-10-28 22:31"},{"_id":"1739","normalized_imdb_id":35423,"title":"Kate & Leopold","year":2001,"rating":2,"dubious":false,"date":"2010-11-06 08:59"},{"_id":"1752","normalized_imdb_id":196229,"title":"Zoolander","year":2001,"rating":3,"dubious":false,"date":"2010-11-14 01:53"},{"_id":"1754","normalized_imdb_id":247745,"title":"Super Troopers","year":2001,"rating":1,"dubious":false,"date":"2010-11-14 19:49"},{"_id":"1769","normalized_imdb_id":203009,"title":"Moulin Rouge!","year":2001,"rating":3,"dubious":false,"date":"2010-11-19 21:05"},{"_id":"1776","normalized_imdb_id":180679,"title":"Escanaba in da Moonlight","year":2001,"rating":0,"dubious":false,"date":"2010-11-24 22:03"},{"_id":"1781","normalized_imdb_id":241527,"title":"Harry Potter and the Sorcerer's Stone","year":2001,"rating":3,"dubious":false,"date":"2010-11-26 22:52"},{"_id":"1876","normalized_imdb_id":296658,"title":"Goyangileul butaghae (Take Care of My Cat)","year":2001,"rating":3,"dubious":false,"date":"2010-12-25 21:49"},{"_id":"1904","normalized_imdb_id":227538,"title":"Spy Kids","year":2001,"rating":3,"dubious":false,"date":"2011-01-13 05:45"},{"_id":"1950","normalized_imdb_id":291350,"title":"Millennium Actress","year":2001,"rating":2,"dubious":false,"date":"2011-01-31 02:14"},{"_id":"2081","normalized_imdb_id":252684,"title":"Manic","year":2001,"rating":3,"dubious":false,"date":"2011-02-28 11:42"},{"_id":"2090","normalized_imdb_id":290879,"title":"Legend of Suriyothai, The","year":2001,"rating":3,"dubious":false,"date":"2011-03-05 23:01"},{"_id":"2148","normalized_imdb_id":248845,"title":"Hedwig and the Angry Inch","year":2001,"rating":3,"dubious":false,"date":"2011-03-28 03:00"},{"_id":"2322","normalized_imdb_id":287471,"title":"Late Marriage","year":2001,"rating":2,"dubious":false,"date":"2011-05-21 15:30"},{"_id":"2335","normalized_imdb_id":192023,"title":"Finder's Fee","year":2001,"rating":1,"dubious":false,"date":"2011-05-24 22:25"},{"_id":"2374","normalized_imdb_id":233657,"title":"Epoch","year":2001,"rating":1,"dubious":false,"date":"2011-06-05 23:54"},{"_id":"2517","normalized_imdb_id":277925,"title":"Hidden Half (Nimeh-ye penhan), The","year":2001,"rating":3,"dubious":false,"date":"2011-07-11 22:59"},{"_id":"2627","normalized_imdb_id":244970,"title":"Someone Like You...","year":2001,"rating":3,"dubious":false,"date":"2011-08-20 14:42"},{"_id":"2675","normalized_imdb_id":213149,"title":"Pearl Harbor","year":2001,"rating":2,"dubious":false,"date":"2011-09-12 10:12"},{"_id":"2745","normalized_imdb_id":312687,"title":"La fille de Keltoum","year":2001,"rating":3,"dubious":false,"date":"2011-10-07 01:38"},{"_id":"3052","normalized_imdb_id":243655,"title":"Wet Hot American Summer","year":2001,"rating":3,"dubious":false,"date":"2012-02-18 08:53"},{"_id":"4323","normalized_imdb_id":265104,"title":"Breed, The","year":2001,"rating":0,"dubious":false,"date":"2013-07-09 15:53"},{"_id":"3095","normalized_imdb_id":172543,"title":"He Died with a Felafel in His Hand","year":2001,"rating":3,"dubious":false,"date":"2012-03-07 19:33"},{"_id":"3161","normalized_imdb_id":243255,"title":"Fat Girl","year":2001,"rating":3,"dubious":false,"date":"2012-04-04 00:40"},{"_id":"3264","normalized_imdb_id":233841,"title":"Baran","year":2001,"rating":0,"dubious":false,"date":"2012-05-17 04:24"},{"_id":"3313","normalized_imdb_id":263725,"title":"Me Without You","year":2001,"rating":3,"dubious":false,"date":"2012-06-03 02:23"},{"_id":"3317","normalized_imdb_id":237534,"title":"Brotherhood of the Wolf","year":2001,"rating":2,"dubious":false,"date":"2012-06-04 13:07"},{"_id":"3451","normalized_imdb_id":263488,"title":"Jeepers Creepers","year":2001,"rating":3,"dubious":false,"date":"2012-07-27 15:16"},{"_id":"3503","normalized_imdb_id":139654,"title":"Training Day","year":2001,"rating":1,"dubious":false,"date":"2012-08-29 08:16"},{"_id":"3555","normalized_imdb_id":286112,"title":"Shaolin Soccer","year":2001,"rating":0,"dubious":false,"date":"2012-09-27 06:23"},{"_id":"3586","normalized_imdb_id":299937,"title":"Go","year":2001,"rating":2,"dubious":true,"date":"2012-10-13 05:26"},{"_id":"3599","normalized_imdb_id":240462,"title":"Dr. Dolittle 2","year":2001,"rating":3,"dubious":false,"date":"2012-10-15 23:19"},{"_id":"3613","normalized_imdb_id":312843,"title":"Suicide Club","year":2001,"rating":3,"dubious":false,"date":"2012-10-19 01:24"},{"_id":"3616","normalized_imdb_id":166276,"title":"Monkeybone","year":2001,"rating":3,"dubious":true,"date":"2012-10-20 03:57"},{"_id":"3766","normalized_imdb_id":161860,"title":"Nowhere in Africa","year":2001,"rating":3,"dubious":false,"date":"2012-12-21 12:23"},{"_id":"3771","normalized_imdb_id":2321187,"title":"Zaion: I Wish You Were Here","year":2001,"rating":3,"dubious":false,"date":"2012-12-26 07:22"},{"_id":"3938","normalized_imdb_id":244297,"title":"War Bride","year":2001,"rating":3,"dubious":false,"date":"2013-02-27 07:31"},{"_id":"4058","normalized_imdb_id":256380,"title":"Shallow Hal","year":2001,"rating":3,"dubious":false,"date":"2013-04-15 03:39"},{"_id":"4084","normalized_imdb_id":276613,"title":"Waiting For Godot","year":2001,"rating":0,"dubious":false,"date":"2013-04-24 21:01"},{"_id":"4131","normalized_imdb_id":275913,"title":"Amazons and Gladiators","year":2001,"rating":3,"dubious":false,"date":"2013-05-12 17:25"},{"_id":"4179","normalized_imdb_id":242587,"title":"L.I.E.","year":2001,"rating":1,"dubious":false,"date":"2013-05-29 17:11"},{"_id":"4210","normalized_imdb_id":212985,"title":"Hannibal","year":2001,"rating":3,"dubious":false,"date":"2013-06-05 15:35"},{"_id":"4214","normalized_imdb_id":279204,"title":"Lucky Girl (a.k.a. My Daughter's Secret Life)","year":2001,"rating":3,"dubious":false,"date":"2013-06-06 23:03"},{"_id":"4224","normalized_imdb_id":274117,"title":"Read My Lips","year":2001,"rating":3,"dubious":true,"date":"2013-06-09 19:05"},{"_id":"4248","normalized_imdb_id":290661,"title":"Hundstage","year":2001,"rating":3,"dubious":true,"date":"2013-06-18 10:38"},{"_id":"4246","normalized_imdb_id":267804,"title":"One, The","year":2001,"rating":0,"dubious":false,"date":"2013-06-15 10:39"},{"_id":"4341","normalized_imdb_id":279231,"title":"Miss Minoes (a.k.a Undercover Kitty)","year":2001,"rating":3,"dubious":false,"date":"2013-07-12 20:34"},{"_id":"4403","normalized_imdb_id":265171,"title":"Elvira's Haunted Hills","year":2001,"rating":3,"dubious":false,"date":"2013-07-26 10:07"},{"_id":"4434","normalized_imdb_id":275277,"title":"Cowboy Bebop: The Movie","year":2001,"rating":3,"dubious":false,"date":"2013-08-03 08:53"},{"_id":"4444","normalized_imdb_id":271027,"title":"Kiss of the Dragon","year":2001,"rating":1,"dubious":true,"date":"2013-08-06 02:44"},{"_id":"4446","normalized_imdb_id":251110,"title":"Gypsy 83","year":2001,"rating":3,"dubious":false,"date":"2013-08-06 12:47"},{"_id":"4639","normalized_imdb_id":242998,"title":"Valentine","year":2001,"rating":2,"dubious":true,"date":"2013-09-27 21:11"},{"_id":"4693","normalized_imdb_id":259711,"title":"Vanilla Sky","year":2001,"rating":1,"dubious":false,"date":"2013-10-13 19:51"},{"_id":"4712","normalized_imdb_id":306474,"title":"Arite hime/Princess Arete","year":2001,"rating":3,"dubious":false,"date":"2013-10-19 10:45"},{"_id":"4735","normalized_imdb_id":196069,"title":"Samsara","year":2001,"rating":0,"dubious":false,"date":"2013-10-25 20:15"},{"_id":"4792","normalized_imdb_id":120681,"title":"From Hell","year":2001,"rating":3,"dubious":true,"date":"2013-11-07 03:45"},{"_id":"4796","normalized_imdb_id":206275,"title":"Save the Last Dance","year":2001,"rating":3,"dubious":false,"date":"2013-11-07 13:34"},{"_id":"4826","normalized_imdb_id":272127,"title":"Hitched","year":2001,"rating":3,"dubious":true,"date":"2013-11-15 05:18"},{"_id":"4876","normalized_imdb_id":274497,"title":"Le fate ignoranti","year":2001,"rating":3,"dubious":false,"date":"2013-11-25 21:43"},{"_id":"4915","normalized_imdb_id":243155,"title":"Bridget Jones's Diary","year":2001,"rating":3,"dubious":false,"date":"2013-12-05 19:33"},{"_id":"4934","normalized_imdb_id":221027,"title":"Blow","year":2001,"rating":1,"dubious":false,"date":"2013-12-10 01:03"},{"_id":"4957","normalized_imdb_id":245674,"title":"Thir13en Ghosts","year":2001,"rating":1,"dubious":false,"date":"2013-12-16 20:14"},{"_id":"4958","normalized_imdb_id":221218,"title":"Glass House, The","year":2001,"rating":3,"dubious":false,"date":"2013-12-16 23:12"},{"_id":"5006","normalized_imdb_id":181739,"title":"Osmosis Jones","year":2001,"rating":3,"dubious":true,"date":"2013-12-29 16:11"},{"_id":"5082","normalized_imdb_id":274155,"title":"Tanguy","year":2001,"rating":1,"dubious":false,"date":"2014-01-16 21:34"},{"_id":"5200","normalized_imdb_id":232500,"title":"Fast and the Furious, The","year":2001,"rating":1,"dubious":false,"date":"2014-02-24 02:47"},{"_id":"5235","normalized_imdb_id":277027,"title":"I Am Sam","year":2001,"rating":3,"dubious":false,"date":"2014-03-05 16:09"},{"_id":"5323","normalized_imdb_id":200027,"title":"Riding in Cars with Boys","year":2001,"rating":3,"dubious":false,"date":"2014-03-25 06:54"},{"_id":"5381","normalized_imdb_id":125022,"title":"Heartbreakers","year":2001,"rating":3,"dubious":false,"date":"2014-04-10 20:00"},{"_id":"5394","normalized_imdb_id":214529,"title":"Belphegor, Phantom of the Louvre (Belphegor - Le fantome du Louvre)","year":2001,"rating":3,"dubious":false,"date":"2014-04-13 21:07"},{"_id":"5417","normalized_imdb_id":252503,"title":"Heist","year":2001,"rating":3,"dubious":false,"date":"2014-04-23 14:31"},{"_id":"5426","normalized_imdb_id":250687,"title":"Rat Race","year":2001,"rating":3,"dubious":false,"date":"2014-05-01 18:50"},{"_id":"5452","normalized_imdb_id":240890,"title":"Serendipity","year":2001,"rating":3,"dubious":false,"date":"2014-05-06 20:58"},{"_id":"5522","normalized_imdb_id":253595,"title":"Atlantis Conspiracy, The","year":2001,"rating":3,"dubious":false,"date":"2014-06-01 20:15"},{"_id":"5560","normalized_imdb_id":252866,"title":"American Pie 2","year":2001,"rating":3,"dubious":false,"date":"2014-06-11 04:23"},{"_id":"5631","normalized_imdb_id":250739,"title":"Sister Mary Explains it All","year":2001,"rating":3,"dubious":false,"date":"2014-07-12 19:35"},{"_id":"5651","normalized_imdb_id":285742,"title":"Monster's Ball","year":2001,"rating":2,"dubious":true,"date":"2014-07-24 01:55"},{"_id":"5762","normalized_imdb_id":265116,"title":"Caos","year":2001,"rating":3,"dubious":false,"date":"2014-09-19 15:57"},{"_id":"5921","normalized_imdb_id":301429,"title":"Volcano High","year":2001,"rating":3,"dubious":false,"date":"2014-11-14 01:22"},{"_id":"5933","normalized_imdb_id":248126,"title":"Kabhi Khushi Kabhie Gham...","year":2001,"rating":3,"dubious":false,"date":"2014-11-21 03:16"},{"_id":"6129","normalized_imdb_id":245046,"title":"Charlotte Gray","year":2001,"rating":3,"dubious":false,"date":"2015-03-03 08:17"},{"_id":"6218","normalized_imdb_id":133152,"title":"Planet of the Apes","year":2001,"rating":3,"dubious":false,"date":"2015-04-23 18:43"},{"_id":"6333","normalized_imdb_id":163025,"title":"Jurassic Park III","year":2001,"rating":2,"dubious":false,"date":"2015-06-25 11:44"},{"_id":"6429","normalized_imdb_id":257106,"title":"Scary Movie 2","year":2001,"rating":3,"dubious":false,"date":"2015-08-30 12:23"},{"_id":"6576","normalized_imdb_id":244244,"title":"Swordfish","year":2001,"rating":1,"dubious":false,"date":"2015-12-04 20:44"},{"_id":"6687","normalized_imdb_id":272152,"title":"K-PAX","year":2001,"rating":1,"dubious":false,"date":"2016-01-28 18:51"},{"_id":"6689","normalized_imdb_id":283015,"title":"Stranded","year":2001,"rating":3,"dubious":true,"date":"2016-01-28 19:18"},{"_id":"6785","normalized_imdb_id":118589,"title":"Glitter","year":2001,"rating":3,"dubious":false,"date":"2016-03-22 03:03"},{"_id":"6789","normalized_imdb_id":256692,"title":"Chori Chori Chupke Chupke","year":2001,"rating":1,"dubious":false,"date":"2016-03-26 05:29"},{"_id":"6843","normalized_imdb_id":348225,"title":"Tomie: Re-birth","year":2001,"rating":3,"dubious":false,"date":"2016-04-21 03:00"},{"_id":"6918","normalized_imdb_id":209163,"title":"Mummy Returns, The","year":2001,"rating":3,"dubious":false,"date":"2016-06-05 10:53"},{"_id":"6924","normalized_imdb_id":278488,"title":"How High","year":2001,"rating":1,"dubious":false,"date":"2016-06-09 01:59"},{"_id":"7009","normalized_imdb_id":277371,"title":"Not Another Teen Movie","year":2001,"rating":3,"dubious":false,"date":"2016-07-30 02:43"},{"_id":"7012","normalized_imdb_id":246278,"title":"Yes, But...","year":2001,"rating":3,"dubious":false,"date":"2016-07-31 12:04"},{"_id":"7094","normalized_imdb_id":256009,"title":"El Espinazo del Diablo","year":2001,"rating":1,"dubious":false,"date":"2016-09-05 06:00"},{"_id":"7181","normalized_imdb_id":286751,"title":"Kairo","year":2001,"rating":3,"dubious":false,"date":"2016-10-10 10:11"},{"_id":"7187","normalized_imdb_id":265632,"title":"Recess: School's Out","year":2001,"rating":3,"dubious":false,"date":"2016-10-12 01:16"},{"_id":"7302","normalized_imdb_id":256524,"title":"Curse of the Jade Scorpion, The","year":2001,"rating":3,"dubious":false,"date":"2016-11-28 15:13"},{"_id":"7316","normalized_imdb_id":279977,"title":"Navigators, The","year":2001,"rating":1,"dubious":false,"date":"2016-12-05 16:27"},{"_id":"7331","normalized_imdb_id":271972,"title":"Arachnid","year":2001,"rating":3,"dubious":true,"date":"2016-12-16 12:41"},{"_id":"7340","normalized_imdb_id":264508,"title":"Dagon","year":2001,"rating":3,"dubious":true,"date":"2016-12-19 23:15"},{"_id":"7468","normalized_imdb_id":273300,"title":"Jump Tomorrow","year":2001,"rating":3,"dubious":true,"date":"2017-02-21 00:42"},{"_id":"7483","normalized_imdb_id":159273,"title":"Behind Enemy Lines","year":2001,"rating":0,"dubious":false,"date":"2017-03-03 22:51"},{"_id":"7493","normalized_imdb_id":266915,"title":"Rush Hour 2","year":2001,"rating":3,"dubious":true,"date":"2017-03-10 07:53"},{"_id":"7634","normalized_imdb_id":287986,"title":"God Is Great and I'm Not","year":2001,"rating":1,"dubious":false,"date":"2017-05-21 13:03"},{"_id":"7654","normalized_imdb_id":218922,"title":"Original Sin","year":2001,"rating":1,"dubious":false,"date":"2017-05-21 17:29"},{"_id":"7680","normalized_imdb_id":259685,"title":"Tremors 3: Back to Perfection","year":2001,"rating":3,"dubious":false,"date":"2017-06-07 22:16"},{"_id":"7824","normalized_imdb_id":185906,"title":"Band of Brothers","year":2001,"rating":1,"dubious":false,"date":"2017-09-22 16:36"},{"_id":"7960","normalized_imdb_id":247425,"title":"In the Bedroom","year":2001,"rating":3,"dubious":false,"date":"2017-12-21 16:21"},{"_id":"8288","normalized_imdb_id":227445,"title":"Score, The","year":2001,"rating":0,"dubious":false,"date":"2018-06-14 01:00"},{"_id":"8293","normalized_imdb_id":236493,"title":"Mexican, The","year":2001,"rating":1,"dubious":false,"date":"2018-06-15 16:04"},{"_id":"8533","normalized_imdb_id":230838,"title":"Sweet November","year":2001,"rating":1,"dubious":false,"date":"2018-12-14 22:59"},{"_id":"8540","normalized_imdb_id":251474,"title":"What Makes a Family","year":2001,"rating":3,"dubious":false,"date":"2018-12-14 23:17"},{"_id":"8548","normalized_imdb_id":273840,"title":"Moszkva ter","year":2001,"rating":2,"dubious":false,"date":"2018-12-14 23:28"},{"_id":"8624","normalized_imdb_id":186589,"title":"Sugar & Spice","year":2001,"rating":3,"dubious":false,"date":"2019-01-31 18:22"},{"_id":"8632","normalized_imdb_id":240419,"title":"la ciénaga","year":2001,"rating":3,"dubious":false,"date":"2019-02-04 16:13"},{"_id":"8737","normalized_imdb_id":268397,"title":"Jimmy Neutron: Boy Genius","year":2001,"rating":3,"dubious":false,"date":"2019-05-08 01:02"},{"_id":"8783","normalized_imdb_id":240515,"title":"Freddy Got Fingered","year":2001,"rating":0,"dubious":false,"date":"2019-07-13 01:18"},{"_id":"8880","normalized_imdb_id":288441,"title":"Barbie in the Nutcracker","year":2001,"rating":3,"dubious":false,"date":"2019-11-02 11:50"},{"_id":"9028","normalized_imdb_id":266987,"title":"Spy Game","year":2001,"rating":1,"dubious":false,"date":"2020-03-03 09:30"},{"_id":"9253","normalized_imdb_id":296042,"title":"Koroshiya 1","year":2001,"rating":1,"dubious":false,"date":"2020-08-31 15:32"},{"_id":"9282","normalized_imdb_id":173840,"title":"Final Fantasy: The Spirits Within","year":2001,"rating":1,"dubious":false,"date":"2020-09-25 19:09"},{"_id":"9329","normalized_imdb_id":301526,"title":"Land Before Time VIII: The Big Freeze, The","year":2001,"rating":3,"dubious":false,"date":"2020-11-15 05:03"},{"_id":"9333","normalized_imdb_id":311361,"title":"Jesus Christ Vampire Hunter","year":2001,"rating":1,"dubious":false,"date":"2020-11-17 21:24"},{"_id":"9514","normalized_imdb_id":193364,"title":"Order, The","year":2001,"rating":0,"dubious":false,"date":"2021-03-13 12:56"},{"_id":"9587","normalized_imdb_id":259060,"title":"La tour Montparnasse infernale","year":2001,"rating":3,"dubious":false,"date":"2021-03-26 21:48"},{"_id":"9600","normalized_imdb_id":271271,"title":"Zenon: The Zequel","year":2001,"rating":3,"dubious":false,"date":"2021-03-30 03:39"},{"_id":"9706","normalized_imdb_id":248408,"title":"Der Schuh des Manitu","year":2001,"rating":0,"dubious":false,"date":"2021-04-27 20:49"},{"_id":"10081","normalized_imdb_id":264616,"title":"Frailty","year":2001,"rating":0,"dubious":false,"date":"2021-10-12 05:13"},{"_id":"4","normalized_imdb_id":295178,"title":"Austin Powers in Goldmember","year":2002,"rating":1,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"53","normalized_imdb_id":293662,"title":"Transporter, The","year":2002,"rating":0,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"72","normalized_imdb_id":268380,"title":"Ice Age","year":2002,"rating":0,"dubious":false,"date":"2008-07-27 12:56"},{"_id":"84","normalized_imdb_id":120912,"title":"Men in Black II","year":2002,"rating":1,"dubious":false,"date":"2008-07-28 12:47"},{"_id":"96","normalized_imdb_id":257756,"title":"High Crimes","year":2002,"rating":3,"dubious":false,"date":"2008-07-29 23:30"},{"_id":"115","normalized_imdb_id":181689,"title":"Minority Report","year":2002,"rating":1,"dubious":false,"date":"2008-07-31 23:24"},{"_id":"116","normalized_imdb_id":280590,"title":"Mr Deeds","year":2002,"rating":2,"dubious":false,"date":"2008-07-31 23:45"},{"_id":"119","normalized_imdb_id":297181,"title":"I Spy","year":2002,"rating":1,"dubious":false,"date":"2008-08-01 00:31"},{"_id":"121","normalized_imdb_id":278504,"title":"Insomnia","year":2002,"rating":1,"dubious":false,"date":"2008-08-01 16:29"},{"_id":"125","normalized_imdb_id":183649,"title":"Phone Booth","year":2002,"rating":1,"dubious":false,"date":"2008-08-01 22:40"},{"_id":"128","normalized_imdb_id":258463,"title":"Bourne Identity, The","year":2002,"rating":1,"dubious":false,"date":"2008-08-02 00:16"},{"_id":"135","normalized_imdb_id":180052,"title":"Adventures of Pluto Nash, The","year":2002,"rating":2,"dubious":false,"date":"2008-08-02 23:24"},{"_id":"138","normalized_imdb_id":253754,"title":"Star Trek: Nemesis","year":2002,"rating":1,"dubious":false,"date":"2008-08-03 02:29"},{"_id":"143","normalized_imdb_id":258153,"title":"S1m0ne","year":2002,"rating":3,"dubious":false,"date":"2008-08-03 17:11"},{"_id":"160","normalized_imdb_id":238380,"title":"Equilibrium","year":2002,"rating":1,"dubious":false,"date":"2008-08-11 12:02"},{"_id":"172","normalized_imdb_id":274558,"title":"Hours, The","year":2002,"rating":3,"dubious":false,"date":"2008-08-22 10:02"},{"_id":"179","normalized_imdb_id":299658,"title":"Chicago","year":2002,"rating":3,"dubious":false,"date":"2008-09-09 17:41"},{"_id":"200","normalized_imdb_id":286499,"title":"Bend It Like Beckham","year":2002,"rating":3,"dubious":false,"date":"2008-10-17 21:43"},{"_id":"243","normalized_imdb_id":252444,"title":"Rabbit-Proof Fence","year":2002,"rating":3,"dubious":false,"date":"2008-12-17 11:05"},{"_id":"247","normalized_imdb_id":167261,"title":"Lord of the Rings: The Two Towers, The","year":2002,"rating":3,"dubious":false,"date":"2009-01-02 22:10"},{"_id":"280","normalized_imdb_id":120804,"title":"Resident Evil","year":2002,"rating":3,"dubious":false,"date":"2009-02-16 10:44"},{"_id":"363","normalized_imdb_id":283832,"title":"8 femmes","year":2002,"rating":3,"dubious":false,"date":"2009-07-13 09:57"},{"_id":"491","normalized_imdb_id":258068,"title":"Quiet American, The","year":2002,"rating":2,"dubious":false,"date":"2009-09-01 14:30"},{"_id":"552","normalized_imdb_id":300532,"title":"Blue Crush","year":2002,"rating":3,"dubious":false,"date":"2009-12-05 05:24"},{"_id":"598","normalized_imdb_id":298228,"title":"Whale Rider","year":2002,"rating":3,"dubious":false,"date":"2009-12-27 22:04"},{"_id":"606","normalized_imdb_id":282593,"title":"I'm with Lucy","year":2002,"rating":0,"dubious":false,"date":"2009-12-28 04:03"},{"_id":"617","normalized_imdb_id":264464,"title":"Catch Me If You Can","year":2002,"rating":2,"dubious":false,"date":"2009-12-28 23:15"},{"_id":"646","normalized_imdb_id":289043,"title":"28 Days Later...","year":2002,"rating":3,"dubious":false,"date":"2010-01-19 18:11"},{"_id":"673","normalized_imdb_id":121765,"title":"Star Wars: Episode II - Attack of the Clones","year":2002,"rating":3,"dubious":true,"date":"2010-01-26 22:42"},{"_id":"707","normalized_imdb_id":275847,"title":"Lilo and Stitch","year":2002,"rating":3,"dubious":false,"date":"2010-03-26 06:04"},{"_id":"732","normalized_imdb_id":299977,"title":"Ying xiong (Hero)","year":2002,"rating":3,"dubious":true,"date":"2010-04-13 12:42"},{"_id":"769","normalized_imdb_id":324158,"title":"Tan de repente","year":2002,"rating":3,"dubious":false,"date":"2010-04-26 19:28"},{"_id":"806","normalized_imdb_id":298130,"title":"Ring, The","year":2002,"rating":3,"dubious":false,"date":"2010-05-14 19:31"},{"_id":"876","normalized_imdb_id":285627,"title":"Is It College Yet?","year":2002,"rating":3,"dubious":false,"date":"2010-05-29 01:06"},{"_id":"907","normalized_imdb_id":259446,"title":"My Big Fat Greek Wedding","year":2002,"rating":3,"dubious":false,"date":"2010-06-05 18:48"},{"_id":"1007","normalized_imdb_id":265651,"title":"Ripley's Game","year":2002,"rating":1,"dubious":false,"date":"2010-06-29 19:24"},{"_id":"1028","normalized_imdb_id":279778,"title":"Divine Secrets of the Ya-Ya Sisterhood","year":2002,"rating":3,"dubious":false,"date":"2010-07-03 00:51"},{"_id":"1052","normalized_imdb_id":304669,"title":"Santa Clause 2, The","year":2002,"rating":1,"dubious":false,"date":"2010-07-04 03:25"},{"_id":"1562","normalized_imdb_id":278500,"title":"Importance of Being Earnest, The","year":2002,"rating":3,"dubious":false,"date":"2010-09-10 13:36"},{"_id":"1529","normalized_imdb_id":283084,"title":"Tuck Everlasting","year":2002,"rating":3,"dubious":false,"date":"2010-09-05 01:15"},{"_id":"1445","normalized_imdb_id":289408,"title":"Powerpuff Girls, The","year":2002,"rating":3,"dubious":false,"date":"2010-08-07 07:58"},{"_id":"1224","normalized_imdb_id":291988,"title":"Intimate Stories","year":2002,"rating":3,"dubious":false,"date":"2010-07-22 20:27"},{"_id":"1110","normalized_imdb_id":303361,"title":"May","year":2002,"rating":3,"dubious":false,"date":"2010-07-08 02:45"},{"_id":"1145","normalized_imdb_id":253556,"title":"Reign of Fire","year":2002,"rating":1,"dubious":false,"date":"2010-07-10 06:16"},{"_id":"1515","normalized_imdb_id":274812,"title":"Secretary","year":2002,"rating":3,"dubious":false,"date":"2010-08-29 23:25"},{"_id":"1431","normalized_imdb_id":292644,"title":"Rules of Attraction, The","year":2002,"rating":3,"dubious":true,"date":"2010-08-02 23:59"},{"_id":"1551","normalized_imdb_id":347618,"title":"Neko no ongaeshi (The cat returns)","year":2002,"rating":3,"dubious":false,"date":"2010-09-08 10:39"},{"_id":"1456","normalized_imdb_id":301978,"title":"Ten","year":2002,"rating":3,"dubious":false,"date":"2010-08-10 03:39"},{"_id":"1537","normalized_imdb_id":281373,"title":"Snow Dogs","year":2002,"rating":1,"dubious":false,"date":"2010-09-06 06:45"},{"_id":"1659","normalized_imdb_id":120679,"title":"Frida","year":2002,"rating":2,"dubious":false,"date":"2010-10-13 15:08"},{"_id":"1730","normalized_imdb_id":145487,"title":"Spider-Man","year":2002,"rating":1,"dubious":false,"date":"2010-11-04 03:47"},{"_id":"1745","normalized_imdb_id":305589,"title":"Froid comme l'été (Cold as Summer)","year":2002,"rating":3,"dubious":false,"date":"2010-11-07 20:52"},{"_id":"1787","normalized_imdb_id":283139,"title":"White Oleander","year":2002,"rating":3,"dubious":false,"date":"2010-11-30 17:33"},{"_id":"1809","normalized_imdb_id":334754,"title":"Yossi & Jagger","year":2002,"rating":2,"dubious":false,"date":"2010-12-01 02:58"},{"_id":"1875","normalized_imdb_id":324264,"title":"Tipping the Velvet","year":2002,"rating":3,"dubious":false,"date":"2010-12-25 21:33"},{"_id":"1905","normalized_imdb_id":287717,"title":"Spy Kids 2: Island of Lost Dreams","year":2002,"rating":3,"dubious":false,"date":"2011-01-13 05:46"},{"_id":"1908","normalized_imdb_id":290095,"title":"Tuxedo, The","year":2002,"rating":0,"dubious":true,"date":"2011-01-13 05:50"},{"_id":"1919","normalized_imdb_id":268126,"title":"Adaptation","year":2002,"rating":3,"dubious":true,"date":"2011-01-16 19:48"},{"_id":"1943","normalized_imdb_id":166813,"title":"Spirit: Stallion of the Cimarron","year":2002,"rating":1,"dubious":false,"date":"2011-01-29 23:12"},{"_id":"1944","normalized_imdb_id":133240,"title":"Treasure Planet","year":2002,"rating":3,"dubious":false,"date":"2011-01-29 23:14"},{"_id":"2038","normalized_imdb_id":317248,"title":"City of God","year":2002,"rating":1,"dubious":false,"date":"2011-02-15 12:38"},{"_id":"2108","normalized_imdb_id":296166,"title":"Real Women Have Curves","year":2002,"rating":3,"dubious":false,"date":"2011-03-10 06:56"},{"_id":"2151","normalized_imdb_id":187738,"title":"Blade II","year":2002,"rating":1,"dubious":false,"date":"2011-03-28 17:37"},{"_id":"2171","normalized_imdb_id":313255,"title":"Barbie as Rapunzel","year":2002,"rating":0,"dubious":false,"date":"2011-04-08 13:24"},{"_id":"2222","normalized_imdb_id":279113,"title":"Good Girl, The","year":2002,"rating":3,"dubious":false,"date":"2011-04-23 18:45"},{"_id":"2263","normalized_imdb_id":313737,"title":"Two Weeks Notice","year":2002,"rating":3,"dubious":false,"date":"2011-05-02 02:25"},{"_id":"2268","normalized_imdb_id":295701,"title":"xXx","year":2002,"rating":1,"dubious":false,"date":"2011-05-03 20:30"},{"_id":"2319","normalized_imdb_id":297884,"title":"Far from Heaven","year":2002,"rating":3,"dubious":false,"date":"2011-05-20 20:47"},{"_id":"2332","normalized_imdb_id":295297,"title":"Harry Potter and the Chamber of Secrets","year":2002,"rating":3,"dubious":false,"date":"2011-05-24 21:23"},{"_id":"2403","normalized_imdb_id":318411,"title":"Magdalene Sisters, The","year":2002,"rating":3,"dubious":false,"date":"2011-06-17 11:20"},{"_id":"2418","normalized_imdb_id":351817,"title":"Twilight Samurai, The","year":2002,"rating":3,"dubious":false,"date":"2011-06-20 03:38"},{"_id":"2450","normalized_imdb_id":274309,"title":"24 Hour Party People","year":2002,"rating":1,"dubious":false,"date":"2011-06-27 09:57"},{"_id":"2477","normalized_imdb_id":329355,"title":"Marion Bridge","year":2002,"rating":3,"dubious":false,"date":"2011-07-02 20:24"},{"_id":"2486","normalized_imdb_id":257044,"title":"Road to Perdition","year":2002,"rating":0,"dubious":false,"date":"2011-07-05 04:54"},{"_id":"2495","normalized_imdb_id":303816,"title":"Cabin Fever","year":2002,"rating":3,"dubious":false,"date":"2011-07-06 17:57"},{"_id":"2508","normalized_imdb_id":258000,"title":"Panic Room","year":2002,"rating":3,"dubious":false,"date":"2011-07-07 08:22"},{"_id":"2545","normalized_imdb_id":298203,"title":"8 Mile","year":2002,"rating":1,"dubious":false,"date":"2011-07-17 22:41"},{"_id":"2551","normalized_imdb_id":217505,"title":"Gangs of New York","year":2002,"rating":1,"dubious":false,"date":"2011-07-19 04:33"},{"_id":"2605","normalized_imdb_id":329767,"title":"Wilbur Wants to Kill Himself","year":2002,"rating":3,"dubious":false,"date":"2011-08-12 19:53"},{"_id":"2888","normalized_imdb_id":303933,"title":"Drumline","year":2002,"rating":1,"dubious":false,"date":"2011-11-30 03:47"},{"_id":"2907","normalized_imdb_id":264689,"title":"Home Room","year":2002,"rating":3,"dubious":false,"date":"2011-12-07 02:32"},{"_id":"4325","normalized_imdb_id":289765,"title":"Red Dragon","year":2002,"rating":1,"dubious":false,"date":"2013-07-10 13:24"},{"_id":"3049","normalized_imdb_id":266452,"title":"Death to Smoochy","year":2002,"rating":2,"dubious":false,"date":"2012-02-18 07:53"},{"_id":"3060","normalized_imdb_id":257360,"title":"About Schmidt","year":2002,"rating":1,"dubious":false,"date":"2012-02-20 17:34"},{"_id":"3163","normalized_imdb_id":341384,"title":"Coast Guard, The","year":2002,"rating":1,"dubious":false,"date":"2012-04-04 00:55"},{"_id":"4319","normalized_imdb_id":283003,"title":"Spun","year":2002,"rating":3,"dubious":false,"date":"2013-07-08 06:28"},{"_id":"3309","normalized_imdb_id":303297,"title":"Amandla! A Revolution in Four Part Harmony","year":2002,"rating":3,"dubious":false,"date":"2012-06-02 23:30"},{"_id":"3310","normalized_imdb_id":280460,"title":"Banger Sisters, The","year":2002,"rating":3,"dubious":false,"date":"2012-06-03 00:02"},{"_id":"3312","normalized_imdb_id":286261,"title":"All or Nothing","year":2002,"rating":3,"dubious":false,"date":"2012-06-03 02:18"},{"_id":"3323","normalized_imdb_id":190975,"title":"Low-Flying Aircraft","year":2002,"rating":3,"dubious":false,"date":"2012-06-05 09:33"},{"_id":"3374","normalized_imdb_id":284655,"title":"WiseGirls","year":2002,"rating":3,"dubious":false,"date":"2012-06-23 00:20"},{"_id":"3449","normalized_imdb_id":267913,"title":"Scooby-Doo","year":2002,"rating":3,"dubious":false,"date":"2012-07-27 15:04"},{"_id":"3463","normalized_imdb_id":219400,"title":"Waking Up in Reno","year":2002,"rating":3,"dubious":false,"date":"2012-08-11 14:41"},{"_id":"3564","normalized_imdb_id":310775,"title":"Sympathy for Mr. Vengeance","year":2002,"rating":3,"dubious":true,"date":"2012-09-30 05:27"},{"_id":"3621","normalized_imdb_id":319970,"title":"Carrie","year":2002,"rating":3,"dubious":false,"date":"2012-10-22 07:42"},{"_id":"3682","normalized_imdb_id":253867,"title":"Sweetest Thing, The","year":2002,"rating":3,"dubious":false,"date":"2012-11-20 20:33"},{"_id":"3683","normalized_imdb_id":246460,"title":"Die Another Day","year":2002,"rating":2,"dubious":false,"date":"2012-11-21 05:38"},{"_id":"3832","normalized_imdb_id":290673,"title":"Irreversible","year":2002,"rating":1,"dubious":false,"date":"2013-01-15 03:17"},{"_id":"4032","normalized_imdb_id":327753,"title":"Funny Ha Ha","year":2002,"rating":3,"dubious":false,"date":"2013-04-06 12:41"},{"_id":"4262","normalized_imdb_id":252076,"title":"Maid in Manhattan","year":2002,"rating":3,"dubious":false,"date":"2013-06-23 01:53"},{"_id":"4277","normalized_imdb_id":285492,"title":"Cube2: Hypercube","year":2002,"rating":3,"dubious":false,"date":"2013-06-28 06:09"},{"_id":"4351","normalized_imdb_id":238924,"title":"Dangerous Lives of Altar Boys, The","year":2002,"rating":1,"dubious":false,"date":"2013-07-15 21:41"},{"_id":"4399","normalized_imdb_id":426089,"title":"Maggie and Annie","year":2002,"rating":3,"dubious":false,"date":"2013-07-25 20:21"},{"_id":"4429","normalized_imdb_id":303678,"title":"Armitage: Dual Matrix","year":2002,"rating":1,"dubious":true,"date":"2013-08-01 15:26"},{"_id":"4441","normalized_imdb_id":238546,"title":"Queen of the Damned","year":2002,"rating":3,"dubious":false,"date":"2013-08-04 11:56"},{"_id":"4447","normalized_imdb_id":257778,"title":"Hunchback of  Notre Dame II, The","year":2002,"rating":1,"dubious":false,"date":"2013-08-06 18:54"},{"_id":"4526","normalized_imdb_id":300140,"title":"Lilya 4-Ever","year":2002,"rating":3,"dubious":false,"date":"2013-08-30 22:56"},{"_id":"4592","normalized_imdb_id":275022,"title":"Crossroads","year":2002,"rating":3,"dubious":false,"date":"2013-09-15 19:38"},{"_id":"4662","normalized_imdb_id":280760,"title":"Igby Goes Down","year":2002,"rating":2,"dubious":false,"date":"2013-10-05 05:35"},{"_id":"4674","normalized_imdb_id":308379,"title":"Dark Water (Honogurai mizu no soko kara)","year":2002,"rating":3,"dubious":false,"date":"2013-10-07 13:00"},{"_id":"4680","normalized_imdb_id":145937,"title":"Naqoyqatsi","year":2002,"rating":0,"dubious":false,"date":"2013-10-09 04:33"},{"_id":"4695","normalized_imdb_id":288439,"title":"Bang Bang You're Dead","year":2002,"rating":1,"dubious":false,"date":"2013-10-13 20:44"},{"_id":"4738","normalized_imdb_id":302674,"title":"Gerry","year":2002,"rating":0,"dubious":false,"date":"2013-10-25 22:33"},{"_id":"4784","normalized_imdb_id":307479,"title":"Solaris","year":2002,"rating":1,"dubious":false,"date":"2013-11-05 19:27"},{"_id":"4785","normalized_imdb_id":284978,"title":"Cypher","year":2002,"rating":1,"dubious":false,"date":"2013-11-05 19:30"},{"_id":"4806","normalized_imdb_id":277434,"title":"We Were Soldiers","year":2002,"rating":3,"dubious":false,"date":"2013-11-11 04:44"},{"_id":"4832","normalized_imdb_id":284034,"title":"demonlover","year":2002,"rating":3,"dubious":false,"date":"2013-11-15 05:50"},{"_id":"4895","normalized_imdb_id":168786,"title":"Antwone Fisher","year":2002,"rating":1,"dubious":false,"date":"2013-12-01 04:19"},{"_id":"5080","normalized_imdb_id":307901,"title":"25th Hour","year":2002,"rating":2,"dubious":true,"date":"2014-01-16 10:22"},{"_id":"5151","normalized_imdb_id":302640,"title":"Hot Chick, The","year":2002,"rating":3,"dubious":false,"date":"2014-02-08 19:56"},{"_id":"5170","normalized_imdb_id":286106,"title":"Signs","year":2002,"rating":1,"dubious":false,"date":"2014-02-15 06:11"},{"_id":"5227","normalized_imdb_id":272338,"title":"Punch-Drunk Love","year":2002,"rating":1,"dubious":false,"date":"2014-03-03 22:48"},{"_id":"5254","normalized_imdb_id":281358,"title":"A Walk to Remember","year":2002,"rating":3,"dubious":false,"date":"2014-03-08 04:37"},{"_id":"5276","normalized_imdb_id":279493,"title":"Undercover Brother","year":2002,"rating":3,"dubious":false,"date":"2014-03-12 06:06"},{"_id":"5293","normalized_imdb_id":283632,"title":"They","year":2002,"rating":3,"dubious":false,"date":"2014-03-17 21:31"},{"_id":"5300","normalized_imdb_id":270688,"title":"Teknolust","year":2002,"rating":3,"dubious":false,"date":"2014-03-18 22:59"},{"_id":"5339","normalized_imdb_id":276816,"title":"Below","year":2002,"rating":0,"dubious":false,"date":"2014-03-30 22:37"},{"_id":"5454","normalized_imdb_id":179098,"title":"Moonlight Mile","year":2002,"rating":3,"dubious":false,"date":"2014-05-08 13:50"},{"_id":"5539","normalized_imdb_id":253474,"title":"Pianist, The","year":2002,"rating":1,"dubious":false,"date":"2014-06-06 03:27"},{"_id":"5571","normalized_imdb_id":364385,"title":"Ju-on: The Grudge","year":2002,"rating":3,"dubious":false,"date":"2014-06-17 15:32"},{"_id":"5621","normalized_imdb_id":295427,"title":"Master of Disguise, The","year":2002,"rating":1,"dubious":false,"date":"2014-07-08 18:00"},{"_id":"5757","normalized_imdb_id":301199,"title":"Dirty Pretty Things","year":2002,"rating":3,"dubious":true,"date":"2014-09-18 06:53"},{"_id":"5793","normalized_imdb_id":270288,"title":"Confessions of a Dangerous Mind","year":2002,"rating":2,"dubious":false,"date":"2014-10-01 00:12"},{"_id":"5954","normalized_imdb_id":265349,"title":"Mothman Prophecies, The","year":2002,"rating":2,"dubious":false,"date":"2014-12-01 16:35"},{"_id":"6027","normalized_imdb_id":238936,"title":"Devdas","year":2002,"rating":3,"dubious":false,"date":"2015-01-07 17:54"},{"_id":"6060","normalized_imdb_id":282687,"title":"Life or Something Like It","year":2002,"rating":3,"dubious":false,"date":"2015-01-22 21:25"},{"_id":"6088","normalized_imdb_id":284478,"title":"Charlotte Sometimes","year":2002,"rating":2,"dubious":false,"date":"2015-01-31 04:45"},{"_id":"6239","normalized_imdb_id":265459,"title":"One Hour Photo","year":2002,"rating":1,"dubious":false,"date":"2015-05-10 07:47"},{"_id":"6273","normalized_imdb_id":293113,"title":"Dracula: Pages from a Virgin's Diary","year":2002,"rating":1,"dubious":false,"date":"2015-05-26 04:26"},{"_id":"6382","normalized_imdb_id":282120,"title":"Wild Thornberrys Movie, The","year":2002,"rating":3,"dubious":false,"date":"2015-07-31 21:39"},{"_id":"6579","normalized_imdb_id":282418,"title":"Rats, The","year":2002,"rating":3,"dubious":false,"date":"2015-12-05 21:40"},{"_id":"6602","normalized_imdb_id":294425,"title":"Cadet Kelly","year":2002,"rating":3,"dubious":false,"date":"2015-12-13 05:28"},{"_id":"6751","normalized_imdb_id":315850,"title":"El bonaerense","year":2002,"rating":1,"dubious":false,"date":"2016-02-28 23:38"},{"_id":"6766","normalized_imdb_id":295725,"title":"Time Changer","year":2002,"rating":0,"dubious":false,"date":"2016-03-10 23:15"},{"_id":"6802","normalized_imdb_id":338564,"title":"Infernal Affairs","year":2002,"rating":1,"dubious":false,"date":"2016-03-26 08:43"},{"_id":"6810","normalized_imdb_id":291213,"title":"Big Girls Don't Cry","year":2002,"rating":3,"dubious":false,"date":"2016-03-30 07:44"},{"_id":"6867","normalized_imdb_id":348226,"title":"Tomie: Saishuu-sho - kindan no kajitsu","year":2002,"rating":3,"dubious":false,"date":"2016-05-01 23:01"},{"_id":"6890","normalized_imdb_id":290916,"title":"Embrassez qui vous voudrez","year":2002,"rating":3,"dubious":false,"date":"2016-05-17 22:49"},{"_id":"6919","normalized_imdb_id":277296,"title":"Scorpion King, The","year":2002,"rating":0,"dubious":false,"date":"2016-06-05 10:55"},{"_id":"6971","normalized_imdb_id":250797,"title":"Unfaithful","year":2002,"rating":3,"dubious":false,"date":"2016-07-11 09:15"},{"_id":"7118","normalized_imdb_id":267626,"title":"K-19: The Widowmaker","year":2002,"rating":0,"dubious":false,"date":"2016-09-15 14:19"},{"_id":"7214","normalized_imdb_id":319769,"title":"Los lunes al sol","year":2002,"rating":1,"dubious":false,"date":"2016-10-18 21:29"},{"_id":"7267","normalized_imdb_id":278731,"title":"Spider","year":2002,"rating":2,"dubious":false,"date":"2016-11-16 14:05"},{"_id":"7306","normalized_imdb_id":244283,"title":"Vagina Monologues, The","year":2002,"rating":0,"dubious":false,"date":"2016-11-30 19:44"},{"_id":"7517","normalized_imdb_id":313670,"title":"Sweet Sixteen","year":2002,"rating":0,"dubious":false,"date":"2017-03-16 12:10"},{"_id":"7548","normalized_imdb_id":256415,"title":"Sweet Home Alabama","year":2002,"rating":3,"dubious":false,"date":"2017-03-31 17:18"},{"_id":"7613","normalized_imdb_id":276751,"title":"About a Boy","year":2002,"rating":2,"dubious":false,"date":"2017-05-21 10:57"},{"_id":"7615","normalized_imdb_id":280653,"title":"Amen.","year":2002,"rating":1,"dubious":false,"date":"2017-05-21 10:59"},{"_id":"7618","normalized_imdb_id":303184,"title":"Valami Amerika","year":2002,"rating":1,"dubious":false,"date":"2017-05-21 11:06"},{"_id":"7629","normalized_imdb_id":259288,"title":"Dragonfly","year":2002,"rating":1,"dubious":false,"date":"2017-05-21 12:05"},{"_id":"7638","normalized_imdb_id":291579,"title":"A la folie... pas du tout","year":2002,"rating":3,"dubious":false,"date":"2017-05-21 13:28"},{"_id":"7649","normalized_imdb_id":306432,"title":"A mi madre le gustan las mujeres","year":2002,"rating":3,"dubious":false,"date":"2017-05-21 15:24"},{"_id":"7652","normalized_imdb_id":313410,"title":"No Night Is Too Long","year":2002,"rating":1,"dubious":false,"date":"2017-05-21 15:33"},{"_id":"7755","normalized_imdb_id":259153,"title":"Rose Red","year":2002,"rating":3,"dubious":false,"date":"2017-07-28 17:23"},{"_id":"7756","normalized_imdb_id":280609,"title":"Dog Soldiers","year":2002,"rating":0,"dubious":false,"date":"2017-07-29 08:11"},{"_id":"7757","normalized_imdb_id":245562,"title":"Windtalkers","year":2002,"rating":0,"dubious":false,"date":"2017-07-29 08:16"},{"_id":"7774","normalized_imdb_id":287467,"title":"Hable con ella [Talk to Her]","year":2002,"rating":3,"dubious":false,"date":"2017-08-11 08:23"},{"_id":"7789","normalized_imdb_id":293815,"title":"Friday After Next","year":2002,"rating":2,"dubious":false,"date":"2017-08-31 04:55"},{"_id":"7997","normalized_imdb_id":280665,"title":"Femme Fatale","year":2002,"rating":3,"dubious":false,"date":"2018-01-09 23:21"},{"_id":"8547","normalized_imdb_id":310567,"title":"A hidember","year":2002,"rating":1,"dubious":false,"date":"2018-12-14 23:27"},{"_id":"8704","normalized_imdb_id":300214,"title":"Morvern Callar","year":2002,"rating":3,"dubious":false,"date":"2019-04-16 16:35"},{"_id":"8773","normalized_imdb_id":250292,"title":"Cheats","year":2002,"rating":3,"dubious":true,"date":"2019-06-27 15:27"},{"_id":"8795","normalized_imdb_id":285300,"title":"Loenatik - De moevie","year":2002,"rating":3,"dubious":false,"date":"2019-07-23 12:07"},{"_id":"8856","normalized_imdb_id":187512,"title":"Slap Her, She's French!","year":2002,"rating":3,"dubious":false,"date":"2019-09-22 09:39"},{"_id":"8963","normalized_imdb_id":288477,"title":"Ghost Ship","year":2002,"rating":3,"dubious":false,"date":"2020-01-13 22:05"},{"_id":"9016","normalized_imdb_id":282123,"title":"A Ring of Endless Light","year":2002,"rating":3,"dubious":false,"date":"2020-02-19 03:41"},{"_id":"9042","normalized_imdb_id":282521,"title":"Get a Clue","year":2002,"rating":3,"dubious":false,"date":"2020-03-19 00:37"},{"_id":"9043","normalized_imdb_id":296251,"title":"Tru Confessions","year":2002,"rating":3,"dubious":false,"date":"2020-03-19 04:53"},{"_id":"9365","normalized_imdb_id":309404,"title":"Bungalow","year":2002,"rating":1,"dubious":false,"date":"2020-12-10 22:41"},{"_id":"9343","normalized_imdb_id":364986,"title":"Ben & Arthur","year":2002,"rating":1,"dubious":false,"date":"2020-11-28 06:39"},{"_id":"9620","normalized_imdb_id":268695,"title":"Time Machine, The","year":2002,"rating":1,"dubious":false,"date":"2021-04-04 13:37"},{"_id":"9754","normalized_imdb_id":376078,"title":"Planet of the Erotic Ape","year":2002,"rating":3,"dubious":false,"date":"2021-04-30 18:42"},{"_id":"9826","normalized_imdb_id":278435,"title":"Enough","year":2002,"rating":2,"dubious":true,"date":"2021-05-14 00:17"},{"_id":"10041","normalized_imdb_id":164184,"title":"Sum of All Fears, The","year":2002,"rating":1,"dubious":false,"date":"2021-09-08 03:07"},{"_id":"9903","normalized_imdb_id":297037,"title":"Brown  Sugar","year":2002,"rating":2,"dubious":false,"date":"2021-06-19 17:20"},{"_id":"9919","normalized_imdb_id":246592,"title":"Dummy","year":2002,"rating":3,"dubious":false,"date":"2021-06-29 15:57"},{"_id":"9990","normalized_imdb_id":265298,"title":"Big Fat Liar","year":2002,"rating":3,"dubious":false,"date":"2021-08-03 15:40"},{"_id":"10141","normalized_imdb_id":290664,"title":"Hysterical Blindness","year":2002,"rating":3,"dubious":false,"date":"2021-11-25 02:18"},{"_id":"39","normalized_imdb_id":318997,"title":"Angels in America","year":2003,"rating":3,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"41","normalized_imdb_id":257076,"title":"S.W.A.T.","year":2003,"rating":3,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"45","normalized_imdb_id":313542,"title":"Runaway Jury","year":2003,"rating":1,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"48","normalized_imdb_id":317740,"title":"Italian Job, The","year":2003,"rating":1,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"44","normalized_imdb_id":320691,"title":"Underworld","year":2003,"rating":3,"dubious":true,"date":"2008-07-20 00:00"},{"_id":"55","normalized_imdb_id":292506,"title":"Recruit, The","year":2003,"rating":1,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"58","normalized_imdb_id":234215,"title":"Matrix Reloaded, The","year":2003,"rating":2,"dubious":false,"date":"2008-07-21 00:00"},{"_id":"59","normalized_imdb_id":242653,"title":"Matrix Revolutions, The","year":2003,"rating":3,"dubious":false,"date":"2008-07-21 00:00"},{"_id":"102","normalized_imdb_id":290334,"title":"X2 (X-Men 2)","year":2003,"rating":3,"dubious":false,"date":"2008-07-30 01:41"},{"_id":"123","normalized_imdb_id":300471,"title":"Shanghai Knights","year":2003,"rating":1,"dubious":false,"date":"2008-08-01 22:02"},{"_id":"126","normalized_imdb_id":309698,"title":"Identity","year":2003,"rating":1,"dubious":false,"date":"2008-08-01 23:19"},{"_id":"142","normalized_imdb_id":315327,"title":"Bruce Almighty","year":2003,"rating":3,"dubious":false,"date":"2008-08-03 15:49"},{"_id":"248","normalized_imdb_id":167260,"title":"Lord of the Rings: The Return of the King, The","year":2003,"rating":1,"dubious":false,"date":"2009-01-02 22:13"},{"_id":"271","normalized_imdb_id":340855,"title":"Monster","year":2003,"rating":3,"dubious":false,"date":"2009-02-05 08:45"},{"_id":"292","normalized_imdb_id":337909,"title":"Calendar Girls","year":2003,"rating":3,"dubious":false,"date":"2009-03-03 20:27"},{"_id":"299","normalized_imdb_id":388473,"title":"Tokyo Godfathers","year":2003,"rating":3,"dubious":false,"date":"2009-03-18 22:24"},{"_id":"320","normalized_imdb_id":298814,"title":"Core, The","year":2003,"rating":3,"dubious":false,"date":"2009-05-04 22:31"},{"_id":"325","normalized_imdb_id":306047,"title":"Scary Movie 3","year":2003,"rating":3,"dubious":false,"date":"2009-05-17 00:54"},{"_id":"411","normalized_imdb_id":325703,"title":"Lara Croft Tomb Raider: The Cradle of Life","year":2003,"rating":3,"dubious":false,"date":"2009-08-03 14:49"},{"_id":"508","normalized_imdb_id":266697,"title":"Kill Bill: Vol. 1","year":2003,"rating":3,"dubious":false,"date":"2009-09-17 22:10"},{"_id":"510","normalized_imdb_id":325980,"title":"Pirates of the Caribbean: The Curse of the Black Pearl","year":2003,"rating":3,"dubious":false,"date":"2009-09-20 00:50"},{"_id":"624","normalized_imdb_id":263757,"title":"Uptown Girls","year":2003,"rating":3,"dubious":false,"date":"2009-12-28 23:32"},{"_id":"778","normalized_imdb_id":266543,"title":"Finding Nemo","year":2003,"rating":1,"dubious":false,"date":"2010-05-03 14:24"},{"_id":"779","normalized_imdb_id":314331,"title":"Love Actually","year":2003,"rating":3,"dubious":false,"date":"2010-05-03 14:30"},{"_id":"837","normalized_imdb_id":368226,"title":"Room, The","year":2003,"rating":3,"dubious":false,"date":"2010-05-27 14:58"},{"_id":"841","normalized_imdb_id":311113,"title":"Master and Commander: The Far Side of the World","year":2003,"rating":0,"dubious":false,"date":"2010-05-27 17:34"},{"_id":"895","normalized_imdb_id":328589,"title":"Under the Tuscan Sun","year":2003,"rating":3,"dubious":false,"date":"2010-06-04 17:38"},{"_id":"941","normalized_imdb_id":286244,"title":"Les triplettes de Belleville","year":2003,"rating":3,"dubious":false,"date":"2010-06-12 09:58"},{"_id":"958","normalized_imdb_id":165982,"title":"Sinbad: Legend of the Seven Seas","year":2003,"rating":2,"dubious":false,"date":"2010-06-17 17:51"},{"_id":"983","normalized_imdb_id":324133,"title":"Swimming Pool","year":2003,"rating":3,"dubious":false,"date":"2010-06-26 10:41"},{"_id":"1041","normalized_imdb_id":335266,"title":"Lost In Translation","year":2003,"rating":3,"dubious":true,"date":"2010-07-03 14:46"},{"_id":"1061","normalized_imdb_id":283426,"title":"Jungle Book 2, The","year":2003,"rating":0,"dubious":false,"date":"2010-07-04 04:30"},{"_id":"1073","normalized_imdb_id":329717,"title":"Hollywood Homicide","year":2003,"rating":1,"dubious":false,"date":"2010-07-04 05:19"},{"_id":"1225","normalized_imdb_id":354575,"title":"Five Obstructions, The","year":2003,"rating":0,"dubious":false,"date":"2010-07-22 20:28"},{"_id":"1136","normalized_imdb_id":311289,"title":"Holes","year":2003,"rating":2,"dubious":false,"date":"2010-07-09 06:03"},{"_id":"1153","normalized_imdb_id":251127,"title":"How to Lose a Guy in 10 Days","year":2003,"rating":3,"dubious":false,"date":"2010-07-10 23:56"},{"_id":"1514","normalized_imdb_id":339071,"title":"Girls Will Be Girls","year":2003,"rating":3,"dubious":false,"date":"2010-08-28 12:38"},{"_id":"1432","normalized_imdb_id":264150,"title":"View from the Top","year":2003,"rating":3,"dubious":false,"date":"2010-08-03 11:39"},{"_id":"1095","normalized_imdb_id":322330,"title":"Freaky Friday","year":2003,"rating":3,"dubious":false,"date":"2010-07-04 23:42"},{"_id":"1450","normalized_imdb_id":300015,"title":"I Capture the Castle","year":2003,"rating":3,"dubious":false,"date":"2010-08-08 16:09"},{"_id":"1458","normalized_imdb_id":159365,"title":"Cold Mountain","year":2003,"rating":3,"dubious":false,"date":"2010-08-10 23:38"},{"_id":"1460","normalized_imdb_id":304415,"title":"Mona Lisa Smile","year":2003,"rating":3,"dubious":false,"date":"2010-08-11 20:26"},{"_id":"1527","normalized_imdb_id":363226,"title":"Blind Swordsman: Zatoichi, The","year":2003,"rating":2,"dubious":false,"date":"2010-09-04 13:25"},{"_id":"1541","normalized_imdb_id":298482,"title":"Nothing","year":2003,"rating":0,"dubious":false,"date":"2010-09-06 12:37"},{"_id":"1473","normalized_imdb_id":277986,"title":"Rats","year":2003,"rating":3,"dubious":false,"date":"2010-08-17 12:32"},{"_id":"1400","normalized_imdb_id":309530,"title":"Down With Love","year":2003,"rating":3,"dubious":false,"date":"2010-07-28 17:13"},{"_id":"1404","normalized_imdb_id":325710,"title":"Last Samurai, The","year":2003,"rating":0,"dubious":false,"date":"2010-07-28 22:42"},{"_id":"1467","normalized_imdb_id":338188,"title":"Missing, The","year":2003,"rating":3,"dubious":false,"date":"2010-08-13 14:17"},{"_id":"1610","normalized_imdb_id":380726,"title":"Stara basn. Kiedy slonce bylo bogiem (An Ancient Tale: When the Sun was God)","year":2003,"rating":2,"dubious":false,"date":"2010-09-27 11:33"},{"_id":"1767","normalized_imdb_id":346336,"title":"Best of Youth, The","year":2003,"rating":3,"dubious":false,"date":"2010-11-19 07:32"},{"_id":"1858","normalized_imdb_id":333780,"title":"Legally Blonde 2: Red, White & Blonde","year":2003,"rating":3,"dubious":false,"date":"2010-12-19 21:44"},{"_id":"1906","normalized_imdb_id":338459,"title":"Spy Kids 3-D: Game Over","year":2003,"rating":3,"dubious":false,"date":"2011-01-13 05:47"},{"_id":"1997","normalized_imdb_id":306734,"title":"Le divorce","year":2003,"rating":3,"dubious":false,"date":"2011-02-06 21:45"},{"_id":"2044","normalized_imdb_id":301357,"title":"Goodbye Lenin!","year":2003,"rating":3,"dubious":false,"date":"2011-02-15 14:17"},{"_id":"2097","normalized_imdb_id":311429,"title":"League of Extraordinary Gentlemen, The","year":2003,"rating":0,"dubious":false,"date":"2011-03-08 05:57"},{"_id":"2107","normalized_imdb_id":351238,"title":"Distant Lights (Lichter)","year":2003,"rating":3,"dubious":true,"date":"2011-03-10 04:21"},{"_id":"2167","normalized_imdb_id":348913,"title":"Dead Like Me","year":2003,"rating":3,"dubious":false,"date":"2011-04-08 13:19"},{"_id":"2193","normalized_imdb_id":287978,"title":"Daredevil","year":2003,"rating":0,"dubious":false,"date":"2011-04-17 17:13"},{"_id":"2262","normalized_imdb_id":199626,"title":"In the Cut","year":2003,"rating":3,"dubious":false,"date":"2011-05-01 13:14"},{"_id":"2320","normalized_imdb_id":365376,"title":"A Tale of Two Sisters","year":2003,"rating":3,"dubious":false,"date":"2011-05-20 21:04"},{"_id":"2380","normalized_imdb_id":328538,"title":"Thirteen","year":2003,"rating":3,"dubious":false,"date":"2011-06-10 18:17"},{"_id":"2381","normalized_imdb_id":339840,"title":"Undead","year":2003,"rating":3,"dubious":false,"date":"2011-06-10 20:41"},{"_id":"2402","normalized_imdb_id":319061,"title":"Big Fish","year":2003,"rating":1,"dubious":false,"date":"2011-06-16 21:30"},{"_id":"2499","normalized_imdb_id":338135,"title":"Barbarian Invasions, The","year":2003,"rating":3,"dubious":false,"date":"2011-07-07 06:49"},{"_id":"2500","normalized_imdb_id":337741,"title":"Something's Gotta Give","year":2003,"rating":3,"dubious":true,"date":"2011-07-07 07:18"},{"_id":"2510","normalized_imdb_id":307351,"title":"Prey for Rock & Roll","year":2003,"rating":3,"dubious":true,"date":"2011-07-07 08:40"},{"_id":"2515","normalized_imdb_id":276919,"title":"Dogville","year":2003,"rating":3,"dubious":false,"date":"2011-07-11 13:26"},{"_id":"2521","normalized_imdb_id":323944,"title":"Shattered Glass","year":2003,"rating":2,"dubious":false,"date":"2011-07-12 18:03"},{"_id":"2564","normalized_imdb_id":368310,"title":"Sunset Story","year":2003,"rating":3,"dubious":false,"date":"2011-07-22 17:51"},{"_id":"2611","normalized_imdb_id":315983,"title":"House of Sand and Fog","year":2003,"rating":3,"dubious":false,"date":"2011-08-14 00:48"},{"_id":"2741","normalized_imdb_id":362387,"title":"2LDK","year":2003,"rating":3,"dubious":false,"date":"2011-10-06 14:51"},{"_id":"2821","normalized_imdb_id":309593,"title":"Final Destination 2","year":2003,"rating":3,"dubious":false,"date":"2011-11-02 23:43"},{"_id":"2844","normalized_imdb_id":303830,"title":"Casa de los babys","year":2003,"rating":3,"dubious":false,"date":"2011-11-16 14:05"},{"_id":"2890","normalized_imdb_id":327137,"title":"Secondhand Lions","year":2003,"rating":1,"dubious":false,"date":"2011-12-02 04:50"},{"_id":"2891","normalized_imdb_id":309987,"title":"Dreamers, The","year":2003,"rating":2,"dubious":true,"date":"2011-12-02 05:00"},{"_id":"2901","normalized_imdb_id":376263,"title":"Tough Luck","year":2003,"rating":0,"dubious":false,"date":"2011-12-04 16:59"},{"_id":"2957","normalized_imdb_id":335119,"title":"Girl with a Pearl Earring","year":2003,"rating":3,"dubious":false,"date":"2011-12-26 07:15"},{"_id":"2979","normalized_imdb_id":316396,"title":"Peter Pan","year":2003,"rating":3,"dubious":false,"date":"2012-01-10 02:52"},{"_id":"3137","normalized_imdb_id":339882,"title":"It's Better to Be Wanted for Murder Than Not to Be Wanted at All","year":2003,"rating":1,"dubious":true,"date":"2012-03-22 12:14"},{"_id":"3201","normalized_imdb_id":330859,"title":"Scary Godmother: Halloween Spooktakular","year":2003,"rating":3,"dubious":false,"date":"2012-04-23 03:54"},{"_id":"3227","normalized_imdb_id":286716,"title":"Hulk","year":2003,"rating":1,"dubious":false,"date":"2012-05-05 17:31"},{"_id":"3263","normalized_imdb_id":305357,"title":"Charlie's Angels: Full Throttle","year":2003,"rating":3,"dubious":false,"date":"2012-05-16 22:15"},{"_id":"3421","normalized_imdb_id":332379,"title":"School of Rock, The","year":2003,"rating":3,"dubious":true,"date":"2012-07-12 20:49"},{"_id":"3542","normalized_imdb_id":301470,"title":"Jeepers Creepers II","year":2003,"rating":3,"dubious":false,"date":"2012-09-23 21:56"},{"_id":"3630","normalized_imdb_id":181852,"title":"Terminator 3: Rise of the Machines","year":2003,"rating":3,"dubious":false,"date":"2012-10-27 10:16"},{"_id":"3645","normalized_imdb_id":295700,"title":"Wrong Turn","year":2003,"rating":3,"dubious":false,"date":"2012-11-02 15:58"},{"_id":"3700","normalized_imdb_id":317303,"title":"Daddy Day Care","year":2003,"rating":3,"dubious":false,"date":"2012-12-01 08:45"},{"_id":"3773","normalized_imdb_id":370754,"title":"Voices of a Distant Star","year":2003,"rating":0,"dubious":false,"date":"2012-12-26 08:59"},{"_id":"3848","normalized_imdb_id":327056,"title":"Mystic River","year":2003,"rating":3,"dubious":false,"date":"2013-01-22 15:38"},{"_id":"3902","normalized_imdb_id":344604,"title":"Après Vous","year":2003,"rating":3,"dubious":true,"date":"2013-02-18 07:35"},{"_id":"4035","normalized_imdb_id":310778,"title":"Bon voyage","year":2003,"rating":3,"dubious":false,"date":"2013-04-08 22:59"},{"_id":"4109","normalized_imdb_id":377094,"title":"Moi et mon blanc","year":2003,"rating":1,"dubious":false,"date":"2013-04-27 21:14"},{"_id":"4161","normalized_imdb_id":285531,"title":"Dreamcatcher","year":2003,"rating":0,"dubious":false,"date":"2013-05-24 15:17"},{"_id":"4183","normalized_imdb_id":364569,"title":"Oldboy","year":2003,"rating":1,"dubious":false,"date":"2013-05-30 17:29"},{"_id":"4184","normalized_imdb_id":368667,"title":"Interstella 5555: The 5tory of the 5ecret 5tar 5ystem","year":2003,"rating":0,"dubious":false,"date":"2013-05-30 22:37"},{"_id":"4302","normalized_imdb_id":379217,"title":"Coffee and Cigarettes","year":2003,"rating":3,"dubious":false,"date":"2013-07-03 02:06"},{"_id":"4349","normalized_imdb_id":323298,"title":"Mother, The","year":2003,"rating":3,"dubious":false,"date":"2013-07-15 02:47"},{"_id":"4378","normalized_imdb_id":306685,"title":"Cradle 2 the Grave","year":2003,"rating":1,"dubious":false,"date":"2013-07-21 14:11"},{"_id":"5141","normalized_imdb_id":368909,"title":"Ong-bak","year":2003,"rating":0,"dubious":false,"date":"2014-02-06 18:21"},{"_id":"4511","normalized_imdb_id":342167,"title":"Camp","year":2003,"rating":3,"dubious":false,"date":"2013-08-27 11:19"},{"_id":"4502","normalized_imdb_id":300556,"title":"Timeline","year":2003,"rating":1,"dubious":false,"date":"2013-08-24 02:52"},{"_id":"4562","normalized_imdb_id":366920,"title":"Pride and Prejudice","year":2003,"rating":3,"dubious":false,"date":"2013-09-12 23:13"},{"_id":"4745","normalized_imdb_id":379363,"title":"Malibu Spring Break","year":2003,"rating":3,"dubious":false,"date":"2013-10-28 06:45"},{"_id":"4820","normalized_imdb_id":322259,"title":"2 Fast 2 Furious","year":2003,"rating":1,"dubious":false,"date":"2013-11-13 19:38"},{"_id":"4829","normalized_imdb_id":386862,"title":"Forest for the Trees, The","year":2003,"rating":3,"dubious":false,"date":"2013-11-15 05:37"},{"_id":"4845","normalized_imdb_id":315733,"title":"21 grams","year":2003,"rating":3,"dubious":true,"date":"2013-11-17 01:52"},{"_id":"4868","normalized_imdb_id":282209,"title":"Darkness Falls","year":2003,"rating":1,"dubious":false,"date":"2013-11-24 00:33"},{"_id":"4938","normalized_imdb_id":374546,"title":"Spring, Summer, Fall, Winter... and Spring","year":2003,"rating":1,"dubious":false,"date":"2013-12-11 06:23"},{"_id":"5056","normalized_imdb_id":317676,"title":"House of the Dead","year":2003,"rating":2,"dubious":false,"date":"2014-01-08 18:10"},{"_id":"5107","normalized_imdb_id":363589,"title":"Elephant","year":2003,"rating":3,"dubious":false,"date":"2014-01-25 22:19"},{"_id":"5278","normalized_imdb_id":367174,"title":"Heung joh chow heung yau chow (Turn Left, Turn Right)","year":2003,"rating":3,"dubious":true,"date":"2014-03-12 18:24"},{"_id":"5289","normalized_imdb_id":367859,"title":"Man Who Copied, The","year":2003,"rating":2,"dubious":false,"date":"2014-03-16 22:54"},{"_id":"5360","normalized_imdb_id":348836,"title":"Gothika","year":2003,"rating":3,"dubious":false,"date":"2014-04-04 15:25"},{"_id":"5419","normalized_imdb_id":338467,"title":"High Roller: The Stu Ungar Story","year":2003,"rating":3,"dubious":true,"date":"2014-04-25 00:42"},{"_id":"5422","normalized_imdb_id":318725,"title":"Stupeur et Tremblements","year":2003,"rating":3,"dubious":false,"date":"2014-04-27 21:33"},{"_id":"5430","normalized_imdb_id":406709,"title":"Dies irae","year":2003,"rating":0,"dubious":false,"date":"2014-05-02 09:13"},{"_id":"5503","normalized_imdb_id":270980,"title":"My Boss's Daughter","year":2003,"rating":3,"dubious":false,"date":"2014-05-27 05:19"},{"_id":"5567","normalized_imdb_id":264395,"title":"Basic","year":2003,"rating":3,"dubious":true,"date":"2014-06-15 20:22"},{"_id":"5806","normalized_imdb_id":138524,"title":"Intolerable Cruelty","year":2003,"rating":3,"dubious":false,"date":"2014-10-05 22:22"},{"_id":"5819","normalized_imdb_id":338095,"title":"High Tension","year":2003,"rating":3,"dubious":false,"date":"2014-10-08 22:43"},{"_id":"5825","normalized_imdb_id":329679,"title":"An Unexpected Love","year":2003,"rating":3,"dubious":false,"date":"2014-10-09 01:16"},{"_id":"6161","normalized_imdb_id":306841,"title":"Lizzie McGuire Movie, The","year":2003,"rating":3,"dubious":false,"date":"2015-03-23 21:36"},{"_id":"6234","normalized_imdb_id":289944,"title":"Fear X","year":2003,"rating":1,"dubious":false,"date":"2015-05-07 09:42"},{"_id":"6301","normalized_imdb_id":340377,"title":"Station Agent, The","year":2003,"rating":3,"dubious":false,"date":"2015-06-08 02:28"},{"_id":"6379","normalized_imdb_id":337711,"title":"Rugrats Go Wild","year":2003,"rating":3,"dubious":false,"date":"2015-07-31 21:31"},{"_id":"6446","normalized_imdb_id":367913,"title":"Ju-on 2","year":2003,"rating":3,"dubious":false,"date":"2015-09-13 02:07"},{"_id":"6626","normalized_imdb_id":285823,"title":"Once Upon a Time in Mexico","year":2003,"rating":1,"dubious":false,"date":"2015-12-24 22:41"},{"_id":"6662","normalized_imdb_id":274166,"title":"Johnny English","year":2003,"rating":1,"dubious":false,"date":"2016-01-13 14:03"},{"_id":"6698","normalized_imdb_id":301777,"title":"Robot Stories","year":2003,"rating":3,"dubious":true,"date":"2016-01-29 22:08"},{"_id":"6745","normalized_imdb_id":324197,"title":"Time of the Wolf","year":2003,"rating":2,"dubious":false,"date":"2016-02-25 12:03"},{"_id":"6801","normalized_imdb_id":377556,"title":"Bu san","year":2003,"rating":0,"dubious":false,"date":"2016-03-26 08:40"},{"_id":"6986","normalized_imdb_id":302886,"title":"Old School","year":2003,"rating":2,"dubious":false,"date":"2016-07-21 18:12"},{"_id":"6995","normalized_imdb_id":800318,"title":"Cheetah Girls , The","year":2003,"rating":3,"dubious":false,"date":"2016-07-25 16:55"},{"_id":"6997","normalized_imdb_id":324013,"title":"Soldier's Girl","year":2003,"rating":3,"dubious":false,"date":"2016-07-26 04:31"},{"_id":"7027","normalized_imdb_id":328880,"title":"Brother Bear","year":2003,"rating":0,"dubious":false,"date":"2016-08-06 23:33"},{"_id":"7093","normalized_imdb_id":353969,"title":"Memories of Murder","year":2003,"rating":3,"dubious":true,"date":"2016-09-05 04:55"},{"_id":"7392","normalized_imdb_id":338309,"title":"Evil","year":2003,"rating":1,"dubious":false,"date":"2017-01-13 00:19"},{"_id":"7512","normalized_imdb_id":251736,"title":"House of 1000 Corpses","year":2003,"rating":3,"dubious":false,"date":"2017-03-13 23:08"},{"_id":"7600","normalized_imdb_id":286788,"title":"What a Girl Wants","year":2003,"rating":1,"dubious":false,"date":"2017-05-02 02:38"},{"_id":"7554","normalized_imdb_id":364517,"title":"Love Me If You Dare","year":2003,"rating":1,"dubious":false,"date":"2017-04-03 19:24"},{"_id":"7666","normalized_imdb_id":314412,"title":"My Life Without Me","year":2003,"rating":3,"dubious":false,"date":"2017-05-27 23:21"},{"_id":"7726","normalized_imdb_id":377191,"title":"Hot Wheels: World Race Highway 35","year":2003,"rating":1,"dubious":false,"date":"2017-07-08 16:37"},{"_id":"7967","normalized_imdb_id":307987,"title":"Bad Santa","year":2003,"rating":0,"dubious":false,"date":"2017-12-25 22:44"},{"_id":"8002","normalized_imdb_id":319343,"title":"Elf","year":2003,"rating":1,"dubious":false,"date":"2018-01-10 21:09"},{"_id":"8198","normalized_imdb_id":326977,"title":"I'm Not Scared","year":2003,"rating":3,"dubious":false,"date":"2018-05-11 06:48"},{"_id":"8242","normalized_imdb_id":329101,"title":"Freddy vs. Jason","year":2003,"rating":3,"dubious":false,"date":"2018-05-22 20:41"},{"_id":"8315","normalized_imdb_id":374102,"title":"Open Water","year":2003,"rating":1,"dubious":false,"date":"2018-07-01 19:17"},{"_id":"8292","normalized_imdb_id":332285,"title":"Off the Map","year":2003,"rating":3,"dubious":false,"date":"2018-06-15 15:57"},{"_id":"8436","normalized_imdb_id":305224,"title":"Anger Management","year":2003,"rating":1,"dubious":false,"date":"2018-10-13 21:27"},{"_id":"8530","normalized_imdb_id":373981,"title":"Kontroll","year":2003,"rating":0,"dubious":false,"date":"2018-12-14 22:38"},{"_id":"8695","normalized_imdb_id":348853,"title":"Nathalie...","year":2003,"rating":3,"dubious":false,"date":"2019-04-04 23:34"},{"_id":"8731","normalized_imdb_id":257568,"title":"Kangaroo Jack","year":2003,"rating":1,"dubious":false,"date":"2019-05-01 20:04"},{"_id":"8794","normalized_imdb_id":325007,"title":"April's Shower","year":2003,"rating":3,"dubious":false,"date":"2019-07-23 11:03"},{"_id":"8897","normalized_imdb_id":323810,"title":"Right on Track","year":2003,"rating":3,"dubious":false,"date":"2019-11-15 18:35"},{"_id":"8865","normalized_imdb_id":349205,"title":"Cheaper by the Dozen","year":2003,"rating":1,"dubious":false,"date":"2019-10-08 22:01"},{"_id":"8879","normalized_imdb_id":383206,"title":"Barbie of Swan Lake","year":2003,"rating":3,"dubious":false,"date":"2019-11-02 11:46"},{"_id":"8925","normalized_imdb_id":285861,"title":"Owning Mahowny","year":2003,"rating":1,"dubious":false,"date":"2019-12-08 07:30"},{"_id":"9084","normalized_imdb_id":325055,"title":"Sylvia","year":2003,"rating":3,"dubious":true,"date":"2020-04-17 17:18"},{"_id":"9366","normalized_imdb_id":331698,"title":"Milchwald","year":2003,"rating":3,"dubious":false,"date":"2020-12-10 22:43"},{"_id":"9549","normalized_imdb_id":384819,"title":"Azumi","year":2003,"rating":0,"dubious":false,"date":"2021-03-14 21:02"},{"_id":"9576","normalized_imdb_id":314353,"title":"Tears of the Sun","year":2003,"rating":3,"dubious":false,"date":"2021-03-20 21:27"},{"_id":"9582","normalized_imdb_id":5657412,"title":"Avenue Q","year":2003,"rating":2,"dubious":false,"date":"2021-03-24 16:19"},{"_id":"9586","normalized_imdb_id":338828,"title":"Mais qui a tué Pamela Rose?","year":2003,"rating":1,"dubious":false,"date":"2021-03-25 22:24"},{"_id":"9605","normalized_imdb_id":338337,"title":"Paycheck","year":2003,"rating":2,"dubious":false,"date":"2021-04-03 02:53"},{"_id":"9610","normalized_imdb_id":338806,"title":"Warrior Queen","year":2003,"rating":3,"dubious":false,"date":"2021-04-03 16:20"},{"_id":"9743","normalized_imdb_id":339135,"title":"In Hell","year":2003,"rating":0,"dubious":false,"date":"2021-04-29 20:30"},{"_id":"9784","normalized_imdb_id":299930,"title":"Gigli","year":2003,"rating":0,"dubious":false,"date":"2021-05-02 12:51"},{"_id":"9808","normalized_imdb_id":330099,"title":"Brown Bunny, The","year":2003,"rating":3,"dubious":false,"date":"2021-05-12 14:26"},{"_id":"9981","normalized_imdb_id":420076,"title":"Pokemon: Jirachi - Wish Maker","year":2003,"rating":3,"dubious":true,"date":"2021-07-25 03:32"},{"_id":"9985","normalized_imdb_id":312528,"title":"Cat in the Hat, The","year":2003,"rating":3,"dubious":false,"date":"2021-07-26 20:37"},{"_id":"10055","normalized_imdb_id":172156,"title":"Bad Boys II","year":2003,"rating":1,"dubious":true,"date":"2021-09-17 03:11"},{"_id":"10153","normalized_imdb_id":317640,"title":"Hebrew Hammer, The","year":2003,"rating":2,"dubious":false,"date":"2021-12-06 13:42"},{"_id":"37","normalized_imdb_id":343818,"title":"I, Robot","year":2004,"rating":1,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"50","normalized_imdb_id":317705,"title":"Incredibles, The","year":2004,"rating":3,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"75","normalized_imdb_id":319262,"title":"Day After Tomorrow, The","year":2004,"rating":3,"dubious":false,"date":"2008-07-28 00:46"},{"_id":"104","normalized_imdb_id":289879,"title":"Butterfly Effect, The","year":2004,"rating":2,"dubious":false,"date":"2008-07-30 19:53"},{"_id":"108","normalized_imdb_id":372183,"title":"Bourne Supremacy, The","year":2004,"rating":2,"dubious":false,"date":"2008-07-30 23:45"},{"_id":"132","normalized_imdb_id":327247,"title":"Whole Ten Yards, The","year":2004,"rating":1,"dubious":false,"date":"2008-08-02 19:13"},{"_id":"133","normalized_imdb_id":338013,"title":"Eternal Sunshine of the Spotless Mind","year":2004,"rating":2,"dubious":false,"date":"2008-08-02 19:38"},{"_id":"156","normalized_imdb_id":362269,"title":"Kinsey","year":2004,"rating":3,"dubious":false,"date":"2008-08-10 18:20"},{"_id":"162","normalized_imdb_id":298148,"title":"Shrek 2","year":2004,"rating":3,"dubious":false,"date":"2008-08-11 13:57"},{"_id":"199","normalized_imdb_id":377092,"title":"Mean Girls","year":2004,"rating":3,"dubious":false,"date":"2008-10-17 21:42"},{"_id":"213","normalized_imdb_id":366551,"title":"Harold and Kumar Go to White Castle","year":2004,"rating":3,"dubious":false,"date":"2008-11-02 05:08"},{"_id":"258","normalized_imdb_id":347149,"title":"Hauru no ugoku shiro (Howl's Moving Castle)","year":2004,"rating":3,"dubious":false,"date":"2009-01-17 22:56"},{"_id":"281","normalized_imdb_id":318627,"title":"Resident Evil: Apocalypse","year":2004,"rating":3,"dubious":false,"date":"2009-02-16 13:14"},{"_id":"342","normalized_imdb_id":360201,"title":"Wimbledon","year":2004,"rating":3,"dubious":false,"date":"2009-06-14 21:24"},{"_id":"349","normalized_imdb_id":380366,"title":"Ae Fond Kiss...","year":2004,"rating":2,"dubious":false,"date":"2009-06-21 10:43"},{"_id":"352","normalized_imdb_id":357413,"title":"Anchorman: The Legend of Ron Burgundy","year":2004,"rating":3,"dubious":false,"date":"2009-06-22 05:30"},{"_id":"472","normalized_imdb_id":377062,"title":"Flight of the Phoenix","year":2004,"rating":0,"dubious":false,"date":"2009-08-22 07:46"},{"_id":"475","normalized_imdb_id":349903,"title":"Ocean's Twelve","year":2004,"rating":2,"dubious":false,"date":"2009-08-22 12:15"},{"_id":"509","normalized_imdb_id":378194,"title":"Kill Bill: Vol. 2","year":2004,"rating":3,"dubious":false,"date":"2009-09-17 22:21"},{"_id":"551","normalized_imdb_id":367631,"title":"D.E.B.S.","year":2004,"rating":3,"dubious":false,"date":"2009-12-05 05:13"},{"_id":"565","normalized_imdb_id":338139,"title":"Iron Jawed Angels","year":2004,"rating":3,"dubious":false,"date":"2009-12-17 22:53"},{"_id":"638","normalized_imdb_id":332375,"title":"Saved!","year":2004,"rating":3,"dubious":false,"date":"2010-01-14 20:10"},{"_id":"682","normalized_imdb_id":346156,"title":"Sky Captain and the World of Tomorrow","year":2004,"rating":3,"dubious":false,"date":"2010-02-15 08:59"},{"_id":"746","normalized_imdb_id":371246,"title":"Spanglish","year":2004,"rating":3,"dubious":false,"date":"2010-04-23 02:46"},{"_id":"750","normalized_imdb_id":365125,"title":"A Dirty Shame","year":2004,"rating":3,"dubious":false,"date":"2010-04-24 06:03"},{"_id":"759","normalized_imdb_id":279967,"title":"Mulan II","year":2004,"rating":3,"dubious":false,"date":"2010-04-26 15:24"},{"_id":"763","normalized_imdb_id":334965,"title":"Bring It on Again","year":2004,"rating":3,"dubious":false,"date":"2010-04-26 15:28"},{"_id":"781","normalized_imdb_id":332280,"title":"Notebook, The","year":2004,"rating":3,"dubious":true,"date":"2010-05-03 14:41"},{"_id":"785","normalized_imdb_id":416220,"title":"Shimotsuma monogatari (Kamikaze Girls)","year":2004,"rating":3,"dubious":false,"date":"2010-05-08 16:09"},{"_id":"807","normalized_imdb_id":387564,"title":"Saw","year":2004,"rating":2,"dubious":false,"date":"2010-05-14 19:34"},{"_id":"853","normalized_imdb_id":327679,"title":"Ella Enchanted","year":2004,"rating":3,"dubious":false,"date":"2010-05-27 22:30"},{"_id":"868","normalized_imdb_id":414852,"title":"Banlieue 13","year":2004,"rating":0,"dubious":false,"date":"2010-05-28 18:28"},{"_id":"916","normalized_imdb_id":356721,"title":"I Heart Huckabees","year":2004,"rating":3,"dubious":false,"date":"2010-06-07 21:04"},{"_id":"4328","normalized_imdb_id":371835,"title":"Ghost Cat","year":2004,"rating":3,"dubious":false,"date":"2013-07-10 21:18"},{"_id":"933","normalized_imdb_id":388789,"title":"Born Into Brothels: Calcutta's Red Light Kids","year":2004,"rating":3,"dubious":false,"date":"2010-06-11 21:16"},{"_id":"953","normalized_imdb_id":377713,"title":"Cube Zero","year":2004,"rating":3,"dubious":false,"date":"2010-06-16 19:26"},{"_id":"956","normalized_imdb_id":332452,"title":"Troy","year":2004,"rating":1,"dubious":false,"date":"2010-06-17 17:42"},{"_id":"957","normalized_imdb_id":338526,"title":"Van Helsing","year":2004,"rating":3,"dubious":false,"date":"2010-06-17 17:49"},{"_id":"966","normalized_imdb_id":377084,"title":"Ladies in Lavender","year":2004,"rating":3,"dubious":false,"date":"2010-06-20 19:20"},{"_id":"1001","normalized_imdb_id":365748,"title":"Shaun of the Dead","year":2004,"rating":3,"dubious":false,"date":"2010-06-28 18:29"},{"_id":"1021","normalized_imdb_id":368933,"title":"Princess Diaries 2: Royal Engagement, The","year":2004,"rating":3,"dubious":false,"date":"2010-07-02 23:04"},{"_id":"1027","normalized_imdb_id":327554,"title":"Catwoman","year":2004,"rating":3,"dubious":false,"date":"2010-07-03 00:13"},{"_id":"1060","normalized_imdb_id":371823,"title":"Mickey, Donald, Goofy: The Three Musketeers","year":2004,"rating":2,"dubious":false,"date":"2010-07-04 04:27"},{"_id":"1348","normalized_imdb_id":365135,"title":"Double Dare","year":2004,"rating":3,"dubious":false,"date":"2010-07-26 20:32"},{"_id":"1420","normalized_imdb_id":390384,"title":"Primer","year":2004,"rating":1,"dubious":false,"date":"2010-08-01 16:04"},{"_id":"1565","normalized_imdb_id":417349,"title":"North and South","year":2004,"rating":3,"dubious":false,"date":"2010-09-10 15:50"},{"_id":"1205","normalized_imdb_id":343660,"title":"50 First Dates","year":2004,"rating":2,"dubious":false,"date":"2010-07-20 06:14"},{"_id":"1220","normalized_imdb_id":378793,"title":"Speak","year":2004,"rating":3,"dubious":false,"date":"2010-07-22 17:49"},{"_id":"1221","normalized_imdb_id":367462,"title":"Say Yes Quickly","year":2004,"rating":3,"dubious":false,"date":"2010-07-22 19:29"},{"_id":"1131","normalized_imdb_id":327162,"title":"Stepford Wives, The","year":2004,"rating":3,"dubious":false,"date":"2010-07-09 05:25"},{"_id":"1148","normalized_imdb_id":405159,"title":"Million Dollar Baby","year":2004,"rating":3,"dubious":false,"date":"2010-07-10 06:31"},{"_id":"1592","normalized_imdb_id":327437,"title":"Around the World in 80 Days","year":2004,"rating":1,"dubious":false,"date":"2010-09-22 05:43"},{"_id":"1096","normalized_imdb_id":385267,"title":"In Good Company","year":2004,"rating":1,"dubious":false,"date":"2010-07-04 23:48"},{"_id":"1461","normalized_imdb_id":375233,"title":"Innocence","year":2004,"rating":3,"dubious":false,"date":"2010-08-11 20:41"},{"_id":"1539","normalized_imdb_id":296572,"title":"Chronicles of Riddick, The","year":2004,"rating":2,"dubious":false,"date":"2010-09-06 07:01"},{"_id":"1498","normalized_imdb_id":381668,"title":"Tropical Malady","year":2004,"rating":0,"dubious":false,"date":"2010-08-23 23:44"},{"_id":"1597","normalized_imdb_id":349825,"title":"Miracle","year":2004,"rating":1,"dubious":false,"date":"2010-09-23 00:29"},{"_id":"1084","normalized_imdb_id":406649,"title":"A Christmas Carol: The Musical","year":2004,"rating":1,"dubious":false,"date":"2010-07-04 22:39"},{"_id":"1670","normalized_imdb_id":344510,"title":"A Very Long Engagement","year":2004,"rating":3,"dubious":false,"date":"2010-10-18 22:39"},{"_id":"1731","normalized_imdb_id":316654,"title":"Spider-Man 2","year":2004,"rating":1,"dubious":false,"date":"2010-11-04 03:51"},{"_id":"1740","normalized_imdb_id":356470,"title":"A Cinderella Story","year":2004,"rating":3,"dubious":false,"date":"2010-11-06 09:03"},{"_id":"1748","normalized_imdb_id":363163,"title":"Der Untergang (Downfall)","year":2004,"rating":3,"dubious":true,"date":"2010-11-10 23:50"},{"_id":"1763","normalized_imdb_id":401233,"title":"Appleseed","year":2004,"rating":3,"dubious":false,"date":"2010-11-18 19:37"},{"_id":"1798","normalized_imdb_id":388311,"title":"Or","year":2004,"rating":3,"dubious":false,"date":"2010-11-30 23:51"},{"_id":"1871","normalized_imdb_id":308644,"title":"Finding Neverland","year":2004,"rating":3,"dubious":false,"date":"2010-12-25 06:52"},{"_id":"1890","normalized_imdb_id":386820,"title":"Terkel i knibe","year":2004,"rating":1,"dubious":false,"date":"2011-01-04 10:08"},{"_id":"2032","normalized_imdb_id":376541,"title":"Closer","year":2004,"rating":3,"dubious":false,"date":"2011-02-15 04:05"},{"_id":"2035","normalized_imdb_id":362227,"title":"Terminal, The","year":2004,"rating":1,"dubious":false,"date":"2011-02-15 12:11"},{"_id":"2041","normalized_imdb_id":382189,"title":"My Summer of Love","year":2004,"rating":3,"dubious":false,"date":"2011-02-15 14:09"},{"_id":"2047","normalized_imdb_id":339291,"title":"Lemony Snicket's A Series of Unfortunate Events","year":2004,"rating":3,"dubious":false,"date":"2011-02-15 14:26"},{"_id":"2080","normalized_imdb_id":314063,"title":"Immortal (Ad Vitam)","year":2004,"rating":3,"dubious":false,"date":"2011-02-28 09:16"},{"_id":"2240","normalized_imdb_id":370263,"title":"AVP: Alien vs. Predator","year":2004,"rating":3,"dubious":true,"date":"2011-04-24 22:02"},{"_id":"2249","normalized_imdb_id":375063,"title":"Sideways","year":2004,"rating":3,"dubious":false,"date":"2011-04-28 13:52"},{"_id":"2266","normalized_imdb_id":333766,"title":"Garden State","year":2004,"rating":3,"dubious":false,"date":"2011-05-03 19:24"},{"_id":"2323","normalized_imdb_id":374900,"title":"Napoleon Dynamite","year":2004,"rating":1,"dubious":false,"date":"2011-05-21 17:30"},{"_id":"2333","normalized_imdb_id":304141,"title":"Harry Potter and the Prisoner of  Azkaban","year":2004,"rating":3,"dubious":false,"date":"2011-05-24 21:27"},{"_id":"2386","normalized_imdb_id":372588,"title":"Team America: World Police","year":2004,"rating":2,"dubious":false,"date":"2011-06-10 22:13"},{"_id":"2441","normalized_imdb_id":379306,"title":"A Good Woman","year":2004,"rating":3,"dubious":false,"date":"2011-06-25 17:38"},{"_id":"2448","normalized_imdb_id":293508,"title":"Phantom of the Opera, The","year":2004,"rating":2,"dubious":true,"date":"2011-06-27 00:18"},{"_id":"2452","normalized_imdb_id":407851,"title":"Hana and Alice","year":2004,"rating":3,"dubious":false,"date":"2011-06-28 01:02"},{"_id":"2501","normalized_imdb_id":359423,"title":"A Home at the End of The World","year":2004,"rating":3,"dubious":true,"date":"2011-07-07 07:25"},{"_id":"2503","normalized_imdb_id":362004,"title":"Palindromes","year":2004,"rating":1,"dubious":false,"date":"2011-07-07 07:39"},{"_id":"2514","normalized_imdb_id":407246,"title":"Duck Season","year":2004,"rating":1,"dubious":false,"date":"2011-07-10 04:31"},{"_id":"2544","normalized_imdb_id":369339,"title":"Collateral","year":2004,"rating":1,"dubious":false,"date":"2011-07-16 22:26"},{"_id":"2608","normalized_imdb_id":384504,"title":"Saving Face","year":2004,"rating":3,"dubious":false,"date":"2011-08-13 16:12"},{"_id":"2612","normalized_imdb_id":383694,"title":"Vera Drake","year":2004,"rating":3,"dubious":false,"date":"2011-08-14 00:48"},{"_id":"2768","normalized_imdb_id":420251,"title":"Three... Extremes","year":2004,"rating":3,"dubious":false,"date":"2011-10-15 19:56"},{"_id":"2817","normalized_imdb_id":370986,"title":"Mysterious Skin","year":2004,"rating":1,"dubious":false,"date":"2011-11-01 15:54"},{"_id":"2871","normalized_imdb_id":347048,"title":"Head-On","year":2004,"rating":3,"dubious":false,"date":"2011-11-26 23:13"},{"_id":"2921","normalized_imdb_id":337921,"title":"Cellular","year":2004,"rating":3,"dubious":false,"date":"2011-12-13 00:36"},{"_id":"2946","normalized_imdb_id":364343,"title":"Final Cut, The","year":2004,"rating":2,"dubious":false,"date":"2011-12-21 08:13"},{"_id":"2995","normalized_imdb_id":396184,"title":"With Blood on My Hands: Pusher II","year":2004,"rating":3,"dubious":false,"date":"2012-01-17 06:11"},{"_id":"3040","normalized_imdb_id":360845,"title":"Notre musique","year":2004,"rating":1,"dubious":false,"date":"2012-02-11 16:18"},{"_id":"3130","normalized_imdb_id":350258,"title":"Ray","year":2004,"rating":3,"dubious":true,"date":"2012-03-19 21:53"},{"_id":"3153","normalized_imdb_id":363547,"title":"Dawn of the Dead","year":2004,"rating":3,"dubious":false,"date":"2012-03-31 09:17"},{"_id":"3198","normalized_imdb_id":363282,"title":"New York Minute","year":2004,"rating":3,"dubious":false,"date":"2012-04-22 23:52"},{"_id":"3234","normalized_imdb_id":212712,"title":"2046","year":2004,"rating":3,"dubious":false,"date":"2012-05-08 04:56"},{"_id":"3261","normalized_imdb_id":338751,"title":"Aviator, The","year":2004,"rating":1,"dubious":false,"date":"2012-05-16 15:32"},{"_id":"3311","normalized_imdb_id":390221,"title":"Maria Full of Grace","year":2004,"rating":3,"dubious":false,"date":"2012-06-03 02:09"},{"_id":"3314","normalized_imdb_id":369672,"title":"A Love Song for Bobby Long","year":2004,"rating":3,"dubious":false,"date":"2012-06-03 02:35"},{"_id":"3423","normalized_imdb_id":221637,"title":"Third Society, The","year":2004,"rating":1,"dubious":false,"date":"2012-07-15 20:49"},{"_id":"3450","normalized_imdb_id":331632,"title":"Scooby Doo 2: Monsters Unleashed","year":2004,"rating":3,"dubious":false,"date":"2012-07-27 15:07"},{"_id":"3454","normalized_imdb_id":350028,"title":"Raising Helen","year":2004,"rating":3,"dubious":false,"date":"2012-07-29 12:50"},{"_id":"3554","normalized_imdb_id":373074,"title":"Kung Fu Hustle","year":2004,"rating":0,"dubious":false,"date":"2012-09-27 06:12"},{"_id":"3557","normalized_imdb_id":423866,"title":"3-Iron","year":2004,"rating":1,"dubious":false,"date":"2012-09-27 22:58"},{"_id":"3565","normalized_imdb_id":390205,"title":"Spirit of Jeet Kune Do, The","year":2004,"rating":1,"dubious":false,"date":"2012-09-30 07:38"},{"_id":"3609","normalized_imdb_id":375679,"title":"Crash","year":2004,"rating":3,"dubious":false,"date":"2012-10-17 03:55"},{"_id":"3642","normalized_imdb_id":391198,"title":"Grudge, The","year":2004,"rating":3,"dubious":false,"date":"2012-11-01 17:49"},{"_id":"3656","normalized_imdb_id":337563,"title":"13 Going on 30","year":2004,"rating":3,"dubious":false,"date":"2012-11-04 15:31"},{"_id":"3705","normalized_imdb_id":378661,"title":"They Came Back","year":2004,"rating":3,"dubious":false,"date":"2012-12-03 03:30"},{"_id":"3772","normalized_imdb_id":381348,"title":"Place Promised in Our Early Days, The","year":2004,"rating":1,"dubious":false,"date":"2012-12-26 07:46"},{"_id":"3833","normalized_imdb_id":338479,"title":"Tales From The Crapper","year":2004,"rating":3,"dubious":true,"date":"2013-01-15 03:19"},{"_id":"3971","normalized_imdb_id":338348,"title":"Polar Express, The","year":2004,"rating":1,"dubious":false,"date":"2013-03-11 01:41"},{"_id":"4011","normalized_imdb_id":375912,"title":"Layer Cake","year":2004,"rating":1,"dubious":false,"date":"2013-03-24 06:53"},{"_id":"4059","normalized_imdb_id":345074,"title":"Connie and Carla","year":2004,"rating":3,"dubious":false,"date":"2013-04-15 15:13"},{"_id":"4083","normalized_imdb_id":339072,"title":"Gladiatress","year":2004,"rating":3,"dubious":false,"date":"2013-04-24 06:12"},{"_id":"4249","normalized_imdb_id":403358,"title":"Nochnoy dozor (Night Watch)","year":2004,"rating":1,"dubious":false,"date":"2013-06-18 16:53"},{"_id":"4292","normalized_imdb_id":353489,"title":"Ginger Snaps 2: Unleashed","year":2004,"rating":3,"dubious":false,"date":"2013-06-29 17:30"},{"_id":"4298","normalized_imdb_id":381707,"title":"White Chicks","year":2004,"rating":3,"dubious":false,"date":"2013-07-02 06:33"},{"_id":"4338","normalized_imdb_id":167190,"title":"Hellboy","year":2004,"rating":1,"dubious":false,"date":"2013-07-12 15:03"},{"_id":"4368","normalized_imdb_id":415819,"title":"He Was Cool (Geunomeun meoshiteotda)","year":2004,"rating":3,"dubious":false,"date":"2013-07-18 22:35"},{"_id":"4389","normalized_imdb_id":414923,"title":"Crimes of Fashion","year":2004,"rating":3,"dubious":false,"date":"2013-07-24 20:26"},{"_id":"4408","normalized_imdb_id":362270,"title":"Life Aquatic with Steve Zissou, The","year":2004,"rating":2,"dubious":false,"date":"2013-07-28 11:13"},{"_id":"4438","normalized_imdb_id":299172,"title":"Home on the Range","year":2004,"rating":3,"dubious":false,"date":"2013-08-04 02:04"},{"_id":"4453","normalized_imdb_id":1469259,"title":"Bratz the Video: Starrin' & Stylin'","year":2004,"rating":3,"dubious":false,"date":"2013-08-08 06:07"},{"_id":"4486","normalized_imdb_id":316732,"title":"Taxi","year":2004,"rating":3,"dubious":false,"date":"2013-08-17 20:30"},{"_id":"4524","normalized_imdb_id":349416,"title":"Eulogy","year":2004,"rating":3,"dubious":false,"date":"2013-08-30 21:19"},{"_id":"4525","normalized_imdb_id":363988,"title":"Secret Window","year":2004,"rating":1,"dubious":false,"date":"2013-08-30 22:46"},{"_id":"6150","normalized_imdb_id":361696,"title":"Raise Your Voice","year":2004,"rating":3,"dubious":false,"date":"2015-03-16 03:58"},{"_id":"4565","normalized_imdb_id":439491,"title":"Caribe","year":2004,"rating":3,"dubious":true,"date":"2013-09-13 01:42"},{"_id":"4571","normalized_imdb_id":361411,"title":"Bride and Prejudice","year":2004,"rating":3,"dubious":false,"date":"2013-09-13 20:13"},{"_id":"4587","normalized_imdb_id":435224,"title":"Nemmeno il destino","year":2004,"rating":1,"dubious":false,"date":"2013-09-15 16:33"},{"_id":"4630","normalized_imdb_id":399412,"title":"Nina","year":2004,"rating":3,"dubious":false,"date":"2013-09-27 00:40"},{"_id":"4726","normalized_imdb_id":367000,"title":"House of Voices (Saint Ange)","year":2004,"rating":3,"dubious":false,"date":"2013-10-21 04:17"},{"_id":"4696","normalized_imdb_id":381966,"title":"Creep","year":2004,"rating":3,"dubious":false,"date":"2013-10-14 19:28"},{"_id":"4828","normalized_imdb_id":300270,"title":"Holy Girl, The","year":2004,"rating":3,"dubious":false,"date":"2013-11-15 05:36"},{"_id":"4842","normalized_imdb_id":368447,"title":"Village, The","year":2004,"rating":3,"dubious":false,"date":"2013-11-16 16:42"},{"_id":"4928","normalized_imdb_id":317198,"title":"Bridget Jones: The Edge of Reason","year":2004,"rating":3,"dubious":false,"date":"2013-12-08 19:00"},{"_id":"4979","normalized_imdb_id":307453,"title":"Shark Tale","year":2004,"rating":1,"dubious":false,"date":"2013-12-24 20:29"},{"_id":"5038","normalized_imdb_id":439623,"title":"In Search of Santa","year":2004,"rating":3,"dubious":false,"date":"2014-01-04 03:08"},{"_id":"5047","normalized_imdb_id":409842,"title":"Corpses","year":2004,"rating":3,"dubious":false,"date":"2014-01-05 21:13"},{"_id":"5117","normalized_imdb_id":381681,"title":"Before Sunset","year":2004,"rating":0,"dubious":false,"date":"2014-01-29 21:55"},{"_id":"5201","normalized_imdb_id":364725,"title":"Dodgeball: A True Underdog Story","year":2004,"rating":3,"dubious":false,"date":"2014-02-24 18:22"},{"_id":"5210","normalized_imdb_id":290002,"title":"Meet the Fockers","year":2004,"rating":3,"dubious":false,"date":"2014-02-27 17:22"},{"_id":"5336","normalized_imdb_id":368891,"title":"National Treasure","year":2004,"rating":2,"dubious":false,"date":"2014-03-28 22:24"},{"_id":"5392","normalized_imdb_id":382761,"title":"Jennifer's Shadow","year":2004,"rating":3,"dubious":false,"date":"2014-04-12 22:47"},{"_id":"5401","normalized_imdb_id":412915,"title":"Librarian: Quest for the Spear, The","year":2004,"rating":3,"dubious":true,"date":"2014-04-15 20:15"},{"_id":"5550","normalized_imdb_id":367479,"title":"After the Sunset","year":2004,"rating":3,"dubious":false,"date":"2014-06-08 20:50"},{"_id":"6149","normalized_imdb_id":364045,"title":"Taking Lives","year":2004,"rating":2,"dubious":false,"date":"2015-03-15 01:03"},{"_id":"5573","normalized_imdb_id":377752,"title":"Dear Frankie","year":2004,"rating":3,"dubious":false,"date":"2014-06-18 06:58"},{"_id":"5609","normalized_imdb_id":300051,"title":"Jersey Girl","year":2004,"rating":2,"dubious":false,"date":"2014-07-01 23:53"},{"_id":"5629","normalized_imdb_id":387658,"title":"Bionicle 2: Legends of Metru Nui","year":2004,"rating":0,"dubious":false,"date":"2014-07-12 19:23"},{"_id":"5659","normalized_imdb_id":361862,"title":"Machinist, The","year":2004,"rating":1,"dubious":false,"date":"2014-07-30 01:11"},{"_id":"5673","normalized_imdb_id":314498,"title":"Perfect Score, The","year":2004,"rating":3,"dubious":true,"date":"2014-08-01 22:47"},{"_id":"5824","normalized_imdb_id":384533,"title":"She Hate Me","year":2004,"rating":2,"dubious":false,"date":"2014-10-09 01:03"},{"_id":"5877","normalized_imdb_id":340012,"title":"Being Julia","year":2004,"rating":3,"dubious":false,"date":"2014-10-27 19:26"},{"_id":"5920","normalized_imdb_id":346491,"title":"Alexander","year":2004,"rating":1,"dubious":false,"date":"2014-11-13 23:09"},{"_id":"5952","normalized_imdb_id":440803,"title":"Shutter","year":2004,"rating":1,"dubious":false,"date":"2014-12-01 13:43"},{"_id":"5968","normalized_imdb_id":388419,"title":"Christmas with the Kranks","year":2004,"rating":3,"dubious":false,"date":"2014-12-08 07:19"},{"_id":"5976","normalized_imdb_id":420332,"title":"Veer-Zaara","year":2004,"rating":3,"dubious":false,"date":"2014-12-10 23:46"},{"_id":"5988","normalized_imdb_id":367110,"title":"Swades","year":2004,"rating":3,"dubious":false,"date":"2014-12-17 15:37"},{"_id":"6008","normalized_imdb_id":364751,"title":"Without a Paddle","year":2004,"rating":3,"dubious":true,"date":"2015-01-01 23:11"},{"_id":"6070","normalized_imdb_id":431340,"title":"Puppet Master vs Demonic Toys","year":2004,"rating":3,"dubious":false,"date":"2015-01-27 02:28"},{"_id":"6077","normalized_imdb_id":318403,"title":"Lion King 1 1/2, The","year":2004,"rating":1,"dubious":false,"date":"2015-01-27 02:55"},{"_id":"6257","normalized_imdb_id":304377,"title":"Mango Kiss","year":2004,"rating":3,"dubious":false,"date":"2015-05-20 16:56"},{"_id":"6312","normalized_imdb_id":426955,"title":"Barbie as the Princess and the Pauper","year":2004,"rating":3,"dubious":false,"date":"2015-06-14 16:35"},{"_id":"6700","normalized_imdb_id":337697,"title":"Prince and Me, The","year":2004,"rating":1,"dubious":false,"date":"2016-01-30 23:02"},{"_id":"6739","normalized_imdb_id":459175,"title":"All the Ships at Sea","year":2004,"rating":3,"dubious":false,"date":"2016-02-21 16:37"},{"_id":"6748","normalized_imdb_id":411705,"title":"9 Songs","year":2004,"rating":0,"dubious":false,"date":"2016-02-26 21:59"},{"_id":"6842","normalized_imdb_id":348593,"title":"Door in the Floor, The","year":2004,"rating":1,"dubious":false,"date":"2016-04-20 20:58"},{"_id":"6907","normalized_imdb_id":476680,"title":"Naruto the Movie: Ninja Clash in the Land of Snow","year":2004,"rating":3,"dubious":false,"date":"2016-05-28 21:10"},{"_id":"6923","normalized_imdb_id":369702,"title":"Sea Inside, The","year":2004,"rating":3,"dubious":false,"date":"2016-06-08 22:12"},{"_id":"7119","normalized_imdb_id":419677,"title":"Dead Man's Shoes","year":2004,"rating":1,"dubious":false,"date":"2016-09-15 22:28"},{"_id":"7145","normalized_imdb_id":364961,"title":"Assassination of Richard Nixon, The","year":2004,"rating":1,"dubious":true,"date":"2016-09-26 06:57"},{"_id":"7234","normalized_imdb_id":390450,"title":"Blessed","year":2004,"rating":3,"dubious":false,"date":"2016-11-02 01:57"},{"_id":"7206","normalized_imdb_id":403703,"title":"Yu-Gi-Oh!: The Movie","year":2004,"rating":0,"dubious":false,"date":"2016-10-17 15:06"},{"_id":"7342","normalized_imdb_id":374180,"title":"Romasanta","year":2004,"rating":2,"dubious":false,"date":"2016-12-20 17:58"},{"_id":"7471","normalized_imdb_id":368658,"title":"Stage Beauty","year":2004,"rating":2,"dubious":false,"date":"2017-02-22 21:07"},{"_id":"7478","normalized_imdb_id":345950,"title":"SpongeBob SquarePants Movie, The","year":2004,"rating":3,"dubious":false,"date":"2017-03-03 04:20"},{"_id":"7602","normalized_imdb_id":368975,"title":"Sleepover","year":2004,"rating":3,"dubious":true,"date":"2017-05-04 08:05"},{"_id":"7612","normalized_imdb_id":328400,"title":"A Separate Peace","year":2004,"rating":0,"dubious":false,"date":"2017-05-21 10:56"},{"_id":"7617","normalized_imdb_id":384369,"title":"Before the Fall","year":2004,"rating":1,"dubious":false,"date":"2017-05-21 11:02"},{"_id":"7639","normalized_imdb_id":372334,"title":"House of D","year":2004,"rating":1,"dubious":false,"date":"2017-05-21 13:33"},{"_id":"7648","normalized_imdb_id":297284,"title":"Mindhunters","year":2004,"rating":1,"dubious":false,"date":"2017-05-21 15:06"},{"_id":"7653","normalized_imdb_id":317042,"title":"One Point O","year":2004,"rating":1,"dubious":false,"date":"2017-05-21 15:37"},{"_id":"7668","normalized_imdb_id":338096,"title":"Dirty Dancing: Havana Nights","year":2004,"rating":3,"dubious":false,"date":"2017-05-29 17:28"},{"_id":"7790","normalized_imdb_id":330793,"title":"Punisher, The","year":2004,"rating":1,"dubious":false,"date":"2017-08-31 05:05"},{"_id":"7926","normalized_imdb_id":359013,"title":"Blade: Trinity","year":2004,"rating":3,"dubious":false,"date":"2017-11-26 22:49"},{"_id":"7944","normalized_imdb_id":408777,"title":"Edukators, The","year":2004,"rating":3,"dubious":true,"date":"2017-12-13 00:26"},{"_id":"8132","normalized_imdb_id":335345,"title":"Passion of the Christ, The","year":2004,"rating":3,"dubious":false,"date":"2018-03-22 14:12"},{"_id":"8545","normalized_imdb_id":370919,"title":"Magyar vandor","year":2004,"rating":0,"dubious":false,"date":"2018-12-14 23:25"},{"_id":"8546","normalized_imdb_id":379071,"title":"Stop Mom Theresa!","year":2004,"rating":2,"dubious":false,"date":"2018-12-14 23:26"},{"_id":"8680","normalized_imdb_id":349260,"title":"In my country","year":2004,"rating":3,"dubious":false,"date":"2019-03-21 16:12"},{"_id":"8610","normalized_imdb_id":415855,"title":"Hotel","year":2004,"rating":3,"dubious":false,"date":"2019-01-21 22:29"},{"_id":"8888","normalized_imdb_id":330588,"title":"MXP: Most Extreme Primate","year":2004,"rating":1,"dubious":false,"date":"2019-11-10 17:29"},{"_id":"8959","normalized_imdb_id":410696,"title":"Stuck in the Suburbs","year":2004,"rating":3,"dubious":false,"date":"2020-01-12 19:47"},{"_id":"9120","normalized_imdb_id":367085,"title":"Soul Plane","year":2004,"rating":3,"dubious":false,"date":"2020-05-06 00:51"},{"_id":"9191","normalized_imdb_id":435286,"title":"Pokemon the Movie: Destiny Deoxys","year":2004,"rating":1,"dubious":false,"date":"2020-07-05 22:27"},{"_id":"9323","normalized_imdb_id":351977,"title":"Walking Tall","year":2004,"rating":1,"dubious":false,"date":"2020-11-06 19:06"},{"_id":"9363","normalized_imdb_id":360779,"title":"Marseille","year":2004,"rating":3,"dubious":false,"date":"2020-12-10 22:30"},{"_id":"9425","normalized_imdb_id":384116,"title":"G.O.R.A.","year":2004,"rating":2,"dubious":false,"date":"2021-01-15 06:05"},{"_id":"9480","normalized_imdb_id":361467,"title":"Confessions of Teenage Drama Queen","year":2004,"rating":3,"dubious":false,"date":"2021-02-16 20:12"},{"_id":"9509","normalized_imdb_id":372832,"title":"Skeleton Man","year":2004,"rating":3,"dubious":false,"date":"2021-03-07 22:19"},{"_id":"9527","normalized_imdb_id":356150,"title":"EuroTrip","year":2004,"rating":1,"dubious":false,"date":"2021-03-14 14:14"},{"_id":"9685","normalized_imdb_id":421051,"title":"Daniel the Wizard","year":2004,"rating":1,"dubious":false,"date":"2021-04-27 19:27"},{"_id":"9960","normalized_imdb_id":459449,"title":"M. Kumaran S/O Mahalakshmi","year":2004,"rating":2,"dubious":false,"date":"2021-07-11 09:23"},{"_id":"21","normalized_imdb_id":425357,"title":"Pleasure Drivers, The","year":2005,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"23","normalized_imdb_id":448179,"title":"Wild Things: Diamonds in the Rough","year":2005,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"40","normalized_imdb_id":372784,"title":"Batman Begins","year":2005,"rating":1,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"67","normalized_imdb_id":401792,"title":"Sin City","year":2005,"rating":3,"dubious":false,"date":"2008-07-24 00:00"},{"_id":"76","normalized_imdb_id":371724,"title":"Hitchhiker's Guide to the Galaxy, The","year":2005,"rating":1,"dubious":false,"date":"2008-07-28 01:16"},{"_id":"89","normalized_imdb_id":434409,"title":"V for Vendetta","year":2005,"rating":3,"dubious":false,"date":"2008-07-28 18:57"},{"_id":"99","normalized_imdb_id":358082,"title":"Robots","year":2005,"rating":1,"dubious":false,"date":"2008-07-30 00:52"},{"_id":"168","normalized_imdb_id":358273,"title":"Walk the Line","year":2005,"rating":3,"dubious":false,"date":"2008-08-14 18:52"},{"_id":"204","normalized_imdb_id":379786,"title":"Serenity","year":2005,"rating":3,"dubious":false,"date":"2008-10-23 15:56"},{"_id":"218","normalized_imdb_id":398712,"title":"Assault on Precinct 13","year":2005,"rating":3,"dubious":false,"date":"2008-11-23 00:11"},{"_id":"229","normalized_imdb_id":373469,"title":"Kiss Kiss Bang Bang","year":2005,"rating":1,"dubious":false,"date":"2008-12-09 10:54"},{"_id":"250","normalized_imdb_id":418763,"title":"Jarhead","year":2005,"rating":0,"dubious":false,"date":"2009-01-04 16:40"},{"_id":"262","normalized_imdb_id":407265,"title":"Transamerica","year":2005,"rating":3,"dubious":false,"date":"2009-01-22 12:46"},{"_id":"328","normalized_imdb_id":400497,"title":"Herbie Fully Loaded","year":2005,"rating":3,"dubious":false,"date":"2009-05-24 09:11"},{"_id":"364","normalized_imdb_id":418773,"title":"Junebug","year":2005,"rating":3,"dubious":false,"date":"2009-07-13 10:05"},{"_id":"378","normalized_imdb_id":331933,"title":"Man of the House","year":2005,"rating":3,"dubious":false,"date":"2009-07-27 02:52"},{"_id":"379","normalized_imdb_id":435625,"title":"Descent, The","year":2005,"rating":3,"dubious":false,"date":"2009-07-27 21:46"},{"_id":"414","normalized_imdb_id":427944,"title":"Thank You for Smoking","year":2005,"rating":1,"dubious":false,"date":"2009-08-03 21:21"},{"_id":"415","normalized_imdb_id":424136,"title":"Hard Candy","year":2005,"rating":3,"dubious":false,"date":"2009-08-03 23:14"},{"_id":"420","normalized_imdb_id":433383,"title":"Good Night, and Good Luck.","year":2005,"rating":1,"dubious":false,"date":"2009-08-07 00:58"},{"_id":"461","normalized_imdb_id":382077,"title":"Hide and Seek","year":2005,"rating":3,"dubious":false,"date":"2009-08-16 01:32"},{"_id":"517","normalized_imdb_id":399201,"title":"Island, The","year":2005,"rating":3,"dubious":false,"date":"2009-09-27 03:18"},{"_id":"561","normalized_imdb_id":393109,"title":"Brick","year":2005,"rating":1,"dubious":false,"date":"2009-12-12 18:57"},{"_id":"604","normalized_imdb_id":435623,"title":"Conversations with Other Women","year":2005,"rating":0,"dubious":false,"date":"2009-12-28 03:55"},{"_id":"674","normalized_imdb_id":121766,"title":"Star Wars: Episode III - Revenge of the Sith","year":2005,"rating":1,"dubious":true,"date":"2010-01-26 22:47"},{"_id":"685","normalized_imdb_id":240200,"title":"Water","year":2005,"rating":3,"dubious":false,"date":"2010-02-18 09:34"},{"_id":"706","normalized_imdb_id":360717,"title":"King Kong","year":2005,"rating":0,"dubious":false,"date":"2010-03-25 12:43"},{"_id":"735","normalized_imdb_id":451094,"title":"Chinjeolhan geumjassi","year":2005,"rating":3,"dubious":false,"date":"2010-04-12 13:54"},{"_id":"756","normalized_imdb_id":395972,"title":"North Country","year":2005,"rating":3,"dubious":false,"date":"2010-04-25 08:47"},{"_id":"788","normalized_imdb_id":380599,"title":"Oliver Twist","year":2005,"rating":1,"dubious":false,"date":"2010-05-11 23:49"},{"_id":"816","normalized_imdb_id":405422,"title":"40 Year Old Virgin, The","year":2005,"rating":3,"dubious":false,"date":"2010-05-18 16:00"},{"_id":"825","normalized_imdb_id":397101,"title":"Skeleton Key, The","year":2005,"rating":3,"dubious":false,"date":"2010-05-21 20:45"},{"_id":"865","normalized_imdb_id":412019,"title":"Broken Flowers","year":2005,"rating":3,"dubious":false,"date":"2010-05-28 06:11"},{"_id":"914","normalized_imdb_id":402894,"title":"Casanova","year":2005,"rating":3,"dubious":false,"date":"2010-06-07 03:44"},{"_id":"1018","normalized_imdb_id":478160,"title":"Into Great Silence","year":2005,"rating":0,"dubious":false,"date":"2010-07-01 16:26"},{"_id":"1044","normalized_imdb_id":426578,"title":"Sophie Scholl - Die letzten Tage","year":2005,"rating":3,"dubious":false,"date":"2010-07-03 18:03"},{"_id":"1059","normalized_imdb_id":386140,"title":"Legend of Zorro, The","year":2005,"rating":1,"dubious":false,"date":"2010-07-04 04:17"},{"_id":"1072","normalized_imdb_id":407304,"title":"War of the Worlds","year":2005,"rating":3,"dubious":false,"date":"2010-07-04 05:16"},{"_id":"1074","normalized_imdb_id":385307,"title":"Miss Congeniality 2: Armed & Fabulous","year":2005,"rating":3,"dubious":false,"date":"2010-07-04 05:23"},{"_id":"1470","normalized_imdb_id":363771,"title":"Chronicles of Narnia: The Lion, the Witch and the Wardrobe, The","year":2005,"rating":3,"dubious":false,"date":"2010-08-15 15:55"},{"_id":"1422","normalized_imdb_id":417658,"title":"Factotum","year":2005,"rating":1,"dubious":false,"date":"2010-08-01 18:35"},{"_id":"1425","normalized_imdb_id":432348,"title":"Saw II","year":2005,"rating":3,"dubious":true,"date":"2010-08-02 18:20"},{"_id":"1275","normalized_imdb_id":473753,"title":"Angel-A","year":2005,"rating":0,"dubious":false,"date":"2010-07-23 01:06"},{"_id":"1149","normalized_imdb_id":419706,"title":"Doom","year":2005,"rating":1,"dubious":false,"date":"2010-07-10 06:33"},{"_id":"1150","normalized_imdb_id":320661,"title":"Kingdom of Heaven","year":2005,"rating":0,"dubious":false,"date":"2010-07-10 06:35"},{"_id":"1587","normalized_imdb_id":422778,"title":"Muppets' Wizard of Oz, The","year":2005,"rating":3,"dubious":false,"date":"2010-09-22 04:59"},{"_id":"1532","normalized_imdb_id":402399,"title":"New World, The","year":2005,"rating":3,"dubious":true,"date":"2010-09-05 16:58"},{"_id":"1496","normalized_imdb_id":424287,"title":"Mostly Unfabulous Social Life of Ethan Green, The","year":2005,"rating":3,"dubious":true,"date":"2010-08-23 22:22"},{"_id":"1390","normalized_imdb_id":121164,"title":"Corpse Bride","year":2005,"rating":3,"dubious":true,"date":"2010-07-27 21:53"},{"_id":"1396","normalized_imdb_id":425123,"title":"Just Like Heaven","year":2005,"rating":3,"dubious":false,"date":"2010-07-28 08:37"},{"_id":"1627","normalized_imdb_id":402022,"title":"AEon Flux","year":2005,"rating":3,"dubious":false,"date":"2010-10-03 08:49"},{"_id":"1642","normalized_imdb_id":387131,"title":"Constant Gardener, The","year":2005,"rating":3,"dubious":false,"date":"2010-10-05 02:57"},{"_id":"1644","normalized_imdb_id":439817,"title":"Sun, The","year":2005,"rating":0,"dubious":false,"date":"2010-10-05 21:36"},{"_id":"1656","normalized_imdb_id":388125,"title":"In Her Shoes","year":2005,"rating":3,"dubious":false,"date":"2010-10-09 15:51"},{"_id":"1729","normalized_imdb_id":367089,"title":"Squid and the Whale, The","year":2005,"rating":2,"dubious":false,"date":"2010-11-02 23:40"},{"_id":"1753","normalized_imdb_id":348333,"title":"Waiting...","year":2005,"rating":3,"dubious":false,"date":"2010-11-14 19:40"},{"_id":"1761","normalized_imdb_id":456912,"title":"A Bittersweet Life (Dalkomhan insaeng)","year":2005,"rating":2,"dubious":true,"date":"2010-11-18 01:12"},{"_id":"1819","normalized_imdb_id":405325,"title":"Sky High","year":2005,"rating":3,"dubious":false,"date":"2010-12-03 10:44"},{"_id":"1872","normalized_imdb_id":366627,"title":"Jacket, The","year":2005,"rating":2,"dubious":false,"date":"2010-12-25 09:04"},{"_id":"1907","normalized_imdb_id":424774,"title":"Adventures of Sharkboy and Lavagirl 3-D, The","year":2005,"rating":1,"dubious":false,"date":"2011-01-13 05:48"},{"_id":"1913","normalized_imdb_id":342258,"title":"Danny the dog","year":2005,"rating":1,"dubious":false,"date":"2011-01-15 14:06"},{"_id":"1922","normalized_imdb_id":403508,"title":"Sisterhood of the Traveling Pants, The","year":2005,"rating":3,"dubious":false,"date":"2011-01-18 22:22"},{"_id":"1951","normalized_imdb_id":421229,"title":"Mrs Palfrey at The Claremont","year":2005,"rating":3,"dubious":false,"date":"2011-02-02 07:56"},{"_id":"2024","normalized_imdb_id":478988,"title":"Call of Cthulhu, The","year":2005,"rating":0,"dubious":false,"date":"2011-02-14 14:14"},{"_id":"2037","normalized_imdb_id":388795,"title":"Brokeback Mountain","year":2005,"rating":2,"dubious":false,"date":"2011-02-15 12:33"},{"_id":"2072","normalized_imdb_id":399295,"title":"Lord of War","year":2005,"rating":2,"dubious":false,"date":"2011-02-26 16:54"},{"_id":"2233","normalized_imdb_id":415978,"title":"Me and You and Everyone We Know","year":2005,"rating":3,"dubious":false,"date":"2011-04-23 19:31"},{"_id":"2254","normalized_imdb_id":1016268,"title":"Enron: The Smartest Guys in the Room","year":2005,"rating":1,"dubious":false,"date":"2011-04-30 19:46"},{"_id":"2270","normalized_imdb_id":396269,"title":"Wedding Crashers","year":2005,"rating":3,"dubious":false,"date":"2011-05-04 15:20"},{"_id":"2290","normalized_imdb_id":421239,"title":"Red Eye","year":2005,"rating":3,"dubious":false,"date":"2011-05-14 01:09"},{"_id":"2291","normalized_imdb_id":338427,"title":"Shopgirl","year":2005,"rating":2,"dubious":false,"date":"2011-05-14 02:00"},{"_id":"2292","normalized_imdb_id":421054,"title":"Domino","year":2005,"rating":3,"dubious":false,"date":"2011-05-14 06:15"},{"_id":"2293","normalized_imdb_id":434124,"title":"Kinky Boots","year":2005,"rating":3,"dubious":true,"date":"2011-05-14 15:40"},{"_id":"2334","normalized_imdb_id":330373,"title":"Harry Potter and the Goblet of Fire","year":2005,"rating":1,"dubious":false,"date":"2011-05-24 21:30"},{"_id":"2351","normalized_imdb_id":352248,"title":"Cinderella Man","year":2005,"rating":2,"dubious":false,"date":"2011-05-26 21:52"},{"_id":"2369","normalized_imdb_id":471834,"title":"Nana","year":2005,"rating":3,"dubious":false,"date":"2011-06-01 21:39"},{"_id":"2398","normalized_imdb_id":361693,"title":"Happy Endings","year":2005,"rating":3,"dubious":false,"date":"2011-06-13 16:38"},{"_id":"2412","normalized_imdb_id":294870,"title":"Rent","year":2005,"rating":3,"dubious":false,"date":"2011-06-18 06:53"},{"_id":"2417","normalized_imdb_id":367594,"title":"Charlie and the Chocolate Factory","year":2005,"rating":3,"dubious":false,"date":"2011-06-20 03:33"},{"_id":"2458","normalized_imdb_id":474361,"title":"Sisters in Law","year":2005,"rating":3,"dubious":false,"date":"2011-06-29 13:40"},{"_id":"2509","normalized_imdb_id":408790,"title":"Flightplan","year":2005,"rating":3,"dubious":false,"date":"2011-07-07 08:24"},{"_id":"2511","normalized_imdb_id":369994,"title":"Strangers with Candy","year":2005,"rating":3,"dubious":false,"date":"2011-07-08 05:02"},{"_id":"2518","normalized_imdb_id":369441,"title":"Fun with Dick and Jane","year":2005,"rating":3,"dubious":false,"date":"2011-07-12 01:15"},{"_id":"2522","normalized_imdb_id":382628,"title":"Dark Water","year":2005,"rating":3,"dubious":false,"date":"2011-07-12 21:35"},{"_id":"2541","normalized_imdb_id":120667,"title":"Fantastic Four","year":2005,"rating":1,"dubious":false,"date":"2011-07-15 20:07"},{"_id":"2559","normalized_imdb_id":423409,"title":"Tristram Shandy: A Cock and Bull Story","year":2005,"rating":2,"dubious":false,"date":"2011-07-20 16:51"},{"_id":"2568","normalized_imdb_id":357110,"title":"Ballad of Jack and Rose, The","year":2005,"rating":3,"dubious":false,"date":"2011-07-23 19:06"},{"_id":"2575","normalized_imdb_id":393162,"title":"Coach Carter","year":2005,"rating":3,"dubious":false,"date":"2011-07-27 03:43"},{"_id":"2603","normalized_imdb_id":423651,"title":"Fingersmith","year":2005,"rating":3,"dubious":false,"date":"2011-08-12 02:45"},{"_id":"2630","normalized_imdb_id":410764,"title":"Tideland","year":2005,"rating":3,"dubious":false,"date":"2011-08-21 16:16"},{"_id":"2687","normalized_imdb_id":342272,"title":"Dear Wendy","year":2005,"rating":1,"dubious":false,"date":"2011-09-16 16:29"},{"_id":"2739","normalized_imdb_id":443536,"title":"Hoodwinked!","year":2005,"rating":3,"dubious":false,"date":"2011-10-05 18:34"},{"_id":"2933","normalized_imdb_id":420015,"title":"Nine Lives","year":2005,"rating":3,"dubious":false,"date":"2011-12-16 01:22"},{"_id":"3046","normalized_imdb_id":402158,"title":"L'empire des loups","year":2005,"rating":3,"dubious":false,"date":"2012-02-14 22:45"},{"_id":"3053","normalized_imdb_id":385700,"title":"Final Fantasy VII: Advent Children","year":2005,"rating":3,"dubious":false,"date":"2012-02-18 09:04"},{"_id":"3149","normalized_imdb_id":351283,"title":"Madagascar","year":2005,"rating":0,"dubious":false,"date":"2012-03-28 00:50"},{"_id":"3184","normalized_imdb_id":446719,"title":"Isolation","year":2005,"rating":1,"dubious":false,"date":"2012-04-15 02:14"},{"_id":"3237","normalized_imdb_id":397535,"title":"Memoirs of a Geisha","year":2005,"rating":3,"dubious":false,"date":"2012-05-08 19:07"},{"_id":"3246","normalized_imdb_id":410097,"title":"Hustle & Flow","year":2005,"rating":3,"dubious":true,"date":"2012-05-11 18:39"},{"_id":"3266","normalized_imdb_id":366780,"title":"MirrorMask","year":2005,"rating":3,"dubious":false,"date":"2012-05-17 21:11"},{"_id":"3430","normalized_imdb_id":377107,"title":"Proof","year":2005,"rating":3,"dubious":false,"date":"2012-07-17 04:53"},{"_id":"3619","normalized_imdb_id":356910,"title":"Mr. & Mrs. Smith","year":2005,"rating":2,"dubious":false,"date":"2012-10-21 04:30"},{"_id":"3628","normalized_imdb_id":395584,"title":"Devil's Rejects, The","year":2005,"rating":3,"dubious":false,"date":"2012-10-26 21:15"},{"_id":"3631","normalized_imdb_id":435665,"title":"House of the Dead 2","year":2005,"rating":3,"dubious":true,"date":"2012-10-27 10:55"},{"_id":"3660","normalized_imdb_id":377109,"title":"Ring Two, The","year":2005,"rating":3,"dubious":false,"date":"2012-11-05 22:13"},{"_id":"3677","normalized_imdb_id":396652,"title":"Ice Princess","year":2005,"rating":3,"dubious":false,"date":"2012-11-19 02:38"},{"_id":"3697","normalized_imdb_id":360486,"title":"Constantine","year":2005,"rating":1,"dubious":false,"date":"2012-11-28 20:31"},{"_id":"3698","normalized_imdb_id":450278,"title":"Hostel","year":2005,"rating":1,"dubious":false,"date":"2012-11-29 05:51"},{"_id":"3727","normalized_imdb_id":443295,"title":"Yours, Mine and Ours","year":2005,"rating":3,"dubious":false,"date":"2012-12-07 03:43"},{"_id":"3767","normalized_imdb_id":372532,"title":"Wedding Date, The","year":2005,"rating":3,"dubious":false,"date":"2012-12-21 21:04"},{"_id":"3843","normalized_imdb_id":441041,"title":"Legion of the Dead","year":2005,"rating":3,"dubious":false,"date":"2013-01-20 06:48"},{"_id":"3991","normalized_imdb_id":379725,"title":"Capote","year":2005,"rating":3,"dubious":true,"date":"2013-03-17 22:43"},{"_id":"3995","normalized_imdb_id":388500,"title":"Beauty Shop","year":2005,"rating":3,"dubious":false,"date":"2013-03-19 01:21"},{"_id":"4039","normalized_imdb_id":450982,"title":"Barbie: Fairytopia","year":2005,"rating":3,"dubious":false,"date":"2013-04-09 18:02"},{"_id":"4077","normalized_imdb_id":416320,"title":"Match Point","year":2005,"rating":3,"dubious":false,"date":"2013-04-22 00:23"},{"_id":"4113","normalized_imdb_id":386588,"title":"Hitch","year":2005,"rating":2,"dubious":false,"date":"2013-04-28 06:59"},{"_id":"4118","normalized_imdb_id":408961,"title":"Kids in America","year":2005,"rating":3,"dubious":false,"date":"2013-05-02 02:12"},{"_id":"4150","normalized_imdb_id":417001,"title":"Must Love Dogs","year":2005,"rating":2,"dubious":false,"date":"2013-05-21 22:25"},{"_id":"4171","normalized_imdb_id":448120,"title":"Single White Female 2: The Psycho","year":2005,"rating":3,"dubious":false,"date":"2013-05-27 21:56"},{"_id":"4178","normalized_imdb_id":417385,"title":"Twelve and Holding","year":2005,"rating":3,"dubious":false,"date":"2013-05-29 17:06"},{"_id":"4218","normalized_imdb_id":383222,"title":"BloodRayne","year":2005,"rating":3,"dubious":true,"date":"2013-06-07 19:13"},{"_id":"4229","normalized_imdb_id":398375,"title":"Rumor Has It...","year":2005,"rating":3,"dubious":false,"date":"2013-06-11 01:51"},{"_id":"4233","normalized_imdb_id":382992,"title":"Stealth","year":2005,"rating":1,"dubious":false,"date":"2013-06-12 08:18"},{"_id":"4234","normalized_imdb_id":473105,"title":"Vampire Bats","year":2005,"rating":3,"dubious":false,"date":"2013-06-12 20:09"},{"_id":"4254","normalized_imdb_id":414387,"title":"Pride and Prejudice","year":2005,"rating":3,"dubious":false,"date":"2013-06-21 01:37"},{"_id":"4339","normalized_imdb_id":415833,"title":"Hate Crime","year":2005,"rating":2,"dubious":false,"date":"2013-07-12 15:23"},{"_id":"4352","normalized_imdb_id":492571,"title":"Bratz: Rock Angelz","year":2005,"rating":3,"dubious":false,"date":"2013-07-15 22:45"},{"_id":"5455","normalized_imdb_id":421238,"title":"Proposition, The","year":2005,"rating":1,"dubious":false,"date":"2014-05-08 17:44"},{"_id":"4386","normalized_imdb_id":432291,"title":"Fog, The","year":2005,"rating":3,"dubious":false,"date":"2013-07-23 15:03"},{"_id":"4454","normalized_imdb_id":372122,"title":"Adam & Steve","year":2005,"rating":3,"dubious":true,"date":"2013-08-08 08:05"},{"_id":"4518","normalized_imdb_id":408306,"title":"Munich","year":2005,"rating":1,"dubious":false,"date":"2013-08-29 03:43"},{"_id":"4528","normalized_imdb_id":404032,"title":"Exorcism of Emily Rose, The","year":2005,"rating":3,"dubious":false,"date":"2013-08-31 20:27"},{"_id":"4593","normalized_imdb_id":374536,"title":"Bewitched","year":2005,"rating":3,"dubious":false,"date":"2013-09-16 01:40"},{"_id":"4629","normalized_imdb_id":419294,"title":"Three Burials of Melquiades Estrada, The","year":2005,"rating":3,"dubious":false,"date":"2013-09-26 23:02"},{"_id":"4648","normalized_imdb_id":421528,"title":"20 centimetros","year":2005,"rating":3,"dubious":false,"date":"2013-09-30 07:26"},{"_id":"4676","normalized_imdb_id":257516,"title":"Cursed","year":2005,"rating":3,"dubious":false,"date":"2013-10-07 19:28"},{"_id":"4724","normalized_imdb_id":445620,"title":"Paradise Now","year":2005,"rating":1,"dubious":false,"date":"2013-10-20 17:10"},{"_id":"4688","normalized_imdb_id":384806,"title":"Amityville Horror, The","year":2005,"rating":3,"dubious":false,"date":"2013-10-12 17:16"},{"_id":"4711","normalized_imdb_id":362165,"title":"Son of the Mask","year":2005,"rating":1,"dubious":false,"date":"2013-10-18 16:36"},{"_id":"4718","normalized_imdb_id":489134,"title":"Last Order: Final Fantasy VII","year":2005,"rating":0,"dubious":false,"date":"2013-10-20 06:08"},{"_id":"4747","normalized_imdb_id":439478,"title":"Boynton Beach Club","year":2005,"rating":3,"dubious":false,"date":"2013-10-28 20:30"},{"_id":"4761","normalized_imdb_id":422015,"title":"Le couperet","year":2005,"rating":3,"dubious":false,"date":"2013-11-01 15:58"},{"_id":"4769","normalized_imdb_id":375210,"title":"White Noise","year":2005,"rating":1,"dubious":false,"date":"2013-11-02 10:09"},{"_id":"4783","normalized_imdb_id":369053,"title":"Separate Lies","year":2005,"rating":1,"dubious":false,"date":"2013-11-05 19:25"},{"_id":"4798","normalized_imdb_id":444653,"title":"Keeping Mum","year":2005,"rating":3,"dubious":false,"date":"2013-11-08 16:26"},{"_id":"4795","normalized_imdb_id":388482,"title":"Transporter 2","year":2005,"rating":1,"dubious":false,"date":"2013-11-07 08:09"},{"_id":"4834","normalized_imdb_id":419773,"title":"Gespenster","year":2005,"rating":3,"dubious":false,"date":"2013-11-15 05:58"},{"_id":"4961","normalized_imdb_id":418455,"title":"Adam's Apples","year":2005,"rating":0,"dubious":false,"date":"2013-12-17 23:52"},{"_id":"4968","normalized_imdb_id":357507,"title":"Boogeyman","year":2005,"rating":2,"dubious":false,"date":"2013-12-20 22:10"},{"_id":"4992","normalized_imdb_id":449092,"title":"Rings","year":2005,"rating":1,"dubious":false,"date":"2013-12-26 19:28"},{"_id":"5012","normalized_imdb_id":428038,"title":"Sweet Land","year":2005,"rating":3,"dubious":false,"date":"2013-12-30 05:03"},{"_id":"5030","normalized_imdb_id":423382,"title":"Tjenare kungen","year":2005,"rating":3,"dubious":false,"date":"2014-01-02 22:55"},{"_id":"5046","normalized_imdb_id":415679,"title":"Boy Eats Girl","year":2005,"rating":2,"dubious":false,"date":"2014-01-05 21:09"},{"_id":"5051","normalized_imdb_id":349349,"title":"Die You Zombie Bastards!","year":2005,"rating":1,"dubious":false,"date":"2014-01-06 21:17"},{"_id":"5059","normalized_imdb_id":415167,"title":"Mortuary","year":2005,"rating":3,"dubious":false,"date":"2014-01-10 16:54"},{"_id":"5103","normalized_imdb_id":355702,"title":"Lords of Dogtown","year":2005,"rating":2,"dubious":true,"date":"2014-01-24 19:56"},{"_id":"5112","normalized_imdb_id":406375,"title":"Zathura: A Space Adventure","year":2005,"rating":0,"dubious":false,"date":"2014-01-28 22:37"},{"_id":"5166","normalized_imdb_id":480345,"title":"Barbie and the Magic of Pegasus","year":2005,"rating":3,"dubious":false,"date":"2014-02-14 21:34"},{"_id":"5178","normalized_imdb_id":420509,"title":"Aura, The","year":2005,"rating":1,"dubious":false,"date":"2014-02-16 19:38"},{"_id":"5252","normalized_imdb_id":457489,"title":"Star Wars: Revelations","year":2005,"rating":3,"dubious":false,"date":"2014-03-07 23:10"},{"_id":"5302","normalized_imdb_id":361089,"title":"Valiant","year":2005,"rating":1,"dubious":false,"date":"2014-03-19 20:13"},{"_id":"5372","normalized_imdb_id":455577,"title":"Turtles Are Surprisingly Fast Swimmers","year":2005,"rating":3,"dubious":false,"date":"2014-04-08 08:56"},{"_id":"5395","normalized_imdb_id":466405,"title":"Gekijoban XXXHolic Manatsu no yoru no yume","year":2005,"rating":3,"dubious":false,"date":"2014-04-14 02:22"},{"_id":"5463","normalized_imdb_id":451957,"title":"Urban Legends: Bloody Mary","year":2005,"rating":3,"dubious":false,"date":"2014-05-12 17:47"},{"_id":"5498","normalized_imdb_id":384573,"title":"Swimmers","year":2005,"rating":3,"dubious":false,"date":"2014-05-24 07:16"},{"_id":"5524","normalized_imdb_id":368222,"title":"Romance & Cigarettes","year":2005,"rating":3,"dubious":false,"date":"2014-06-03 09:12"},{"_id":"5547","normalized_imdb_id":478976,"title":"Bad Reputation","year":2005,"rating":3,"dubious":false,"date":"2014-06-07 22:45"},{"_id":"5697","normalized_imdb_id":401085,"title":"C.R.A.Z.Y.","year":2005,"rating":3,"dubious":true,"date":"2014-08-13 20:04"},{"_id":"5747","normalized_imdb_id":422272,"title":"FrÁgiles (Fragile)","year":2005,"rating":3,"dubious":false,"date":"2014-09-14 20:28"},{"_id":"5800","normalized_imdb_id":399146,"title":"A History of Violence","year":2005,"rating":3,"dubious":false,"date":"2014-10-03 02:53"},{"_id":"5886","normalized_imdb_id":451966,"title":"Violin, The","year":2005,"rating":1,"dubious":false,"date":"2014-10-30 19:34"},{"_id":"6014","normalized_imdb_id":411195,"title":"Breakfast on Pluto","year":2005,"rating":2,"dubious":true,"date":"2015-01-04 00:41"},{"_id":"6121","normalized_imdb_id":456630,"title":"Rinne","year":2005,"rating":3,"dubious":false,"date":"2015-02-23 23:04"},{"_id":"6170","normalized_imdb_id":432325,"title":"Die Hohle des gelben Hundes","year":2005,"rating":3,"dubious":false,"date":"2015-03-28 11:53"},{"_id":"6212","normalized_imdb_id":406158,"title":"Prize Winner of Defiance, Ohio, The","year":2005,"rating":3,"dubious":false,"date":"2015-04-19 21:25"},{"_id":"6403","normalized_imdb_id":398165,"title":"Longest Yard, The","year":2005,"rating":1,"dubious":false,"date":"2015-08-13 03:40"},{"_id":"6414","normalized_imdb_id":451829,"title":"Funky Forest: The First Contact","year":2005,"rating":3,"dubious":false,"date":"2015-08-20 22:35"},{"_id":"6485","normalized_imdb_id":412922,"title":"Little Manhattan","year":2005,"rating":3,"dubious":false,"date":"2015-10-11 03:10"},{"_id":"6503","normalized_imdb_id":395699,"title":"Pacifier, The","year":2005,"rating":3,"dubious":false,"date":"2015-10-20 19:40"},{"_id":"6568","normalized_imdb_id":397065,"title":"House of Wax","year":2005,"rating":2,"dubious":false,"date":"2015-12-02 18:59"},{"_id":"6575","normalized_imdb_id":369735,"title":"Monster-in-Law","year":2005,"rating":0,"dubious":false,"date":"2015-12-04 20:21"},{"_id":"6640","normalized_imdb_id":357277,"title":"Elektra","year":2005,"rating":3,"dubious":false,"date":"2015-12-28 08:22"},{"_id":"7075","normalized_imdb_id":441761,"title":"Free Zone","year":2005,"rating":3,"dubious":false,"date":"2016-08-27 12:36"},{"_id":"7184","normalized_imdb_id":443231,"title":"Rofuto","year":2005,"rating":3,"dubious":false,"date":"2016-10-11 07:47"},{"_id":"7193","normalized_imdb_id":371606,"title":"Chicken Little","year":2005,"rating":1,"dubious":false,"date":"2016-10-12 16:09"},{"_id":"7198","normalized_imdb_id":416315,"title":"Wolf Creek","year":2005,"rating":3,"dubious":false,"date":"2016-10-14 07:33"},{"_id":"7248","normalized_imdb_id":468795,"title":"Linda Linda Linda","year":2005,"rating":3,"dubious":false,"date":"2016-11-07 21:49"},{"_id":"7256","normalized_imdb_id":413573,"title":"Grey's Anatomy","year":2005,"rating":0,"dubious":true,"date":"2016-11-11 17:51"},{"_id":"7266","normalized_imdb_id":756522,"title":"Little Einsteins","year":2005,"rating":1,"dubious":false,"date":"2016-11-16 12:58"},{"_id":"7390","normalized_imdb_id":475169,"title":"13 Tzameti","year":2005,"rating":1,"dubious":false,"date":"2017-01-12 09:54"},{"_id":"7396","normalized_imdb_id":438575,"title":"West Bank Story","year":2005,"rating":1,"dubious":false,"date":"2017-01-14 09:51"},{"_id":"7529","normalized_imdb_id":380623,"title":"Perfect Man, The","year":2005,"rating":3,"dubious":false,"date":"2017-03-24 12:36"},{"_id":"7539","normalized_imdb_id":430105,"title":"Four Brothers","year":2005,"rating":1,"dubious":false,"date":"2017-03-30 01:42"},{"_id":"7625","normalized_imdb_id":384286,"title":"Cry_Wolf","year":2005,"rating":3,"dubious":true,"date":"2017-05-21 11:46"},{"_id":"8139","normalized_imdb_id":401398,"title":"Kronk's New Groove","year":2005,"rating":3,"dubious":false,"date":"2018-04-02 17:26"},{"_id":"8390","normalized_imdb_id":395251,"title":"Producers, The","year":2005,"rating":0,"dubious":false,"date":"2018-08-30 01:43"},{"_id":"8415","normalized_imdb_id":467421,"title":"Twitches","year":2005,"rating":1,"dubious":false,"date":"2018-09-17 20:07"},{"_id":"8453","normalized_imdb_id":382810,"title":"Little Fish","year":2005,"rating":3,"dubious":false,"date":"2018-10-22 21:42"},{"_id":"8476","normalized_imdb_id":373450,"title":"Where the Truth Lies","year":2005,"rating":3,"dubious":false,"date":"2018-11-06 18:24"},{"_id":"8519","normalized_imdb_id":411098,"title":"All the Invisible Children","year":2005,"rating":3,"dubious":false,"date":"2018-12-12 15:57"},{"_id":"8532","normalized_imdb_id":371257,"title":"Stay","year":2005,"rating":1,"dubious":false,"date":"2018-12-14 22:48"},{"_id":"8537","normalized_imdb_id":414951,"title":"Quiet, The","year":2005,"rating":3,"dubious":false,"date":"2018-12-14 23:11"},{"_id":"8544","normalized_imdb_id":402115,"title":"Just Sex and Nothing Else","year":2005,"rating":2,"dubious":false,"date":"2018-12-14 23:24"},{"_id":"8550","normalized_imdb_id":401385,"title":"Say Uncle","year":2005,"rating":2,"dubious":false,"date":"2018-12-14 23:39"},{"_id":"8664","normalized_imdb_id":418239,"title":"Tickets","year":2005,"rating":0,"dubious":true,"date":"2019-03-04 14:19"},{"_id":"8908","normalized_imdb_id":368709,"title":"Elizabethtown","year":2005,"rating":3,"dubious":true,"date":"2019-11-24 18:43"},{"_id":"9092","normalized_imdb_id":312004,"title":"Wallace & Gromit: The Curse of the Were-Rabbit","year":2005,"rating":1,"dubious":false,"date":"2020-04-25 20:01"},{"_id":"9139","normalized_imdb_id":428856,"title":"La moustache","year":2005,"rating":2,"dubious":false,"date":"2020-05-19 06:41"},{"_id":"9550","normalized_imdb_id":431641,"title":"Azumi 2: Death or Love","year":2005,"rating":3,"dubious":false,"date":"2021-03-14 21:04"},{"_id":"9745","normalized_imdb_id":377309,"title":"Survival Island","year":2005,"rating":2,"dubious":false,"date":"2021-04-30 08:40"},{"_id":"9959","normalized_imdb_id":449869,"title":"Chandramukhi","year":2005,"rating":2,"dubious":false,"date":"2021-07-11 09:21"},{"_id":"10","normalized_imdb_id":387808,"title":"Idiocracy","year":2006,"rating":1,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"144","normalized_imdb_id":458352,"title":"Devil Wears Prada, The","year":2006,"rating":3,"dubious":false,"date":"2008-08-04 04:49"},{"_id":"167","normalized_imdb_id":383574,"title":"Pirates of the Caribbean: Dead Man's Chest","year":2006,"rating":2,"dubious":false,"date":"2008-08-14 18:48"},{"_id":"171","normalized_imdb_id":472160,"title":"Penelope","year":2006,"rating":3,"dubious":false,"date":"2008-08-22 02:26"},{"_id":"198","normalized_imdb_id":454921,"title":"Pursuit of Happyness, The","year":2006,"rating":0,"dubious":false,"date":"2008-10-06 05:32"},{"_id":"215","normalized_imdb_id":457939,"title":"Holiday, The","year":2006,"rating":3,"dubious":false,"date":"2008-11-02 22:46"},{"_id":"221","normalized_imdb_id":381061,"title":"Casino Royale","year":2006,"rating":1,"dubious":false,"date":"2008-11-24 08:51"},{"_id":"224","normalized_imdb_id":284363,"title":"I Served the King of England","year":2006,"rating":1,"dubious":false,"date":"2008-12-02 09:48"},{"_id":"284","normalized_imdb_id":443455,"title":"Brand Upon The Brain!","year":2006,"rating":3,"dubious":false,"date":"2009-02-18 23:58"},{"_id":"289","normalized_imdb_id":479884,"title":"Crank","year":2006,"rating":0,"dubious":false,"date":"2009-02-25 16:13"},{"_id":"290","normalized_imdb_id":422720,"title":"Marie Antoinette","year":2006,"rating":3,"dubious":false,"date":"2009-02-26 00:23"},{"_id":"317","normalized_imdb_id":376994,"title":"X-Men: The Last Stand","year":2006,"rating":3,"dubious":false,"date":"2009-05-01 23:44"},{"_id":"332","normalized_imdb_id":206634,"title":"Children of Men","year":2006,"rating":3,"dubious":false,"date":"2009-05-30 03:32"},{"_id":"366","normalized_imdb_id":441909,"title":"Volver","year":2006,"rating":3,"dubious":false,"date":"2009-07-13 10:14"},{"_id":"370","normalized_imdb_id":416496,"title":"Bandidas","year":2006,"rating":3,"dubious":false,"date":"2009-07-13 11:03"},{"_id":"372","normalized_imdb_id":477095,"title":"Starter for 10","year":2006,"rating":2,"dubious":false,"date":"2009-07-14 19:16"},{"_id":"416","normalized_imdb_id":477347,"title":"Night at the Museum","year":2006,"rating":3,"dubious":false,"date":"2009-08-05 20:14"},{"_id":"421","normalized_imdb_id":457430,"title":"El laberinto del fauno (Pan's Labyrinth)","year":2006,"rating":3,"dubious":false,"date":"2009-08-07 01:10"},{"_id":"521","normalized_imdb_id":404203,"title":"Little Children","year":2006,"rating":3,"dubious":false,"date":"2009-10-05 05:43"},{"_id":"530","normalized_imdb_id":907657,"title":"Once","year":2006,"rating":2,"dubious":false,"date":"2009-10-24 15:14"},{"_id":"559","normalized_imdb_id":420223,"title":"Stranger Than Fiction","year":2006,"rating":3,"dubious":false,"date":"2009-12-11 01:49"},{"_id":"603","normalized_imdb_id":492481,"title":"Puccini for Beginners","year":2006,"rating":3,"dubious":false,"date":"2009-12-28 03:53"},{"_id":"615","normalized_imdb_id":437800,"title":"Akeelah and the Bee","year":2006,"rating":3,"dubious":false,"date":"2009-12-28 21:33"},{"_id":"627","normalized_imdb_id":454945,"title":"She's the Man","year":2006,"rating":3,"dubious":false,"date":"2009-12-29 23:43"},{"_id":"648","normalized_imdb_id":449059,"title":"Little Miss Sunshine","year":2006,"rating":3,"dubious":false,"date":"2010-01-20 00:23"},{"_id":"650","normalized_imdb_id":460732,"title":"Caffeine","year":2006,"rating":3,"dubious":false,"date":"2010-01-20 00:30"},{"_id":"653","normalized_imdb_id":499537,"title":"Offside","year":2006,"rating":3,"dubious":false,"date":"2010-01-20 00:51"},{"_id":"725","normalized_imdb_id":460989,"title":"Wind That Shakes the Barley, The","year":2006,"rating":1,"dubious":false,"date":"2010-04-06 21:59"},{"_id":"736","normalized_imdb_id":454776,"title":"Amazing Grace","year":2006,"rating":1,"dubious":false,"date":"2010-04-15 05:19"},{"_id":"762","normalized_imdb_id":490822,"title":"Bring It On: All or Nothing","year":2006,"rating":3,"dubious":false,"date":"2010-04-26 15:26"},{"_id":"791","normalized_imdb_id":405094,"title":"Das Leben Der Anderen","year":2006,"rating":0,"dubious":false,"date":"2010-05-12 00:05"},{"_id":"793","normalized_imdb_id":384537,"title":"Silent Hill","year":2006,"rating":3,"dubious":false,"date":"2010-05-12 23:16"},{"_id":"830","normalized_imdb_id":389557,"title":"Zwartboek","year":2006,"rating":3,"dubious":false,"date":"2010-05-25 11:39"},{"_id":"893","normalized_imdb_id":443543,"title":"Illusionist, The","year":2006,"rating":0,"dubious":false,"date":"2010-06-03 21:34"},{"_id":"920","normalized_imdb_id":483726,"title":"Man of the Year","year":2006,"rating":1,"dubious":false,"date":"2010-06-08 10:08"},{"_id":"921","normalized_imdb_id":460829,"title":"Inland Empire","year":2006,"rating":3,"dubious":false,"date":"2010-06-08 12:34"},{"_id":"923","normalized_imdb_id":779982,"title":"Black Sheep","year":2006,"rating":1,"dubious":false,"date":"2010-06-08 17:50"},{"_id":"934","normalized_imdb_id":859765,"title":"Still Life (Sanxia haoren)","year":2006,"rating":2,"dubious":false,"date":"2010-06-12 07:42"},{"_id":"938","normalized_imdb_id":408985,"title":"Last Holiday","year":2006,"rating":3,"dubious":false,"date":"2010-06-12 09:48"},{"_id":"976","normalized_imdb_id":435706,"title":"Nina's Heavenly Delights","year":2006,"rating":3,"dubious":false,"date":"2010-06-24 16:30"},{"_id":"1022","normalized_imdb_id":479917,"title":"For the Love of a Child","year":2006,"rating":3,"dubious":false,"date":"2010-07-02 23:11"},{"_id":"1189","normalized_imdb_id":783238,"title":"Dead Girl, The","year":2006,"rating":3,"dubious":false,"date":"2010-07-18 03:42"},{"_id":"1347","normalized_imdb_id":380066,"title":"Woods, The","year":2006,"rating":3,"dubious":false,"date":"2010-07-26 20:22"},{"_id":"1558","normalized_imdb_id":463034,"title":"You, Me and Dupree","year":2006,"rating":1,"dubious":false,"date":"2010-09-09 01:41"},{"_id":"1481","normalized_imdb_id":435680,"title":"Kidulthood","year":2006,"rating":3,"dubious":false,"date":"2010-08-18 22:12"},{"_id":"1302","normalized_imdb_id":493430,"title":"Jackass Number Two","year":2006,"rating":1,"dubious":false,"date":"2010-07-25 04:04"},{"_id":"1415","normalized_imdb_id":407887,"title":"Departed, The","year":2006,"rating":1,"dubious":false,"date":"2010-08-01 13:05"},{"_id":"1605","normalized_imdb_id":832958,"title":"On the Trail of Igor Rizzi","year":2006,"rating":0,"dubious":false,"date":"2010-09-23 15:05"},{"_id":"1505","normalized_imdb_id":934427,"title":"Liu hao chukou (Exit No. 6)","year":2006,"rating":3,"dubious":false,"date":"2010-08-26 13:55"},{"_id":"1271","normalized_imdb_id":416449,"title":"300","year":2006,"rating":0,"dubious":false,"date":"2010-07-23 01:03"},{"_id":"1102","normalized_imdb_id":436331,"title":"Friends with Money","year":2006,"rating":3,"dubious":false,"date":"2010-07-05 04:02"},{"_id":"1138","normalized_imdb_id":425210,"title":"Lucky Number Slevin","year":2006,"rating":1,"dubious":false,"date":"2010-07-10 03:12"},{"_id":"1147","normalized_imdb_id":449010,"title":"Eragon","year":2006,"rating":1,"dubious":false,"date":"2010-07-10 06:25"},{"_id":"1152","normalized_imdb_id":364955,"title":"Art School Confidential","year":2006,"rating":3,"dubious":true,"date":"2010-07-10 22:55"},{"_id":"1523","normalized_imdb_id":375785,"title":"Gray Matters","year":2006,"rating":3,"dubious":false,"date":"2010-09-02 21:06"},{"_id":"1442","normalized_imdb_id":367027,"title":"Shortbus","year":2006,"rating":3,"dubious":false,"date":"2010-08-05 21:05"},{"_id":"1596","normalized_imdb_id":447854,"title":"Bambi II","year":2006,"rating":1,"dubious":false,"date":"2010-09-23 00:24"},{"_id":"1449","normalized_imdb_id":460792,"title":"Fast Food Nation","year":2006,"rating":3,"dubious":false,"date":"2010-08-08 04:13"},{"_id":"1581","normalized_imdb_id":438097,"title":"Ice Age: The Meltdown","year":2006,"rating":1,"dubious":false,"date":"2010-09-19 22:18"},{"_id":"1542","normalized_imdb_id":446442,"title":"A Few Days in September","year":2006,"rating":3,"dubious":false,"date":"2010-09-07 02:59"},{"_id":"1489","normalized_imdb_id":460721,"title":"Big Bad Swim, The","year":2006,"rating":3,"dubious":false,"date":"2010-08-21 16:40"},{"_id":"1412","normalized_imdb_id":436697,"title":"Queen, The","year":2006,"rating":3,"dubious":true,"date":"2010-07-31 19:39"},{"_id":"1615","normalized_imdb_id":470765,"title":"For Your Consideration","year":2006,"rating":3,"dubious":false,"date":"2010-09-29 22:27"},{"_id":"1665","normalized_imdb_id":430634,"title":"Stick It","year":2006,"rating":3,"dubious":false,"date":"2010-10-16 17:04"},{"_id":"1702","normalized_imdb_id":439815,"title":"Slither","year":2006,"rating":3,"dubious":false,"date":"2010-10-27 01:07"},{"_id":"1719","normalized_imdb_id":473514,"title":"Mulberry Street","year":2006,"rating":1,"dubious":false,"date":"2010-11-01 17:32"},{"_id":"1811","normalized_imdb_id":475394,"title":"Smokin' Aces","year":2006,"rating":3,"dubious":true,"date":"2010-12-01 15:28"},{"_id":"1853","normalized_imdb_id":383060,"title":"Zoom","year":2006,"rating":3,"dubious":false,"date":"2010-12-15 22:48"},{"_id":"1864","normalized_imdb_id":851578,"title":"Paprika","year":2006,"rating":3,"dubious":true,"date":"2010-12-20 18:32"},{"_id":"1873","normalized_imdb_id":454082,"title":"Black Christmas","year":2006,"rating":3,"dubious":false,"date":"2010-12-25 17:23"},{"_id":"1888","normalized_imdb_id":396171,"title":"Perfume: The Story of a Murderer","year":2006,"rating":3,"dubious":false,"date":"2011-01-02 16:41"},{"_id":"1894","normalized_imdb_id":417148,"title":"Snakes on a Plane","year":2006,"rating":3,"dubious":false,"date":"2011-01-04 19:48"},{"_id":"1898","normalized_imdb_id":482546,"title":"Miss Potter","year":2006,"rating":3,"dubious":false,"date":"2011-01-12 01:58"},{"_id":"1910","normalized_imdb_id":439289,"title":"Running with Scissors","year":2006,"rating":3,"dubious":false,"date":"2011-01-14 06:46"},{"_id":"1927","normalized_imdb_id":405336,"title":"Southland Tales","year":2006,"rating":3,"dubious":false,"date":"2011-01-23 03:14"},{"_id":"1937","normalized_imdb_id":414993,"title":"Fountain, The","year":2006,"rating":3,"dubious":true,"date":"2011-01-28 23:42"},{"_id":"1946","normalized_imdb_id":317219,"title":"Cars","year":2006,"rating":1,"dubious":true,"date":"2011-01-29 23:33"},{"_id":"2002","normalized_imdb_id":831888,"title":"Tekkon kinkurito","year":2006,"rating":0,"dubious":false,"date":"2011-02-07 05:59"},{"_id":"2026","normalized_imdb_id":457510,"title":"Nacho Libre","year":2006,"rating":0,"dubious":false,"date":"2011-02-14 14:23"},{"_id":"2036","normalized_imdb_id":482571,"title":"Prestige, The","year":2006,"rating":1,"dubious":false,"date":"2011-02-15 12:14"},{"_id":"2057","normalized_imdb_id":855729,"title":"Times and Winds","year":2006,"rating":3,"dubious":false,"date":"2011-02-18 23:12"},{"_id":"2089","normalized_imdb_id":454848,"title":"Inside Man","year":2006,"rating":3,"dubious":true,"date":"2011-03-05 20:23"},{"_id":"2117","normalized_imdb_id":466665,"title":"Architect, The","year":2006,"rating":3,"dubious":false,"date":"2011-03-13 22:35"},{"_id":"2199","normalized_imdb_id":768116,"title":"Hula Girls","year":2006,"rating":3,"dubious":false,"date":"2011-04-19 03:15"},{"_id":"2260","normalized_imdb_id":464061,"title":"I'm Reed Fish","year":2006,"rating":2,"dubious":false,"date":"2011-04-30 21:11"},{"_id":"2277","normalized_imdb_id":487195,"title":"Bonneville","year":2006,"rating":3,"dubious":false,"date":"2011-05-05 23:06"},{"_id":"2297","normalized_imdb_id":417614,"title":"Dreamland","year":2006,"rating":3,"dubious":false,"date":"2011-05-16 18:32"},{"_id":"2339","normalized_imdb_id":473488,"title":"A Guide to Recognizing Your Saints","year":2006,"rating":1,"dubious":false,"date":"2011-05-25 18:23"},{"_id":"2340","normalized_imdb_id":343737,"title":"Good Shepherd, The","year":2006,"rating":0,"dubious":false,"date":"2011-05-25 18:28"},{"_id":"2359","normalized_imdb_id":468489,"title":"Half Nelson","year":2006,"rating":3,"dubious":false,"date":"2011-05-29 20:57"},{"_id":"2360","normalized_imdb_id":405296,"title":"A Scanner Darkly","year":2006,"rating":1,"dubious":false,"date":"2011-05-29 21:01"},{"_id":"2405","normalized_imdb_id":487503,"title":"Page Turner, The","year":2006,"rating":3,"dubious":false,"date":"2011-06-17 11:24"},{"_id":"2498","normalized_imdb_id":465551,"title":"Notes on a Scandal","year":2006,"rating":3,"dubious":false,"date":"2011-07-07 06:44"},{"_id":"2525","normalized_imdb_id":420087,"title":"A Prairie Home Companion","year":2006,"rating":3,"dubious":false,"date":"2011-07-13 06:39"},{"_id":"2527","normalized_imdb_id":460791,"title":"Fall, The","year":2006,"rating":3,"dubious":true,"date":"2011-07-13 18:46"},{"_id":"2532","normalized_imdb_id":370032,"title":"Ultraviolet","year":2006,"rating":1,"dubious":false,"date":"2011-07-13 23:56"},{"_id":"2538","normalized_imdb_id":406816,"title":"Guardian, The","year":2006,"rating":1,"dubious":false,"date":"2011-07-14 13:49"},{"_id":"2566","normalized_imdb_id":462309,"title":"Gigolos, The","year":2006,"rating":1,"dubious":false,"date":"2011-07-23 17:46"},{"_id":"2570","normalized_imdb_id":888019,"title":"Five Across the Eyes","year":2006,"rating":3,"dubious":false,"date":"2011-07-25 22:29"},{"_id":"2572","normalized_imdb_id":479647,"title":"Bon Cop, Bad Cop","year":2006,"rating":1,"dubious":false,"date":"2011-07-27 02:31"},{"_id":"2579","normalized_imdb_id":758794,"title":"We Are Marshall","year":2006,"rating":1,"dubious":false,"date":"2011-07-28 00:00"},{"_id":"2580","normalized_imdb_id":498380,"title":"Letters from Iwo Jima","year":2006,"rating":1,"dubious":false,"date":"2011-07-28 06:04"},{"_id":"2598","normalized_imdb_id":451176,"title":"Quinceanera","year":2006,"rating":3,"dubious":false,"date":"2011-08-10 07:39"},{"_id":"2610","normalized_imdb_id":457655,"title":"After the Wedding","year":2006,"rating":2,"dubious":false,"date":"2011-08-14 00:46"},{"_id":"2615","normalized_imdb_id":454931,"title":"Requiem","year":2006,"rating":3,"dubious":false,"date":"2011-08-14 07:51"},{"_id":"2616","normalized_imdb_id":477139,"title":"Wristcutters: A Love Story","year":2006,"rating":1,"dubious":false,"date":"2011-08-15 02:03"},{"_id":"2713","normalized_imdb_id":816520,"title":"Return To Halloweentown","year":2006,"rating":3,"dubious":false,"date":"2011-09-26 05:58"},{"_id":"2800","normalized_imdb_id":429727,"title":"Il caimano (The Caiman)","year":2006,"rating":3,"dubious":false,"date":"2011-10-26 09:35"},{"_id":"2802","normalized_imdb_id":497137,"title":"I'm a Cyborg, But That's OK","year":2006,"rating":3,"dubious":false,"date":"2011-10-27 05:02"},{"_id":"2898","normalized_imdb_id":354899,"title":"Science of Sleep, The","year":2006,"rating":3,"dubious":false,"date":"2011-12-04 03:47"},{"_id":"2900","normalized_imdb_id":489010,"title":"A Crime","year":2006,"rating":1,"dubious":false,"date":"2011-12-04 16:57"},{"_id":"2932","normalized_imdb_id":473074,"title":"Gymnast, The","year":2006,"rating":3,"dubious":false,"date":"2011-12-16 01:12"},{"_id":"2941","normalized_imdb_id":424345,"title":"Clerks II","year":2006,"rating":3,"dubious":true,"date":"2011-12-19 01:14"},{"_id":"2980","normalized_imdb_id":772154,"title":"Apart From That","year":2006,"rating":3,"dubious":false,"date":"2012-01-10 10:24"},{"_id":"3005","normalized_imdb_id":464049,"title":"History Boys, The","year":2006,"rating":1,"dubious":false,"date":"2012-01-27 09:00"},{"_id":"3014","normalized_imdb_id":804513,"title":"Rainbow Song","year":2006,"rating":3,"dubious":false,"date":"2012-01-28 19:57"},{"_id":"3018","normalized_imdb_id":461612,"title":"Warau Mikaeru","year":2006,"rating":3,"dubious":false,"date":"2012-01-28 20:08"},{"_id":"3051","normalized_imdb_id":473444,"title":"Curse of the Golden Flower","year":2006,"rating":2,"dubious":true,"date":"2012-02-18 08:17"},{"_id":"3054","normalized_imdb_id":401711,"title":"Paris je t'aime","year":2006,"rating":3,"dubious":true,"date":"2012-02-18 19:44"},{"_id":"3080","normalized_imdb_id":478724,"title":"I Do","year":2006,"rating":3,"dubious":false,"date":"2012-02-29 12:48"},{"_id":"3127","normalized_imdb_id":876294,"title":"Zombie Diaries, The","year":2006,"rating":3,"dubious":false,"date":"2012-03-18 03:58"},{"_id":"3168","normalized_imdb_id":493459,"title":"This Film Is Not Yet Rated","year":2006,"rating":3,"dubious":false,"date":"2012-04-06 21:35"},{"_id":"3193","normalized_imdb_id":818940,"title":"Love & Suicide","year":2006,"rating":3,"dubious":false,"date":"2012-04-19 18:45"},{"_id":"3199","normalized_imdb_id":433412,"title":"Material Girls","year":2006,"rating":3,"dubious":false,"date":"2012-04-22 23:54"},{"_id":"3326","normalized_imdb_id":417225,"title":"Idlewild","year":2006,"rating":3,"dubious":false,"date":"2012-06-07 04:37"},{"_id":"3335","normalized_imdb_id":429591,"title":"Aquamarine","year":2006,"rating":3,"dubious":false,"date":"2012-06-09 18:11"},{"_id":"3460","normalized_imdb_id":446046,"title":"Take the Lead","year":2006,"rating":3,"dubious":false,"date":"2012-08-08 18:59"},{"_id":"3465","normalized_imdb_id":769508,"title":"In Paris","year":2006,"rating":1,"dubious":false,"date":"2012-08-11 14:56"},{"_id":"3571","normalized_imdb_id":455967,"title":"John Tucker Must Die","year":2006,"rating":3,"dubious":false,"date":"2012-10-04 00:16"},{"_id":"3643","normalized_imdb_id":433386,"title":"Grudge 2, The","year":2006,"rating":3,"dubious":false,"date":"2012-11-01 18:08"},{"_id":"3661","normalized_imdb_id":385880,"title":"Monster House","year":2006,"rating":3,"dubious":false,"date":"2012-11-06 01:54"},{"_id":"3760","normalized_imdb_id":471030,"title":"Red Road","year":2006,"rating":3,"dubious":false,"date":"2012-12-20 17:13"},{"_id":"3769","normalized_imdb_id":405508,"title":"Rang De Basanti","year":2006,"rating":3,"dubious":false,"date":"2012-12-24 08:42"},{"_id":"3784","normalized_imdb_id":429589,"title":"Ant Bully, The","year":2006,"rating":2,"dubious":false,"date":"2012-12-29 21:24"},{"_id":"3785","normalized_imdb_id":765458,"title":"Hogfather","year":2006,"rating":3,"dubious":true,"date":"2012-12-29 21:28"},{"_id":"3786","normalized_imdb_id":400717,"title":"Open Season","year":2006,"rating":1,"dubious":false,"date":"2012-12-29 23:10"},{"_id":"3812","normalized_imdb_id":424095,"title":"Flushed Away","year":2006,"rating":0,"dubious":false,"date":"2013-01-08 19:50"},{"_id":"3830","normalized_imdb_id":1273816,"title":"University of Illinois vs. a Mummy, The","year":2006,"rating":3,"dubious":false,"date":"2013-01-15 02:17"},{"_id":"3834","normalized_imdb_id":450506,"title":"Suburban Mayhem","year":2006,"rating":3,"dubious":false,"date":"2013-01-15 03:20"},{"_id":"3849","normalized_imdb_id":468492,"title":"Host, The","year":2006,"rating":3,"dubious":false,"date":"2013-01-22 17:41"},{"_id":"3957","normalized_imdb_id":855805,"title":"Farval Falkenberg","year":2006,"rating":0,"dubious":false,"date":"2013-03-07 18:04"},{"_id":"3959","normalized_imdb_id":824316,"title":"Dor","year":2006,"rating":3,"dubious":false,"date":"2013-03-08 12:14"},{"_id":"4130","normalized_imdb_id":387877,"title":"Black Dahlia","year":2006,"rating":1,"dubious":false,"date":"2013-05-12 11:40"},{"_id":"3988","normalized_imdb_id":444112,"title":"Avenue Montaigne","year":2006,"rating":3,"dubious":false,"date":"2013-03-17 19:02"},{"_id":"4202","normalized_imdb_id":398913,"title":"DOA: Dead or Alive","year":2006,"rating":3,"dubious":false,"date":"2013-06-02 11:47"},{"_id":"4227","normalized_imdb_id":452637,"title":"Lady in the Water","year":2006,"rating":2,"dubious":false,"date":"2013-06-10 16:49"},{"_id":"4236","normalized_imdb_id":465925,"title":"Brother Bear 2","year":2006,"rating":3,"dubious":false,"date":"2013-06-13 01:35"},{"_id":"4288","normalized_imdb_id":348150,"title":"Superman Returns","year":2006,"rating":1,"dubious":true,"date":"2013-06-29 02:42"},{"_id":"4293","normalized_imdb_id":457572,"title":"Fido","year":2006,"rating":2,"dubious":false,"date":"2013-06-29 23:00"},{"_id":"4312","normalized_imdb_id":448124,"title":"Snow cake","year":2006,"rating":3,"dubious":false,"date":"2013-07-05 18:29"},{"_id":"4401","normalized_imdb_id":460740,"title":"Cashback","year":2006,"rating":3,"dubious":false,"date":"2013-07-26 01:32"},{"_id":"4398","normalized_imdb_id":323120,"title":"Loving Annabelle","year":2006,"rating":3,"dubious":false,"date":"2013-07-25 20:00"},{"_id":"4424","normalized_imdb_id":412798,"title":"Half Light","year":2006,"rating":3,"dubious":false,"date":"2013-07-30 21:07"},{"_id":"4500","normalized_imdb_id":491738,"title":"Psych","year":2006,"rating":3,"dubious":false,"date":"2013-08-23 12:55"},{"_id":"4595","normalized_imdb_id":414982,"title":"Final Destination 3","year":2006,"rating":3,"dubious":false,"date":"2013-09-16 18:16"},{"_id":"4625","normalized_imdb_id":446755,"title":"Painted Veil, The","year":2006,"rating":3,"dubious":true,"date":"2013-09-24 14:40"},{"_id":"4626","normalized_imdb_id":450259,"title":"Blood Diamond","year":2006,"rating":1,"dubious":false,"date":"2013-09-24 15:10"},{"_id":"4665","normalized_imdb_id":455857,"title":"When a Stranger Calls","year":2006,"rating":3,"dubious":false,"date":"2013-10-06 11:51"},{"_id":"4690","normalized_imdb_id":444628,"title":"Fay Grim","year":2006,"rating":3,"dubious":false,"date":"2013-10-13 07:49"},{"_id":"4694","normalized_imdb_id":790781,"title":"Wendy Wu: Homecoming Warrior","year":2006,"rating":3,"dubious":false,"date":"2013-10-13 19:56"},{"_id":"4729","normalized_imdb_id":344854,"title":"Arthur and the Invisibles","year":2006,"rating":0,"dubious":false,"date":"2013-10-22 18:39"},{"_id":"4802","normalized_imdb_id":778631,"title":"Brave Story","year":2006,"rating":1,"dubious":false,"date":"2013-11-09 12:39"},{"_id":"4819","normalized_imdb_id":490166,"title":"London To Brighton","year":2006,"rating":3,"dubious":false,"date":"2013-11-13 19:00"},{"_id":"4830","normalized_imdb_id":863091,"title":"Mukhsin","year":2006,"rating":3,"dubious":false,"date":"2013-11-15 05:41"},{"_id":"4848","normalized_imdb_id":876154,"title":"To Have and to Hold","year":2006,"rating":3,"dubious":false,"date":"2013-11-17 19:46"},{"_id":"4856","normalized_imdb_id":410297,"title":"Lake House, The","year":2006,"rating":3,"dubious":true,"date":"2013-11-19 20:29"},{"_id":"4892","normalized_imdb_id":452594,"title":"Break Up, The","year":2006,"rating":1,"dubious":false,"date":"2013-11-30 20:09"},{"_id":"4899","normalized_imdb_id":423169,"title":"Sherrybaby","year":2006,"rating":3,"dubious":true,"date":"2013-12-01 22:27"},{"_id":"4918","normalized_imdb_id":409182,"title":"Poseidon","year":2006,"rating":2,"dubious":false,"date":"2013-12-06 00:21"},{"_id":"4939","normalized_imdb_id":445935,"title":"Bordertown","year":2006,"rating":3,"dubious":false,"date":"2013-12-11 19:15"},{"_id":"5016","normalized_imdb_id":457275,"title":"Altered","year":2006,"rating":0,"dubious":false,"date":"2013-12-31 04:31"},{"_id":"5049","normalized_imdb_id":770739,"title":"Dead & Deader","year":2006,"rating":1,"dubious":false,"date":"2014-01-06 17:23"},{"_id":"5088","normalized_imdb_id":470705,"title":"Bug","year":2006,"rating":3,"dubious":false,"date":"2014-01-19 09:28"},{"_id":"5158","normalized_imdb_id":443453,"title":"Borat: Cultural Learnings of America for Make Benefit Glorious Nation of Kazakhstan","year":2006,"rating":1,"dubious":false,"date":"2014-02-10 05:20"},{"_id":"5191","normalized_imdb_id":382625,"title":"Da Vinci Code, The","year":2006,"rating":1,"dubious":false,"date":"2014-02-22 13:37"},{"_id":"5213","normalized_imdb_id":827517,"title":"Reprise","year":2006,"rating":1,"dubious":false,"date":"2014-02-28 01:03"},{"_id":"5233","normalized_imdb_id":424880,"title":"Candy","year":2006,"rating":3,"dubious":true,"date":"2014-03-05 14:35"},{"_id":"5248","normalized_imdb_id":807840,"title":"Elephants Dream","year":2006,"rating":0,"dubious":false,"date":"2014-03-07 14:26"},{"_id":"5249","normalized_imdb_id":475293,"title":"High School Musical","year":2006,"rating":3,"dubious":false,"date":"2014-03-07 19:46"},{"_id":"5262","normalized_imdb_id":462485,"title":"Poultrygeist: Night of the Chicken Dead","year":2006,"rating":1,"dubious":false,"date":"2014-03-09 16:19"},{"_id":"5287","normalized_imdb_id":809407,"title":"A fost sau n-a fost?","year":2006,"rating":1,"dubious":false,"date":"2014-03-16 18:42"},{"_id":"5288","normalized_imdb_id":476013,"title":"Hello Sister, Goodbye Life","year":2006,"rating":3,"dubious":false,"date":"2014-03-16 19:37"},{"_id":"5306","normalized_imdb_id":472043,"title":"Apocalypto","year":2006,"rating":3,"dubious":false,"date":"2014-03-21 03:19"},{"_id":"5358","normalized_imdb_id":389860,"title":"Click","year":2006,"rating":3,"dubious":false,"date":"2014-04-04 11:45"},{"_id":"5424","normalized_imdb_id":455596,"title":"Librarian: Return to King Solomon's Mines, The","year":2006,"rating":1,"dubious":false,"date":"2014-04-29 14:05"},{"_id":"5511","normalized_imdb_id":427969,"title":"Hollywoodland","year":2006,"rating":2,"dubious":false,"date":"2014-05-29 05:47"},{"_id":"5519","normalized_imdb_id":489007,"title":"Cow Belles","year":2006,"rating":3,"dubious":true,"date":"2014-05-31 14:14"},{"_id":"5549","normalized_imdb_id":859594,"title":"Barbie in the 12 Dancing Princesses","year":2006,"rating":3,"dubious":false,"date":"2014-06-08 05:42"},{"_id":"5552","normalized_imdb_id":383216,"title":"Pink Panther, The","year":2006,"rating":1,"dubious":false,"date":"2014-06-09 03:10"},{"_id":"5585","normalized_imdb_id":441774,"title":"Lonely Hearts","year":2006,"rating":3,"dubious":false,"date":"2014-06-23 02:18"},{"_id":"5606","normalized_imdb_id":317919,"title":"Mission: Impossible III","year":2006,"rating":1,"dubious":false,"date":"2014-06-30 05:05"},{"_id":"5675","normalized_imdb_id":452624,"title":"Good German, The","year":2006,"rating":1,"dubious":false,"date":"2014-08-03 23:45"},{"_id":"5704","normalized_imdb_id":483022,"title":"Kamome Diner","year":2006,"rating":3,"dubious":false,"date":"2014-08-18 03:55"},{"_id":"5815","normalized_imdb_id":443489,"title":"Dreamgirls","year":2006,"rating":3,"dubious":false,"date":"2014-10-07 19:56"},{"_id":"5834","normalized_imdb_id":499455,"title":"Day Night Day Night","year":2006,"rating":3,"dubious":true,"date":"2014-10-12 01:43"},{"_id":"5840","normalized_imdb_id":456554,"title":"Grandma's Boy","year":2006,"rating":3,"dubious":false,"date":"2014-10-15 03:19"},{"_id":"5868","normalized_imdb_id":795338,"title":"Barbie Diaries, The","year":2006,"rating":3,"dubious":false,"date":"2014-10-24 08:17"},{"_id":"5925","normalized_imdb_id":449467,"title":"Babel","year":2006,"rating":3,"dubious":true,"date":"2014-11-17 10:17"},{"_id":"6038","normalized_imdb_id":464029,"title":"Grbavica","year":2006,"rating":3,"dubious":false,"date":"2015-01-11 20:24"},{"_id":"6137","normalized_imdb_id":494199,"title":"5ive Girls","year":2006,"rating":3,"dubious":false,"date":"2015-03-08 04:18"},{"_id":"6151","normalized_imdb_id":480025,"title":"This is England","year":2006,"rating":3,"dubious":false,"date":"2015-03-16 14:48"},{"_id":"6168","normalized_imdb_id":494271,"title":"Unknown Woman, The","year":2006,"rating":3,"dubious":false,"date":"2015-03-28 10:50"},{"_id":"6194","normalized_imdb_id":384793,"title":"Accepted","year":2006,"rating":1,"dubious":false,"date":"2015-04-09 14:39"},{"_id":"6352","normalized_imdb_id":475944,"title":"Covenant, The","year":2006,"rating":3,"dubious":true,"date":"2015-07-14 06:02"},{"_id":"6401","normalized_imdb_id":486551,"title":"Beerfest","year":2006,"rating":3,"dubious":false,"date":"2015-08-12 10:35"},{"_id":"6445","normalized_imdb_id":877368,"title":"Tales from the Grudge","year":2006,"rating":3,"dubious":true,"date":"2015-09-13 01:27"},{"_id":"6450","normalized_imdb_id":489270,"title":"Saw III","year":2006,"rating":3,"dubious":false,"date":"2015-09-13 17:08"},{"_id":"6456","normalized_imdb_id":486731,"title":"U","year":2006,"rating":3,"dubious":false,"date":"2015-09-16 09:00"},{"_id":"6526","normalized_imdb_id":443431,"title":"Another Gay Movie","year":2006,"rating":3,"dubious":false,"date":"2015-11-01 14:33"},{"_id":"6574","normalized_imdb_id":455612,"title":"Madea's Family Reunion","year":2006,"rating":0,"dubious":false,"date":"2015-12-04 19:58"},{"_id":"6762","normalized_imdb_id":405676,"title":"All The King's Men","year":2006,"rating":1,"dubious":false,"date":"2016-03-06 04:01"},{"_id":"6869","normalized_imdb_id":476298,"title":"Madeinusa","year":2006,"rating":3,"dubious":false,"date":"2016-05-02 22:35"},{"_id":"6903","normalized_imdb_id":1105263,"title":"Bleach: Memories of Nobody","year":2006,"rating":3,"dubious":false,"date":"2016-05-28 18:06"},{"_id":"7038","normalized_imdb_id":643110,"title":"Masters of Horror Pick Me Up","year":2006,"rating":2,"dubious":false,"date":"2016-08-11 07:59"},{"_id":"7039","normalized_imdb_id":643106,"title":"Masters of Horror Haeckel's Tale","year":2006,"rating":0,"dubious":false,"date":"2016-08-12 06:10"},{"_id":"7044","normalized_imdb_id":757061,"title":"Masters of Horror Imprint","year":2006,"rating":0,"dubious":false,"date":"2016-08-14 22:31"},{"_id":"7070","normalized_imdb_id":782399,"title":"Masters of Horror Family","year":2006,"rating":2,"dubious":true,"date":"2016-08-26 05:06"},{"_id":"7085","normalized_imdb_id":817401,"title":"Masters of Horror The V Word","year":2006,"rating":0,"dubious":true,"date":"2016-08-31 13:42"},{"_id":"7088","normalized_imdb_id":454841,"title":"Hills Have Eyes, The","year":2006,"rating":3,"dubious":false,"date":"2016-09-01 11:15"},{"_id":"7090","normalized_imdb_id":779496,"title":"Masters of Horror Pelts","year":2006,"rating":1,"dubious":true,"date":"2016-09-01 13:12"},{"_id":"7096","normalized_imdb_id":833098,"title":"Masters of Horror The Screwfly Solution","year":2006,"rating":3,"dubious":false,"date":"2016-09-06 07:32"},{"_id":"7103","normalized_imdb_id":817400,"title":"Masters of Horror Sounds Like","year":2006,"rating":0,"dubious":false,"date":"2016-09-07 06:24"},{"_id":"7114","normalized_imdb_id":785532,"title":"Masters of Horror Pro-Life","year":2006,"rating":3,"dubious":false,"date":"2016-09-13 05:27"},{"_id":"7117","normalized_imdb_id":805420,"title":"Masters of Horror Valerie on the Stairs","year":2006,"rating":3,"dubious":false,"date":"2016-09-15 06:32"},{"_id":"7264","normalized_imdb_id":493093,"title":"Hannah Montana","year":2006,"rating":1,"dubious":true,"date":"2016-11-15 19:55"},{"_id":"7315","normalized_imdb_id":461826,"title":"Peliculas para no dormir: Adivina quien soy","year":2006,"rating":3,"dubious":false,"date":"2016-12-05 14:35"},{"_id":"7299","normalized_imdb_id":477311,"title":"Peliculas para no dormir: Para entrar a vivir","year":2006,"rating":3,"dubious":true,"date":"2016-11-27 12:09"},{"_id":"7303","normalized_imdb_id":449144,"title":"Peliculas para no dormir: La culpa","year":2006,"rating":3,"dubious":false,"date":"2016-11-28 15:28"},{"_id":"7309","normalized_imdb_id":460897,"title":"Peliculas para no dormir: Regreso a Moira","year":2006,"rating":1,"dubious":true,"date":"2016-12-01 16:37"},{"_id":"7366","normalized_imdb_id":414853,"title":"Barnyard","year":2006,"rating":3,"dubious":false,"date":"2016-12-30 04:45"},{"_id":"7550","normalized_imdb_id":477072,"title":"Prince & Me II: The Royal Wedding, The","year":2006,"rating":3,"dubious":false,"date":"2017-04-01 10:02"},{"_id":"7567","normalized_imdb_id":768132,"title":"Monmon the Water Spider","year":2006,"rating":0,"dubious":false,"date":"2017-04-12 17:34"},{"_id":"7596","normalized_imdb_id":462590,"title":"Step Up","year":2006,"rating":3,"dubious":false,"date":"2017-04-30 02:36"},{"_id":"7624","normalized_imdb_id":489682,"title":"Conversations with God","year":2006,"rating":1,"dubious":false,"date":"2017-05-21 11:42"},{"_id":"7637","normalized_imdb_id":366548,"title":"Happy Feet","year":2006,"rating":3,"dubious":false,"date":"2017-05-21 13:24"},{"_id":"7679","normalized_imdb_id":362120,"title":"Scary Movie 4","year":2006,"rating":3,"dubious":false,"date":"2017-06-07 21:48"},{"_id":"7793","normalized_imdb_id":449089,"title":"RV","year":2006,"rating":3,"dubious":false,"date":"2017-09-01 04:36"},{"_id":"7812","normalized_imdb_id":365830,"title":"Tenacious D in the Pick of Destiny","year":2006,"rating":0,"dubious":false,"date":"2017-09-22 01:44"},{"_id":"7977","normalized_imdb_id":385726,"title":"Glory Road","year":2006,"rating":3,"dubious":false,"date":"2018-01-03 14:56"},{"_id":"8033","normalized_imdb_id":807965,"title":"La vie secrète des gens heureux","year":2006,"rating":1,"dubious":false,"date":"2018-02-05 04:07"},{"_id":"8060","normalized_imdb_id":951297,"title":"Que tan lejos","year":2006,"rating":3,"dubious":false,"date":"2018-02-16 22:06"},{"_id":"8412","normalized_imdb_id":456111,"title":"La noche de los girasoles","year":2006,"rating":2,"dubious":true,"date":"2018-09-13 21:58"},{"_id":"8529","normalized_imdb_id":830896,"title":"Ferfiakt","year":2006,"rating":1,"dubious":false,"date":"2018-12-14 22:30"},{"_id":"8549","normalized_imdb_id":823158,"title":"Wedding Wars","year":2006,"rating":2,"dubious":false,"date":"2018-12-14 23:38"},{"_id":"8644","normalized_imdb_id":495596,"title":"Tales from Earthsea","year":2006,"rating":1,"dubious":false,"date":"2019-02-21 18:16"},{"_id":"8723","normalized_imdb_id":413268,"title":"Sideline Secrets","year":2006,"rating":3,"dubious":true,"date":"2019-04-28 16:17"},{"_id":"8871","normalized_imdb_id":430357,"title":"Miami Vice","year":2006,"rating":1,"dubious":false,"date":"2019-10-19 21:11"},{"_id":"9091","normalized_imdb_id":437857,"title":"Behind the Mask: The Rise of Leslie Vernon","year":2006,"rating":1,"dubious":false,"date":"2020-04-24 02:57"},{"_id":"9119","normalized_imdb_id":463985,"title":"Fast and the Furious: Tokyo Drift , The","year":2006,"rating":1,"dubious":false,"date":"2020-05-06 00:23"},{"_id":"9188","normalized_imdb_id":785002,"title":"Heartbreak Hotel","year":2006,"rating":1,"dubious":false,"date":"2020-06-30 11:47"},{"_id":"9190","normalized_imdb_id":450345,"title":"Wicker Man, The","year":2006,"rating":1,"dubious":false,"date":"2020-07-05 06:28"},{"_id":"9203","normalized_imdb_id":491747,"title":"Away from Her","year":2006,"rating":3,"dubious":false,"date":"2020-07-14 09:02"},{"_id":"9237","normalized_imdb_id":393735,"title":"Shaggy Dog, The","year":2006,"rating":2,"dubious":false,"date":"2020-08-14 03:46"},{"_id":"9272","normalized_imdb_id":415306,"title":"Talladega Nights: The Ballad of Ricky Bobby","year":2006,"rating":2,"dubious":false,"date":"2020-09-14 19:21"},{"_id":"9277","normalized_imdb_id":427229,"title":"failure to launch","year":2006,"rating":1,"dubious":false,"date":"2020-09-18 08:12"},{"_id":"9296","normalized_imdb_id":469641,"title":"World Trade Center","year":2006,"rating":2,"dubious":false,"date":"2020-10-08 01:36"},{"_id":"9471","normalized_imdb_id":450121,"title":"Rosso come il cielo","year":2006,"rating":1,"dubious":false,"date":"2021-02-07 07:49"},{"_id":"9472","normalized_imdb_id":327084,"title":"Over the Hedge","year":2006,"rating":3,"dubious":true,"date":"2021-02-07 18:23"},{"_id":"9724","normalized_imdb_id":479143,"title":"Rocky Balboa","year":2006,"rating":1,"dubious":false,"date":"2021-04-29 17:32"},{"_id":"9742","normalized_imdb_id":462329,"title":"Hard Corps, The","year":2006,"rating":3,"dubious":false,"date":"2021-04-29 20:25"},{"_id":"9744","normalized_imdb_id":458471,"title":"Second in Command","year":2006,"rating":0,"dubious":false,"date":"2021-04-29 21:21"},{"_id":"9783","normalized_imdb_id":417056,"title":"Pledge This!","year":2006,"rating":3,"dubious":false,"date":"2021-05-02 12:45"},{"_id":"10035","normalized_imdb_id":453467,"title":"Deja Vu","year":2006,"rating":1,"dubious":false,"date":"2021-09-05 13:27"},{"_id":"10011","normalized_imdb_id":492506,"title":"Wordplay","year":2006,"rating":3,"dubious":false,"date":"2021-08-14 23:15"},{"_id":"10122","normalized_imdb_id":425326,"title":"Outsourced","year":2006,"rating":1,"dubious":false,"date":"2021-11-09 01:19"},{"_id":"7","normalized_imdb_id":1028528,"title":"Death Proof","year":2007,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"8","normalized_imdb_id":471711,"title":"Futurama: Bender's Big Score","year":2007,"rating":2,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"9","normalized_imdb_id":467406,"title":"Juno","year":2007,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"11","normalized_imdb_id":435705,"title":"Next","year":2007,"rating":2,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"12","normalized_imdb_id":758771,"title":"Outlaw","year":2007,"rating":1,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"14","normalized_imdb_id":382932,"title":"Ratatouille","year":2007,"rating":1,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"16","normalized_imdb_id":293564,"title":"Rush Hour 3","year":2007,"rating":1,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"17","normalized_imdb_id":432021,"title":"Resident Evil: Extinction","year":2007,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"20","normalized_imdb_id":476964,"title":"Brave One, The","year":2007,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"25","normalized_imdb_id":756683,"title":"Man from Earth, The","year":2007,"rating":1,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"26","normalized_imdb_id":413267,"title":"Shrek the Third","year":2007,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"27","normalized_imdb_id":477071,"title":"Premonition","year":2007,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"29","normalized_imdb_id":1077258,"title":"Planet Terror","year":2007,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"30","normalized_imdb_id":411061,"title":"88 Minutes","year":2007,"rating":1,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"103","normalized_imdb_id":825232,"title":"Bucket List, The","year":2007,"rating":1,"dubious":false,"date":"2008-07-30 10:38"},{"_id":"166","normalized_imdb_id":884819,"title":"Wool 100%","year":2007,"rating":3,"dubious":false,"date":"2008-08-14 18:33"},{"_id":"169","normalized_imdb_id":449088,"title":"Pirates of the Caribbean: At World's End","year":2007,"rating":3,"dubious":false,"date":"2008-08-15 07:47"},{"_id":"177","normalized_imdb_id":469494,"title":"There Will Be Blood","year":2007,"rating":0,"dubious":false,"date":"2008-09-05 15:21"},{"_id":"180","normalized_imdb_id":478311,"title":"Knocked Up","year":2007,"rating":3,"dubious":false,"date":"2008-09-10 03:46"},{"_id":"188","normalized_imdb_id":427327,"title":"Hairspray","year":2007,"rating":3,"dubious":false,"date":"2008-09-20 04:34"},{"_id":"240","normalized_imdb_id":845046,"title":"Son of Rambow","year":2007,"rating":1,"dubious":false,"date":"2008-12-14 14:35"},{"_id":"295","normalized_imdb_id":808417,"title":"Persepolis","year":2007,"rating":3,"dubious":false,"date":"2009-03-05 00:37"},{"_id":"312","normalized_imdb_id":861739,"title":"Tropa de Elite","year":2007,"rating":3,"dubious":false,"date":"2009-04-18 23:38"},{"_id":"313","normalized_imdb_id":758758,"title":"Into the Wild","year":2007,"rating":1,"dubious":false,"date":"2009-04-19 22:36"},{"_id":"327","normalized_imdb_id":481141,"title":"No Reservations","year":2007,"rating":3,"dubious":false,"date":"2009-05-23 18:29"},{"_id":"335","normalized_imdb_id":486655,"title":"Stardust","year":2007,"rating":3,"dubious":false,"date":"2009-06-06 19:42"},{"_id":"351","normalized_imdb_id":425112,"title":"Hot Fuzz","year":2007,"rating":1,"dubious":false,"date":"2009-06-22 05:23"},{"_id":"373","normalized_imdb_id":373889,"title":"Harry Potter and the Order of the Phoenix","year":2007,"rating":3,"dubious":false,"date":"2009-07-14 19:17"},{"_id":"381","normalized_imdb_id":787523,"title":"Towelhead","year":2007,"rating":3,"dubious":false,"date":"2009-07-27 22:02"},{"_id":"410","normalized_imdb_id":486583,"title":"Fred Claus","year":2007,"rating":1,"dubious":false,"date":"2009-08-03 10:40"},{"_id":"417","normalized_imdb_id":462538,"title":"Simpsons Movie, The","year":2007,"rating":3,"dubious":false,"date":"2009-08-06 17:40"},{"_id":"419","normalized_imdb_id":787475,"title":"Hot Rod","year":2007,"rating":1,"dubious":false,"date":"2009-08-07 00:35"},{"_id":"422","normalized_imdb_id":418279,"title":"Transformers","year":2007,"rating":3,"dubious":false,"date":"2009-08-07 01:27"},{"_id":"462","normalized_imdb_id":455805,"title":"Then She Found Me","year":2007,"rating":3,"dubious":false,"date":"2009-08-16 02:11"},{"_id":"476","normalized_imdb_id":496806,"title":"Ocean's Thirteen","year":2007,"rating":1,"dubious":false,"date":"2009-08-22 13:00"},{"_id":"479","normalized_imdb_id":486822,"title":"Disturbia","year":2007,"rating":3,"dubious":false,"date":"2009-08-24 02:46"},{"_id":"487","normalized_imdb_id":385752,"title":"Golden Compass, The","year":2007,"rating":3,"dubious":false,"date":"2009-08-29 22:57"},{"_id":"490","normalized_imdb_id":775529,"title":"Savages, The","year":2007,"rating":3,"dubious":false,"date":"2009-08-31 02:14"},{"_id":"526","normalized_imdb_id":459102,"title":"Import/Export","year":2007,"rating":3,"dubious":false,"date":"2009-10-20 20:13"},{"_id":"546","normalized_imdb_id":452702,"title":"Vacancy","year":2007,"rating":0,"dubious":false,"date":"2009-11-22 04:55"},{"_id":"549","normalized_imdb_id":480249,"title":"I Am Legend","year":2007,"rating":3,"dubious":false,"date":"2009-11-27 05:06"},{"_id":"585","normalized_imdb_id":448134,"title":"Sunshine","year":2007,"rating":1,"dubious":false,"date":"2009-12-27 02:19"},{"_id":"600","normalized_imdb_id":838221,"title":"Darjeeling Limited, The","year":2007,"rating":1,"dubious":false,"date":"2009-12-27 22:10"},{"_id":"630","normalized_imdb_id":408236,"title":"Sweeney Todd: The Demon Barber of Fleet Street","year":2007,"rating":1,"dubious":false,"date":"2010-01-03 02:45"},{"_id":"667","normalized_imdb_id":1179904,"title":"Paranormal Activity","year":2007,"rating":3,"dubious":true,"date":"2010-01-24 05:37"},{"_id":"651","normalized_imdb_id":829482,"title":"Superbad","year":2007,"rating":3,"dubious":false,"date":"2010-01-20 00:32"},{"_id":"652","normalized_imdb_id":419887,"title":"Kite Runner, The","year":2007,"rating":0,"dubious":true,"date":"2010-01-20 00:35"},{"_id":"686","normalized_imdb_id":477348,"title":"No Country for Old Men","year":2007,"rating":3,"dubious":true,"date":"2010-02-18 09:40"},{"_id":"738","normalized_imdb_id":416508,"title":"Becoming Jane","year":2007,"rating":3,"dubious":false,"date":"2010-04-16 23:20"},{"_id":"755","normalized_imdb_id":473308,"title":"Waitress","year":2007,"rating":3,"dubious":false,"date":"2010-04-24 06:24"},{"_id":"761","normalized_imdb_id":972785,"title":"Bring It On: In It to Win It","year":2007,"rating":3,"dubious":false,"date":"2010-04-26 15:25"},{"_id":"766","normalized_imdb_id":431308,"title":"P.S. I Love You","year":2007,"rating":3,"dubious":false,"date":"2010-04-26 15:33"},{"_id":"777","normalized_imdb_id":461770,"title":"Enchanted","year":2007,"rating":3,"dubious":false,"date":"2010-05-03 14:21"},{"_id":"842","normalized_imdb_id":337978,"title":"Live Free or Die Hard","year":2007,"rating":1,"dubious":false,"date":"2010-05-27 17:44"},{"_id":"843","normalized_imdb_id":381849,"title":"3:10 to Yuma","year":2007,"rating":0,"dubious":false,"date":"2010-05-27 18:05"},{"_id":"918","normalized_imdb_id":486946,"title":"Wild Hogs","year":2007,"rating":1,"dubious":false,"date":"2010-06-08 02:50"},{"_id":"948","normalized_imdb_id":765447,"title":"Evening","year":2007,"rating":3,"dubious":false,"date":"2010-06-16 13:32"},{"_id":"949","normalized_imdb_id":783233,"title":"Atonement","year":2007,"rating":3,"dubious":false,"date":"2010-06-16 13:33"},{"_id":"964","normalized_imdb_id":848557,"title":"Diary of the Dead","year":2007,"rating":3,"dubious":false,"date":"2010-06-20 03:44"},{"_id":"995","normalized_imdb_id":475243,"title":"Crashing","year":2007,"rating":2,"dubious":false,"date":"2010-06-28 15:02"},{"_id":"1008","normalized_imdb_id":423977,"title":"Charlie Bartlett","year":2007,"rating":2,"dubious":true,"date":"2010-06-30 00:28"},{"_id":"1045","normalized_imdb_id":496436,"title":"White Noise 2: The Light","year":2007,"rating":1,"dubious":false,"date":"2010-07-04 01:58"},{"_id":"1339","normalized_imdb_id":1048174,"title":"World Unseen, The","year":2007,"rating":3,"dubious":false,"date":"2010-07-26 13:14"},{"_id":"1438","normalized_imdb_id":1032207,"title":"Lynch","year":2007,"rating":1,"dubious":false,"date":"2010-08-03 20:33"},{"_id":"1344","normalized_imdb_id":465375,"title":"After Sex","year":2007,"rating":3,"dubious":false,"date":"2010-07-26 13:48"},{"_id":"1578","normalized_imdb_id":283503,"title":"Brooklyn Rules","year":2007,"rating":3,"dubious":false,"date":"2010-09-19 15:57"},{"_id":"1184","normalized_imdb_id":822854,"title":"Shooter","year":2007,"rating":1,"dubious":false,"date":"2010-07-16 22:17"},{"_id":"1196","normalized_imdb_id":780622,"title":"Teeth","year":2007,"rating":3,"dubious":true,"date":"2010-07-19 22:23"},{"_id":"1283","normalized_imdb_id":465494,"title":"Hitman","year":2007,"rating":0,"dubious":false,"date":"2010-07-23 07:16"},{"_id":"1285","normalized_imdb_id":464141,"title":"Orphanage, The","year":2007,"rating":3,"dubious":false,"date":"2010-07-23 07:27"},{"_id":"1115","normalized_imdb_id":496328,"title":"Itty Bitty Titty Committee","year":2007,"rating":3,"dubious":false,"date":"2010-07-09 02:56"},{"_id":"1439","normalized_imdb_id":925230,"title":"Cocalero","year":2007,"rating":3,"dubious":false,"date":"2010-08-03 20:55"},{"_id":"1151","normalized_imdb_id":866437,"title":"Jane Austen Book Club, The","year":2007,"rating":3,"dubious":false,"date":"2010-07-10 15:01"},{"_id":"1167","normalized_imdb_id":427470,"title":"Lookout, The","year":2007,"rating":3,"dubious":false,"date":"2010-07-12 03:50"},{"_id":"1524","normalized_imdb_id":810868,"title":"Free Rainer","year":2007,"rating":2,"dubious":false,"date":"2010-09-02 21:57"},{"_id":"1522","normalized_imdb_id":795368,"title":"Death at a Funeral","year":2007,"rating":3,"dubious":false,"date":"2010-09-02 14:03"},{"_id":"1552","normalized_imdb_id":995829,"title":"XXY","year":2007,"rating":3,"dubious":false,"date":"2010-09-08 11:41"},{"_id":"1466","normalized_imdb_id":970472,"title":"Vexille","year":2007,"rating":3,"dubious":false,"date":"2010-08-13 05:17"},{"_id":"1671","normalized_imdb_id":909010,"title":"Bad Mother's Handbook, The","year":2007,"rating":3,"dubious":false,"date":"2010-10-19 02:10"},{"_id":"1706","normalized_imdb_id":806940,"title":"Ninas Mal","year":2007,"rating":3,"dubious":false,"date":"2010-10-28 22:48"},{"_id":"1713","normalized_imdb_id":904049,"title":"Ekusute (Exte: Hair Extensions)","year":2007,"rating":3,"dubious":false,"date":"2010-11-01 00:33"},{"_id":"1715","normalized_imdb_id":862856,"title":"Trick 'r Treat","year":2007,"rating":3,"dubious":false,"date":"2010-11-01 03:33"},{"_id":"1741","normalized_imdb_id":996605,"title":"Love Songs","year":2007,"rating":3,"dubious":false,"date":"2010-11-06 14:48"},{"_id":"1764","normalized_imdb_id":1043842,"title":"Appleseed Saga: Ex Machina","year":2007,"rating":3,"dubious":false,"date":"2010-11-18 19:40"},{"_id":"1799","normalized_imdb_id":1032856,"title":"Band's Visit, The","year":2007,"rating":1,"dubious":false,"date":"2010-11-30 23:58"},{"_id":"1802","normalized_imdb_id":1094278,"title":"Tricks","year":2007,"rating":3,"dubious":true,"date":"2010-12-01 00:13"},{"_id":"1806","normalized_imdb_id":1032846,"title":"4 Months, 3 Weeks and 2 Days","year":2007,"rating":3,"dubious":false,"date":"2010-12-01 01:05"},{"_id":"1808","normalized_imdb_id":758732,"title":"Beaufort","year":2007,"rating":0,"dubious":false,"date":"2010-12-01 02:40"},{"_id":"1840","normalized_imdb_id":964587,"title":"St. Trinian's","year":2007,"rating":3,"dubious":false,"date":"2010-12-11 10:09"},{"_id":"1868","normalized_imdb_id":401383,"title":"Diving Bell and the Butterfly, The","year":2007,"rating":2,"dubious":true,"date":"2010-12-21 07:29"},{"_id":"1889","normalized_imdb_id":465538,"title":"Michael Clayton","year":2007,"rating":2,"dubious":false,"date":"2011-01-02 19:38"},{"_id":"1899","normalized_imdb_id":887745,"title":"How About You","year":2007,"rating":3,"dubious":false,"date":"2011-01-12 02:03"},{"_id":"1903","normalized_imdb_id":457419,"title":"Mr. Magorium's Wonder Emporium","year":2007,"rating":0,"dubious":true,"date":"2011-01-13 05:40"},{"_id":"1925","normalized_imdb_id":880502,"title":"Auf der anderen Seite","year":2007,"rating":3,"dubious":false,"date":"2011-01-20 16:48"},{"_id":"1939","normalized_imdb_id":983213,"title":"5 Centimeters Per Second","year":2007,"rating":1,"dubious":false,"date":"2011-01-29 22:13"},{"_id":"1945","normalized_imdb_id":396555,"title":"Meet the Robinsons","year":2007,"rating":1,"dubious":false,"date":"2011-01-29 23:24"},{"_id":"2111","normalized_imdb_id":472205,"title":"Watching the Detectives","year":2007,"rating":1,"dubious":false,"date":"2011-03-12 13:01"},{"_id":"2130","normalized_imdb_id":389722,"title":"30 Days of Night","year":2007,"rating":2,"dubious":false,"date":"2011-03-20 22:26"},{"_id":"2131","normalized_imdb_id":463854,"title":"28 Weeks Later","year":2007,"rating":3,"dubious":false,"date":"2011-03-21 00:42"},{"_id":"2147","normalized_imdb_id":857191,"title":"Visitor, The","year":2007,"rating":3,"dubious":true,"date":"2011-03-28 02:57"},{"_id":"2170","normalized_imdb_id":758766,"title":"Music and Lyrics","year":2007,"rating":3,"dubious":false,"date":"2011-04-08 13:20"},{"_id":"2248","normalized_imdb_id":848542,"title":"Arranged","year":2007,"rating":3,"dubious":false,"date":"2011-04-28 00:44"},{"_id":"2207","normalized_imdb_id":756729,"title":"Year of the dog","year":2007,"rating":3,"dubious":false,"date":"2011-04-23 14:58"},{"_id":"2341","normalized_imdb_id":388182,"title":"King of California","year":2007,"rating":1,"dubious":false,"date":"2011-05-25 18:37"},{"_id":"2364","normalized_imdb_id":780607,"title":"Signal, The","year":2007,"rating":2,"dubious":false,"date":"2011-05-30 03:25"},{"_id":"2371","normalized_imdb_id":452623,"title":"Gone Baby Gone","year":2007,"rating":3,"dubious":false,"date":"2011-06-04 23:45"},{"_id":"2409","normalized_imdb_id":757361,"title":"Margot at the Wedding","year":2007,"rating":3,"dubious":false,"date":"2011-06-17 13:50"},{"_id":"2472","normalized_imdb_id":804452,"title":"Bratz","year":2007,"rating":3,"dubious":false,"date":"2011-06-30 16:55"},{"_id":"2473","normalized_imdb_id":498353,"title":"Hostel: Part II","year":2007,"rating":3,"dubious":false,"date":"2011-07-01 18:20"},{"_id":"2478","normalized_imdb_id":494222,"title":"Eagle vs Shark","year":2007,"rating":3,"dubious":false,"date":"2011-07-03 01:38"},{"_id":"2519","normalized_imdb_id":488120,"title":"Fracture","year":2007,"rating":1,"dubious":false,"date":"2011-07-12 08:41"},{"_id":"2529","normalized_imdb_id":913445,"title":"Young People Fucking","year":2007,"rating":1,"dubious":false,"date":"2011-07-13 23:38"},{"_id":"2574","normalized_imdb_id":472062,"title":"Charlie Wilson's War","year":2007,"rating":3,"dubious":false,"date":"2011-07-27 03:11"},{"_id":"2581","normalized_imdb_id":401997,"title":"Breach","year":2007,"rating":1,"dubious":false,"date":"2011-07-28 19:29"},{"_id":"2597","normalized_imdb_id":443473,"title":"Condemned, The","year":2007,"rating":1,"dubious":false,"date":"2011-08-09 21:24"},{"_id":"2601","normalized_imdb_id":1121794,"title":"Sword of the Stranger","year":2007,"rating":3,"dubious":true,"date":"2011-08-11 09:58"},{"_id":"2604","normalized_imdb_id":844794,"title":"Northanger Abbey","year":2007,"rating":3,"dubious":false,"date":"2011-08-12 02:51"},{"_id":"2621","normalized_imdb_id":942384,"title":"Shelter","year":2007,"rating":1,"dubious":false,"date":"2011-08-16 08:05"},{"_id":"2655","normalized_imdb_id":765120,"title":"My Blueberry Nights","year":2007,"rating":3,"dubious":false,"date":"2011-09-04 13:04"},{"_id":"2676","normalized_imdb_id":1107809,"title":"Cutlass","year":2007,"rating":3,"dubious":false,"date":"2011-09-12 20:50"},{"_id":"2743","normalized_imdb_id":415127,"title":"Man from London, The","year":2007,"rating":3,"dubious":false,"date":"2011-10-06 15:23"},{"_id":"2795","normalized_imdb_id":805564,"title":"Lars and the real Girl","year":2007,"rating":3,"dubious":false,"date":"2011-10-25 01:09"},{"_id":"2856","normalized_imdb_id":892100,"title":"Steam","year":2007,"rating":3,"dubious":false,"date":"2011-11-20 14:24"},{"_id":"2976","normalized_imdb_id":814795,"title":"In the Arms of My Enemy","year":2007,"rating":0,"dubious":false,"date":"2012-01-07 04:06"},{"_id":"2992","normalized_imdb_id":792965,"title":"Ensemble, c'est tout","year":2007,"rating":3,"dubious":false,"date":"2012-01-15 18:20"},{"_id":"3012","normalized_imdb_id":466839,"title":"I Could Never Be Your Woman","year":2007,"rating":3,"dubious":false,"date":"2012-01-28 19:52"},{"_id":"3013","normalized_imdb_id":472071,"title":"Death Defying Acts","year":2007,"rating":3,"dubious":false,"date":"2012-01-28 19:54"},{"_id":"3015","normalized_imdb_id":997174,"title":"Welcome to the Quiet Room","year":2007,"rating":3,"dubious":false,"date":"2012-01-28 19:59"},{"_id":"3069","normalized_imdb_id":765443,"title":"Eastern Promises","year":2007,"rating":3,"dubious":false,"date":"2012-02-21 08:34"},{"_id":"3086","normalized_imdb_id":442933,"title":"Beowulf","year":2007,"rating":3,"dubious":false,"date":"2012-03-02 21:09"},{"_id":"3129","normalized_imdb_id":450188,"title":"La vie en rose","year":2007,"rating":3,"dubious":false,"date":"2012-03-19 14:54"},{"_id":"3151","normalized_imdb_id":815244,"title":"Sydney White","year":2007,"rating":3,"dubious":false,"date":"2012-03-28 17:45"},{"_id":"3206","normalized_imdb_id":450385,"title":"1408","year":2007,"rating":3,"dubious":false,"date":"2012-04-26 04:59"},{"_id":"3230","normalized_imdb_id":414055,"title":"Elizabeth: The Golden Age","year":2007,"rating":3,"dubious":false,"date":"2012-05-07 12:34"},{"_id":"3308","normalized_imdb_id":489237,"title":"Nanny Diaries, The","year":2007,"rating":3,"dubious":false,"date":"2012-06-02 23:07"},{"_id":"3324","normalized_imdb_id":884328,"title":"Mist, The","year":2007,"rating":3,"dubious":false,"date":"2012-06-05 17:27"},{"_id":"3333","normalized_imdb_id":398808,"title":"Bridge to Terabithia","year":2007,"rating":3,"dubious":false,"date":"2012-06-08 09:38"},{"_id":"3343","normalized_imdb_id":480669,"title":"Timecrimes","year":2007,"rating":0,"dubious":false,"date":"2012-06-11 18:58"},{"_id":"3344","normalized_imdb_id":446463,"title":"Secret, The","year":2007,"rating":3,"dubious":false,"date":"2012-06-11 19:01"},{"_id":"3424","normalized_imdb_id":860528,"title":"Salvation","year":2007,"rating":1,"dubious":false,"date":"2012-07-15 20:52"},{"_id":"3438","normalized_imdb_id":1016301,"title":"Fermat's Room","year":2007,"rating":0,"dubious":false,"date":"2012-07-21 23:29"},{"_id":"3474","normalized_imdb_id":762110,"title":"Irina Palm","year":2007,"rating":3,"dubious":true,"date":"2012-08-16 17:37"},{"_id":"3494","normalized_imdb_id":482374,"title":"Gone","year":2007,"rating":3,"dubious":true,"date":"2012-08-24 21:37"},{"_id":"3545","normalized_imdb_id":816436,"title":"Black Water","year":2007,"rating":3,"dubious":false,"date":"2012-09-24 13:19"},{"_id":"3547","normalized_imdb_id":459959,"title":"La reine soleil","year":2007,"rating":3,"dubious":false,"date":"2012-09-25 03:09"},{"_id":"3577","normalized_imdb_id":1024856,"title":"Negative Happy Chain Saw Edge","year":2007,"rating":0,"dubious":false,"date":"2012-10-07 06:15"},{"_id":"3604","normalized_imdb_id":758753,"title":"If I Had Known I Was a Genius","year":2007,"rating":2,"dubious":true,"date":"2012-10-16 23:15"},{"_id":"3615","normalized_imdb_id":480242,"title":"Dan in Real Life","year":2007,"rating":3,"dubious":false,"date":"2012-10-19 16:26"},{"_id":"3617","normalized_imdb_id":1083845,"title":"Ballet Shoes","year":2007,"rating":3,"dubious":false,"date":"2012-10-20 19:08"},{"_id":"3629","normalized_imdb_id":856288,"title":"Inside","year":2007,"rating":3,"dubious":false,"date":"2012-10-26 21:19"},{"_id":"3646","normalized_imdb_id":1038988,"title":"[Rec]","year":2007,"rating":3,"dubious":false,"date":"2012-11-02 16:08"},{"_id":"3655","normalized_imdb_id":373883,"title":"Halloween","year":2007,"rating":3,"dubious":false,"date":"2012-11-04 05:39"},{"_id":"3663","normalized_imdb_id":829297,"title":"Ten Inch Hero","year":2007,"rating":3,"dubious":false,"date":"2012-11-06 18:21"},{"_id":"3707","normalized_imdb_id":825236,"title":"Caramel","year":2007,"rating":2,"dubious":false,"date":"2012-12-03 19:17"},{"_id":"3731","normalized_imdb_id":923811,"title":"Evangelion: 1.0: You Are (Not) Alone","year":2007,"rating":3,"dubious":false,"date":"2012-12-08 06:11"},{"_id":"3774","normalized_imdb_id":923985,"title":"We Are the Strange","year":2007,"rating":0,"dubious":false,"date":"2012-12-26 09:22"},{"_id":"3777","normalized_imdb_id":445934,"title":"Blades of Glory","year":2007,"rating":3,"dubious":false,"date":"2012-12-27 09:00"},{"_id":"3811","normalized_imdb_id":453556,"title":"TMNT","year":2007,"rating":1,"dubious":true,"date":"2013-01-08 19:41"},{"_id":"3899","normalized_imdb_id":875113,"title":"99 francs","year":2007,"rating":1,"dubious":true,"date":"2013-02-17 05:38"},{"_id":"3935","normalized_imdb_id":488023,"title":"Out at the Wedding","year":2007,"rating":3,"dubious":false,"date":"2013-02-25 21:00"},{"_id":"3989","normalized_imdb_id":869977,"title":"Naissance des pieuvres","year":2007,"rating":3,"dubious":false,"date":"2013-03-17 19:03"},{"_id":"4001","normalized_imdb_id":292963,"title":"Before the Devil Knows You're Dead","year":2007,"rating":2,"dubious":false,"date":"2013-03-20 21:31"},{"_id":"4007","normalized_imdb_id":897361,"title":"I Know Who Killed Me","year":2007,"rating":3,"dubious":false,"date":"2013-03-23 07:33"},{"_id":"4028","normalized_imdb_id":445922,"title":"Across the Universe","year":2007,"rating":3,"dubious":false,"date":"2013-04-05 03:00"},{"_id":"4029","normalized_imdb_id":481369,"title":"Number 23, The","year":2007,"rating":1,"dubious":false,"date":"2013-04-05 09:15"},{"_id":"4040","normalized_imdb_id":1092053,"title":"Barbie as the Island Princess","year":2007,"rating":3,"dubious":false,"date":"2013-04-09 18:20"},{"_id":"4044","normalized_imdb_id":795439,"title":"Numb","year":2007,"rating":1,"dubious":false,"date":"2013-04-11 14:40"},{"_id":"4060","normalized_imdb_id":959342,"title":"Se upp för dårarna","year":2007,"rating":3,"dubious":false,"date":"2013-04-15 16:17"},{"_id":"4121","normalized_imdb_id":995031,"title":"Bhool Bhulaiyaa","year":2007,"rating":1,"dubious":true,"date":"2013-05-06 02:08"},{"_id":"4158","normalized_imdb_id":889600,"title":"Fat Like Me","year":2007,"rating":3,"dubious":false,"date":"2013-05-23 22:52"},{"_id":"4152","normalized_imdb_id":1095496,"title":"She's a Boy I Knew","year":2007,"rating":3,"dubious":false,"date":"2013-05-22 05:43"},{"_id":"4153","normalized_imdb_id":923752,"title":"King of Kong: A Fistful of Quarters, The","year":2007,"rating":1,"dubious":false,"date":"2013-05-22 06:05"},{"_id":"4162","normalized_imdb_id":498399,"title":"We Own the Night","year":2007,"rating":0,"dubious":false,"date":"2013-05-24 17:57"},{"_id":"4209","normalized_imdb_id":367959,"title":"Hannibal Rising","year":2007,"rating":1,"dubious":false,"date":"2013-06-05 15:25"},{"_id":"4264","normalized_imdb_id":1077274,"title":"Yobi, the Five-Tailed Fox (Cheon-nyeon-yeo-woo-yeo-woo-bi)","year":2007,"rating":3,"dubious":true,"date":"2013-06-23 19:49"},{"_id":"4313","normalized_imdb_id":2330312,"title":"Bratz: Fashion Pixiez","year":2007,"rating":3,"dubious":false,"date":"2013-07-07 00:05"},{"_id":"4439","normalized_imdb_id":490084,"title":"Because I Said So","year":2007,"rating":3,"dubious":false,"date":"2013-08-04 02:24"},{"_id":"4728","normalized_imdb_id":816530,"title":"Imprint","year":2007,"rating":3,"dubious":false,"date":"2013-10-22 02:52"},{"_id":"4757","normalized_imdb_id":896986,"title":"La torre de Suso","year":2007,"rating":1,"dubious":false,"date":"2013-10-31 21:07"},{"_id":"4762","normalized_imdb_id":435528,"title":"Whisper","year":2007,"rating":2,"dubious":false,"date":"2013-11-01 15:58"},{"_id":"4800","normalized_imdb_id":910847,"title":"Breakfast with Scot","year":2007,"rating":1,"dubious":false,"date":"2013-11-08 22:19"},{"_id":"4833","normalized_imdb_id":887732,"title":"Days and Clouds","year":2007,"rating":3,"dubious":false,"date":"2013-11-15 05:52"},{"_id":"4886","normalized_imdb_id":860866,"title":"Far North","year":2007,"rating":3,"dubious":false,"date":"2013-11-28 22:38"},{"_id":"4963","normalized_imdb_id":486651,"title":"Dark Mirror","year":2007,"rating":3,"dubious":false,"date":"2013-12-18 22:35"},{"_id":"4984","normalized_imdb_id":804516,"title":"P2","year":2007,"rating":3,"dubious":false,"date":"2013-12-25 17:59"},{"_id":"5055","normalized_imdb_id":780583,"title":"Flight of the Living Dead","year":2007,"rating":3,"dubious":false,"date":"2014-01-08 16:06"},{"_id":"5496","normalized_imdb_id":463998,"title":"Freedom Writers","year":2007,"rating":1,"dubious":false,"date":"2014-05-21 01:05"},{"_id":"5028","normalized_imdb_id":815178,"title":"Life Before Her Eyes, The","year":2007,"rating":3,"dubious":false,"date":"2014-01-02 05:44"},{"_id":"5042","normalized_imdb_id":425430,"title":"Messengers, The","year":2007,"rating":3,"dubious":false,"date":"2014-01-05 04:26"},{"_id":"5045","normalized_imdb_id":765430,"title":"American Zombie","year":2007,"rating":3,"dubious":false,"date":"2014-01-05 21:08"},{"_id":"5071","normalized_imdb_id":801526,"title":"Tracey Fragments, The","year":2007,"rating":3,"dubious":false,"date":"2014-01-14 06:20"},{"_id":"5075","normalized_imdb_id":486576,"title":"Fantastic Four: Rise of the Silver Surfer","year":2007,"rating":3,"dubious":true,"date":"2014-01-15 09:56"},{"_id":"5146","normalized_imdb_id":871510,"title":"Chakde! India","year":2007,"rating":3,"dubious":false,"date":"2014-02-07 19:05"},{"_id":"5204","normalized_imdb_id":492486,"title":"Shrooms","year":2007,"rating":3,"dubious":false,"date":"2014-02-25 18:49"},{"_id":"5245","normalized_imdb_id":780608,"title":"Smiley Face","year":2007,"rating":3,"dubious":false,"date":"2014-03-07 05:25"},{"_id":"5291","normalized_imdb_id":841044,"title":"2 Days in Paris","year":2007,"rating":3,"dubious":false,"date":"2014-03-17 06:04"},{"_id":"5328","normalized_imdb_id":960835,"title":"Transmorphers","year":2007,"rating":3,"dubious":false,"date":"2014-03-26 01:24"},{"_id":"5451","normalized_imdb_id":465602,"title":"Shut em up","year":2007,"rating":1,"dubious":false,"date":"2014-05-06 11:00"},{"_id":"5461","normalized_imdb_id":441007,"title":"Gracie","year":2007,"rating":3,"dubious":false,"date":"2014-05-10 22:26"},{"_id":"5483","normalized_imdb_id":413300,"title":"Spider-Man 3","year":2007,"rating":2,"dubious":false,"date":"2014-05-18 03:09"},{"_id":"5501","normalized_imdb_id":808357,"title":"Lust, Caution","year":2007,"rating":3,"dubious":false,"date":"2014-05-26 10:44"},{"_id":"5509","normalized_imdb_id":780565,"title":"Mataharis","year":2007,"rating":3,"dubious":false,"date":"2014-05-28 23:38"},{"_id":"5530","normalized_imdb_id":440963,"title":"Bourne Ultimatum, The","year":2007,"rating":2,"dubious":false,"date":"2014-06-04 03:34"},{"_id":"5583","normalized_imdb_id":348062,"title":"So, You've Downloaded a Demon","year":2007,"rating":3,"dubious":false,"date":"2014-06-22 01:24"},{"_id":"5628","normalized_imdb_id":455760,"title":"Dead Silence","year":2007,"rating":1,"dubious":false,"date":"2014-07-11 10:14"},{"_id":"5662","normalized_imdb_id":477051,"title":"Norbit","year":2007,"rating":2,"dubious":false,"date":"2014-07-31 00:08"},{"_id":"5769","normalized_imdb_id":812243,"title":"Ex Drummer","year":2007,"rating":1,"dubious":false,"date":"2014-09-20 17:42"},{"_id":"5930","normalized_imdb_id":782867,"title":"Ha-Sodot (The Secrets)","year":2007,"rating":3,"dubious":false,"date":"2014-11-20 03:08"},{"_id":"5995","normalized_imdb_id":840363,"title":"Racing Daylight","year":2007,"rating":3,"dubious":false,"date":"2014-12-21 12:36"},{"_id":"6057","normalized_imdb_id":810900,"title":"High School Musical 2 (TV Movie)","year":2007,"rating":3,"dubious":false,"date":"2015-01-20 02:39"},{"_id":"6286","normalized_imdb_id":825244,"title":"Dialogue avec mon jardinier","year":2007,"rating":1,"dubious":false,"date":"2015-06-01 12:04"},{"_id":"6381","normalized_imdb_id":1095573,"title":"The Backyardigans International Super Spy","year":2007,"rating":2,"dubious":false,"date":"2015-07-31 21:38"},{"_id":"6454","normalized_imdb_id":890870,"title":"Saw IV","year":2007,"rating":3,"dubious":false,"date":"2015-09-15 01:21"},{"_id":"6577","normalized_imdb_id":799949,"title":"Epic Movie","year":2007,"rating":3,"dubious":false,"date":"2015-12-04 20:47"},{"_id":"6578","normalized_imdb_id":784972,"title":"Brothers Solomon, The","year":2007,"rating":2,"dubious":false,"date":"2015-12-05 04:01"},{"_id":"6603","normalized_imdb_id":479500,"title":"Nancy Drew","year":2007,"rating":3,"dubious":false,"date":"2015-12-13 15:30"},{"_id":"6616","normalized_imdb_id":425413,"title":"Run, Fatboy, Run","year":2007,"rating":1,"dubious":false,"date":"2015-12-19 04:56"},{"_id":"6617","normalized_imdb_id":950740,"title":"Grandpa for Christmas","year":2007,"rating":3,"dubious":false,"date":"2015-12-19 20:47"},{"_id":"6631","normalized_imdb_id":814106,"title":"Flatland: The Movie","year":2007,"rating":2,"dubious":false,"date":"2015-12-25 22:51"},{"_id":"6735","normalized_imdb_id":796302,"title":"Babysitters, The","year":2007,"rating":3,"dubious":false,"date":"2016-02-19 05:55"},{"_id":"6759","normalized_imdb_id":808230,"title":"Les deux mondes","year":2007,"rating":2,"dubious":false,"date":"2016-03-02 15:28"},{"_id":"6795","normalized_imdb_id":368794,"title":"I'm Not There.","year":2007,"rating":1,"dubious":false,"date":"2016-03-26 07:39"},{"_id":"6828","normalized_imdb_id":952682,"title":"Shotgun Stories","year":2007,"rating":3,"dubious":false,"date":"2016-04-13 22:52"},{"_id":"6905","normalized_imdb_id":1148261,"title":"Bleach Movie 2: The Diamond Dust Rebellion","year":2007,"rating":2,"dubious":false,"date":"2016-05-28 19:50"},{"_id":"6987","normalized_imdb_id":421082,"title":"Control","year":2007,"rating":2,"dubious":false,"date":"2016-07-21 20:11"},{"_id":"7001","normalized_imdb_id":211933,"title":"Awake","year":2007,"rating":3,"dubious":false,"date":"2016-07-27 06:30"},{"_id":"7078","normalized_imdb_id":891527,"title":"Lions for lambs","year":2007,"rating":0,"dubious":false,"date":"2016-08-29 20:54"},{"_id":"7079","normalized_imdb_id":809533,"title":"Las 13 rosas","year":2007,"rating":3,"dubious":false,"date":"2016-08-29 21:07"},{"_id":"7121","normalized_imdb_id":871197,"title":"Masters of Horror Right to Die","year":2007,"rating":1,"dubious":false,"date":"2016-09-17 06:03"},{"_id":"7125","normalized_imdb_id":817402,"title":"Masters of Horror We All Scream for Ice Cream","year":2007,"rating":3,"dubious":false,"date":"2016-09-19 06:12"},{"_id":"7128","normalized_imdb_id":785533,"title":"Masters of Horror The Black Cat","year":2007,"rating":0,"dubious":false,"date":"2016-09-20 06:11"},{"_id":"7129","normalized_imdb_id":854548,"title":"Masters of Horror The Washingtonians","year":2007,"rating":3,"dubious":false,"date":"2016-09-21 07:25"},{"_id":"7131","normalized_imdb_id":868394,"title":"Masters of Horror Dream Cruise","year":2007,"rating":1,"dubious":false,"date":"2016-09-22 06:25"},{"_id":"7140","normalized_imdb_id":971205,"title":"Lucky Blue","year":2007,"rating":0,"dubious":false,"date":"2016-09-24 23:34"},{"_id":"7142","normalized_imdb_id":1166805,"title":"Cafe com Leite","year":2007,"rating":0,"dubious":false,"date":"2016-09-25 00:20"},{"_id":"7153","normalized_imdb_id":838192,"title":"Reine Geschmacksache","year":2007,"rating":3,"dubious":false,"date":"2016-09-27 00:33"},{"_id":"7251","normalized_imdb_id":443706,"title":"Zodiac","year":2007,"rating":1,"dubious":false,"date":"2016-11-08 00:11"},{"_id":"7349","normalized_imdb_id":807721,"title":"Meduzot","year":2007,"rating":3,"dubious":false,"date":"2016-12-23 18:42"},{"_id":"7395","normalized_imdb_id":765429,"title":"American Gangster","year":2007,"rating":1,"dubious":false,"date":"2017-01-13 23:52"},{"_id":"7519","normalized_imdb_id":389790,"title":"Bee Movie","year":2007,"rating":1,"dubious":false,"date":"2017-03-16 19:54"},{"_id":"7556","normalized_imdb_id":768212,"title":"Last Mimzy, The","year":2007,"rating":3,"dubious":false,"date":"2017-04-04 02:38"},{"_id":"7584","normalized_imdb_id":393956,"title":"Viva","year":2007,"rating":3,"dubious":false,"date":"2017-04-20 17:19"},{"_id":"7711","normalized_imdb_id":807054,"title":"It's a Free World...","year":2007,"rating":3,"dubious":false,"date":"2017-06-29 21:32"},{"_id":"7714","normalized_imdb_id":1007920,"title":"Barbie Fairytopia: Magic of the Rainbow","year":2007,"rating":3,"dubious":false,"date":"2017-07-02 00:25"},{"_id":"7773","normalized_imdb_id":896798,"title":"Cleaner","year":2007,"rating":1,"dubious":false,"date":"2017-08-11 06:25"},{"_id":"7796","normalized_imdb_id":1039960,"title":"Estômago","year":2007,"rating":0,"dubious":false,"date":"2017-09-03 21:34"},{"_id":"7973","normalized_imdb_id":444682,"title":"Reaping, The","year":2007,"rating":3,"dubious":false,"date":"2017-12-30 03:04"},{"_id":"8513","normalized_imdb_id":1226251,"title":"Pokémon: The Rise of Darkrai","year":2007,"rating":3,"dubious":false,"date":"2018-12-08 22:54"},{"_id":"8525","normalized_imdb_id":760329,"title":"Water Horse, The","year":2007,"rating":0,"dubious":false,"date":"2018-12-14 22:04"},{"_id":"8535","normalized_imdb_id":443680,"title":"Assassination of Jesse James by the Coward Robert Ford, The","year":2007,"rating":1,"dubious":false,"date":"2018-12-14 23:03"},{"_id":"8576","normalized_imdb_id":758730,"title":"Aliens vs. Predator: Requiem","year":2007,"rating":3,"dubious":false,"date":"2018-12-27 04:12"},{"_id":"8732","normalized_imdb_id":997260,"title":"Rosa: The Movie","year":2007,"rating":3,"dubious":false,"date":"2019-05-02 11:53"},{"_id":"9002","normalized_imdb_id":974959,"title":"American Pie Presents: Beta House","year":2007,"rating":2,"dubious":false,"date":"2020-02-06 11:06"},{"_id":"9240","normalized_imdb_id":467110,"title":"Underdog","year":2007,"rating":1,"dubious":true,"date":"2020-08-15 01:35"},{"_id":"9247","normalized_imdb_id":408839,"title":"Heartbreak Kid, The","year":2007,"rating":2,"dubious":false,"date":"2020-08-19 09:15"},{"_id":"9352","normalized_imdb_id":1765847,"title":"Hungry Bitches","year":2007,"rating":3,"dubious":false,"date":"2020-12-04 15:31"},{"_id":"9424","normalized_imdb_id":453451,"title":"Mr. Bean's Holiday","year":2007,"rating":0,"dubious":false,"date":"2021-01-03 19:45"},{"_id":"9451","normalized_imdb_id":259324,"title":"Ghost Rider","year":2007,"rating":0,"dubious":false,"date":"2021-01-22 16:28"},{"_id":"9476","normalized_imdb_id":457433,"title":"A Perfect Stranger","year":2007,"rating":3,"dubious":false,"date":"2021-02-13 00:00"},{"_id":"9627","normalized_imdb_id":889665,"title":"Steak","year":2007,"rating":0,"dubious":false,"date":"2021-04-06 10:13"},{"_id":"9803","normalized_imdb_id":485851,"title":"Air I Breathe, The","year":2007,"rating":3,"dubious":false,"date":"2021-05-10 11:30"},{"_id":"9805","normalized_imdb_id":428579,"title":"Suburban Girl","year":2007,"rating":2,"dubious":false,"date":"2021-05-11 20:54"},{"_id":"10054","normalized_imdb_id":8021928,"title":"David Lynch Cooks Quinoa","year":2007,"rating":0,"dubious":false,"date":"2021-09-17 00:09"},{"_id":"10078","normalized_imdb_id":943232,"title":"Hände weg von Mississippi","year":2007,"rating":3,"dubious":false,"date":"2021-10-10 10:03"},{"_id":"10107","normalized_imdb_id":426931,"title":"August Rush","year":2007,"rating":3,"dubious":false,"date":"2021-10-25 00:17"},{"_id":"10126","normalized_imdb_id":796307,"title":"Under the Same Moon","year":2007,"rating":3,"dubious":false,"date":"2021-11-12 04:55"},{"_id":"10130","normalized_imdb_id":465234,"title":"National Treasure: Book of Secrets","year":2007,"rating":3,"dubious":true,"date":"2021-11-19 19:59"},{"_id":"1","normalized_imdb_id":844760,"title":"Starship Troopers 3: Marauder","year":2008,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"3","normalized_imdb_id":910970,"title":"WALL-E","year":2008,"rating":1,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"19","normalized_imdb_id":200465,"title":"Bank Job, The","year":2008,"rating":3,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"28","normalized_imdb_id":489099,"title":"Jumper","year":2008,"rating":1,"dubious":false,"date":"2008-07-19 00:00"},{"_id":"34","normalized_imdb_id":780536,"title":"In Bruges","year":2008,"rating":1,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"47","normalized_imdb_id":478087,"title":"21","year":2008,"rating":3,"dubious":false,"date":"2008-07-20 00:00"},{"_id":"66","normalized_imdb_id":468569,"title":"Dark Knight, The","year":2008,"rating":3,"dubious":true,"date":"2008-07-23 00:00"},{"_id":"60","normalized_imdb_id":811138,"title":"Love Guru, The","year":2008,"rating":1,"dubious":false,"date":"2008-07-21 00:00"},{"_id":"61","normalized_imdb_id":448157,"title":"Hancock","year":2008,"rating":0,"dubious":false,"date":"2008-07-21 00:00"},{"_id":"65","normalized_imdb_id":490181,"title":"Mutant Chronicles, The","year":2008,"rating":1,"dubious":false,"date":"2008-07-22 00:00"},{"_id":"73","normalized_imdb_id":410377,"title":"Nim's Island","year":2008,"rating":3,"dubious":false,"date":"2008-07-27 13:43"},{"_id":"74","normalized_imdb_id":425061,"title":"Get Smart","year":2008,"rating":1,"dubious":false,"date":"2008-07-27 16:30"},{"_id":"80","normalized_imdb_id":493464,"title":"Wanted","year":2008,"rating":1,"dubious":false,"date":"2008-07-28 04:12"},{"_id":"81","normalized_imdb_id":1054485,"title":"Futurama: The Beast with a Billion Backs","year":2008,"rating":2,"dubious":false,"date":"2008-07-28 09:57"},{"_id":"140","normalized_imdb_id":871426,"title":"Baby Mama","year":2008,"rating":3,"dubious":false,"date":"2008-08-03 10:51"},{"_id":"141","normalized_imdb_id":1029134,"title":"Birds of America","year":2008,"rating":3,"dubious":false,"date":"2008-08-03 14:52"},{"_id":"145","normalized_imdb_id":799934,"title":"Be Kind Rewind","year":2008,"rating":1,"dubious":false,"date":"2008-08-04 21:54"},{"_id":"176","normalized_imdb_id":443274,"title":"Vantage Point","year":2008,"rating":3,"dubious":false,"date":"2008-09-04 02:56"},{"_id":"190","normalized_imdb_id":371746,"title":"Iron Man","year":2008,"rating":2,"dubious":false,"date":"2008-09-26 21:21"},{"_id":"191","normalized_imdb_id":1033643,"title":"What Happens In Vegas","year":2008,"rating":3,"dubious":false,"date":"2008-09-27 17:13"},{"_id":"189","normalized_imdb_id":887883,"title":"Burn After Reading","year":2008,"rating":1,"dubious":false,"date":"2008-09-21 16:58"},{"_id":"192","normalized_imdb_id":811080,"title":"Speed Racer","year":2008,"rating":3,"dubious":false,"date":"2008-09-27 18:46"},{"_id":"193","normalized_imdb_id":765476,"title":"Meet Dave","year":2008,"rating":1,"dubious":false,"date":"2008-10-05 10:30"},{"_id":"194","normalized_imdb_id":373051,"title":"Journey to the Center of the Earth","year":2008,"rating":1,"dubious":false,"date":"2008-10-05 14:50"},{"_id":"195","normalized_imdb_id":800080,"title":"Incredible Hulk, The","year":2008,"rating":1,"dubious":false,"date":"2008-10-05 17:01"},{"_id":"196","normalized_imdb_id":800308,"title":"Appaloosa","year":2008,"rating":1,"dubious":false,"date":"2008-10-05 21:35"},{"_id":"197","normalized_imdb_id":981227,"title":"Nick and Norah's Infinite Playlist","year":2008,"rating":3,"dubious":false,"date":"2008-10-06 05:28"},{"_id":"212","normalized_imdb_id":988595,"title":"27 Dresses","year":2008,"rating":3,"dubious":false,"date":"2008-11-02 01:53"},{"_id":"214","normalized_imdb_id":411477,"title":"Hellboy II: The Golden Army","year":2008,"rating":1,"dubious":false,"date":"2008-11-02 11:06"},{"_id":"217","normalized_imdb_id":430922,"title":"Role Models","year":2008,"rating":1,"dubious":false,"date":"2008-11-18 17:40"},{"_id":"220","normalized_imdb_id":397892,"title":"Bolt","year":2008,"rating":3,"dubious":false,"date":"2008-11-23 18:35"},{"_id":"222","normalized_imdb_id":452608,"title":"Death Race","year":2008,"rating":1,"dubious":false,"date":"2008-11-30 00:47"},{"_id":"233","normalized_imdb_id":929425,"title":"Gomorra","year":2008,"rating":1,"dubious":false,"date":"2008-12-10 13:07"},{"_id":"241","normalized_imdb_id":1129442,"title":"Transporter 3","year":2008,"rating":0,"dubious":false,"date":"2008-12-14 23:05"},{"_id":"242","normalized_imdb_id":1013753,"title":"Milk","year":2008,"rating":1,"dubious":false,"date":"2008-12-15 04:41"},{"_id":"245","normalized_imdb_id":497465,"title":"Vicky Cristina Barcelona","year":2008,"rating":3,"dubious":false,"date":"2008-12-20 21:34"},{"_id":"251","normalized_imdb_id":1010048,"title":"Slumdog Millionaire","year":2008,"rating":1,"dubious":false,"date":"2009-01-06 23:37"},{"_id":"252","normalized_imdb_id":978759,"title":"Frozen River","year":2008,"rating":3,"dubious":false,"date":"2009-01-07 19:30"},{"_id":"254","normalized_imdb_id":918927,"title":"Doubt","year":2008,"rating":3,"dubious":false,"date":"2009-01-08 15:45"},{"_id":"260","normalized_imdb_id":838283,"title":"Step Brothers","year":2008,"rating":1,"dubious":false,"date":"2009-01-20 15:49"},{"_id":"263","normalized_imdb_id":942385,"title":"Tropic Thunder","year":2008,"rating":0,"dubious":false,"date":"2009-01-25 22:08"},{"_id":"265","normalized_imdb_id":981072,"title":"Lucky Ones, The","year":2008,"rating":3,"dubious":false,"date":"2009-01-30 23:19"},{"_id":"273","normalized_imdb_id":976051,"title":"Reader, The","year":2008,"rating":1,"dubious":false,"date":"2009-02-07 21:06"},{"_id":"275","normalized_imdb_id":959337,"title":"Revolutionary Road","year":2008,"rating":3,"dubious":false,"date":"2009-02-07 21:10"},{"_id":"279","normalized_imdb_id":1174954,"title":"Resident Evil: Degeneration","year":2008,"rating":3,"dubious":false,"date":"2009-02-15 23:06"},{"_id":"285","normalized_imdb_id":1125849,"title":"Wrestler, The","year":2008,"rating":1,"dubious":false,"date":"2009-02-19 00:00"},{"_id":"286","normalized_imdb_id":824747,"title":"Changeling","year":2008,"rating":3,"dubious":false,"date":"2009-02-20 06:54"},{"_id":"298","normalized_imdb_id":970416,"title":"Day the Earth Stood Still, The","year":2008,"rating":3,"dubious":false,"date":"2009-03-15 11:26"},{"_id":"305","normalized_imdb_id":1068680,"title":"Yes Man","year":2008,"rating":1,"dubious":false,"date":"2009-03-28 09:15"},{"_id":"306","normalized_imdb_id":494238,"title":"Inkheart","year":2008,"rating":3,"dubious":false,"date":"2009-03-28 11:11"},{"_id":"309","normalized_imdb_id":467197,"title":"Max Payne","year":2008,"rating":3,"dubious":false,"date":"2009-03-31 21:48"},{"_id":"310","normalized_imdb_id":960731,"title":"Bedtime Stories","year":2008,"rating":3,"dubious":false,"date":"2009-04-13 21:08"},{"_id":"316","normalized_imdb_id":795421,"title":"Mamma Mia!","year":2008,"rating":3,"dubious":false,"date":"2009-04-28 18:30"},{"_id":"338","normalized_imdb_id":1054486,"title":"Futurama: Bender's Game","year":2008,"rating":1,"dubious":false,"date":"2009-06-11 10:52"},{"_id":"346","normalized_imdb_id":862846,"title":"Sunshine Cleaning","year":2008,"rating":3,"dubious":false,"date":"2009-06-20 09:11"},{"_id":"350","normalized_imdb_id":970468,"title":"Miss Pettigrew Lives for a Day","year":2008,"rating":3,"dubious":false,"date":"2009-06-22 02:30"},{"_id":"355","normalized_imdb_id":430770,"title":"Women, The","year":2008,"rating":3,"dubious":false,"date":"2009-06-25 06:27"},{"_id":"380","normalized_imdb_id":861689,"title":"Blindness","year":2008,"rating":3,"dubious":false,"date":"2009-07-27 21:57"},{"_id":"384","normalized_imdb_id":910936,"title":"Pineapple Express","year":2008,"rating":2,"dubious":false,"date":"2009-07-28 06:31"},{"_id":"428","normalized_imdb_id":936501,"title":"Taken","year":2008,"rating":3,"dubious":false,"date":"2009-08-09 04:03"},{"_id":"429","normalized_imdb_id":406759,"title":"Eye, The","year":2008,"rating":3,"dubious":false,"date":"2009-08-09 04:30"},{"_id":"447","normalized_imdb_id":940709,"title":"CJ7 (Changjiang 7 hao)","year":2008,"rating":1,"dubious":false,"date":"2009-08-12 10:57"},{"_id":"463","normalized_imdb_id":1059786,"title":"Eagle Eye","year":2008,"rating":1,"dubious":true,"date":"2009-08-16 03:50"},{"_id":"464","normalized_imdb_id":962726,"title":"High School Musical 3: Senior Year","year":2008,"rating":3,"dubious":false,"date":"2009-08-16 21:37"},{"_id":"465","normalized_imdb_id":830515,"title":"Quantum of Solace","year":2008,"rating":1,"dubious":false,"date":"2009-08-17 02:14"},{"_id":"469","normalized_imdb_id":876563,"title":"Gake no ue no Ponyo","year":2008,"rating":3,"dubious":false,"date":"2009-08-20 11:58"},{"_id":"470","normalized_imdb_id":1054588,"title":"Flash of Genius","year":2008,"rating":1,"dubious":false,"date":"2009-08-20 12:01"},{"_id":"473","normalized_imdb_id":823671,"title":"Tinker Bell","year":2008,"rating":3,"dubious":false,"date":"2009-08-22 10:19"},{"_id":"492","normalized_imdb_id":964516,"title":"Fashion","year":2008,"rating":3,"dubious":false,"date":"2009-09-06 16:38"},{"_id":"495","normalized_imdb_id":887912,"title":"Hurt Locker, The","year":2008,"rating":1,"dubious":false,"date":"2009-09-11 21:33"},{"_id":"499","normalized_imdb_id":1084950,"title":"Rachel Getting Married","year":2008,"rating":3,"dubious":false,"date":"2009-09-11 21:56"},{"_id":"500","normalized_imdb_id":808244,"title":"Easy Virtue","year":2008,"rating":3,"dubious":false,"date":"2009-09-11 22:06"},{"_id":"501","normalized_imdb_id":1099212,"title":"Twilight","year":2008,"rating":3,"dubious":false,"date":"2009-09-11 22:09"},{"_id":"502","normalized_imdb_id":1205489,"title":"Gran Torino","year":2008,"rating":2,"dubious":false,"date":"2009-09-11 22:21"},{"_id":"503","normalized_imdb_id":892255,"title":"Che: Part One","year":2008,"rating":1,"dubious":false,"date":"2009-09-11 22:31"},{"_id":"504","normalized_imdb_id":421715,"title":"Curious Case of Benjamin Button, The","year":2008,"rating":3,"dubious":true,"date":"2009-09-11 22:43"},{"_id":"513","normalized_imdb_id":995039,"title":"Ghost Town","year":2008,"rating":1,"dubious":false,"date":"2009-09-22 18:17"},{"_id":"523","normalized_imdb_id":1129435,"title":"Beaches of Agnes, The","year":2008,"rating":3,"dubious":false,"date":"2009-10-09 17:34"},{"_id":"540","normalized_imdb_id":818165,"title":"Alphabet Killer, The","year":2008,"rating":3,"dubious":false,"date":"2009-11-02 16:46"},{"_id":"541","normalized_imdb_id":1082868,"title":"Quarantine","year":2008,"rating":3,"dubious":false,"date":"2009-11-02 16:53"},{"_id":"542","normalized_imdb_id":963194,"title":"Repo! The Genetic Opera","year":2008,"rating":3,"dubious":false,"date":"2009-11-13 02:41"},{"_id":"545","normalized_imdb_id":832266,"title":"Definitely, Maybe","year":2008,"rating":3,"dubious":false,"date":"2009-11-22 01:30"},{"_id":"584","normalized_imdb_id":893402,"title":"Franklyn","year":2008,"rating":2,"dubious":false,"date":"2009-12-25 16:15"},{"_id":"668","normalized_imdb_id":1139797,"title":"Låt den rätte komma in (Let the Right One In)","year":2008,"rating":1,"dubious":false,"date":"2010-01-25 07:17"},{"_id":"728","normalized_imdb_id":441773,"title":"Kung Fu Panda","year":2008,"rating":3,"dubious":false,"date":"2010-04-09 17:23"},{"_id":"730","normalized_imdb_id":1270769,"title":"Three wise men","year":2008,"rating":1,"dubious":false,"date":"2010-04-11 08:04"},{"_id":"740","normalized_imdb_id":1050160,"title":"Kataude mashin garu","year":2008,"rating":3,"dubious":false,"date":"2010-04-17 15:20"},{"_id":"747","normalized_imdb_id":1000774,"title":"Sex and the City","year":2008,"rating":3,"dubious":false,"date":"2010-04-23 02:53"},{"_id":"768","normalized_imdb_id":489049,"title":"Fanboys","year":2008,"rating":0,"dubious":false,"date":"2010-04-26 15:40"},{"_id":"770","normalized_imdb_id":1128075,"title":"Ai no mukidashi","year":2008,"rating":3,"dubious":false,"date":"2010-04-26 22:00"},{"_id":"819","normalized_imdb_id":1069238,"title":"Okuribito (Departures)","year":2008,"rating":3,"dubious":true,"date":"2010-05-19 22:17"},{"_id":"829","normalized_imdb_id":1316037,"title":"Birdemic","year":2008,"rating":3,"dubious":false,"date":"2010-05-25 05:38"},{"_id":"889","normalized_imdb_id":1060277,"title":"Cloverfield","year":2008,"rating":3,"dubious":false,"date":"2010-06-03 00:24"},{"_id":"883","normalized_imdb_id":870089,"title":"Ciao","year":2008,"rating":0,"dubious":false,"date":"2010-05-31 17:49"},{"_id":"902","normalized_imdb_id":1018785,"title":"Sisterhood of the Traveling Pants 2, The","year":2008,"rating":3,"dubious":false,"date":"2010-06-05 02:59"},{"_id":"903","normalized_imdb_id":369436,"title":"Four Christmases","year":2008,"rating":3,"dubious":false,"date":"2010-06-05 03:05"},{"_id":"927","normalized_imdb_id":416212,"title":"Secret Life of Bees, The","year":2008,"rating":3,"dubious":false,"date":"2010-06-09 16:04"},{"_id":"952","normalized_imdb_id":1226681,"title":"Pontypool","year":2008,"rating":0,"dubious":false,"date":"2010-06-16 19:24"},{"_id":"985","normalized_imdb_id":1068649,"title":"I've Loved You So Long","year":2008,"rating":3,"dubious":false,"date":"2010-06-26 19:43"},{"_id":"990","normalized_imdb_id":870111,"title":"Frost/Nixon","year":2008,"rating":1,"dubious":false,"date":"2010-06-28 04:37"},{"_id":"1013","normalized_imdb_id":970411,"title":"City of Ember","year":2008,"rating":3,"dubious":false,"date":"2010-06-30 16:55"},{"_id":"1014","normalized_imdb_id":852713,"title":"House Bunny, The","year":2008,"rating":3,"dubious":false,"date":"2010-06-30 17:15"},{"_id":"1050","normalized_imdb_id":367882,"title":"Indiana Jones and the Kingdom of the Crystal Skull","year":2008,"rating":1,"dubious":false,"date":"2010-07-04 03:12"},{"_id":"1583","normalized_imdb_id":1103193,"title":"My Prison Yard","year":2008,"rating":3,"dubious":false,"date":"2010-09-20 14:07"},{"_id":"1590","normalized_imdb_id":499448,"title":"Chronicles of Narnia: Prince Caspian, The","year":2008,"rating":3,"dubious":false,"date":"2010-09-22 05:29"},{"_id":"1548","normalized_imdb_id":1216477,"title":"Dim Sum Funeral","year":2008,"rating":3,"dubious":false,"date":"2010-09-07 18:54"},{"_id":"1586","normalized_imdb_id":929629,"title":"Stargate: Continuum","year":2008,"rating":1,"dubious":false,"date":"2010-09-22 04:21"},{"_id":"1290","normalized_imdb_id":1045670,"title":"Happy-Go-Lucky","year":2008,"rating":3,"dubious":false,"date":"2010-07-23 14:30"},{"_id":"1178","normalized_imdb_id":1077084,"title":"God's Forgotten Town","year":2008,"rating":3,"dubious":false,"date":"2010-07-14 16:48"},{"_id":"1104","normalized_imdb_id":1023481,"title":"Step Up 2: The Streets","year":2008,"rating":3,"dubious":false,"date":"2010-07-05 18:07"},{"_id":"1107","normalized_imdb_id":1305138,"title":"El regalo","year":2008,"rating":2,"dubious":false,"date":"2010-07-07 17:19"},{"_id":"1142","normalized_imdb_id":451079,"title":"Horton Hears a Who!","year":2008,"rating":1,"dubious":false,"date":"2010-07-10 06:06"},{"_id":"1143","normalized_imdb_id":865556,"title":"Forbidden Kingdom, The","year":2008,"rating":1,"dubious":false,"date":"2010-07-10 06:10"},{"_id":"1144","normalized_imdb_id":822832,"title":"Marley & Me","year":2008,"rating":2,"dubious":false,"date":"2010-07-10 06:14"},{"_id":"1161","normalized_imdb_id":465502,"title":"Igor","year":2008,"rating":2,"dubious":false,"date":"2010-07-11 01:33"},{"_id":"1164","normalized_imdb_id":449487,"title":"Passengers","year":2008,"rating":3,"dubious":false,"date":"2010-07-11 21:59"},{"_id":"1516","normalized_imdb_id":447166,"title":"Gamers: Dorkness Rising, The","year":2008,"rating":3,"dubious":true,"date":"2010-08-30 21:56"},{"_id":"1443","normalized_imdb_id":1259014,"title":"Mesrine: Killer Instinct","year":2008,"rating":1,"dubious":false,"date":"2010-08-05 22:38"},{"_id":"1451","normalized_imdb_id":1046997,"title":"Miracle at St. Anna","year":2008,"rating":2,"dubious":false,"date":"2010-08-08 17:19"},{"_id":"1492","normalized_imdb_id":1288589,"title":"Helen","year":2008,"rating":3,"dubious":false,"date":"2010-08-22 10:42"},{"_id":"1495","normalized_imdb_id":1032755,"title":"RocknRolla","year":2008,"rating":1,"dubious":false,"date":"2010-08-22 22:36"},{"_id":"1504","normalized_imdb_id":1186369,"title":"Lorna's Silence","year":2008,"rating":3,"dubious":false,"date":"2010-08-26 11:54"},{"_id":"1585","normalized_imdb_id":942903,"title":"Stargate: The Ark of Truth","year":2008,"rating":3,"dubious":false,"date":"2010-09-22 04:11"},{"_id":"1394","normalized_imdb_id":1024255,"title":"Wild Child","year":2008,"rating":3,"dubious":false,"date":"2010-07-28 08:06"},{"_id":"1398","normalized_imdb_id":1029234,"title":"Martyrs","year":2008,"rating":3,"dubious":false,"date":"2010-07-28 11:44"},{"_id":"1616","normalized_imdb_id":383028,"title":"Synecdoche, New York","year":2008,"rating":3,"dubious":true,"date":"2010-09-30 21:13"},{"_id":"1628","normalized_imdb_id":1124394,"title":"Sauna","year":2008,"rating":1,"dubious":false,"date":"2010-10-03 18:06"},{"_id":"1641","normalized_imdb_id":467200,"title":"Other Boleyn Girl, The","year":2008,"rating":3,"dubious":false,"date":"2010-10-04 20:14"},{"_id":"1674","normalized_imdb_id":420238,"title":"Tale of Despereaux, The","year":2008,"rating":3,"dubious":false,"date":"2010-10-21 21:06"},{"_id":"1709","normalized_imdb_id":1129423,"title":"Fireproof","year":2008,"rating":2,"dubious":false,"date":"2010-10-29 22:07"},{"_id":"1718","normalized_imdb_id":926063,"title":"Dance of the Dead","year":2008,"rating":1,"dubious":false,"date":"2010-11-01 17:24"},{"_id":"1744","normalized_imdb_id":986230,"title":"French Film","year":2008,"rating":3,"dubious":true,"date":"2010-11-07 14:56"},{"_id":"1746","normalized_imdb_id":938341,"title":"Tôkyô sonata (Tokyo Sonata)","year":2008,"rating":1,"dubious":false,"date":"2010-11-08 10:07"},{"_id":"1749","normalized_imdb_id":1152850,"title":"Wendy and Lucy","year":2008,"rating":3,"dubious":false,"date":"2010-11-11 00:12"},{"_id":"1751","normalized_imdb_id":1185616,"title":"Waltz with Bashir","year":2008,"rating":0,"dubious":false,"date":"2010-11-13 17:06"},{"_id":"1757","normalized_imdb_id":425637,"title":"Chi bi (Red Cliff)","year":2008,"rating":1,"dubious":false,"date":"2010-11-15 05:53"},{"_id":"1801","normalized_imdb_id":1370212,"title":"My Only Sunshine","year":2008,"rating":3,"dubious":false,"date":"2010-12-01 00:04"},{"_id":"1829","normalized_imdb_id":1056437,"title":"Sky Crawlers, The","year":2008,"rating":3,"dubious":false,"date":"2010-12-06 20:25"},{"_id":"1891","normalized_imdb_id":800039,"title":"Forgetting Sarah Marshall","year":2008,"rating":3,"dubious":false,"date":"2011-01-04 11:46"},{"_id":"1892","normalized_imdb_id":455824,"title":"Australia","year":2008,"rating":2,"dubious":false,"date":"2011-01-04 12:53"},{"_id":"1912","normalized_imdb_id":109688,"title":"Ashes of Time Redux","year":2008,"rating":1,"dubious":false,"date":"2011-01-15 10:07"},{"_id":"1915","normalized_imdb_id":443559,"title":"Killshot","year":2008,"rating":1,"dubious":false,"date":"2011-01-16 04:28"},{"_id":"2022","normalized_imdb_id":951216,"title":"Mad Money","year":2008,"rating":3,"dubious":false,"date":"2011-02-12 03:18"},{"_id":"2056","normalized_imdb_id":1284591,"title":"Sut","year":2008,"rating":1,"dubious":false,"date":"2011-02-18 23:04"},{"_id":"2078","normalized_imdb_id":1056444,"title":"Damn Bastard!","year":2008,"rating":0,"dubious":false,"date":"2011-02-27 15:36"},{"_id":"2082","normalized_imdb_id":1152397,"title":"American Violet","year":2008,"rating":3,"dubious":false,"date":"2011-02-28 18:20"},{"_id":"2094","normalized_imdb_id":1048171,"title":"Séraphine","year":2008,"rating":3,"dubious":false,"date":"2011-03-07 11:44"},{"_id":"2116","normalized_imdb_id":814314,"title":"Seven Pounds","year":2008,"rating":3,"dubious":false,"date":"2011-03-13 22:30"},{"_id":"2118","normalized_imdb_id":1094661,"title":"Coco Chanel","year":2008,"rating":3,"dubious":false,"date":"2011-03-14 14:45"},{"_id":"2203","normalized_imdb_id":1095442,"title":"Goodbye Solo","year":2008,"rating":1,"dubious":false,"date":"2011-04-22 06:45"},{"_id":"2257","normalized_imdb_id":951257,"title":"Bi the Way","year":2008,"rating":3,"dubious":false,"date":"2011-04-30 20:09"},{"_id":"2259","normalized_imdb_id":1034325,"title":"Phoebe in Wonderland","year":2008,"rating":3,"dubious":false,"date":"2011-04-30 20:24"},{"_id":"2269","normalized_imdb_id":960890,"title":"Zombie Strippers!","year":2008,"rating":3,"dubious":false,"date":"2011-05-04 03:43"},{"_id":"2274","normalized_imdb_id":1104733,"title":"Hamlet 2","year":2008,"rating":3,"dubious":false,"date":"2011-05-04 16:15"},{"_id":"2331","normalized_imdb_id":800240,"title":"Deception","year":2008,"rating":1,"dubious":false,"date":"2011-05-23 23:10"},{"_id":"2342","normalized_imdb_id":1133991,"title":"What Doesn't Kill You","year":2008,"rating":1,"dubious":false,"date":"2011-05-25 18:41"},{"_id":"2357","normalized_imdb_id":896031,"title":"Loss of a Teardrop Diamond, The","year":2008,"rating":3,"dubious":false,"date":"2011-05-29 04:35"},{"_id":"2424","normalized_imdb_id":844286,"title":"Brothers Bloom, The","year":2008,"rating":3,"dubious":true,"date":"2011-06-21 21:09"},{"_id":"2460","normalized_imdb_id":1179080,"title":"Rough Aunties","year":2008,"rating":3,"dubious":false,"date":"2011-06-29 13:43"},{"_id":"2461","normalized_imdb_id":965440,"title":"Rain","year":2008,"rating":3,"dubious":false,"date":"2011-06-29 13:50"},{"_id":"2516","normalized_imdb_id":1100048,"title":"35 Shots of Rum","year":2008,"rating":3,"dubious":false,"date":"2011-07-11 13:27"},{"_id":"2614","normalized_imdb_id":961066,"title":"Everlasting Moments","year":2008,"rating":3,"dubious":false,"date":"2011-08-14 00:50"},{"_id":"2694","normalized_imdb_id":1279083,"title":"Examined Life","year":2008,"rating":3,"dubious":false,"date":"2011-09-18 21:51"},{"_id":"2832","normalized_imdb_id":1126596,"title":"Adulthood","year":2008,"rating":2,"dubious":false,"date":"2011-11-07 23:52"},{"_id":"2841","normalized_imdb_id":985699,"title":"Valkyrie","year":2008,"rating":1,"dubious":false,"date":"2011-11-15 02:37"},{"_id":"2843","normalized_imdb_id":1117379,"title":"Bonnie & Clyde vs. Dracula","year":2008,"rating":3,"dubious":false,"date":"2011-11-15 18:12"},{"_id":"2858","normalized_imdb_id":892899,"title":"Outpost","year":2008,"rating":0,"dubious":false,"date":"2011-11-21 01:20"},{"_id":"2860","normalized_imdb_id":1178197,"title":"World is Big and Salvation Lurks Around the Corner, The","year":2008,"rating":1,"dubious":false,"date":"2011-11-21 10:38"},{"_id":"2968","normalized_imdb_id":800241,"title":"Transsiberian","year":2008,"rating":3,"dubious":false,"date":"2012-01-01 22:23"},{"_id":"2996","normalized_imdb_id":1199099,"title":"Merlin","year":2008,"rating":3,"dubious":false,"date":"2012-01-18 19:01"},{"_id":"3016","normalized_imdb_id":1077094,"title":"One Million Yen Girl","year":2008,"rating":3,"dubious":false,"date":"2012-01-28 20:00"},{"_id":"3020","normalized_imdb_id":887971,"title":"While She Was Out","year":2008,"rating":3,"dubious":false,"date":"2012-01-29 04:19"},{"_id":"3029","normalized_imdb_id":1172203,"title":"Sita Sings the Blues","year":2008,"rating":1,"dubious":false,"date":"2012-02-03 03:05"},{"_id":"3072","normalized_imdb_id":1356380,"title":"No. 1 Ladies' Detective Agency, The","year":2008,"rating":3,"dubious":false,"date":"2012-02-26 08:21"},{"_id":"3128","normalized_imdb_id":489018,"title":"Day of the Dead","year":2008,"rating":3,"dubious":false,"date":"2012-03-19 01:41"},{"_id":"3182","normalized_imdb_id":963743,"title":"Angus, Thongs and Perfect Snogging","year":2008,"rating":3,"dubious":false,"date":"2012-04-13 17:09"},{"_id":"3281","normalized_imdb_id":1227929,"title":"Herb & Dorothy","year":2008,"rating":3,"dubious":false,"date":"2012-05-22 23:19"},{"_id":"3288","normalized_imdb_id":1294138,"title":"Barbie and the Diamond Castle","year":2008,"rating":3,"dubious":false,"date":"2012-05-27 18:38"},{"_id":"3304","normalized_imdb_id":882978,"title":"Three Kingdoms: Resurrection of the Dragon","year":2008,"rating":1,"dubious":false,"date":"2012-06-02 12:17"},{"_id":"3381","normalized_imdb_id":1022606,"title":"Lion's Den","year":2008,"rating":3,"dubious":false,"date":"2012-06-26 04:21"},{"_id":"3444","normalized_imdb_id":1111890,"title":"Diary of a Nymphomaniac","year":2008,"rating":3,"dubious":false,"date":"2012-07-23 23:44"},{"_id":"3457","normalized_imdb_id":902290,"title":"I Sell the Dead","year":2008,"rating":1,"dubious":false,"date":"2012-08-04 20:00"},{"_id":"3461","normalized_imdb_id":864761,"title":"Duchess, The","year":2008,"rating":3,"dubious":false,"date":"2012-08-09 23:22"},{"_id":"3466","normalized_imdb_id":948535,"title":"Paris 36","year":2008,"rating":1,"dubious":false,"date":"2012-08-11 14:59"},{"_id":"3467","normalized_imdb_id":819714,"title":"Edge of Love, The","year":2008,"rating":3,"dubious":false,"date":"2012-08-11 22:10"},{"_id":"3510","normalized_imdb_id":1263778,"title":"La belle personne","year":2008,"rating":3,"dubious":false,"date":"2012-09-02 16:52"},{"_id":"3512","normalized_imdb_id":476991,"title":"Were the World Mine","year":2008,"rating":3,"dubious":false,"date":"2012-09-02 21:58"},{"_id":"3612","normalized_imdb_id":482606,"title":"Strangers, The","year":2008,"rating":3,"dubious":true,"date":"2012-10-19 01:15"},{"_id":"3693","normalized_imdb_id":1260502,"title":"Ghost in the Shell 2.0","year":2008,"rating":3,"dubious":false,"date":"2012-11-26 14:08"},{"_id":"3711","normalized_imdb_id":1034303,"title":"Defiance","year":2008,"rating":3,"dubious":false,"date":"2012-12-05 15:15"},{"_id":"3758","normalized_imdb_id":483607,"title":"Doomsday","year":2008,"rating":3,"dubious":false,"date":"2012-12-20 05:49"},{"_id":"3965","normalized_imdb_id":1082853,"title":"Management","year":2008,"rating":2,"dubious":false,"date":"2013-03-09 21:08"},{"_id":"3998","normalized_imdb_id":486321,"title":"Fly Me to the Moon","year":2008,"rating":0,"dubious":false,"date":"2013-03-19 13:41"},{"_id":"4026","normalized_imdb_id":1266097,"title":"Pirates II: Stagnetti's Revenge","year":2008,"rating":3,"dubious":false,"date":"2013-04-04 22:30"},{"_id":"4030","normalized_imdb_id":765432,"title":"Baader Meinhof Complex, The","year":2008,"rating":3,"dubious":false,"date":"2013-04-05 21:50"},{"_id":"4046","normalized_imdb_id":494652,"title":"Welcome Home, Roscoe Jenkins","year":2008,"rating":3,"dubious":true,"date":"2013-04-11 19:03"},{"_id":"4483","normalized_imdb_id":487928,"title":"Dante 01","year":2008,"rating":3,"dubious":false,"date":"2013-08-17 12:37"},{"_id":"4730","normalized_imdb_id":932669,"title":"Older Than America","year":2008,"rating":3,"dubious":false,"date":"2013-10-22 20:00"},{"_id":"4767","normalized_imdb_id":1052040,"title":"Seventh Moon","year":2008,"rating":0,"dubious":false,"date":"2013-11-01 16:32"},{"_id":"4805","normalized_imdb_id":831887,"title":"Spirit, The","year":2008,"rating":2,"dubious":false,"date":"2013-11-11 04:40"},{"_id":"4812","normalized_imdb_id":915460,"title":"Grizzly Park","year":2008,"rating":3,"dubious":false,"date":"2013-11-11 22:07"},{"_id":"4935","normalized_imdb_id":1277728,"title":"Mid-August Lunch","year":2008,"rating":3,"dubious":false,"date":"2013-12-10 03:30"},{"_id":"4959","normalized_imdb_id":984130,"title":"Miao Miao","year":2008,"rating":3,"dubious":false,"date":"2013-12-17 19:35"},{"_id":"5007","normalized_imdb_id":866439,"title":"Made of Honor","year":2008,"rating":2,"dubious":false,"date":"2013-12-29 23:08"},{"_id":"5048","normalized_imdb_id":368563,"title":"Possession","year":2008,"rating":3,"dubious":false,"date":"2014-01-06 01:23"},{"_id":"5050","normalized_imdb_id":896534,"title":"Deadgirl","year":2008,"rating":0,"dubious":false,"date":"2014-01-06 19:15"},{"_id":"5077","normalized_imdb_id":926129,"title":"Prom Night","year":2008,"rating":3,"dubious":false,"date":"2014-01-15 17:36"},{"_id":"5148","normalized_imdb_id":2132415,"title":"Overcome","year":2008,"rating":2,"dubious":false,"date":"2014-02-08 03:10"},{"_id":"5174","normalized_imdb_id":1052352,"title":"Princess: A Modern Fairtyale","year":2008,"rating":3,"dubious":false,"date":"2014-02-16 05:57"},{"_id":"5205","normalized_imdb_id":790686,"title":"Mirrors","year":2008,"rating":1,"dubious":false,"date":"2014-02-26 13:46"},{"_id":"5244","normalized_imdb_id":785007,"title":"Over Her Dead Body","year":2008,"rating":3,"dubious":false,"date":"2014-03-06 23:37"},{"_id":"5412","normalized_imdb_id":426592,"title":"Superhero Movie","year":2008,"rating":3,"dubious":true,"date":"2014-04-22 17:30"},{"_id":"5469","normalized_imdb_id":1340664,"title":"Kenna","year":2008,"rating":3,"dubious":false,"date":"2014-05-14 23:36"},{"_id":"5474","normalized_imdb_id":1172570,"title":"Bronson","year":2008,"rating":1,"dubious":false,"date":"2014-05-15 23:51"},{"_id":"5475","normalized_imdb_id":963794,"title":"Ruins, The","year":2008,"rating":3,"dubious":false,"date":"2014-05-16 05:03"},{"_id":"5481","normalized_imdb_id":1153103,"title":"Dead at 17","year":2008,"rating":3,"dubious":false,"date":"2014-05-16 23:25"},{"_id":"5584","normalized_imdb_id":830570,"title":"I Can't Think Straight","year":2008,"rating":3,"dubious":false,"date":"2014-06-22 19:37"},{"_id":"5656","normalized_imdb_id":859163,"title":"Mummy: Tomb of the Dragon Emperor, The","year":2008,"rating":3,"dubious":false,"date":"2014-07-27 20:11"},{"_id":"5658","normalized_imdb_id":1049948,"title":"Casi divas","year":2008,"rating":3,"dubious":false,"date":"2014-07-29 20:54"},{"_id":"5691","normalized_imdb_id":1143155,"title":"Treeless Mountain","year":2008,"rating":3,"dubious":false,"date":"2014-08-12 18:48"},{"_id":"5703","normalized_imdb_id":1142798,"title":"Family That Preys, The","year":2008,"rating":3,"dubious":false,"date":"2014-08-17 05:21"},{"_id":"5748","normalized_imdb_id":1173745,"title":"Revanche","year":2008,"rating":1,"dubious":false,"date":"2014-09-14 21:47"},{"_id":"5858","normalized_imdb_id":1190539,"title":"Chaser, The","year":2008,"rating":0,"dubious":false,"date":"2014-10-21 17:54"},{"_id":"5864","normalized_imdb_id":396707,"title":"Secret of Moonacre, The","year":2008,"rating":3,"dubious":false,"date":"2014-10-23 03:30"},{"_id":"5904","normalized_imdb_id":1073241,"title":"Nothing But the Truth","year":2008,"rating":3,"dubious":false,"date":"2014-11-06 20:45"},{"_id":"6059","normalized_imdb_id":435679,"title":"Keith","year":2008,"rating":3,"dubious":false,"date":"2015-01-21 19:09"},{"_id":"6097","normalized_imdb_id":1046947,"title":"Last Chance Harvey","year":2008,"rating":3,"dubious":false,"date":"2015-02-04 21:29"},{"_id":"6262","normalized_imdb_id":1068641,"title":"Burning Plain, The","year":2008,"rating":3,"dubious":false,"date":"2015-05-21 18:05"},{"_id":"6287","normalized_imdb_id":1064932,"title":"Bienvenue chez les Ch'tis","year":2008,"rating":2,"dubious":false,"date":"2015-06-01 15:16"},{"_id":"6347","normalized_imdb_id":1055366,"title":"Camp Rock","year":2008,"rating":3,"dubious":false,"date":"2015-07-09 02:55"},{"_id":"6543","normalized_imdb_id":964586,"title":"Skin","year":2008,"rating":3,"dubious":false,"date":"2015-11-16 05:32"},{"_id":"6621","normalized_imdb_id":443701,"title":"X-Files: I Want to Believe, The","year":2008,"rating":3,"dubious":false,"date":"2015-12-20 23:21"},{"_id":"6620","normalized_imdb_id":1286742,"title":"Clash of the Santas","year":2008,"rating":3,"dubious":false,"date":"2015-12-20 18:01"},{"_id":"6681","normalized_imdb_id":948530,"title":"Aanrijding in Moscou","year":2008,"rating":3,"dubious":false,"date":"2016-01-26 14:41"},{"_id":"6688","normalized_imdb_id":804529,"title":"Sleep Dealer","year":2008,"rating":0,"dubious":false,"date":"2016-01-28 19:03"},{"_id":"6817","normalized_imdb_id":874425,"title":"Pretty Ugly People","year":2008,"rating":3,"dubious":false,"date":"2016-04-01 03:19"},{"_id":"6825","normalized_imdb_id":443649,"title":"10,000 BC","year":2008,"rating":1,"dubious":false,"date":"2016-04-09 19:26"},{"_id":"6861","normalized_imdb_id":1037146,"title":"All about women","year":2008,"rating":3,"dubious":false,"date":"2016-04-29 18:25"},{"_id":"6863","normalized_imdb_id":491044,"title":"Sparrow","year":2008,"rating":0,"dubious":false,"date":"2016-04-29 18:43"},{"_id":"6893","normalized_imdb_id":1226291,"title":"Blind Loves","year":2008,"rating":2,"dubious":false,"date":"2016-05-19 21:58"},{"_id":"6946","normalized_imdb_id":1206285,"title":"Camino","year":2008,"rating":3,"dubious":false,"date":"2016-06-22 15:18"},{"_id":"7071","normalized_imdb_id":1221141,"title":"La mujer sin cabeza","year":2008,"rating":3,"dubious":false,"date":"2016-08-26 14:17"},{"_id":"7074","normalized_imdb_id":1172963,"title":"Etz Limon","year":2008,"rating":3,"dubious":false,"date":"2016-08-27 12:29"},{"_id":"7127","normalized_imdb_id":462499,"title":"Rambo","year":2008,"rating":0,"dubious":false,"date":"2016-09-19 22:07"},{"_id":"7190","normalized_imdb_id":914798,"title":"Boy in the Striped Pajamas, The","year":2008,"rating":3,"dubious":true,"date":"2016-10-12 15:29"},{"_id":"7210","normalized_imdb_id":1339302,"title":"Bleach: Fade to Black, I Call Your Name","year":2008,"rating":3,"dubious":false,"date":"2016-10-17 20:18"},{"_id":"7381","normalized_imdb_id":1078600,"title":"Solo Quiero Caminar","year":2008,"rating":3,"dubious":false,"date":"2017-01-06 22:18"},{"_id":"7437","normalized_imdb_id":1063669,"title":"Die Welle","year":2008,"rating":3,"dubious":false,"date":"2017-02-10 21:43"},{"_id":"7536","normalized_imdb_id":1280558,"title":"A Wednesday","year":2008,"rating":1,"dubious":false,"date":"2017-03-28 16:26"},{"_id":"7622","normalized_imdb_id":412536,"title":"Brideshead Revisited","year":2008,"rating":1,"dubious":false,"date":"2017-05-21 11:16"},{"_id":"7641","normalized_imdb_id":986233,"title":"Hunger","year":2008,"rating":0,"dubious":false,"date":"2017-05-21 13:36"},{"_id":"7657","normalized_imdb_id":1067733,"title":"Patrik, Age 1.5","year":2008,"rating":1,"dubious":false,"date":"2017-05-21 17:44"},{"_id":"7813","normalized_imdb_id":1076252,"title":"Picture This","year":2008,"rating":2,"dubious":false,"date":"2017-09-22 05:11"},{"_id":"8387","normalized_imdb_id":1227926,"title":"Dr. Horrible's Sing-Along Blog","year":2008,"rating":0,"dubious":false,"date":"2018-08-27 22:06"},{"_id":"8503","normalized_imdb_id":1267379,"title":"Dead Space: Downfall","year":2008,"rating":2,"dubious":false,"date":"2018-11-29 02:48"},{"_id":"8528","normalized_imdb_id":1284526,"title":"Venkovsky ucitel","year":2008,"rating":1,"dubious":false,"date":"2018-12-14 22:28"},{"_id":"8534","normalized_imdb_id":1092019,"title":"TBS","year":2008,"rating":1,"dubious":false,"date":"2018-12-14 23:00"},{"_id":"8536","normalized_imdb_id":1114723,"title":"Mannen som elsket Yngve","year":2008,"rating":1,"dubious":false,"date":"2018-12-14 23:07"},{"_id":"8563","normalized_imdb_id":1235075,"title":"Valami Amerika 2","year":2008,"rating":1,"dubious":false,"date":"2018-12-15 00:10"},{"_id":"8698","normalized_imdb_id":914797,"title":"Bottle Shock","year":2008,"rating":1,"dubious":false,"date":"2019-04-08 03:05"},{"_id":"8706","normalized_imdb_id":830535,"title":"Disfigured","year":2008,"rating":3,"dubious":false,"date":"2019-04-17 01:52"},{"_id":"8818","normalized_imdb_id":416236,"title":"Spiderwick Chronicles, The","year":2008,"rating":0,"dubious":false,"date":"2019-08-15 09:40"},{"_id":"8854","normalized_imdb_id":816556,"title":"Lake Mungo","year":2008,"rating":1,"dubious":false,"date":"2019-09-16 23:31"},{"_id":"9196","normalized_imdb_id":1286124,"title":"iCarly: iGo to Japan","year":2008,"rating":3,"dubious":false,"date":"2020-07-09 06:47"},{"_id":"9291","normalized_imdb_id":1132626,"title":"Saw V","year":2008,"rating":3,"dubious":false,"date":"2020-10-04 03:33"},{"_id":"9340","normalized_imdb_id":947802,"title":"Lakeview Terrace","year":2008,"rating":3,"dubious":false,"date":"2020-11-26 01:11"},{"_id":"9552","normalized_imdb_id":1220719,"title":"Yip Man","year":2008,"rating":0,"dubious":false,"date":"2021-03-14 21:12"},{"_id":"9684","normalized_imdb_id":1073498,"title":"Meet the Spartans","year":2008,"rating":1,"dubious":false,"date":"2021-04-27 19:11"},{"_id":"10057","normalized_imdb_id":1023111,"title":"Never Back Down","year":2008,"rating":2,"dubious":true,"date":"2021-09-17 19:52"},{"_id":"10060","normalized_imdb_id":489282,"title":"Strange Wilderness","year":2008,"rating":0,"dubious":false,"date":"2021-09-18 02:39"},{"_id":"10150","normalized_imdb_id":1185834,"title":"Star Wars: The Clone Wars","year":2008,"rating":1,"dubious":false,"date":"2021-12-01 15:09"},{"_id":"10160","normalized_imdb_id":1172206,"title":"Somers Town","year":2008,"rating":1,"dubious":false,"date":"2021-12-14 06:52"},{"_id":"276","normalized_imdb_id":1054487,"title":"Futurama: Into the Wild Green Yonder","year":2009,"rating":3,"dubious":false,"date":"2009-02-15 01:56"},{"_id":"278","normalized_imdb_id":1079444,"title":"Dead Like Me: Life After Death","year":2009,"rating":3,"dubious":false,"date":"2009-02-15 01:57"},{"_id":"307","normalized_imdb_id":1112782,"title":"Thick as Thieves","year":2009,"rating":1,"dubious":false,"date":"2009-03-29 10:47"},{"_id":"311","normalized_imdb_id":1091722,"title":"Adventureland","year":2009,"rating":3,"dubious":false,"date":"2009-04-14 07:28"},{"_id":"314","normalized_imdb_id":327597,"title":"Coraline","year":2009,"rating":3,"dubious":false,"date":"2009-04-21 23:55"},{"_id":"315","normalized_imdb_id":974661,"title":"17 Again","year":2009,"rating":3,"dubious":false,"date":"2009-04-24 03:43"},{"_id":"324","normalized_imdb_id":796366,"title":"Star Trek","year":2009,"rating":3,"dubious":false,"date":"2009-05-15 20:05"},{"_id":"331","normalized_imdb_id":808151,"title":"Angels & Demons","year":2009,"rating":0,"dubious":false,"date":"2009-05-29 03:38"},{"_id":"334","normalized_imdb_id":1049413,"title":"Up","year":2009,"rating":1,"dubious":false,"date":"2009-06-03 19:17"},{"_id":"344","normalized_imdb_id":438488,"title":"Terminator Salvation","year":2009,"rating":2,"dubious":false,"date":"2009-06-16 20:52"},{"_id":"347","normalized_imdb_id":821642,"title":"Soloist, The","year":2009,"rating":1,"dubious":false,"date":"2009-06-20 09:13"},{"_id":"353","normalized_imdb_id":465580,"title":"Push","year":2009,"rating":3,"dubious":false,"date":"2009-06-22 23:06"},{"_id":"354","normalized_imdb_id":448011,"title":"Knowing","year":2009,"rating":1,"dubious":false,"date":"2009-06-23 23:12"},{"_id":"358","normalized_imdb_id":409459,"title":"Watchmen","year":2009,"rating":3,"dubious":false,"date":"2009-07-05 22:24"},{"_id":"361","normalized_imdb_id":1119646,"title":"Hangover, The","year":2009,"rating":1,"dubious":false,"date":"2009-07-13 09:53"},{"_id":"371","normalized_imdb_id":1152836,"title":"Public Enemies","year":2009,"rating":1,"dubious":false,"date":"2009-07-13 17:51"},{"_id":"375","normalized_imdb_id":417741,"title":"Harry Potter and the Half-Blood Prince","year":2009,"rating":3,"dubious":false,"date":"2009-07-17 09:39"},{"_id":"377","normalized_imdb_id":758751,"title":"Grey Gardens","year":2009,"rating":3,"dubious":false,"date":"2009-07-22 16:44"},{"_id":"385","normalized_imdb_id":1196339,"title":"Princess Protection Program","year":2009,"rating":3,"dubious":false,"date":"2009-07-30 19:48"},{"_id":"408","normalized_imdb_id":1201167,"title":"Funny People","year":2009,"rating":1,"dubious":false,"date":"2009-08-03 06:07"},{"_id":"423","normalized_imdb_id":806027,"title":"Blood: The Last Vampire","year":2009,"rating":3,"dubious":false,"date":"2009-08-07 03:47"},{"_id":"427","normalized_imdb_id":1135503,"title":"Julie & Julia","year":2009,"rating":3,"dubious":false,"date":"2009-08-08 21:01"},{"_id":"434","normalized_imdb_id":1022603,"title":"(500) Days of Summer","year":2009,"rating":1,"dubious":false,"date":"2009-08-10 01:29"},{"_id":"453","normalized_imdb_id":1046173,"title":"G.I. Joe: The Rise of Cobra","year":2009,"rating":1,"dubious":false,"date":"2009-08-14 01:14"},{"_id":"456","normalized_imdb_id":1111422,"title":"Taking of Pelham 123, The","year":2009,"rating":0,"dubious":false,"date":"2009-08-14 22:02"},{"_id":"458","normalized_imdb_id":1080016,"title":"Ice Age: Dawn of the Dinosaurs","year":2009,"rating":1,"dubious":false,"date":"2009-08-15 16:30"},{"_id":"468","normalized_imdb_id":1136608,"title":"District 9","year":2009,"rating":1,"dubious":false,"date":"2009-08-17 20:20"},{"_id":"471","normalized_imdb_id":1148204,"title":"Orphan","year":2009,"rating":3,"dubious":false,"date":"2009-08-21 15:40"},{"_id":"477","normalized_imdb_id":1055369,"title":"Transformers: Revenge of the Fallen","year":2009,"rating":3,"dubious":false,"date":"2009-08-23 21:40"},{"_id":"485","normalized_imdb_id":1132620,"title":"Girl with the Dragon Tattoo, The","year":2009,"rating":3,"dubious":true,"date":"2009-08-27 22:45"},{"_id":"494","normalized_imdb_id":472033,"title":"9","year":2009,"rating":0,"dubious":false,"date":"2009-09-10 03:29"},{"_id":"496","normalized_imdb_id":1226774,"title":"In the Loop","year":2009,"rating":3,"dubious":false,"date":"2009-09-11 21:40"},{"_id":"497","normalized_imdb_id":1178663,"title":"Whatever Works","year":2009,"rating":3,"dubious":true,"date":"2009-09-11 21:45"},{"_id":"498","normalized_imdb_id":1135487,"title":"Duplicity","year":2009,"rating":2,"dubious":false,"date":"2009-09-11 21:50"},{"_id":"507","normalized_imdb_id":458525,"title":"X-Men Origins: Wolverine","year":2009,"rating":3,"dubious":true,"date":"2009-09-12 13:39"},{"_id":"518","normalized_imdb_id":1124039,"title":"Echelon Conspiracy","year":2009,"rating":0,"dubious":false,"date":"2009-10-04 07:25"},{"_id":"519","normalized_imdb_id":1155056,"title":"I Love You, Man","year":2009,"rating":2,"dubious":false,"date":"2009-10-04 13:29"},{"_id":"522","normalized_imdb_id":1172233,"title":"Whip It","year":2009,"rating":3,"dubious":false,"date":"2009-10-05 16:38"},{"_id":"527","normalized_imdb_id":986263,"title":"Surrogates","year":2009,"rating":1,"dubious":false,"date":"2009-10-21 07:25"},{"_id":"528","normalized_imdb_id":1156398,"title":"Zombieland","year":2009,"rating":3,"dubious":false,"date":"2009-10-23 17:07"},{"_id":"531","normalized_imdb_id":1107860,"title":"Maiden Heist, The","year":2009,"rating":0,"dubious":false,"date":"2009-10-26 21:54"},{"_id":"534","normalized_imdb_id":844471,"title":"Cloudy with a Chance of Meatballs","year":2009,"rating":1,"dubious":false,"date":"2009-10-30 23:05"},{"_id":"536","normalized_imdb_id":1424431,"title":"Tsar","year":2009,"rating":1,"dubious":false,"date":"2009-11-01 12:59"},{"_id":"539","normalized_imdb_id":834001,"title":"Underworld: Rise of the Lycans","year":2009,"rating":1,"dubious":false,"date":"2009-11-02 16:40"},{"_id":"544","normalized_imdb_id":1182345,"title":"Moon","year":2009,"rating":1,"dubious":true,"date":"2009-11-16 04:24"},{"_id":"548","normalized_imdb_id":1234548,"title":"Men Who Stare at Goats, The","year":2009,"rating":0,"dubious":false,"date":"2009-11-23 17:46"},{"_id":"550","normalized_imdb_id":432283,"title":"Fantastic Mr. Fox","year":2009,"rating":1,"dubious":false,"date":"2009-11-29 16:50"},{"_id":"555","normalized_imdb_id":1058017,"title":"Invention of Lying, The","year":2009,"rating":2,"dubious":false,"date":"2009-12-06 12:13"},{"_id":"557","normalized_imdb_id":361748,"title":"Inglourious Basterds","year":2009,"rating":3,"dubious":true,"date":"2009-12-07 23:20"},{"_id":"562","normalized_imdb_id":780521,"title":"Princess and the Frog, The","year":2009,"rating":3,"dubious":false,"date":"2009-12-12 19:58"},{"_id":"563","normalized_imdb_id":1186367,"title":"Ninja Assassin","year":2009,"rating":1,"dubious":false,"date":"2009-12-16 14:29"},{"_id":"578","normalized_imdb_id":1193138,"title":"Up in the Air","year":2009,"rating":2,"dubious":false,"date":"2009-12-22 02:57"},{"_id":"582","normalized_imdb_id":499549,"title":"Avatar","year":2009,"rating":3,"dubious":false,"date":"2009-12-22 23:33"},{"_id":"632","normalized_imdb_id":988045,"title":"Sherlock Holmes","year":2009,"rating":1,"dubious":false,"date":"2010-01-05 03:10"},{"_id":"633","normalized_imdb_id":929632,"title":"Precious: Based on the Novel Push by Sapphire","year":2009,"rating":3,"dubious":false,"date":"2010-01-05 04:53"},{"_id":"635","normalized_imdb_id":1212974,"title":"Bitch Slap","year":2009,"rating":3,"dubious":false,"date":"2010-01-08 23:11"},{"_id":"641","normalized_imdb_id":1172994,"title":"House of the Devil, The","year":2009,"rating":3,"dubious":false,"date":"2010-01-18 23:15"},{"_id":"642","normalized_imdb_id":971209,"title":"A Perfect Getaway","year":2009,"rating":3,"dubious":true,"date":"2010-01-18 23:18"},{"_id":"643","normalized_imdb_id":1131734,"title":"Jennifer's Body","year":2009,"rating":3,"dubious":false,"date":"2010-01-18 23:22"},{"_id":"644","normalized_imdb_id":870984,"title":"Antichrist","year":2009,"rating":0,"dubious":false,"date":"2010-01-18 23:25"},{"_id":"654","normalized_imdb_id":1127180,"title":"Drag Me to Hell","year":2009,"rating":3,"dubious":false,"date":"2010-01-20 05:14"},{"_id":"665","normalized_imdb_id":1252595,"title":"Ghosted","year":2009,"rating":3,"dubious":false,"date":"2010-01-23 23:11"},{"_id":"677","normalized_imdb_id":1272041,"title":"My Queen Karo","year":2009,"rating":3,"dubious":false,"date":"2010-02-04 14:29"},{"_id":"678","normalized_imdb_id":1216496,"title":"Madeo","year":2009,"rating":3,"dubious":false,"date":"2010-02-04 14:30"},{"_id":"680","normalized_imdb_id":814331,"title":"Spring Breakdown","year":2009,"rating":3,"dubious":false,"date":"2010-02-13 05:16"},{"_id":"692","normalized_imdb_id":1186830,"title":"Agora","year":2009,"rating":1,"dubious":false,"date":"2010-02-28 17:56"},{"_id":"696","normalized_imdb_id":1054606,"title":"Imaginarium of Doctor Parnassus, The","year":2009,"rating":1,"dubious":false,"date":"2010-03-05 12:37"},{"_id":"697","normalized_imdb_id":1315981,"title":"A Single Man","year":2009,"rating":1,"dubious":false,"date":"2010-03-05 13:42"},{"_id":"703","normalized_imdb_id":485601,"title":"Secret of Kells, The","year":2009,"rating":0,"dubious":false,"date":"2010-03-15 23:51"},{"_id":"709","normalized_imdb_id":875034,"title":"Nine","year":2009,"rating":2,"dubious":true,"date":"2010-03-27 22:54"},{"_id":"712","normalized_imdb_id":1379182,"title":"Dogtooth","year":2009,"rating":3,"dubious":false,"date":"2010-04-01 15:52"},{"_id":"713","normalized_imdb_id":898367,"title":"Road, The","year":2009,"rating":1,"dubious":false,"date":"2010-04-02 09:50"},{"_id":"714","normalized_imdb_id":1012729,"title":"Helen","year":2009,"rating":3,"dubious":false,"date":"2010-04-04 10:49"},{"_id":"718","normalized_imdb_id":380510,"title":"Lovely Bones, The","year":2009,"rating":3,"dubious":false,"date":"2010-04-04 11:08"},{"_id":"721","normalized_imdb_id":1426374,"title":"Los viajes del viento","year":2009,"rating":1,"dubious":false,"date":"2010-04-04 20:06"},{"_id":"724","normalized_imdb_id":1259574,"title":"Red Riding: In the Year of Our Lord 1974","year":2009,"rating":1,"dubious":false,"date":"2010-04-06 09:06"},{"_id":"726","normalized_imdb_id":1232207,"title":"Capitalism: A Love Story","year":2009,"rating":1,"dubious":false,"date":"2010-04-06 23:54"},{"_id":"757","normalized_imdb_id":1045772,"title":"I Love You Phillip Morris","year":2009,"rating":1,"dubious":false,"date":"2010-04-26 15:20"},{"_id":"758","normalized_imdb_id":1349482,"title":"Bring It On: Fight to the Finish","year":2009,"rating":3,"dubious":false,"date":"2010-04-26 15:21"},{"_id":"771","normalized_imdb_id":1230414,"title":"It's Complicated","year":2009,"rating":3,"dubious":false,"date":"2010-04-29 23:35"},{"_id":"774","normalized_imdb_id":1134629,"title":"Private Lives of Pippa Lee, The","year":2009,"rating":3,"dubious":false,"date":"2010-05-02 23:37"},{"_id":"780","normalized_imdb_id":1259571,"title":"New Moon","year":2009,"rating":3,"dubious":false,"date":"2010-05-03 14:33"},{"_id":"798","normalized_imdb_id":1078588,"title":"My Sister's Keeper","year":2009,"rating":3,"dubious":false,"date":"2010-05-13 19:38"},{"_id":"804","normalized_imdb_id":1176740,"title":"Away We Go","year":2009,"rating":3,"dubious":false,"date":"2010-05-14 01:15"},{"_id":"809","normalized_imdb_id":1244668,"title":"Soul Kitchen","year":2009,"rating":1,"dubious":false,"date":"2010-05-16 22:16"},{"_id":"811","normalized_imdb_id":1405808,"title":"Lost Persons Area","year":2009,"rating":1,"dubious":false,"date":"2010-05-16 22:18"},{"_id":"812","normalized_imdb_id":1131729,"title":"Boat That Rocked, The","year":2009,"rating":3,"dubious":false,"date":"2010-05-17 00:04"},{"_id":"888","normalized_imdb_id":1232776,"title":"Fish Tank","year":2009,"rating":3,"dubious":false,"date":"2010-06-01 18:28"},{"_id":"885","normalized_imdb_id":1174732,"title":"An Education","year":2009,"rating":3,"dubious":false,"date":"2010-05-31 19:15"},{"_id":"886","normalized_imdb_id":810784,"title":"Bright Star","year":2009,"rating":3,"dubious":false,"date":"2010-05-31 19:17"},{"_id":"891","normalized_imdb_id":1077262,"title":"Ajami","year":2009,"rating":2,"dubious":false,"date":"2010-06-03 08:24"},{"_id":"892","normalized_imdb_id":1197624,"title":"Law Abiding Citizen","year":2009,"rating":3,"dubious":false,"date":"2010-06-03 21:33"},{"_id":"900","normalized_imdb_id":1017460,"title":"Splice","year":2009,"rating":3,"dubious":false,"date":"2010-06-05 02:43"},{"_id":"906","normalized_imdb_id":375568,"title":"Astro Boy","year":2009,"rating":3,"dubious":true,"date":"2010-06-05 15:49"},{"_id":"910","normalized_imdb_id":433362,"title":"Daybreakers","year":2009,"rating":1,"dubious":false,"date":"2010-06-06 03:31"},{"_id":"915","normalized_imdb_id":1093908,"title":"Confessions of a Shopaholic","year":2009,"rating":3,"dubious":false,"date":"2010-06-07 20:35"},{"_id":"922","normalized_imdb_id":1334537,"title":"Humpday","year":2009,"rating":1,"dubious":false,"date":"2010-06-08 17:45"},{"_id":"932","normalized_imdb_id":910554,"title":"Frequently Asked Questions About Time Travel","year":2009,"rating":2,"dubious":false,"date":"2010-06-11 07:32"},{"_id":"946","normalized_imdb_id":824758,"title":"Last Station, The","year":2009,"rating":3,"dubious":false,"date":"2010-06-16 08:38"},{"_id":"951","normalized_imdb_id":1210042,"title":"Brooklyn's Finest","year":2009,"rating":1,"dubious":false,"date":"2010-06-16 17:53"},{"_id":"978","normalized_imdb_id":1467304,"title":"Human Centipede (First Sequence), The","year":2009,"rating":3,"dubious":false,"date":"2010-06-25 17:55"},{"_id":"987","normalized_imdb_id":1130080,"title":"Informant!, The","year":2009,"rating":1,"dubious":false,"date":"2010-06-27 17:51"},{"_id":"992","normalized_imdb_id":1133993,"title":"Serious Moonlight","year":2009,"rating":2,"dubious":false,"date":"2010-06-28 14:59"},{"_id":"996","normalized_imdb_id":1339268,"title":"Beeswax","year":2009,"rating":3,"dubious":false,"date":"2010-06-28 15:03"},{"_id":"1011","normalized_imdb_id":1183672,"title":"Girl on the Train, The","year":2009,"rating":3,"dubious":false,"date":"2010-06-30 15:58"},{"_id":"1036","normalized_imdb_id":1348327,"title":"Villa Amalia","year":2009,"rating":3,"dubious":false,"date":"2010-07-03 11:01"},{"_id":"1043","normalized_imdb_id":1371630,"title":"Air Doll","year":2009,"rating":1,"dubious":false,"date":"2010-07-03 17:56"},{"_id":"1186","normalized_imdb_id":1057500,"title":"Invictus","year":2009,"rating":1,"dubious":false,"date":"2010-07-18 02:20"},{"_id":"1341","normalized_imdb_id":1352824,"title":"Chloe","year":2009,"rating":3,"dubious":false,"date":"2010-07-26 13:31"},{"_id":"1288","normalized_imdb_id":1135952,"title":"White Material","year":2009,"rating":3,"dubious":false,"date":"2010-07-23 08:51"},{"_id":"1508","normalized_imdb_id":995850,"title":"Vision - Aus dem Leben der Hildegard von Bingen","year":2009,"rating":3,"dubious":false,"date":"2010-08-27 21:24"},{"_id":"1410","normalized_imdb_id":1389374,"title":"She, a Chinese","year":2009,"rating":2,"dubious":false,"date":"2010-07-31 09:14"},{"_id":"1557","normalized_imdb_id":448182,"title":"Yesterday Was a Lie","year":2009,"rating":3,"dubious":false,"date":"2010-09-09 01:40"},{"_id":"1482","normalized_imdb_id":1426362,"title":"Go get some rosemary","year":2009,"rating":1,"dubious":false,"date":"2010-08-19 21:50"},{"_id":"1484","normalized_imdb_id":808526,"title":"Life During Wartime","year":2009,"rating":3,"dubious":false,"date":"2010-08-20 20:41"},{"_id":"1413","normalized_imdb_id":485947,"title":"Mr. Nobody","year":2009,"rating":1,"dubious":false,"date":"2010-08-01 11:27"},{"_id":"1421","normalized_imdb_id":762125,"title":"Planet 51","year":2009,"rating":1,"dubious":false,"date":"2010-08-01 17:05"},{"_id":"1574","normalized_imdb_id":1315214,"title":"Hannah Free","year":2009,"rating":3,"dubious":false,"date":"2010-09-18 02:45"},{"_id":"1577","normalized_imdb_id":1368491,"title":"Undertow","year":2009,"rating":3,"dubious":false,"date":"2010-09-18 22:06"},{"_id":"1446","normalized_imdb_id":381940,"title":"Cargo","year":2009,"rating":3,"dubious":false,"date":"2010-08-07 18:48"},{"_id":"1520","normalized_imdb_id":914837,"title":"44 Inch Chest","year":2009,"rating":1,"dubious":false,"date":"2010-09-01 17:37"},{"_id":"1177","normalized_imdb_id":1320352,"title":"Nothing Personal","year":2009,"rating":3,"dubious":false,"date":"2010-07-14 16:39"},{"_id":"1179","normalized_imdb_id":403702,"title":"Youth in Revolt","year":2009,"rating":1,"dubious":true,"date":"2010-07-14 17:44"},{"_id":"1180","normalized_imdb_id":881891,"title":"All About Steve","year":2009,"rating":3,"dubious":false,"date":"2010-07-16 05:19"},{"_id":"1214","normalized_imdb_id":1227787,"title":"London River","year":2009,"rating":3,"dubious":false,"date":"2010-07-21 17:16"},{"_id":"1282","normalized_imdb_id":1041829,"title":"Proposal, The","year":2009,"rating":2,"dubious":false,"date":"2010-07-23 07:11"},{"_id":"1286","normalized_imdb_id":1308138,"title":"Hua Mulan","year":2009,"rating":3,"dubious":false,"date":"2010-07-23 07:48"},{"_id":"1111","normalized_imdb_id":1340768,"title":"Chess in Concert","year":2009,"rating":1,"dubious":false,"date":"2010-07-08 13:32"},{"_id":"1137","normalized_imdb_id":1473149,"title":"Scheherazade Tell Me a Story","year":2009,"rating":3,"dubious":false,"date":"2010-07-09 21:42"},{"_id":"1140","normalized_imdb_id":1305806,"title":"Secret in Their Eyes, The","year":2009,"rating":1,"dubious":false,"date":"2010-07-10 04:04"},{"_id":"1162","normalized_imdb_id":1121977,"title":"Mother and Child","year":2009,"rating":3,"dubious":false,"date":"2010-07-11 03:08"},{"_id":"1440","normalized_imdb_id":896529,"title":"Cairo Time","year":2009,"rating":3,"dubious":false,"date":"2010-08-04 17:17"},{"_id":"1549","normalized_imdb_id":1185376,"title":"Map of the Sounds of Tokyo","year":2009,"rating":1,"dubious":true,"date":"2010-09-08 05:22"},{"_id":"1454","normalized_imdb_id":1258197,"title":"Exam","year":2009,"rating":3,"dubious":false,"date":"2010-08-09 09:37"},{"_id":"1526","normalized_imdb_id":1479676,"title":"Cooking with Stella","year":2009,"rating":3,"dubious":false,"date":"2010-09-04 03:42"},{"_id":"1485","normalized_imdb_id":1504429,"title":"Hideaway (Le refuge)","year":2009,"rating":3,"dubious":false,"date":"2010-08-20 22:28"},{"_id":"1486","normalized_imdb_id":1474276,"title":"Summer Wars","year":2009,"rating":3,"dubious":false,"date":"2010-08-21 14:18"},{"_id":"1487","normalized_imdb_id":765010,"title":"Brothers","year":2009,"rating":3,"dubious":false,"date":"2010-08-21 16:32"},{"_id":"1488","normalized_imdb_id":1135525,"title":"Slammin' Salmon, The","year":2009,"rating":3,"dubious":false,"date":"2010-08-21 16:38"},{"_id":"1490","normalized_imdb_id":962736,"title":"Young Victoria, The","year":2009,"rating":3,"dubious":false,"date":"2010-08-21 16:42"},{"_id":"1493","normalized_imdb_id":1003034,"title":"Perrier's Bounty","year":2009,"rating":0,"dubious":false,"date":"2010-08-22 10:46"},{"_id":"1494","normalized_imdb_id":1268989,"title":"Unloved, The","year":2009,"rating":3,"dubious":false,"date":"2010-08-22 10:48"},{"_id":"1479","normalized_imdb_id":1103982,"title":"Girlfriend Experience, The","year":2009,"rating":3,"dubious":true,"date":"2010-08-18 17:11"},{"_id":"1395","normalized_imdb_id":901476,"title":"Bride Wars","year":2009,"rating":3,"dubious":false,"date":"2010-07-28 08:07"},{"_id":"1080","normalized_imdb_id":1278340,"title":"Dead Snow","year":2009,"rating":2,"dubious":false,"date":"2010-07-04 22:13"},{"_id":"1609","normalized_imdb_id":1360860,"title":"About Elly","year":2009,"rating":3,"dubious":false,"date":"2010-09-26 21:14"},{"_id":"1634","normalized_imdb_id":1023441,"title":"Coco Chanel & Igor Stravinsky","year":2009,"rating":2,"dubious":false,"date":"2010-10-04 06:33"},{"_id":"1638","normalized_imdb_id":1463188,"title":"Ngai chai dor ching","year":2009,"rating":2,"dubious":false,"date":"2010-10-04 06:52"},{"_id":"1695","normalized_imdb_id":1190080,"title":"2012","year":2009,"rating":1,"dubious":false,"date":"2010-10-24 00:54"},{"_id":"1705","normalized_imdb_id":1198153,"title":"Assassin Next Door, The","year":2009,"rating":3,"dubious":false,"date":"2010-10-28 22:37"},{"_id":"1720","normalized_imdb_id":1134854,"title":"Survival of the Dead","year":2009,"rating":1,"dubious":false,"date":"2010-11-01 17:39"},{"_id":"1721","normalized_imdb_id":1139668,"title":"Unborn, The","year":2009,"rating":3,"dubious":false,"date":"2010-11-01 17:49"},{"_id":"1724","normalized_imdb_id":1142988,"title":"Ugly Truth, The","year":2009,"rating":2,"dubious":false,"date":"2010-11-02 05:28"},{"_id":"1738","normalized_imdb_id":762073,"title":"Thirst (Bakjwi)","year":2009,"rating":3,"dubious":true,"date":"2010-11-05 15:41"},{"_id":"1750","normalized_imdb_id":795351,"title":"Case 39","year":2009,"rating":3,"dubious":false,"date":"2010-11-12 21:41"},{"_id":"1756","normalized_imdb_id":1235166,"title":"A Prophet (Un Prophete)","year":2009,"rating":1,"dubious":false,"date":"2010-11-14 23:39"},{"_id":"1771","normalized_imdb_id":1149361,"title":"Micmacs (Micmacs à tire-larigot)","year":2009,"rating":3,"dubious":true,"date":"2010-11-20 18:25"},{"_id":"1779","normalized_imdb_id":1135092,"title":"Limits of Control, The","year":2009,"rating":1,"dubious":false,"date":"2010-11-25 23:58"},{"_id":"1780","normalized_imdb_id":1116186,"title":"Still waiting","year":2009,"rating":3,"dubious":false,"date":"2010-11-26 15:30"},{"_id":"1796","normalized_imdb_id":1483831,"title":"Lebanon","year":2009,"rating":0,"dubious":false,"date":"2010-11-30 23:46"},{"_id":"1797","normalized_imdb_id":1406160,"title":"Jaffa","year":2009,"rating":3,"dubious":false,"date":"2010-11-30 23:50"},{"_id":"1803","normalized_imdb_id":1405809,"title":"Lourdes","year":2009,"rating":3,"dubious":false,"date":"2010-12-01 00:14"},{"_id":"1804","normalized_imdb_id":1337051,"title":"Police, Adjective","year":2009,"rating":1,"dubious":false,"date":"2010-12-01 00:17"},{"_id":"1805","normalized_imdb_id":1206488,"title":"Milk of Sorrow, The","year":2009,"rating":3,"dubious":false,"date":"2010-12-01 00:23"},{"_id":"1813","normalized_imdb_id":1379177,"title":"Disappearance of Alice Creed, The","year":2009,"rating":0,"dubious":false,"date":"2010-12-03 03:53"},{"_id":"1821","normalized_imdb_id":1035736,"title":"Coco avant Chanel","year":2009,"rating":3,"dubious":false,"date":"2010-12-04 07:30"},{"_id":"1823","normalized_imdb_id":1303828,"title":"Defendor","year":2009,"rating":1,"dubious":false,"date":"2010-12-04 11:48"},{"_id":"1870","normalized_imdb_id":1019452,"title":"A Serious Man","year":2009,"rating":2,"dubious":false,"date":"2010-12-25 05:44"},{"_id":"1885","normalized_imdb_id":1020885,"title":"Lesbian Vampire Killers","year":2009,"rating":3,"dubious":false,"date":"2011-01-02 13:30"},{"_id":"1909","normalized_imdb_id":452694,"title":"Time Traveler's Wife, The","year":2009,"rating":3,"dubious":true,"date":"2011-01-13 05:53"},{"_id":"1917","normalized_imdb_id":780511,"title":"Everybody's Fine","year":2009,"rating":2,"dubious":false,"date":"2011-01-16 18:19"},{"_id":"1936","normalized_imdb_id":1022885,"title":"Scouting Book for Boys, The","year":2009,"rating":2,"dubious":false,"date":"2011-01-28 21:56"},{"_id":"2042","normalized_imdb_id":924129,"title":"Crossing Over","year":2009,"rating":3,"dubious":false,"date":"2011-02-15 14:13"},{"_id":"2048","normalized_imdb_id":878804,"title":"Blind Side, The","year":2009,"rating":2,"dubious":false,"date":"2011-02-15 15:10"},{"_id":"2105","normalized_imdb_id":768239,"title":"Storm","year":2009,"rating":3,"dubious":false,"date":"2011-03-10 03:36"},{"_id":"2109","normalized_imdb_id":1247662,"title":"Good Guy, The","year":2009,"rating":3,"dubious":false,"date":"2011-03-12 12:58"},{"_id":"2125","normalized_imdb_id":1343097,"title":"Girl Who Kicked the Hornets' Nest, The","year":2009,"rating":3,"dubious":false,"date":"2011-03-18 22:31"},{"_id":"2126","normalized_imdb_id":1512201,"title":"Last Train Home","year":2009,"rating":3,"dubious":false,"date":"2011-03-18 22:34"},{"_id":"2127","normalized_imdb_id":1235796,"title":"Ondine","year":2009,"rating":3,"dubious":false,"date":"2011-03-18 22:36"},{"_id":"2134","normalized_imdb_id":1323605,"title":"Suck","year":2009,"rating":1,"dubious":false,"date":"2011-03-24 00:10"},{"_id":"2149","normalized_imdb_id":1216487,"title":"Girl Who Played with Fire, The","year":2009,"rating":3,"dubious":false,"date":"2011-03-28 11:55"},{"_id":"2166","normalized_imdb_id":1179794,"title":"TiMER","year":2009,"rating":2,"dubious":false,"date":"2011-04-08 05:27"},{"_id":"2174","normalized_imdb_id":471041,"title":"Tournament","year":2009,"rating":0,"dubious":false,"date":"2011-04-08 13:37"},{"_id":"2196","normalized_imdb_id":1424797,"title":"J'ai tué ma mère","year":2009,"rating":2,"dubious":false,"date":"2011-04-17 22:08"},{"_id":"2239","normalized_imdb_id":362478,"title":"Box, The","year":2009,"rating":3,"dubious":false,"date":"2011-04-24 15:17"},{"_id":"2258","normalized_imdb_id":1050002,"title":"My Last Five Girlfriends","year":2009,"rating":3,"dubious":false,"date":"2011-04-30 20:13"},{"_id":"2273","normalized_imdb_id":1194263,"title":"Get Low","year":2009,"rating":1,"dubious":false,"date":"2011-05-04 15:40"},{"_id":"2304","normalized_imdb_id":790627,"title":"Brief Interviews With Hideous Men","year":2009,"rating":0,"dubious":false,"date":"2011-05-18 02:59"},{"_id":"2336","normalized_imdb_id":386117,"title":"Where the Wild Things Are","year":2009,"rating":1,"dubious":false,"date":"2011-05-24 23:51"},{"_id":"2348","normalized_imdb_id":1086216,"title":"Uncertainty","year":2009,"rating":3,"dubious":false,"date":"2011-05-26 10:27"},{"_id":"2378","normalized_imdb_id":436339,"title":"G-Force","year":2009,"rating":1,"dubious":false,"date":"2011-06-08 12:50"},{"_id":"2396","normalized_imdb_id":1183665,"title":"Cracks","year":2009,"rating":3,"dubious":false,"date":"2011-06-12 16:57"},{"_id":"2401","normalized_imdb_id":1013752,"title":"Fast & Furious","year":2009,"rating":1,"dubious":false,"date":"2011-06-16 16:46"},{"_id":"2435","normalized_imdb_id":1331064,"title":"Paper Heart","year":2009,"rating":3,"dubious":false,"date":"2011-06-22 17:15"},{"_id":"2438","normalized_imdb_id":1095217,"title":"Bad Lieutenant: Port of Call - New Orleans, The","year":2009,"rating":3,"dubious":false,"date":"2011-06-23 11:21"},{"_id":"2439","normalized_imdb_id":1442519,"title":"Le hérisson","year":2009,"rating":3,"dubious":false,"date":"2011-06-24 02:04"},{"_id":"2443","normalized_imdb_id":1424327,"title":"Eyes Wide Open","year":2009,"rating":1,"dubious":false,"date":"2011-06-25 22:46"},{"_id":"2454","normalized_imdb_id":1461312,"title":"Alice","year":2009,"rating":3,"dubious":false,"date":"2011-06-28 07:51"},{"_id":"2464","normalized_imdb_id":1309449,"title":"Kaiji: The Ultimate Gambler","year":2009,"rating":0,"dubious":false,"date":"2011-06-29 17:00"},{"_id":"2470","normalized_imdb_id":1350498,"title":"Mega Shark vs Giant Octopus","year":2009,"rating":0,"dubious":false,"date":"2011-06-29 19:12"},{"_id":"2489","normalized_imdb_id":1179891,"title":"My Bloody Valentine 3D","year":2009,"rating":2,"dubious":true,"date":"2011-07-05 23:28"},{"_id":"2536","normalized_imdb_id":1034032,"title":"Gamer","year":2009,"rating":1,"dubious":false,"date":"2011-07-14 08:08"},{"_id":"2540","normalized_imdb_id":896923,"title":"City of Your Final Destination, The","year":2009,"rating":3,"dubious":false,"date":"2011-07-15 01:52"},{"_id":"2558","normalized_imdb_id":1433540,"title":"A Town Called Panic","year":2009,"rating":1,"dubious":false,"date":"2011-07-20 06:27"},{"_id":"2600","normalized_imdb_id":1300851,"title":"Boondock Saints II: All Saints Day, The","year":2009,"rating":0,"dubious":false,"date":"2011-08-10 07:54"},{"_id":"2606","normalized_imdb_id":1146320,"title":"Mutants","year":2009,"rating":3,"dubious":true,"date":"2011-08-13 03:51"},{"_id":"2635","normalized_imdb_id":1521783,"title":"Exit 117","year":2009,"rating":2,"dubious":false,"date":"2011-08-24 00:54"},{"_id":"2650","normalized_imdb_id":1054580,"title":"Desert Flower","year":2009,"rating":3,"dubious":false,"date":"2011-09-02 13:28"},{"_id":"2656","normalized_imdb_id":892782,"title":"Monsters vs Aliens","year":2009,"rating":3,"dubious":true,"date":"2011-09-04 21:52"},{"_id":"2669","normalized_imdb_id":978762,"title":"Mary and Max","year":2009,"rating":1,"dubious":false,"date":"2011-09-08 21:49"},{"_id":"2671","normalized_imdb_id":1191111,"title":"Enter the Void","year":2009,"rating":1,"dubious":false,"date":"2011-09-10 00:51"},{"_id":"2685","normalized_imdb_id":1242423,"title":"Dear Lemon Lima","year":2009,"rating":3,"dubious":false,"date":"2011-09-16 16:07"},{"_id":"2755","normalized_imdb_id":1326956,"title":"Our Summer in Tehran","year":2009,"rating":3,"dubious":false,"date":"2011-10-12 23:04"},{"_id":"2776","normalized_imdb_id":790712,"title":"Messenger, The","year":2009,"rating":1,"dubious":false,"date":"2011-10-20 14:47"},{"_id":"2777","normalized_imdb_id":1071804,"title":"Ink","year":2009,"rating":3,"dubious":false,"date":"2011-10-20 14:51"},{"_id":"2830","normalized_imdb_id":913425,"title":"Broken Embraces","year":2009,"rating":3,"dubious":false,"date":"2011-11-06 10:01"},{"_id":"2884","normalized_imdb_id":1379222,"title":"Double Hour, The","year":2009,"rating":3,"dubious":false,"date":"2011-11-29 20:14"},{"_id":"2915","normalized_imdb_id":1442437,"title":"Modern Family","year":2009,"rating":3,"dubious":false,"date":"2011-12-09 00:34"},{"_id":"2936","normalized_imdb_id":1185242,"title":"Finding Bliss","year":2009,"rating":3,"dubious":false,"date":"2011-12-17 15:42"},{"_id":"2956","normalized_imdb_id":1068678,"title":"Veronika Decides to Die","year":2009,"rating":3,"dubious":false,"date":"2011-12-26 07:13"},{"_id":"3041","normalized_imdb_id":1372306,"title":"Year of the Carnivore","year":2009,"rating":3,"dubious":false,"date":"2012-02-11 16:20"},{"_id":"3061","normalized_imdb_id":1167660,"title":"OSS 117: Lost in Rio","year":2009,"rating":1,"dubious":false,"date":"2012-02-20 17:37"},{"_id":"3066","normalized_imdb_id":1187043,"title":"3 Idiots","year":2009,"rating":1,"dubious":false,"date":"2012-02-20 19:06"},{"_id":"3082","normalized_imdb_id":1488591,"title":"Professor Layton and the Eternal Diva","year":2009,"rating":3,"dubious":false,"date":"2012-03-01 21:09"},{"_id":"3165","normalized_imdb_id":1233219,"title":"My Son, My Son, What Have Ye Done","year":2009,"rating":2,"dubious":false,"date":"2012-04-05 03:49"},{"_id":"3200","normalized_imdb_id":1183276,"title":"Horde, The","year":2009,"rating":0,"dubious":false,"date":"2012-04-23 02:19"},{"_id":"4322","normalized_imdb_id":1314645,"title":"C Me Dance","year":2009,"rating":3,"dubious":false,"date":"2013-07-09 06:05"},{"_id":"3299","normalized_imdb_id":1001508,"title":"He's Just Not That Into You","year":2009,"rating":3,"dubious":false,"date":"2012-06-01 08:41"},{"_id":"3345","normalized_imdb_id":1289406,"title":"Harry Brown","year":2009,"rating":1,"dubious":false,"date":"2012-06-11 19:33"},{"_id":"3356","normalized_imdb_id":1322315,"title":"Headhunter","year":2009,"rating":1,"dubious":false,"date":"2012-06-14 19:41"},{"_id":"3377","normalized_imdb_id":1243375,"title":"Dancer and the Thief, The","year":2009,"rating":0,"dubious":true,"date":"2012-06-23 07:02"},{"_id":"3378","normalized_imdb_id":1463167,"title":"Il richiamo","year":2009,"rating":3,"dubious":false,"date":"2012-06-23 07:40"},{"_id":"3462","normalized_imdb_id":1320082,"title":"Concert, The","year":2009,"rating":2,"dubious":false,"date":"2012-08-11 14:37"},{"_id":"3472","normalized_imdb_id":1381512,"title":"RoboGeisha","year":2009,"rating":3,"dubious":false,"date":"2012-08-14 14:48"},{"_id":"3516","normalized_imdb_id":1426371,"title":"Little Girl","year":2009,"rating":3,"dubious":false,"date":"2012-09-03 22:33"},{"_id":"3585","normalized_imdb_id":1186373,"title":"Wonder Woman","year":2009,"rating":3,"dubious":false,"date":"2012-10-12 19:43"},{"_id":"3730","normalized_imdb_id":1532957,"title":"Paa","year":2009,"rating":2,"dubious":false,"date":"2012-12-07 09:51"},{"_id":"3732","normalized_imdb_id":860906,"title":"Evangelion: 2.0 You Can (Not) Advance","year":2009,"rating":3,"dubious":false,"date":"2012-12-08 15:26"},{"_id":"3752","normalized_imdb_id":1187044,"title":"Maid, The","year":2009,"rating":3,"dubious":false,"date":"2012-12-16 20:22"},{"_id":"3779","normalized_imdb_id":913354,"title":"Armored","year":2009,"rating":0,"dubious":false,"date":"2012-12-28 08:09"},{"_id":"3813","normalized_imdb_id":435711,"title":"Wild About Harry","year":2009,"rating":3,"dubious":false,"date":"2013-01-09 08:33"},{"_id":"3821","normalized_imdb_id":1050001,"title":"Albino Farm","year":2009,"rating":3,"dubious":false,"date":"2013-01-13 01:36"},{"_id":"3838","normalized_imdb_id":432314,"title":"Attack on Leningrad","year":2009,"rating":3,"dubious":false,"date":"2013-01-17 04:57"},{"_id":"3846","normalized_imdb_id":1230424,"title":"Dance Subaru","year":2009,"rating":3,"dubious":false,"date":"2013-01-21 06:21"},{"_id":"3847","normalized_imdb_id":1342378,"title":"Girl (Flickan), The","year":2009,"rating":3,"dubious":false,"date":"2013-01-22 00:13"},{"_id":"3906","normalized_imdb_id":1216516,"title":"Tinker Bell and the Lost Treasure","year":2009,"rating":3,"dubious":false,"date":"2013-02-18 20:25"},{"_id":"3936","normalized_imdb_id":1372301,"title":"Technotise - Edit i ja","year":2009,"rating":3,"dubious":false,"date":"2013-02-25 21:04"},{"_id":"3997","normalized_imdb_id":1059925,"title":"According to Greta","year":2009,"rating":3,"dubious":false,"date":"2013-03-19 02:53"},{"_id":"4000","normalized_imdb_id":1190536,"title":"Black Dynamite","year":2009,"rating":2,"dubious":false,"date":"2013-03-20 21:09"},{"_id":"4006","normalized_imdb_id":1020543,"title":"Infestation","year":2009,"rating":3,"dubious":false,"date":"2013-03-22 20:34"},{"_id":"4014","normalized_imdb_id":1312251,"title":"Good Witch's Garden, The","year":2009,"rating":3,"dubious":false,"date":"2013-03-24 19:30"},{"_id":"4129","normalized_imdb_id":862467,"title":"Valhalla Rising","year":2009,"rating":0,"dubious":false,"date":"2013-05-12 04:01"},{"_id":"4047","normalized_imdb_id":1188729,"title":"Pandorum","year":2009,"rating":1,"dubious":false,"date":"2013-04-11 21:05"},{"_id":"4049","normalized_imdb_id":1242618,"title":"Deadline","year":2009,"rating":3,"dubious":false,"date":"2013-04-13 19:27"},{"_id":"4062","normalized_imdb_id":1220198,"title":"Fourth Kind, The","year":2009,"rating":3,"dubious":false,"date":"2013-04-15 21:52"},{"_id":"4075","normalized_imdb_id":910905,"title":"In the Electric Mist","year":2009,"rating":2,"dubious":false,"date":"2013-04-20 16:31"},{"_id":"4076","normalized_imdb_id":493451,"title":"Skeptic, The","year":2009,"rating":1,"dubious":false,"date":"2013-04-21 02:52"},{"_id":"4086","normalized_imdb_id":1083456,"title":"Fired Up!","year":2009,"rating":1,"dubious":false,"date":"2013-04-24 22:48"},{"_id":"4088","normalized_imdb_id":1425928,"title":"Vampire Girl versus Frankenstein Girl","year":2009,"rating":3,"dubious":false,"date":"2013-04-25 00:21"},{"_id":"4114","normalized_imdb_id":1422201,"title":"One Hot Summer","year":2009,"rating":2,"dubious":false,"date":"2013-04-28 11:14"},{"_id":"4119","normalized_imdb_id":1185836,"title":"Adam","year":2009,"rating":2,"dubious":false,"date":"2013-05-05 14:00"},{"_id":"4217","normalized_imdb_id":1024744,"title":"I Come with the Rain","year":2009,"rating":0,"dubious":false,"date":"2013-06-07 10:12"},{"_id":"4265","normalized_imdb_id":365929,"title":"Whiteout","year":2009,"rating":3,"dubious":false,"date":"2013-06-23 21:46"},{"_id":"4332","normalized_imdb_id":1508661,"title":"Dead Hooker in a Trunk","year":2009,"rating":3,"dubious":false,"date":"2013-07-12 01:40"},{"_id":"4467","normalized_imdb_id":1504362,"title":"Natale a Beverly Hills","year":2009,"rating":1,"dubious":false,"date":"2013-08-12 12:45"},{"_id":"4466","normalized_imdb_id":1493886,"title":"Wild Hunt, The","year":2009,"rating":1,"dubious":false,"date":"2013-08-12 06:43"},{"_id":"4533","normalized_imdb_id":874271,"title":"Elsewhere","year":2009,"rating":3,"dubious":false,"date":"2013-08-31 21:53"},{"_id":"4570","normalized_imdb_id":758746,"title":"Friday the 13th","year":2009,"rating":2,"dubious":false,"date":"2013-09-13 20:01"},{"_id":"4596","normalized_imdb_id":1144884,"title":"Final Destination, The","year":2009,"rating":3,"dubious":false,"date":"2013-09-16 18:43"},{"_id":"4763","normalized_imdb_id":806203,"title":"Carriers","year":2009,"rating":3,"dubious":false,"date":"2013-11-01 16:00"},{"_id":"4764","normalized_imdb_id":1245112,"title":"[Rec] 2","year":2009,"rating":1,"dubious":false,"date":"2013-11-01 16:02"},{"_id":"4765","normalized_imdb_id":815245,"title":"Uninvited, The","year":2009,"rating":3,"dubious":false,"date":"2013-11-01 16:03"},{"_id":"4780","normalized_imdb_id":1273204,"title":"David's Birthday","year":2009,"rating":3,"dubious":false,"date":"2013-11-05 05:24"},{"_id":"4827","normalized_imdb_id":1194238,"title":"Polytechnique","year":2009,"rating":3,"dubious":false,"date":"2013-11-15 05:34"},{"_id":"4846","normalized_imdb_id":804539,"title":"Surviving Evil","year":2009,"rating":3,"dubious":false,"date":"2013-11-17 06:43"},{"_id":"4929","normalized_imdb_id":1440741,"title":"Do Comeco ao Fim","year":2009,"rating":2,"dubious":false,"date":"2013-12-09 04:59"},{"_id":"4931","normalized_imdb_id":1072438,"title":"Not Since You","year":2009,"rating":2,"dubious":false,"date":"2013-12-09 21:49"},{"_id":"5013","normalized_imdb_id":1446201,"title":"12 Men of Christmas","year":2009,"rating":3,"dubious":false,"date":"2013-12-30 13:51"},{"_id":"5019","normalized_imdb_id":473705,"title":"State of Play","year":2009,"rating":3,"dubious":false,"date":"2014-01-01 05:22"},{"_id":"5034","normalized_imdb_id":1235842,"title":"El nino pez","year":2009,"rating":3,"dubious":false,"date":"2014-01-03 02:57"},{"_id":"5052","normalized_imdb_id":1351177,"title":"Last of the Living","year":2009,"rating":0,"dubious":false,"date":"2014-01-06 23:08"},{"_id":"5116","normalized_imdb_id":1257579,"title":"El traspatio (Backyard)","year":2009,"rating":3,"dubious":false,"date":"2014-01-29 21:32"},{"_id":"5120","normalized_imdb_id":1485698,"title":"Dom zly","year":2009,"rating":1,"dubious":false,"date":"2014-01-31 22:16"},{"_id":"5153","normalized_imdb_id":1266029,"title":"Nowhere Boy","year":2009,"rating":3,"dubious":true,"date":"2014-02-09 04:00"},{"_id":"5173","normalized_imdb_id":2177683,"title":"Reservoir Hill","year":2009,"rating":3,"dubious":false,"date":"2014-02-16 05:48"},{"_id":"5202","normalized_imdb_id":1220214,"title":"Heartless","year":2009,"rating":1,"dubious":false,"date":"2014-02-24 23:53"},{"_id":"5251","normalized_imdb_id":1527679,"title":"Nasty Old People","year":2009,"rating":3,"dubious":false,"date":"2014-03-07 21:48"},{"_id":"5359","normalized_imdb_id":1137436,"title":"Awaydays","year":2009,"rating":2,"dubious":false,"date":"2014-04-04 12:30"},{"_id":"5363","normalized_imdb_id":844708,"title":"Last House on the Left, The","year":2009,"rating":3,"dubious":false,"date":"2014-04-04 18:17"},{"_id":"5367","normalized_imdb_id":1129445,"title":"Amelia","year":2009,"rating":3,"dubious":false,"date":"2014-04-06 18:57"},{"_id":"5402","normalized_imdb_id":1326221,"title":"Fruit Fly","year":2009,"rating":3,"dubious":false,"date":"2014-04-16 20:11"},{"_id":"5462","normalized_imdb_id":1123894,"title":"And Then Came Lola","year":2009,"rating":3,"dubious":false,"date":"2014-05-12 17:41"},{"_id":"5506","normalized_imdb_id":1268962,"title":"Drool","year":2009,"rating":3,"dubious":false,"date":"2014-05-28 06:10"},{"_id":"5586","normalized_imdb_id":1305714,"title":"Make the Yuletide Gay","year":2009,"rating":3,"dubious":false,"date":"2014-06-23 18:14"},{"_id":"5784","normalized_imdb_id":1075749,"title":"Reykjavik Whale Watching Massacre","year":2009,"rating":3,"dubious":false,"date":"2014-09-27 22:53"},{"_id":"5636","normalized_imdb_id":1285309,"title":"Joneses, The","year":2009,"rating":3,"dubious":false,"date":"2014-07-14 02:08"},{"_id":"5666","normalized_imdb_id":775552,"title":"Aliens in the Attic","year":2009,"rating":3,"dubious":false,"date":"2014-07-31 00:13"},{"_id":"5695","normalized_imdb_id":1648194,"title":"Wrong House, The","year":2009,"rating":3,"dubious":false,"date":"2014-08-13 14:57"},{"_id":"5718","normalized_imdb_id":1082009,"title":"Queen to Play","year":2009,"rating":3,"dubious":false,"date":"2014-08-27 08:57"},{"_id":"5857","normalized_imdb_id":1479163,"title":"Big Font. Large Spacing","year":2009,"rating":3,"dubious":false,"date":"2014-10-21 10:35"},{"_id":"5889","normalized_imdb_id":1187064,"title":"Triangle","year":2009,"rating":3,"dubious":false,"date":"2014-11-01 00:23"},{"_id":"5891","normalized_imdb_id":1269560,"title":"Love Takes Wing","year":2009,"rating":3,"dubious":false,"date":"2014-11-02 06:45"},{"_id":"5907","normalized_imdb_id":1290135,"title":"Children of the Corn","year":2009,"rating":1,"dubious":false,"date":"2014-11-08 10:48"},{"_id":"5923","normalized_imdb_id":1422675,"title":"Ju-on: White Ghost","year":2009,"rating":3,"dubious":false,"date":"2014-11-17 02:08"},{"_id":"5951","normalized_imdb_id":1422674,"title":"Ju-on: Black Ghost","year":2009,"rating":3,"dubious":false,"date":"2014-12-01 02:00"},{"_id":"5966","normalized_imdb_id":1332054,"title":"Cosmonauta","year":2009,"rating":3,"dubious":false,"date":"2014-12-07 04:57"},{"_id":"6058","normalized_imdb_id":899106,"title":"Love Happens","year":2009,"rating":3,"dubious":false,"date":"2015-01-21 18:49"},{"_id":"6067","normalized_imdb_id":1148165,"title":"Bran Nue Dae","year":2009,"rating":1,"dubious":false,"date":"2015-01-27 02:20"},{"_id":"6122","normalized_imdb_id":1483797,"title":"Redline","year":2009,"rating":3,"dubious":false,"date":"2015-02-24 00:47"},{"_id":"6189","normalized_imdb_id":970452,"title":"Solomon Kane","year":2009,"rating":3,"dubious":false,"date":"2015-04-04 19:41"},{"_id":"6213","normalized_imdb_id":1263772,"title":"XXXHOLic: Shunmuki - Zenpen","year":2009,"rating":3,"dubious":false,"date":"2015-04-20 01:50"},{"_id":"6214","normalized_imdb_id":1461305,"title":"XXXHOLiC: Shunmuki - Kouhen","year":2009,"rating":3,"dubious":false,"date":"2015-04-21 03:39"},{"_id":"6224","normalized_imdb_id":1232783,"title":"Sorority Row","year":2009,"rating":3,"dubious":true,"date":"2015-05-01 01:58"},{"_id":"6270","normalized_imdb_id":1127896,"title":"Taking Woodstock","year":2009,"rating":1,"dubious":false,"date":"2015-05-24 12:24"},{"_id":"6311","normalized_imdb_id":838247,"title":"After.Life","year":2009,"rating":1,"dubious":false,"date":"2015-06-13 21:40"},{"_id":"6533","normalized_imdb_id":1073105,"title":"Descent: Part 2, The","year":2009,"rating":3,"dubious":false,"date":"2015-11-05 17:51"},{"_id":"6571","normalized_imdb_id":3671900,"title":"Chohatsu Daikaiju Gehara","year":2009,"rating":0,"dubious":false,"date":"2015-12-04 02:11"},{"_id":"6573","normalized_imdb_id":1142800,"title":"Madea Goes to Jail","year":2009,"rating":0,"dubious":false,"date":"2015-12-04 19:57"},{"_id":"6580","normalized_imdb_id":1034302,"title":"Cry of the Owl, The","year":2009,"rating":0,"dubious":false,"date":"2015-12-06 04:52"},{"_id":"6829","normalized_imdb_id":1082876,"title":"Tales from the Catholic Church of Elvis!","year":2009,"rating":3,"dubious":false,"date":"2016-04-14 07:33"},{"_id":"6883","normalized_imdb_id":1209377,"title":"Beautiful Kate","year":2009,"rating":3,"dubious":false,"date":"2016-05-11 22:46"},{"_id":"6937","normalized_imdb_id":1385912,"title":"I can do bad all by myself","year":2009,"rating":1,"dubious":false,"date":"2016-06-17 03:58"},{"_id":"7010","normalized_imdb_id":1320286,"title":"Georgia O'Keeffe","year":2009,"rating":3,"dubious":false,"date":"2016-07-30 07:42"},{"_id":"7176","normalized_imdb_id":1362534,"title":"Butter bei die Fische","year":2009,"rating":3,"dubious":false,"date":"2016-10-07 20:14"},{"_id":"7359","normalized_imdb_id":457400,"title":"Land of the Lost","year":2009,"rating":0,"dubious":false,"date":"2016-12-27 06:36"},{"_id":"7382","normalized_imdb_id":1132193,"title":"(Untitled)","year":2009,"rating":1,"dubious":false,"date":"2017-01-07 22:36"},{"_id":"7614","normalized_imdb_id":1119123,"title":"Accidents Happen","year":2009,"rating":3,"dubious":false,"date":"2017-05-21 10:58"},{"_id":"7623","normalized_imdb_id":1248971,"title":"Cherrybomb","year":2009,"rating":1,"dubious":false,"date":"2017-05-21 11:27"},{"_id":"7628","normalized_imdb_id":1235124,"title":"Dorian Gray","year":2009,"rating":1,"dubious":false,"date":"2017-05-21 12:03"},{"_id":"7631","normalized_imdb_id":1144825,"title":"Fatal Rescue","year":2009,"rating":1,"dubious":false,"date":"2017-05-21 12:20"},{"_id":"7723","normalized_imdb_id":1242545,"title":"Looking for Eric","year":2009,"rating":1,"dubious":false,"date":"2017-07-07 11:33"},{"_id":"7917","normalized_imdb_id":1242422,"title":"Celda 211","year":2009,"rating":0,"dubious":false,"date":"2017-11-22 13:50"},{"_id":"8003","normalized_imdb_id":1085779,"title":"Hole, The","year":2009,"rating":3,"dubious":false,"date":"2018-01-10 21:48"},{"_id":"8146","normalized_imdb_id":1237838,"title":"Mystery Team","year":2009,"rating":1,"dubious":false,"date":"2018-04-06 10:06"},{"_id":"8456","normalized_imdb_id":446043,"title":"Opie Gets Laid","year":2009,"rating":3,"dubious":false,"date":"2018-10-26 21:42"},{"_id":"8555","normalized_imdb_id":1028532,"title":"Hachi: A Dog's Tale","year":2009,"rating":1,"dubious":false,"date":"2018-12-14 23:54"},{"_id":"8593","normalized_imdb_id":1247644,"title":"Breaking Upwards","year":2009,"rating":3,"dubious":false,"date":"2019-01-14 10:44"},{"_id":"8776","normalized_imdb_id":1340108,"title":"Killer Bean Forever","year":2009,"rating":0,"dubious":false,"date":"2019-07-01 04:53"},{"_id":"8848","normalized_imdb_id":1045778,"title":"Year One","year":2009,"rating":3,"dubious":false,"date":"2019-09-11 02:39"},{"_id":"9007","normalized_imdb_id":1127877,"title":"Cold Souls","year":2009,"rating":1,"dubious":false,"date":"2020-02-07 23:34"},{"_id":"9030","normalized_imdb_id":1242530,"title":"What's Your Raashee?","year":2009,"rating":2,"dubious":false,"date":"2020-03-06 13:09"},{"_id":"9368","normalized_imdb_id":458455,"title":"Pope Joan","year":2009,"rating":3,"dubious":false,"date":"2020-12-12 02:43"},{"_id":"9589","normalized_imdb_id":1078912,"title":"Night at the Museum: Battle of the Smithsonian","year":2009,"rating":1,"dubious":false,"date":"2021-03-27 20:04"},{"_id":"9643","normalized_imdb_id":408060,"title":"1","year":2009,"rating":3,"dubious":true,"date":"2021-04-11 03:41"},{"_id":"10030","normalized_imdb_id":1226232,"title":"Greatest, The","year":2009,"rating":3,"dubious":false,"date":"2021-08-31 17:49"},{"_id":"694","normalized_imdb_id":455407,"title":"Crazies, The","year":2010,"rating":3,"dubious":false,"date":"2010-03-01 01:20"},{"_id":"699","normalized_imdb_id":1014759,"title":"Alice in Wonderland","year":2010,"rating":3,"dubious":false,"date":"2010-03-11 20:52"},{"_id":"702","normalized_imdb_id":1305583,"title":"Our Family Wedding","year":2010,"rating":3,"dubious":false,"date":"2010-03-15 21:36"},{"_id":"704","normalized_imdb_id":947810,"title":"Green Zone","year":2010,"rating":0,"dubious":false,"date":"2010-03-16 22:39"},{"_id":"705","normalized_imdb_id":1196141,"title":"Diary of a Wimpy Kid","year":2010,"rating":3,"dubious":false,"date":"2010-03-22 21:58"},{"_id":"711","normalized_imdb_id":892769,"title":"How to Train Your Dragon","year":2010,"rating":3,"dubious":false,"date":"2010-03-31 19:53"},{"_id":"715","normalized_imdb_id":1231587,"title":"Hot Tub Time Machine","year":2010,"rating":1,"dubious":false,"date":"2010-04-04 10:57"},{"_id":"716","normalized_imdb_id":1130884,"title":"Shutter Island","year":2010,"rating":1,"dubious":false,"date":"2010-04-04 10:59"},{"_id":"717","normalized_imdb_id":780653,"title":"Wolfman, The","year":2010,"rating":1,"dubious":false,"date":"2010-04-04 11:02"},{"_id":"723","normalized_imdb_id":1053424,"title":"Repo Men","year":2010,"rating":3,"dubious":false,"date":"2010-04-06 02:35"},{"_id":"737","normalized_imdb_id":1250777,"title":"Kick-Ass","year":2010,"rating":1,"dubious":false,"date":"2010-04-15 13:56"},{"_id":"773","normalized_imdb_id":1196204,"title":"Cemetery Junction","year":2010,"rating":2,"dubious":false,"date":"2010-05-01 11:30"},{"_id":"784","normalized_imdb_id":1279935,"title":"Date Night","year":2010,"rating":3,"dubious":false,"date":"2010-05-06 02:27"},{"_id":"797","normalized_imdb_id":1228705,"title":"Iron Man 2","year":2010,"rating":3,"dubious":false,"date":"2010-05-13 19:34"},{"_id":"808","normalized_imdb_id":1212436,"title":"Back-up Plan, The","year":2010,"rating":3,"dubious":false,"date":"2010-05-16 13:08"},{"_id":"822","normalized_imdb_id":955308,"title":"Robin Hood","year":2010,"rating":3,"dubious":true,"date":"2010-05-20 19:36"},{"_id":"823","normalized_imdb_id":892318,"title":"Letters to Juliet","year":2010,"rating":3,"dubious":true,"date":"2010-05-21 00:51"},{"_id":"824","normalized_imdb_id":1470023,"title":"MacGruber","year":2010,"rating":1,"dubious":false,"date":"2010-05-21 02:36"},{"_id":"828","normalized_imdb_id":1139328,"title":"Ghost Writer, The","year":2010,"rating":2,"dubious":false,"date":"2010-05-23 07:48"},{"_id":"831","normalized_imdb_id":473075,"title":"Prince of Persia: The Sands of Time","year":2010,"rating":0,"dubious":false,"date":"2010-05-26 01:55"},{"_id":"832","normalized_imdb_id":1017451,"title":"Runaways, The","year":2010,"rating":3,"dubious":false,"date":"2010-05-26 21:54"},{"_id":"835","normalized_imdb_id":1261945,"title":"Sex and the city 2","year":2010,"rating":3,"dubious":false,"date":"2010-05-27 20:04"},{"_id":"848","normalized_imdb_id":1037705,"title":"Book of Eli","year":2010,"rating":3,"dubious":false,"date":"2010-05-27 20:41"},{"_id":"870","normalized_imdb_id":1226229,"title":"Get Him To The Greek","year":2010,"rating":1,"dubious":false,"date":"2010-05-29 00:28"},{"_id":"872","normalized_imdb_id":1234654,"title":"Greenberg","year":2010,"rating":1,"dubious":false,"date":"2010-05-29 00:33"},{"_id":"894","normalized_imdb_id":892791,"title":"Shrek Forever After","year":2010,"rating":1,"dubious":false,"date":"2010-06-04 02:06"},{"_id":"901","normalized_imdb_id":1407061,"title":"Just Wright","year":2010,"rating":3,"dubious":false,"date":"2010-06-05 02:54"},{"_id":"908","normalized_imdb_id":878835,"title":"Please Give","year":2010,"rating":3,"dubious":false,"date":"2010-06-06 00:06"},{"_id":"909","normalized_imdb_id":1399683,"title":"Winter's Bone","year":2010,"rating":3,"dubious":false,"date":"2010-06-06 00:11"},{"_id":"943","normalized_imdb_id":1155076,"title":"Karate Kid, The","year":2010,"rating":3,"dubious":true,"date":"2010-06-14 03:30"},{"_id":"944","normalized_imdb_id":1570989,"title":"Tiny Furniture","year":2010,"rating":3,"dubious":false,"date":"2010-06-15 01:13"},{"_id":"961","normalized_imdb_id":435761,"title":"Toy Story 3","year":2010,"rating":3,"dubious":true,"date":"2010-06-18 23:09"},{"_id":"962","normalized_imdb_id":1188113,"title":"Peacock","year":2010,"rating":1,"dubious":false,"date":"2010-06-19 04:01"},{"_id":"968","normalized_imdb_id":1443518,"title":"R U There","year":2010,"rating":0,"dubious":false,"date":"2010-06-21 10:49"},{"_id":"969","normalized_imdb_id":429493,"title":"A-Team, The","year":2010,"rating":0,"dubious":false,"date":"2010-06-21 14:15"},{"_id":"979","normalized_imdb_id":1038686,"title":"Legion","year":2010,"rating":3,"dubious":false,"date":"2010-06-26 04:06"},{"_id":"980","normalized_imdb_id":1375670,"title":"Grown Ups","year":2010,"rating":3,"dubious":false,"date":"2010-06-26 05:35"},{"_id":"988","normalized_imdb_id":1587707,"title":"Exit Through the Gift Shop","year":2010,"rating":0,"dubious":false,"date":"2010-06-27 17:54"},{"_id":"989","normalized_imdb_id":817230,"title":"Valentine's Day","year":2010,"rating":3,"dubious":false,"date":"2010-06-27 23:59"},{"_id":"1004","normalized_imdb_id":1593655,"title":"Browncoats: Redemption","year":2010,"rating":3,"dubious":false,"date":"2010-06-29 00:04"},{"_id":"1005","normalized_imdb_id":1226236,"title":"I Am Love","year":2010,"rating":3,"dubious":false,"date":"2010-06-29 15:06"},{"_id":"1012","normalized_imdb_id":1576382,"title":"Dos hermanos","year":2010,"rating":3,"dubious":false,"date":"2010-06-30 16:32"},{"_id":"1016","normalized_imdb_id":1560139,"title":"Boy","year":2010,"rating":1,"dubious":false,"date":"2010-07-01 07:47"},{"_id":"1019","normalized_imdb_id":938283,"title":"Last Airbender, The","year":2010,"rating":1,"dubious":false,"date":"2010-07-02 08:54"},{"_id":"1570","normalized_imdb_id":889573,"title":"Switch, The","year":2010,"rating":2,"dubious":false,"date":"2010-09-15 16:58"},{"_id":"1350","normalized_imdb_id":493949,"title":"Ramona and Beezus","year":2010,"rating":3,"dubious":false,"date":"2010-07-26 23:20"},{"_id":"1506","normalized_imdb_id":1020558,"title":"Centurion","year":2010,"rating":1,"dubious":false,"date":"2010-08-26 17:41"},{"_id":"1507","normalized_imdb_id":1336999,"title":"Jucy","year":2010,"rating":3,"dubious":false,"date":"2010-08-27 01:49"},{"_id":"1509","normalized_imdb_id":1320253,"title":"Expendables, The","year":2010,"rating":1,"dubious":false,"date":"2010-08-28 00:29"},{"_id":"1580","normalized_imdb_id":1179069,"title":"Shelter","year":2010,"rating":3,"dubious":false,"date":"2010-09-19 22:16"},{"_id":"1301","normalized_imdb_id":963966,"title":"Sorcerer's Apprentice, The","year":2010,"rating":1,"dubious":false,"date":"2010-07-24 23:25"},{"_id":"1303","normalized_imdb_id":1403981,"title":"Remember Me","year":2010,"rating":3,"dubious":false,"date":"2010-07-25 04:20"},{"_id":"1576","normalized_imdb_id":840361,"title":"Town, The","year":2010,"rating":1,"dubious":false,"date":"2010-09-18 18:39"},{"_id":"1447","normalized_imdb_id":1251757,"title":"Middle Men","year":2010,"rating":1,"dubious":false,"date":"2010-08-07 21:02"},{"_id":"1448","normalized_imdb_id":1386588,"title":"Other Guys, The","year":2010,"rating":2,"dubious":false,"date":"2010-08-07 21:05"},{"_id":"1519","normalized_imdb_id":1455151,"title":"La tete en friche","year":2010,"rating":1,"dubious":false,"date":"2010-09-01 16:57"},{"_id":"1518","normalized_imdb_id":1182350,"title":"You Will Meet a Tall Dark Stranger","year":2010,"rating":3,"dubious":false,"date":"2010-09-01 16:53"},{"_id":"1566","normalized_imdb_id":1287878,"title":"Poetry","year":2010,"rating":3,"dubious":false,"date":"2010-09-11 08:31"},{"_id":"1567","normalized_imdb_id":1220634,"title":"Resident Evil: Afterlife","year":2010,"rating":3,"dubious":false,"date":"2010-09-13 00:58"},{"_id":"1299","normalized_imdb_id":944835,"title":"Salt","year":2010,"rating":3,"dubious":false,"date":"2010-07-24 19:00"},{"_id":"1174","normalized_imdb_id":1013743,"title":"Knight and Day","year":2010,"rating":2,"dubious":false,"date":"2010-07-14 14:22"},{"_id":"1175","normalized_imdb_id":1425933,"title":"Skeletons","year":2010,"rating":3,"dubious":false,"date":"2010-07-14 15:22"},{"_id":"1183","normalized_imdb_id":1161411,"title":"Una hora mas en Canarias","year":2010,"rating":3,"dubious":false,"date":"2010-07-16 22:10"},{"_id":"1199","normalized_imdb_id":842926,"title":"Kids Are All Right, The","year":2010,"rating":3,"dubious":false,"date":"2010-07-20 02:17"},{"_id":"1215","normalized_imdb_id":1511354,"title":"El dios de madera","year":2010,"rating":3,"dubious":false,"date":"2010-07-21 17:22"},{"_id":"1234","normalized_imdb_id":1325004,"title":"Twilight Saga: Eclipse, The","year":2010,"rating":3,"dubious":false,"date":"2010-07-22 23:25"},{"_id":"1139","normalized_imdb_id":1323594,"title":"Despicable Me","year":2010,"rating":3,"dubious":false,"date":"2010-07-10 03:56"},{"_id":"1166","normalized_imdb_id":1336617,"title":"Cyrus","year":2010,"rating":1,"dubious":false,"date":"2010-07-12 01:46"},{"_id":"1168","normalized_imdb_id":1424381,"title":"Predators","year":2010,"rating":0,"dubious":false,"date":"2010-07-12 21:01"},{"_id":"1169","normalized_imdb_id":1375666,"title":"Inception","year":2010,"rating":3,"dubious":true,"date":"2010-07-13 15:21"},{"_id":"1599","normalized_imdb_id":1282140,"title":"Easy A","year":2010,"rating":3,"dubious":false,"date":"2010-09-23 00:38"},{"_id":"1530","normalized_imdb_id":1440728,"title":"American, The","year":2010,"rating":1,"dubious":false,"date":"2010-09-05 01:16"},{"_id":"1453","normalized_imdb_id":1385867,"title":"Cop Out","year":2010,"rating":1,"dubious":false,"date":"2010-08-09 02:58"},{"_id":"1531","normalized_imdb_id":480255,"title":"Losers, The","year":2010,"rating":1,"dubious":false,"date":"2010-09-05 04:54"},{"_id":"1533","normalized_imdb_id":1322385,"title":"Submarino","year":2010,"rating":1,"dubious":false,"date":"2010-09-05 20:53"},{"_id":"1471","normalized_imdb_id":1604900,"title":"Monga","year":2010,"rating":1,"dubious":false,"date":"2010-08-16 09:23"},{"_id":"1474","normalized_imdb_id":1646985,"title":"Love Like Poison","year":2010,"rating":3,"dubious":false,"date":"2010-08-17 12:55"},{"_id":"1480","normalized_imdb_id":879870,"title":"Eat, Pray, Love","year":2010,"rating":3,"dubious":false,"date":"2010-08-18 20:56"},{"_id":"1528","normalized_imdb_id":985694,"title":"Machete","year":2010,"rating":3,"dubious":false,"date":"2010-09-04 19:28"},{"_id":"1407","normalized_imdb_id":427152,"title":"Dinner for Schmucks","year":2010,"rating":1,"dubious":false,"date":"2010-07-31 08:04"},{"_id":"1468","normalized_imdb_id":446029,"title":"Scott Pilgrim vs. the World","year":2010,"rating":3,"dubious":false,"date":"2010-08-13 21:33"},{"_id":"1606","normalized_imdb_id":1314652,"title":"Housemaid, The","year":2010,"rating":3,"dubious":false,"date":"2010-09-24 11:40"},{"_id":"1607","normalized_imdb_id":1322312,"title":"Going the Distance","year":2010,"rating":3,"dubious":false,"date":"2010-09-24 16:29"},{"_id":"1612","normalized_imdb_id":1320244,"title":"Last Exorcism, The","year":2010,"rating":3,"dubious":false,"date":"2010-09-27 23:27"},{"_id":"1624","normalized_imdb_id":1525915,"title":"Great Vazquez, The","year":2010,"rating":3,"dubious":false,"date":"2010-10-02 22:46"},{"_id":"1618","normalized_imdb_id":1653853,"title":"Into Our Own Hands","year":2010,"rating":3,"dubious":false,"date":"2010-10-01 11:43"},{"_id":"1619","normalized_imdb_id":1600524,"title":"Heartbeats","year":2010,"rating":2,"dubious":false,"date":"2010-10-01 11:44"},{"_id":"1620","normalized_imdb_id":1285016,"title":"Social Network, The","year":2010,"rating":1,"dubious":false,"date":"2010-10-01 23:22"},{"_id":"1625","normalized_imdb_id":1542852,"title":"Carancho","year":2010,"rating":3,"dubious":false,"date":"2010-10-02 23:21"},{"_id":"1626","normalized_imdb_id":1414382,"title":"You Again","year":2010,"rating":3,"dubious":false,"date":"2010-10-03 05:26"},{"_id":"1649","normalized_imdb_id":1228987,"title":"Let Me In","year":2010,"rating":1,"dubious":false,"date":"2010-10-07 15:04"},{"_id":"1650","normalized_imdb_id":1462758,"title":"Buried","year":2010,"rating":1,"dubious":false,"date":"2010-10-07 17:22"},{"_id":"1651","normalized_imdb_id":1479668,"title":"Abel","year":2010,"rating":3,"dubious":false,"date":"2010-10-07 17:23"},{"_id":"1652","normalized_imdb_id":1371155,"title":"Made In Dagenham","year":2010,"rating":3,"dubious":false,"date":"2010-10-08 00:32"},{"_id":"1653","normalized_imdb_id":1274300,"title":"Tempest, The","year":2010,"rating":3,"dubious":false,"date":"2010-10-08 00:35"},{"_id":"1655","normalized_imdb_id":1584016,"title":"Catfish","year":2010,"rating":0,"dubious":false,"date":"2010-10-08 03:35"},{"_id":"1661","normalized_imdb_id":1027718,"title":"Wall Street: Money Never Sleeps","year":2010,"rating":3,"dubious":true,"date":"2010-10-15 00:18"},{"_id":"1662","normalized_imdb_id":947798,"title":"Black Swan","year":2010,"rating":3,"dubious":false,"date":"2010-10-15 15:25"},{"_id":"1669","normalized_imdb_id":1028576,"title":"Secretariat","year":2010,"rating":3,"dubious":false,"date":"2010-10-18 02:18"},{"_id":"1672","normalized_imdb_id":1477171,"title":"Amador","year":2010,"rating":3,"dubious":false,"date":"2010-10-19 12:47"},{"_id":"1698","normalized_imdb_id":1436045,"title":"13 Assassins","year":2010,"rating":1,"dubious":true,"date":"2010-10-24 20:34"},{"_id":"1700","normalized_imdb_id":1245526,"title":"Red","year":2010,"rating":2,"dubious":false,"date":"2010-10-26 02:48"},{"_id":"1701","normalized_imdb_id":1314655,"title":"Devil","year":2010,"rating":3,"dubious":false,"date":"2010-10-26 09:44"},{"_id":"1711","normalized_imdb_id":1592876,"title":"Score: A Hockey Musical","year":2010,"rating":2,"dubious":false,"date":"2010-10-31 20:49"},{"_id":"1723","normalized_imdb_id":1126618,"title":"Morning Glory","year":2010,"rating":3,"dubious":false,"date":"2010-11-02 04:27"},{"_id":"1784","normalized_imdb_id":1126591,"title":"Burlesque","year":2010,"rating":3,"dubious":false,"date":"2010-11-29 20:44"},{"_id":"1742","normalized_imdb_id":1668200,"title":"Elle s'appelait Sarah (Sarah's key)","year":2010,"rating":3,"dubious":false,"date":"2010-11-07 09:21"},{"_id":"1743","normalized_imdb_id":1001526,"title":"Megamind","year":2010,"rating":0,"dubious":false,"date":"2010-11-07 13:28"},{"_id":"1758","normalized_imdb_id":1542344,"title":"127 Hours","year":2010,"rating":3,"dubious":true,"date":"2010-11-15 20:49"},{"_id":"1759","normalized_imdb_id":477080,"title":"Unstoppable","year":2010,"rating":3,"dubious":true,"date":"2010-11-16 05:49"},{"_id":"1760","normalized_imdb_id":1431181,"title":"Another Year","year":2010,"rating":3,"dubious":false,"date":"2010-11-17 11:09"},{"_id":"1772","normalized_imdb_id":800320,"title":"Clash of the Titans","year":2010,"rating":3,"dubious":true,"date":"2010-11-21 05:20"},{"_id":"1773","normalized_imdb_id":926084,"title":"Harry Potter and the Deathly Hallows: Part 1","year":2010,"rating":3,"dubious":false,"date":"2010-11-22 20:36"},{"_id":"1775","normalized_imdb_id":1588895,"title":"Uncle Boonmee Who Can Recall His Past Lives","year":2010,"rating":3,"dubious":false,"date":"2010-11-23 09:01"},{"_id":"1777","normalized_imdb_id":1458175,"title":"Next Three Days, The","year":2010,"rating":3,"dubious":false,"date":"2010-11-25 19:08"},{"_id":"1782","normalized_imdb_id":398286,"title":"Tangled","year":2010,"rating":3,"dubious":false,"date":"2010-11-27 01:52"},{"_id":"1820","normalized_imdb_id":1588337,"title":"Of god and men (Des hommes et des dieux)","year":2010,"rating":0,"dubious":false,"date":"2010-12-03 19:36"},{"_id":"1831","normalized_imdb_id":1235830,"title":"Chico & Rita","year":2010,"rating":2,"dubious":false,"date":"2010-12-08 10:38"},{"_id":"1842","normalized_imdb_id":1470827,"title":"Monsters","year":2010,"rating":0,"dubious":false,"date":"2010-12-12 00:31"},{"_id":"1851","normalized_imdb_id":1104001,"title":"Tron Legacy","year":2010,"rating":1,"dubious":false,"date":"2010-12-14 22:21"},{"_id":"1854","normalized_imdb_id":1403865,"title":"True Grit","year":2010,"rating":3,"dubious":false,"date":"2010-12-16 02:17"},{"_id":"1863","normalized_imdb_id":1504320,"title":"King's Speech, The","year":2010,"rating":3,"dubious":false,"date":"2010-12-20 13:05"},{"_id":"1865","normalized_imdb_id":1438254,"title":"Charlie St. Cloud","year":2010,"rating":1,"dubious":true,"date":"2010-12-21 04:19"},{"_id":"1866","normalized_imdb_id":1278469,"title":"Temple Grandin","year":2010,"rating":3,"dubious":false,"date":"2010-12-21 07:07"},{"_id":"1879","normalized_imdb_id":1243957,"title":"Tourist, The","year":2010,"rating":0,"dubious":false,"date":"2010-12-27 15:13"},{"_id":"1880","normalized_imdb_id":1564585,"title":"Skyline","year":2010,"rating":3,"dubious":true,"date":"2010-12-28 00:47"},{"_id":"1884","normalized_imdb_id":980970,"title":"Chronicles of Narnia: The Voyage of the Dawn Treader, The","year":2010,"rating":3,"dubious":false,"date":"2011-01-01 17:57"},{"_id":"1893","normalized_imdb_id":1302067,"title":"Yogi Bear","year":2010,"rating":0,"dubious":false,"date":"2011-01-04 18:43"},{"_id":"1918","normalized_imdb_id":1174693,"title":"Four-Faced Liar, The","year":2010,"rating":3,"dubious":false,"date":"2011-01-16 18:35"},{"_id":"1923","normalized_imdb_id":1334260,"title":"Never Let Me Go","year":2010,"rating":3,"dubious":false,"date":"2011-01-19 13:28"},{"_id":"1929","normalized_imdb_id":1079968,"title":"Jack and the Beanstalk","year":2010,"rating":1,"dubious":false,"date":"2011-01-23 05:52"},{"_id":"1930","normalized_imdb_id":1376195,"title":"Gunless","year":2010,"rating":2,"dubious":false,"date":"2011-01-23 07:13"},{"_id":"1933","normalized_imdb_id":1625340,"title":"Client List, The","year":2010,"rating":2,"dubious":false,"date":"2011-01-26 03:53"},{"_id":"1938","normalized_imdb_id":1624408,"title":"Trigger","year":2010,"rating":3,"dubious":false,"date":"2011-01-29 14:18"},{"_id":"2006","normalized_imdb_id":1559549,"title":"Restrepo","year":2010,"rating":0,"dubious":false,"date":"2011-02-08 03:34"},{"_id":"2033","normalized_imdb_id":964517,"title":"Fighter, The","year":2010,"rating":2,"dubious":false,"date":"2011-02-15 09:32"},{"_id":"2049","normalized_imdb_id":1183923,"title":"Welcome to the Rileys","year":2010,"rating":3,"dubious":false,"date":"2011-02-15 17:26"},{"_id":"2046","normalized_imdb_id":1686313,"title":"Simple Simon","year":2010,"rating":1,"dubious":false,"date":"2011-02-15 14:25"},{"_id":"2051","normalized_imdb_id":775489,"title":"Illusionist, The","year":2010,"rating":0,"dubious":false,"date":"2011-02-16 01:33"},{"_id":"2052","normalized_imdb_id":1723115,"title":"Place in Between, The","year":2010,"rating":3,"dubious":false,"date":"2011-02-18 09:32"},{"_id":"2055","normalized_imdb_id":1571724,"title":"Bal","year":2010,"rating":0,"dubious":false,"date":"2011-02-18 23:01"},{"_id":"2059","normalized_imdb_id":1164999,"title":"Biutiful","year":2010,"rating":1,"dubious":false,"date":"2011-02-19 22:52"},{"_id":"2084","normalized_imdb_id":1590089,"title":"Confessions (Kokuhaku)","year":2010,"rating":3,"dubious":false,"date":"2011-03-02 07:59"},{"_id":"2088","normalized_imdb_id":1120985,"title":"Blue Valentine","year":2010,"rating":2,"dubious":false,"date":"2011-03-05 07:06"},{"_id":"2093","normalized_imdb_id":1273678,"title":"Spy Next Door, The","year":2010,"rating":3,"dubious":false,"date":"2011-03-07 04:02"},{"_id":"2096","normalized_imdb_id":758752,"title":"Love and Other Drugs","year":2010,"rating":2,"dubious":true,"date":"2011-03-07 18:41"},{"_id":"2103","normalized_imdb_id":1588875,"title":"How I ended this summer","year":2010,"rating":0,"dubious":false,"date":"2011-03-09 10:40"},{"_id":"2110","normalized_imdb_id":1232838,"title":"Triple Dog","year":2010,"rating":3,"dubious":false,"date":"2011-03-12 13:00"},{"_id":"2112","normalized_imdb_id":1391034,"title":"And Soon the Darkness","year":2010,"rating":3,"dubious":false,"date":"2011-03-12 13:02"},{"_id":"2113","normalized_imdb_id":804497,"title":"It's Kind of a Funny Story","year":2010,"rating":1,"dubious":false,"date":"2011-03-12 13:03"},{"_id":"2114","normalized_imdb_id":1523483,"title":"Kaboom","year":2010,"rating":3,"dubious":false,"date":"2011-03-12 13:05"},{"_id":"2119","normalized_imdb_id":1020773,"title":"Certified Copy","year":2010,"rating":3,"dubious":false,"date":"2011-03-15 19:57"},{"_id":"2124","normalized_imdb_id":1421051,"title":"Somewhere","year":2010,"rating":3,"dubious":true,"date":"2011-03-18 22:27"},{"_id":"2129","normalized_imdb_id":989757,"title":"Dear John","year":2010,"rating":0,"dubious":false,"date":"2011-03-20 04:30"},{"_id":"2164","normalized_imdb_id":1673430,"title":"Superman/Batman: Apocalypse","year":2010,"rating":3,"dubious":false,"date":"2011-04-05 16:57"},{"_id":"2178","normalized_imdb_id":473364,"title":"Heavy, The","year":2010,"rating":0,"dubious":false,"date":"2011-04-09 00:31"},{"_id":"2175","normalized_imdb_id":1263750,"title":"Room in Rome","year":2010,"rating":3,"dubious":false,"date":"2011-04-08 13:40"},{"_id":"2177","normalized_imdb_id":1433108,"title":"Faster","year":2010,"rating":0,"dubious":false,"date":"2011-04-09 00:23"},{"_id":"2188","normalized_imdb_id":1255953,"title":"Incendies","year":2010,"rating":3,"dubious":false,"date":"2011-04-14 02:51"},{"_id":"2189","normalized_imdb_id":1440292,"title":"Submarine","year":2010,"rating":1,"dubious":false,"date":"2011-04-15 19:28"},{"_id":"2190","normalized_imdb_id":1231583,"title":"Due Date","year":2010,"rating":1,"dubious":false,"date":"2011-04-16 15:42"},{"_id":"2192","normalized_imdb_id":1600383,"title":"For 80 Days","year":2010,"rating":3,"dubious":false,"date":"2011-04-17 13:15"},{"_id":"2200","normalized_imdb_id":1423894,"title":"Barney's Version","year":2010,"rating":3,"dubious":false,"date":"2011-04-20 00:12"},{"_id":"2202","normalized_imdb_id":1438216,"title":"Oranges and Sunshine","year":2010,"rating":3,"dubious":false,"date":"2011-04-21 22:54"},{"_id":"2206","normalized_imdb_id":1518812,"title":"Meek's Cutoff","year":2010,"rating":2,"dubious":false,"date":"2011-04-23 14:50"},{"_id":"2245","normalized_imdb_id":1244754,"title":"Conviction","year":2010,"rating":3,"dubious":false,"date":"2011-04-26 02:11"},{"_id":"2246","normalized_imdb_id":935075,"title":"Rabbit Hole","year":2010,"rating":3,"dubious":false,"date":"2011-04-26 20:57"},{"_id":"2253","normalized_imdb_id":1612774,"title":"Rubber","year":2010,"rating":3,"dubious":true,"date":"2011-04-30 19:37"},{"_id":"2261","normalized_imdb_id":1252380,"title":"Camp Rock 2: The Final Jam","year":2010,"rating":3,"dubious":false,"date":"2011-04-30 21:15"},{"_id":"2264","normalized_imdb_id":1521848,"title":"Potiche","year":2010,"rating":3,"dubious":false,"date":"2011-05-02 03:30"},{"_id":"2271","normalized_imdb_id":1135084,"title":"Takers","year":2010,"rating":1,"dubious":false,"date":"2011-05-04 15:23"},{"_id":"2272","normalized_imdb_id":1515935,"title":"Lottery, The","year":2010,"rating":3,"dubious":false,"date":"2011-05-04 15:38"},{"_id":"2280","normalized_imdb_id":1591095,"title":"Insidious","year":2010,"rating":3,"dubious":false,"date":"2011-05-09 07:44"},{"_id":"2288","normalized_imdb_id":1512235,"title":"Super","year":2010,"rating":1,"dubious":false,"date":"2011-05-13 15:42"},{"_id":"2305","normalized_imdb_id":1531663,"title":"Everything Must Go","year":2010,"rating":1,"dubious":false,"date":"2011-05-18 05:46"},{"_id":"2307","normalized_imdb_id":1405500,"title":"For Colored Girls","year":2010,"rating":3,"dubious":false,"date":"2011-05-18 19:01"},{"_id":"2321","normalized_imdb_id":1569923,"title":"Batman: Under the Red Hood","year":2010,"rating":1,"dubious":false,"date":"2011-05-20 22:35"},{"_id":"2328","normalized_imdb_id":1194417,"title":"Casino Jack","year":2010,"rating":1,"dubious":false,"date":"2011-05-23 03:09"},{"_id":"2329","normalized_imdb_id":1311075,"title":"Human Resources Manager, The","year":2010,"rating":1,"dubious":false,"date":"2011-05-23 08:38"},{"_id":"2337","normalized_imdb_id":1583323,"title":"Steam of Life","year":2010,"rating":0,"dubious":false,"date":"2011-05-24 23:55"},{"_id":"2358","normalized_imdb_id":1486190,"title":"'Tamara Drewe'","year":2010,"rating":3,"dubious":false,"date":"2011-05-29 20:42"},{"_id":"2397","normalized_imdb_id":1723120,"title":"Viva Riva!","year":2010,"rating":3,"dubious":false,"date":"2011-06-13 13:56"},{"_id":"2416","normalized_imdb_id":1415283,"title":"Nanny McPhee and the Big Bang","year":2010,"rating":3,"dubious":false,"date":"2011-06-20 03:19"},{"_id":"2419","normalized_imdb_id":1313092,"title":"Animal Kingdom","year":2010,"rating":1,"dubious":true,"date":"2011-06-20 10:24"},{"_id":"2459","normalized_imdb_id":1721685,"title":"Pink Saris","year":2010,"rating":3,"dubious":false,"date":"2011-06-29 13:42"},{"_id":"2465","normalized_imdb_id":482459,"title":"Bandage","year":2010,"rating":3,"dubious":false,"date":"2011-06-29 17:09"},{"_id":"2480","normalized_imdb_id":1532503,"title":"Beginners","year":2010,"rating":1,"dubious":false,"date":"2011-07-04 01:52"},{"_id":"2481","normalized_imdb_id":1714886,"title":"Post Mortem","year":2010,"rating":1,"dubious":false,"date":"2011-07-04 08:02"},{"_id":"2482","normalized_imdb_id":1481572,"title":"Happythankyoumoreplease","year":2010,"rating":1,"dubious":false,"date":"2011-07-04 22:41"},{"_id":"2513","normalized_imdb_id":1568921,"title":"Arrietty","year":2010,"rating":3,"dubious":false,"date":"2011-07-09 16:00"},{"_id":"2537","normalized_imdb_id":814255,"title":"Percy Jackson & the Olympians: The Lightning Thief","year":2010,"rating":3,"dubious":true,"date":"2011-07-14 10:47"},{"_id":"2542","normalized_imdb_id":1740047,"title":"Trip, The","year":2010,"rating":1,"dubious":false,"date":"2011-07-16 08:49"},{"_id":"2593","normalized_imdb_id":1235189,"title":"Wild Target","year":2010,"rating":1,"dubious":false,"date":"2011-08-06 23:50"},{"_id":"2624","normalized_imdb_id":1518861,"title":"Turbulent Skies","year":2010,"rating":3,"dubious":false,"date":"2011-08-17 22:06"},{"_id":"2629","normalized_imdb_id":1671616,"title":"18 comidas","year":2010,"rating":2,"dubious":true,"date":"2011-08-21 14:27"},{"_id":"2633","normalized_imdb_id":1424432,"title":"Senna","year":2010,"rating":1,"dubious":false,"date":"2011-08-23 04:45"},{"_id":"2643","normalized_imdb_id":1514041,"title":"4.3.2.1","year":2010,"rating":3,"dubious":false,"date":"2011-08-25 17:15"},{"_id":"2661","normalized_imdb_id":1226753,"title":"Debt, The","year":2010,"rating":3,"dubious":false,"date":"2011-09-07 13:05"},{"_id":"2677","normalized_imdb_id":1740707,"title":"TrollHunter","year":2010,"rating":1,"dubious":false,"date":"2011-09-13 20:19"},{"_id":"2680","normalized_imdb_id":1270761,"title":"Don't Be Afraid of the Dark","year":2010,"rating":3,"dubious":false,"date":"2011-09-15 04:57"},{"_id":"2686","normalized_imdb_id":1341341,"title":"Ceremony","year":2010,"rating":2,"dubious":false,"date":"2011-09-16 16:12"},{"_id":"2700","normalized_imdb_id":1123373,"title":"Detective Dee and the Mystery of the Phantom Flame","year":2010,"rating":3,"dubious":false,"date":"2011-09-21 16:49"},{"_id":"2702","normalized_imdb_id":1429392,"title":"Small Town Murder Songs","year":2010,"rating":3,"dubious":true,"date":"2011-09-23 09:45"},{"_id":"2712","normalized_imdb_id":1754351,"title":"Hollywood Complex, The","year":2010,"rating":3,"dubious":false,"date":"2011-09-25 16:07"},{"_id":"2729","normalized_imdb_id":1602617,"title":"Corridor, The","year":2010,"rating":0,"dubious":false,"date":"2011-10-01 20:36"},{"_id":"2733","normalized_imdb_id":1509787,"title":"A Bag of Hammers","year":2010,"rating":3,"dubious":true,"date":"2011-10-03 04:25"},{"_id":"2771","normalized_imdb_id":1805297,"title":"Women on the 6th Floor, The","year":2010,"rating":3,"dubious":false,"date":"2011-10-18 03:08"},{"_id":"2773","normalized_imdb_id":1440232,"title":"Little White Lies","year":2010,"rating":3,"dubious":false,"date":"2011-10-20 14:31"},{"_id":"2774","normalized_imdb_id":1179025,"title":"Extraordinary Adventures of Adele Blanc-Sec, The","year":2010,"rating":3,"dubious":false,"date":"2011-10-20 14:34"},{"_id":"2775","normalized_imdb_id":1229381,"title":"Outside the Law","year":2010,"rating":1,"dubious":false,"date":"2011-10-20 14:40"},{"_id":"2778","normalized_imdb_id":1049402,"title":"Howl","year":2010,"rating":0,"dubious":false,"date":"2011-10-20 14:53"},{"_id":"2780","normalized_imdb_id":977855,"title":"Fair Game","year":2010,"rating":3,"dubious":false,"date":"2011-10-20 15:01"},{"_id":"2781","normalized_imdb_id":1561768,"title":"Essential Killing","year":2010,"rating":0,"dubious":false,"date":"2011-10-20 15:05"},{"_id":"2782","normalized_imdb_id":1270842,"title":"Norwegian Wood","year":2010,"rating":3,"dubious":false,"date":"2011-10-20 15:10"},{"_id":"2783","normalized_imdb_id":1465522,"title":"Tucker and Dale vs Evil","year":2010,"rating":3,"dubious":false,"date":"2011-10-20 15:21"},{"_id":"2791","normalized_imdb_id":1403988,"title":"Romantics, The","year":2010,"rating":3,"dubious":false,"date":"2011-10-23 22:00"},{"_id":"2794","normalized_imdb_id":1536044,"title":"Paranormal Activity 2","year":2010,"rating":3,"dubious":false,"date":"2011-10-24 23:31"},{"_id":"2801","normalized_imdb_id":1734113,"title":"Omae Umasou da na","year":2010,"rating":0,"dubious":false,"date":"2011-10-26 10:25"},{"_id":"2810","normalized_imdb_id":1447479,"title":"A Marine Story","year":2010,"rating":3,"dubious":false,"date":"2011-10-31 17:57"},{"_id":"2811","normalized_imdb_id":1464580,"title":"Stake Land","year":2010,"rating":1,"dubious":false,"date":"2011-10-31 19:15"},{"_id":"2812","normalized_imdb_id":1013860,"title":"Dylan Dog: Dead of Night","year":2010,"rating":0,"dubious":false,"date":"2011-10-31 21:22"},{"_id":"2813","normalized_imdb_id":1369706,"title":"Ward, The","year":2010,"rating":3,"dubious":false,"date":"2011-10-31 23:10"},{"_id":"2827","normalized_imdb_id":1462053,"title":"Leading Ladies","year":2010,"rating":3,"dubious":false,"date":"2011-11-05 02:05"},{"_id":"2863","normalized_imdb_id":1996211,"title":"Chasing Legends","year":2010,"rating":0,"dubious":true,"date":"2011-11-25 21:34"},{"_id":"2881","normalized_imdb_id":1618390,"title":"Disciple, The","year":2010,"rating":2,"dubious":false,"date":"2011-11-29 19:08"},{"_id":"2908","normalized_imdb_id":2008009,"title":"Clock, The","year":2010,"rating":3,"dubious":false,"date":"2011-12-07 05:45"},{"_id":"2940","normalized_imdb_id":1332134,"title":"King of Devil's Island","year":2010,"rating":1,"dubious":false,"date":"2011-12-18 12:08"},{"_id":"2951","normalized_imdb_id":1345772,"title":"Clinic, The","year":2010,"rating":3,"dubious":false,"date":"2011-12-23 06:31"},{"_id":"2962","normalized_imdb_id":968264,"title":"Conspirator, The","year":2010,"rating":3,"dubious":true,"date":"2011-12-28 05:07"},{"_id":"3011","normalized_imdb_id":1610452,"title":"Band Baaja Barat","year":2010,"rating":3,"dubious":false,"date":"2012-01-28 13:44"},{"_id":"3022","normalized_imdb_id":1212454,"title":"An Invisible Sign","year":2010,"rating":3,"dubious":false,"date":"2012-01-29 18:02"},{"_id":"3042","normalized_imdb_id":1401643,"title":"Black Venus","year":2010,"rating":3,"dubious":false,"date":"2012-02-11 23:50"},{"_id":"3068","normalized_imdb_id":1341710,"title":"Shrine, The","year":2010,"rating":3,"dubious":false,"date":"2012-02-20 23:45"},{"_id":"3390","normalized_imdb_id":1494772,"title":"Justice League: Crisis on Two Earths","year":2010,"rating":1,"dubious":false,"date":"2012-06-29 19:37"},{"_id":"3109","normalized_imdb_id":1393746,"title":"Aftershock","year":2010,"rating":3,"dubious":false,"date":"2012-03-11 13:03"},{"_id":"3110","normalized_imdb_id":1340773,"title":"Elektra Luxx","year":2010,"rating":3,"dubious":false,"date":"2012-03-12 17:01"},{"_id":"3157","normalized_imdb_id":1548603,"title":"Jo's Boy","year":2010,"rating":0,"dubious":false,"date":"2012-04-01 17:57"},{"_id":"3169","normalized_imdb_id":896872,"title":"Whistleblower, The","year":2010,"rating":3,"dubious":false,"date":"2012-04-08 01:49"},{"_id":"3187","normalized_imdb_id":1386932,"title":"Ip Man 2","year":2010,"rating":1,"dubious":false,"date":"2012-04-16 15:55"},{"_id":"3208","normalized_imdb_id":1316622,"title":"Wrecked","year":2010,"rating":0,"dubious":false,"date":"2012-04-29 03:22"},{"_id":"3228","normalized_imdb_id":1764141,"title":"Cairo 678","year":2010,"rating":3,"dubious":false,"date":"2012-05-06 16:03"},{"_id":"3213","normalized_imdb_id":1190072,"title":"Hunter, The","year":2010,"rating":1,"dubious":false,"date":"2012-04-30 13:04"},{"_id":"3224","normalized_imdb_id":1621444,"title":"Bill Cunningham New York","year":2010,"rating":3,"dubious":false,"date":"2012-05-04 04:40"},{"_id":"3257","normalized_imdb_id":1272051,"title":"Space Dogs","year":2010,"rating":3,"dubious":false,"date":"2012-05-15 14:38"},{"_id":"3278","normalized_imdb_id":1412541,"title":"Eat Me!","year":2010,"rating":3,"dubious":false,"date":"2012-05-21 20:19"},{"_id":"3316","normalized_imdb_id":411951,"title":"Tekken","year":2010,"rating":2,"dubious":false,"date":"2012-06-04 08:30"},{"_id":"3319","normalized_imdb_id":1588170,"title":"I Saw the Devil","year":2010,"rating":1,"dubious":false,"date":"2012-06-04 19:09"},{"_id":"3425","normalized_imdb_id":1194424,"title":"Denizen","year":2010,"rating":1,"dubious":false,"date":"2012-07-15 20:54"},{"_id":"3435","normalized_imdb_id":1341167,"title":"Four Lions","year":2010,"rating":1,"dubious":false,"date":"2012-07-18 20:03"},{"_id":"3456","normalized_imdb_id":1667079,"title":"Food Stamped","year":2010,"rating":3,"dubious":false,"date":"2012-08-04 00:47"},{"_id":"3459","normalized_imdb_id":1226273,"title":"Edge of Darkness","year":2010,"rating":1,"dubious":false,"date":"2012-08-07 20:36"},{"_id":"3464","normalized_imdb_id":1451762,"title":"On Tour","year":2010,"rating":3,"dubious":false,"date":"2012-08-11 14:53"},{"_id":"3505","normalized_imdb_id":1488598,"title":"Stonehenge Apocalypse","year":2010,"rating":3,"dubious":false,"date":"2012-09-01 01:56"},{"_id":"3568","normalized_imdb_id":1450332,"title":"Surely Someday","year":2010,"rating":1,"dubious":false,"date":"2012-10-01 06:24"},{"_id":"3607","normalized_imdb_id":1529233,"title":"Basilicata Coast to Coast","year":2010,"rating":3,"dubious":true,"date":"2012-10-16 23:24"},{"_id":"3647","normalized_imdb_id":1626201,"title":"Red: Werewolf Hunter","year":2010,"rating":3,"dubious":true,"date":"2012-11-02 16:16"},{"_id":"3676","normalized_imdb_id":1323045,"title":"Frozen","year":2010,"rating":1,"dubious":false,"date":"2012-11-17 23:55"},{"_id":"3686","normalized_imdb_id":1426320,"title":"BearCity","year":2010,"rating":0,"dubious":false,"date":"2012-11-21 19:37"},{"_id":"3708","normalized_imdb_id":1555064,"title":"Country Strong","year":2010,"rating":3,"dubious":false,"date":"2012-12-04 19:58"},{"_id":"3762","normalized_imdb_id":1216520,"title":"Womb","year":2010,"rating":3,"dubious":false,"date":"2012-12-21 11:32"},{"_id":"3763","normalized_imdb_id":1270120,"title":"Transfer","year":2010,"rating":3,"dubious":false,"date":"2012-12-21 11:37"},{"_id":"3804","normalized_imdb_id":1270296,"title":"Killing Jar, The","year":2010,"rating":3,"dubious":false,"date":"2013-01-05 04:02"},{"_id":"3815","normalized_imdb_id":1646959,"title":"Bedevilled","year":2010,"rating":3,"dubious":false,"date":"2013-01-09 21:53"},{"_id":"3816","normalized_imdb_id":1578261,"title":"Break Ke Baad","year":2010,"rating":3,"dubious":false,"date":"2013-01-10 05:10"},{"_id":"3842","normalized_imdb_id":1646876,"title":"16 Wishes","year":2010,"rating":3,"dubious":false,"date":"2013-01-20 01:05"},{"_id":"3852","normalized_imdb_id":1305797,"title":"Enthiran","year":2010,"rating":3,"dubious":false,"date":"2013-01-23 14:07"},{"_id":"3887","normalized_imdb_id":1581835,"title":"Daydream Nation","year":2010,"rating":3,"dubious":false,"date":"2013-02-09 23:52"},{"_id":"3903","normalized_imdb_id":1216515,"title":"Tinker Bell and the Great Fairy Rescue","year":2010,"rating":3,"dubious":false,"date":"2013-02-18 20:12"},{"_id":"3975","normalized_imdb_id":1673702,"title":"Une vie de chat","year":2010,"rating":3,"dubious":false,"date":"2013-03-11 11:09"},{"_id":"4003","normalized_imdb_id":954947,"title":"Killer Inside Me, The","year":2010,"rating":1,"dubious":false,"date":"2013-03-21 11:45"},{"_id":"4015","normalized_imdb_id":1560779,"title":"Good Witch's Gift, The","year":2010,"rating":3,"dubious":false,"date":"2013-03-24 21:36"},{"_id":"4038","normalized_imdb_id":1398428,"title":"YellowBrickRoad","year":2010,"rating":3,"dubious":false,"date":"2013-04-09 16:13"},{"_id":"4052","normalized_imdb_id":1452628,"title":"Vanishing on 7th Street","year":2010,"rating":1,"dubious":false,"date":"2013-04-14 03:34"},{"_id":"4078","normalized_imdb_id":1565958,"title":"Les emotifs anonymes","year":2010,"rating":3,"dubious":false,"date":"2013-04-22 02:06"},{"_id":"4102","normalized_imdb_id":1441912,"title":"Way, The","year":2010,"rating":0,"dubious":false,"date":"2013-04-25 13:43"},{"_id":"4103","normalized_imdb_id":1441956,"title":"West Is West","year":2010,"rating":3,"dubious":true,"date":"2013-04-25 13:44"},{"_id":"4110","normalized_imdb_id":775543,"title":"Night Catches Us","year":2010,"rating":3,"dubious":false,"date":"2013-04-27 21:15"},{"_id":"4128","normalized_imdb_id":1574639,"title":"Predicament","year":2010,"rating":1,"dubious":false,"date":"2013-05-11 12:35"},{"_id":"4137","normalized_imdb_id":1706365,"title":"Feeding Frenzy","year":2010,"rating":3,"dubious":false,"date":"2013-05-18 12:08"},{"_id":"4170","normalized_imdb_id":1536053,"title":"First Night","year":2010,"rating":3,"dubious":true,"date":"2013-05-27 03:17"},{"_id":"4274","normalized_imdb_id":1307858,"title":"All About Evil","year":2010,"rating":3,"dubious":false,"date":"2013-06-27 17:56"},{"_id":"4310","normalized_imdb_id":1575539,"title":"Elena Undone","year":2010,"rating":3,"dubious":false,"date":"2013-07-05 02:17"},{"_id":"4366","normalized_imdb_id":1614408,"title":"Time Traveller (Toki o Kakeru Shojo)","year":2010,"rating":3,"dubious":false,"date":"2013-07-18 21:17"},{"_id":"4504","normalized_imdb_id":1640571,"title":"Titanic II","year":2010,"rating":3,"dubious":false,"date":"2013-08-25 14:38"},{"_id":"4530","normalized_imdb_id":1381413,"title":"Pete Smalls Is Dead","year":2010,"rating":1,"dubious":false,"date":"2013-08-31 20:49"},{"_id":"4556","normalized_imdb_id":1236371,"title":"Mysteries of Lisbon","year":2010,"rating":3,"dubious":false,"date":"2013-09-12 04:52"},{"_id":"4790","normalized_imdb_id":1401143,"title":"Rare Exports","year":2010,"rating":0,"dubious":false,"date":"2013-11-06 16:07"},{"_id":"4810","normalized_imdb_id":1313244,"title":"Hypothermia","year":2010,"rating":3,"dubious":false,"date":"2013-11-11 19:39"},{"_id":"4823","normalized_imdb_id":997152,"title":"Experiment, The","year":2010,"rating":0,"dubious":false,"date":"2013-11-14 01:45"},{"_id":"4923","normalized_imdb_id":1673423,"title":"My Babysitter's a Vampire","year":2010,"rating":3,"dubious":false,"date":"2013-12-07 00:14"},{"_id":"4930","normalized_imdb_id":1719009,"title":"Bratz: Pampered Petz","year":2010,"rating":3,"dubious":false,"date":"2013-12-09 07:58"},{"_id":"4942","normalized_imdb_id":1303803,"title":"Standing Ovation","year":2010,"rating":3,"dubious":false,"date":"2013-12-12 07:39"},{"_id":"4991","normalized_imdb_id":1666642,"title":"Revenge of the Bridesmaids","year":2010,"rating":3,"dubious":false,"date":"2013-12-26 18:39"},{"_id":"5009","normalized_imdb_id":1512685,"title":"Los ojos de Julia (Julia's Eyes)","year":2010,"rating":3,"dubious":false,"date":"2013-12-30 02:06"},{"_id":"5018","normalized_imdb_id":1456060,"title":"Boy Wonder","year":2010,"rating":3,"dubious":true,"date":"2014-01-01 01:57"},{"_id":"5025","normalized_imdb_id":1788453,"title":"Amazing Bulk, The","year":2010,"rating":0,"dubious":false,"date":"2014-01-01 22:11"},{"_id":"5036","normalized_imdb_id":1185416,"title":"When in Rome","year":2010,"rating":3,"dubious":false,"date":"2014-01-03 18:59"},{"_id":"5070","normalized_imdb_id":1692504,"title":"We are The Night (Wir sind die Nacht)","year":2010,"rating":3,"dubious":false,"date":"2014-01-14 01:45"},{"_id":"5099","normalized_imdb_id":1319722,"title":"A Little Help","year":2010,"rating":3,"dubious":false,"date":"2014-01-23 06:55"},{"_id":"5100","normalized_imdb_id":1496884,"title":"Spiderhole","year":2010,"rating":3,"dubious":false,"date":"2014-01-23 21:23"},{"_id":"5134","normalized_imdb_id":1456941,"title":"Tomorrow, When the War Began","year":2010,"rating":3,"dubious":false,"date":"2014-02-04 03:46"},{"_id":"5197","normalized_imdb_id":1684911,"title":"Majorite opprimee","year":2010,"rating":0,"dubious":false,"date":"2014-02-23 21:56"},{"_id":"5231","normalized_imdb_id":1610301,"title":"Barbie in a Mermaid Tale","year":2010,"rating":3,"dubious":false,"date":"2014-03-05 04:19"},{"_id":"5239","normalized_imdb_id":1669706,"title":"Valkaama","year":2010,"rating":2,"dubious":false,"date":"2014-03-06 02:24"},{"_id":"5398","normalized_imdb_id":1213648,"title":"London Boulevard","year":2010,"rating":1,"dubious":false,"date":"2014-04-15 11:19"},{"_id":"5440","normalized_imdb_id":1744641,"title":"Ramayana: The Epic","year":2010,"rating":2,"dubious":false,"date":"2014-05-04 00:52"},{"_id":"5536","normalized_imdb_id":1520453,"title":"Twelve Thirty","year":2010,"rating":3,"dubious":false,"date":"2014-06-04 23:13"},{"_id":"5623","normalized_imdb_id":1405810,"title":"Mine vaganti","year":2010,"rating":3,"dubious":false,"date":"2014-07-09 04:01"},{"_id":"5644","normalized_imdb_id":1585255,"title":"Hairdresser, The","year":2010,"rating":3,"dubious":false,"date":"2014-07-22 03:05"},{"_id":"5735","normalized_imdb_id":1504443,"title":"Mongolian Death Worm","year":2010,"rating":3,"dubious":false,"date":"2014-09-08 22:01"},{"_id":"5830","normalized_imdb_id":1735853,"title":"Como Esquecer","year":2010,"rating":3,"dubious":false,"date":"2014-10-10 18:16"},{"_id":"5854","normalized_imdb_id":1602479,"title":"Love in a puff","year":2010,"rating":1,"dubious":false,"date":"2014-10-19 22:21"},{"_id":"5869","normalized_imdb_id":1270291,"title":"Hunter Prey","year":2010,"rating":0,"dubious":false,"date":"2014-10-24 12:19"},{"_id":"5876","normalized_imdb_id":1320304,"title":"30 Days of Night: Dark Days","year":2010,"rating":3,"dubious":false,"date":"2014-10-26 17:53"},{"_id":"5990","normalized_imdb_id":1294226,"title":"Last Song, The","year":2010,"rating":3,"dubious":false,"date":"2014-12-18 04:24"},{"_id":"6047","normalized_imdb_id":1179056,"title":"A Nightmare on Elm Street","year":2010,"rating":3,"dubious":false,"date":"2015-01-15 03:24"},{"_id":"6069","normalized_imdb_id":1614338,"title":"Fanny, Annie & Danny","year":2010,"rating":3,"dubious":false,"date":"2015-01-27 02:25"},{"_id":"6177","normalized_imdb_id":1291652,"title":"Snabba cash","year":2010,"rating":1,"dubious":false,"date":"2015-03-30 10:38"},{"_id":"6228","normalized_imdb_id":1648133,"title":"XXXHOLiC: Ro","year":2010,"rating":3,"dubious":false,"date":"2015-05-03 03:34"},{"_id":"6248","normalized_imdb_id":1433802,"title":"Diciotto anni dopo","year":2010,"rating":1,"dubious":false,"date":"2015-05-17 20:18"},{"_id":"6345","normalized_imdb_id":1341188,"title":"How Do You Know","year":2010,"rating":3,"dubious":false,"date":"2015-07-07 14:33"},{"_id":"6398","normalized_imdb_id":1221208,"title":"Frankie and Alice","year":2010,"rating":3,"dubious":false,"date":"2015-08-10 04:51"},{"_id":"6453","normalized_imdb_id":1219817,"title":"Going Postal","year":2010,"rating":1,"dubious":false,"date":"2015-09-14 15:10"},{"_id":"6493","normalized_imdb_id":1624426,"title":"I Will Follow","year":2010,"rating":3,"dubious":false,"date":"2015-10-16 10:26"},{"_id":"6511","normalized_imdb_id":1106860,"title":"Ca$h","year":2010,"rating":0,"dubious":false,"date":"2015-10-25 21:00"},{"_id":"6556","normalized_imdb_id":1278379,"title":"Jack goes boating","year":2010,"rating":1,"dubious":false,"date":"2015-11-23 10:40"},{"_id":"6657","normalized_imdb_id":817177,"title":"Flipped","year":2010,"rating":3,"dubious":true,"date":"2016-01-08 10:24"},{"_id":"6728","normalized_imdb_id":1361835,"title":"Das letzte Schweigen","year":2010,"rating":3,"dubious":true,"date":"2016-02-15 10:57"},{"_id":"6780","normalized_imdb_id":1653911,"title":"Mozart's Sister","year":2010,"rating":3,"dubious":false,"date":"2016-03-17 18:17"},{"_id":"7045","normalized_imdb_id":1023114,"title":"Way Back, The","year":2010,"rating":0,"dubious":false,"date":"2016-08-15 07:17"},{"_id":"7115","normalized_imdb_id":1278449,"title":"Sound of Noise","year":2010,"rating":0,"dubious":false,"date":"2016-09-13 10:13"},{"_id":"7152","normalized_imdb_id":1587386,"title":"Who We Are","year":2010,"rating":1,"dubious":false,"date":"2016-09-26 22:45"},{"_id":"7216","normalized_imdb_id":1320291,"title":"Reef, The","year":2010,"rating":1,"dubious":false,"date":"2016-10-21 22:37"},{"_id":"7363","normalized_imdb_id":1629377,"title":"Secuestrados","year":2010,"rating":3,"dubious":false,"date":"2016-12-28 15:22"},{"_id":"7491","normalized_imdb_id":872230,"title":"My Soul to Take","year":2010,"rating":3,"dubious":true,"date":"2017-03-08 23:16"},{"_id":"7683","normalized_imdb_id":1731767,"title":"Scooby-Doo! Camp Scare","year":2010,"rating":3,"dubious":false,"date":"2017-06-12 05:36"},{"_id":"7718","normalized_imdb_id":1167638,"title":"22 Bullets / L'immortel","year":2010,"rating":1,"dubious":false,"date":"2017-07-04 18:03"},{"_id":"7927","normalized_imdb_id":1480660,"title":"Halo: Legends","year":2010,"rating":1,"dubious":false,"date":"2017-11-28 17:43"},{"_id":"8022","normalized_imdb_id":1578873,"title":"Pretty Little Liars","year":2010,"rating":3,"dubious":false,"date":"2018-01-23 15:55"},{"_id":"8482","normalized_imdb_id":1216492,"title":"Leap Year","year":2010,"rating":3,"dubious":false,"date":"2018-11-11 22:26"},{"_id":"8538","normalized_imdb_id":1510906,"title":"Third Star","year":2010,"rating":1,"dubious":false,"date":"2018-12-14 23:13"},{"_id":"8562","normalized_imdb_id":1667691,"title":"Sasha","year":2010,"rating":1,"dubious":false,"date":"2018-12-15 00:07"},{"_id":"8627","normalized_imdb_id":1534085,"title":"Beyond the Black Rainbow","year":2010,"rating":2,"dubious":true,"date":"2019-02-01 20:58"},{"_id":"8710","normalized_imdb_id":1666300,"title":"Accursed, The","year":2010,"rating":2,"dubious":false,"date":"2019-04-18 03:08"},{"_id":"8819","normalized_imdb_id":1545097,"title":"Harriet the Spy: Blog Wars","year":2010,"rating":3,"dubious":false,"date":"2019-08-15 10:04"},{"_id":"9075","normalized_imdb_id":1055292,"title":"Life as We Know It","year":2010,"rating":3,"dubious":false,"date":"2020-04-11 13:05"},{"_id":"9076","normalized_imdb_id":1334553,"title":"Perfect Host, The","year":2010,"rating":2,"dubious":false,"date":"2020-04-11 15:30"},{"_id":"9173","normalized_imdb_id":1268987,"title":"Operation: Endgame","year":2010,"rating":3,"dubious":false,"date":"2020-06-17 06:35"},{"_id":"9373","normalized_imdb_id":1778258,"title":"Revenge: A Love Story","year":2010,"rating":1,"dubious":false,"date":"2020-12-14 12:12"},{"_id":"9364","normalized_imdb_id":1598538,"title":"Im Schatten","year":2010,"rating":0,"dubious":false,"date":"2020-12-10 22:40"},{"_id":"9350","normalized_imdb_id":1587157,"title":"Yu-Gi-Oh! 3D: Bonds Beyond Time","year":2010,"rating":1,"dubious":false,"date":"2020-12-03 04:10"},{"_id":"9351","normalized_imdb_id":1193631,"title":"Step Up 3D","year":2010,"rating":3,"dubious":false,"date":"2020-12-03 10:10"},{"_id":"9377","normalized_imdb_id":1642252,"title":"Big Tits Dragon, The","year":2010,"rating":3,"dubious":false,"date":"2020-12-14 13:03"},{"_id":"9561","normalized_imdb_id":1525835,"title":"Gantz","year":2010,"rating":1,"dubious":false,"date":"2021-03-16 07:40"},{"_id":"10044","normalized_imdb_id":4259780,"title":"Fantasmas","year":2010,"rating":0,"dubious":false,"date":"2021-09-10 23:37"},{"_id":"9890","normalized_imdb_id":1646123,"title":"Chongqing Blues","year":2010,"rating":1,"dubious":false,"date":"2021-06-13 07:30"},{"_id":"1733","normalized_imdb_id":978764,"title":"Sucker Punch","year":2011,"rating":3,"dubious":false,"date":"2010-11-04 13:27"},{"_id":"1924","normalized_imdb_id":990407,"title":"Green Hornet, The","year":2011,"rating":1,"dubious":false,"date":"2011-01-19 17:56"},{"_id":"1931","normalized_imdb_id":1679235,"title":"Mean Girls 2","year":2011,"rating":3,"dubious":false,"date":"2011-01-24 01:39"},{"_id":"2027","normalized_imdb_id":1092026,"title":"Paul","year":2011,"rating":3,"dubious":false,"date":"2011-02-14 19:02"},{"_id":"2028","normalized_imdb_id":1161864,"title":"Rite, The","year":2011,"rating":3,"dubious":true,"date":"2011-02-14 19:28"},{"_id":"2063","normalized_imdb_id":1464540,"title":"I Am Number Four","year":2011,"rating":1,"dubious":false,"date":"2011-02-21 23:23"},{"_id":"2064","normalized_imdb_id":1787729,"title":"Inventory","year":2011,"rating":3,"dubious":false,"date":"2011-02-23 03:14"},{"_id":"2066","normalized_imdb_id":1034389,"title":"Eagle, The","year":2011,"rating":0,"dubious":false,"date":"2011-02-24 17:13"},{"_id":"2067","normalized_imdb_id":1385826,"title":"Adjustment Bureau, The","year":2011,"rating":3,"dubious":true,"date":"2011-02-25 00:22"},{"_id":"2120","normalized_imdb_id":1192628,"title":"Rango","year":2011,"rating":1,"dubious":false,"date":"2011-03-16 02:14"},{"_id":"2122","normalized_imdb_id":1217613,"title":"Battle: Los Angeles","year":2011,"rating":1,"dubious":false,"date":"2011-03-16 20:01"},{"_id":"2123","normalized_imdb_id":1478338,"title":"Bridesmaids","year":2011,"rating":3,"dubious":false,"date":"2011-03-18 12:34"},{"_id":"2135","normalized_imdb_id":1486185,"title":"Red Riding Hood","year":2011,"rating":3,"dubious":false,"date":"2011-03-24 05:18"},{"_id":"2136","normalized_imdb_id":1152398,"title":"Beastly","year":2011,"rating":1,"dubious":false,"date":"2011-03-24 05:20"},{"_id":"2141","normalized_imdb_id":377981,"title":"Gnomeo & Juliet","year":2011,"rating":3,"dubious":true,"date":"2011-03-26 23:02"},{"_id":"2145","normalized_imdb_id":1621429,"title":"S.W.A.T.: Firefight","year":2011,"rating":1,"dubious":false,"date":"2011-03-27 15:32"},{"_id":"2146","normalized_imdb_id":1296899,"title":"Wake Wood","year":2011,"rating":3,"dubious":false,"date":"2011-03-27 20:23"},{"_id":"2155","normalized_imdb_id":1189340,"title":"Lincoln Lawyer, The","year":2011,"rating":1,"dubious":false,"date":"2011-03-30 20:46"},{"_id":"2161","normalized_imdb_id":945513,"title":"Source Code","year":2011,"rating":1,"dubious":false,"date":"2011-04-02 08:31"},{"_id":"2162","normalized_imdb_id":1219289,"title":"Limitless","year":2011,"rating":1,"dubious":false,"date":"2011-04-04 15:23"},{"_id":"2179","normalized_imdb_id":993842,"title":"Hanna","year":2011,"rating":3,"dubious":false,"date":"2011-04-09 03:26"},{"_id":"2185","normalized_imdb_id":1240982,"title":"Your Highness","year":2011,"rating":1,"dubious":false,"date":"2011-04-11 22:46"},{"_id":"2194","normalized_imdb_id":1334512,"title":"Arthur","year":2011,"rating":2,"dubious":false,"date":"2011-04-17 20:24"},{"_id":"2195","normalized_imdb_id":1262416,"title":"Scream 4","year":2011,"rating":3,"dubious":false,"date":"2011-04-17 21:30"},{"_id":"2201","normalized_imdb_id":1411704,"title":"Hop","year":2011,"rating":2,"dubious":false,"date":"2011-04-21 01:18"},{"_id":"2205","normalized_imdb_id":1436562,"title":"Rio","year":2011,"rating":1,"dubious":false,"date":"2011-04-23 14:04"},{"_id":"4330","normalized_imdb_id":480239,"title":"Atlas Shrugged: Part I","year":2011,"rating":3,"dubious":false,"date":"2013-07-11 14:05"},{"_id":"2252","normalized_imdb_id":800369,"title":"Thor","year":2011,"rating":3,"dubious":false,"date":"2011-04-29 20:32"},{"_id":"2265","normalized_imdb_id":1596343,"title":"Fast Five","year":2011,"rating":3,"dubious":false,"date":"2011-05-03 06:09"},{"_id":"2275","normalized_imdb_id":1411238,"title":"No Strings Attached","year":2011,"rating":3,"dubious":false,"date":"2011-05-04 18:15"},{"_id":"2276","normalized_imdb_id":1454029,"title":"Help, The","year":2011,"rating":3,"dubious":false,"date":"2011-05-05 13:28"},{"_id":"2285","normalized_imdb_id":1606392,"title":"Win Win","year":2011,"rating":3,"dubious":true,"date":"2011-05-11 19:29"},{"_id":"2289","normalized_imdb_id":1403177,"title":"Hesher","year":2011,"rating":1,"dubious":false,"date":"2011-05-13 15:43"},{"_id":"2310","normalized_imdb_id":1527186,"title":"Melancholia","year":2011,"rating":3,"dubious":false,"date":"2011-05-19 02:12"},{"_id":"2312","normalized_imdb_id":1298650,"title":"Pirates of the Caribbean: On Stranger Tides","year":2011,"rating":1,"dubious":false,"date":"2011-05-19 16:54"},{"_id":"2325","normalized_imdb_id":1067583,"title":"Water for Elephants","year":2011,"rating":1,"dubious":false,"date":"2011-05-23 00:33"},{"_id":"2355","normalized_imdb_id":1742683,"title":"Too Big to Fail","year":2011,"rating":1,"dubious":false,"date":"2011-05-28 19:51"},{"_id":"2356","normalized_imdb_id":1411697,"title":"Hangover Part 2, The","year":2011,"rating":1,"dubious":false,"date":"2011-05-28 20:28"},{"_id":"2368","normalized_imdb_id":478304,"title":"Tree of Life, The","year":2011,"rating":0,"dubious":false,"date":"2011-05-31 05:59"},{"_id":"2370","normalized_imdb_id":1270798,"title":"X-Men: First Class","year":2011,"rating":3,"dubious":false,"date":"2011-06-03 12:46"},{"_id":"2376","normalized_imdb_id":1229822,"title":"Jane Eyre","year":2011,"rating":3,"dubious":false,"date":"2011-06-08 03:07"},{"_id":"2388","normalized_imdb_id":1650062,"title":"Super 8","year":2011,"rating":3,"dubious":false,"date":"2011-06-11 05:22"},{"_id":"2411","normalized_imdb_id":1133985,"title":"Green Lantern","year":2011,"rating":1,"dubious":false,"date":"2011-06-18 04:25"},{"_id":"2425","normalized_imdb_id":1396218,"title":"Mr. Popper's Penguins","year":2011,"rating":1,"dubious":false,"date":"2011-06-22 05:41"},{"_id":"2433","normalized_imdb_id":1718807,"title":"Jamie and Jessie Are Not Together","year":2011,"rating":3,"dubious":false,"date":"2011-06-22 09:10"},{"_id":"2451","normalized_imdb_id":1284575,"title":"Bad Teacher","year":2011,"rating":3,"dubious":false,"date":"2011-06-27 19:08"},{"_id":"2469","normalized_imdb_id":1399103,"title":"Transformers: Dark of the Moon","year":2011,"rating":3,"dubious":false,"date":"2011-06-29 19:10"},{"_id":"2479","normalized_imdb_id":1605783,"title":"Midnight in Paris","year":2011,"rating":3,"dubious":false,"date":"2011-07-04 01:43"},{"_id":"2497","normalized_imdb_id":1756832,"title":"Unleashed, The","year":2011,"rating":3,"dubious":false,"date":"2011-07-07 05:46"},{"_id":"2512","normalized_imdb_id":1499658,"title":"Horrible Bosses","year":2011,"rating":3,"dubious":false,"date":"2011-07-09 04:30"},{"_id":"2539","normalized_imdb_id":1201607,"title":"Harry Potter and the Deathly Hallows: Part 2","year":2011,"rating":3,"dubious":true,"date":"2011-07-14 20:35"},{"_id":"2565","normalized_imdb_id":1632708,"title":"Friends with Benefits","year":2011,"rating":3,"dubious":false,"date":"2011-07-22 20:40"},{"_id":"2567","normalized_imdb_id":458339,"title":"Captain America: The First Avenger","year":2011,"rating":1,"dubious":false,"date":"2011-07-23 17:53"},{"_id":"2587","normalized_imdb_id":1570728,"title":"Crazy, Stupid, Love.","year":2011,"rating":3,"dubious":false,"date":"2011-08-02 01:11"},{"_id":"2589","normalized_imdb_id":409847,"title":"Cowboys & Aliens","year":2011,"rating":1,"dubious":false,"date":"2011-08-02 06:10"},{"_id":"2592","normalized_imdb_id":1827358,"title":"She Monkeys","year":2011,"rating":3,"dubious":false,"date":"2011-08-04 21:12"},{"_id":"2594","normalized_imdb_id":1318514,"title":"Rise of the Planet of the Apes","year":2011,"rating":1,"dubious":false,"date":"2011-08-07 02:22"},{"_id":"2595","normalized_imdb_id":1449283,"title":"Winnie the Pooh","year":2011,"rating":0,"dubious":false,"date":"2011-08-08 14:02"},{"_id":"2607","normalized_imdb_id":1822304,"title":"Sleeping Sickness (Schlafkrankheit)","year":2011,"rating":1,"dubious":false,"date":"2011-08-13 12:52"},{"_id":"2618","normalized_imdb_id":1622547,"title":"30 Minutes or Less","year":2011,"rating":1,"dubious":false,"date":"2011-08-15 13:14"},{"_id":"2623","normalized_imdb_id":1189073,"title":"Skin I Live In, The","year":2011,"rating":3,"dubious":false,"date":"2011-08-17 21:45"},{"_id":"2631","normalized_imdb_id":1319708,"title":"Deus Ex Human Revolution","year":2011,"rating":3,"dubious":false,"date":"2011-08-22 18:06"},{"_id":"2636","normalized_imdb_id":816462,"title":"Conan the Barbarian","year":2011,"rating":3,"dubious":true,"date":"2011-08-24 04:46"},{"_id":"2638","normalized_imdb_id":1941600,"title":"Masks","year":2011,"rating":3,"dubious":false,"date":"2011-08-24 17:02"},{"_id":"2639","normalized_imdb_id":472181,"title":"Smurfs, The","year":2011,"rating":3,"dubious":false,"date":"2011-08-24 19:42"},{"_id":"2649","normalized_imdb_id":1832382,"title":"A Separation","year":2011,"rating":3,"dubious":false,"date":"2011-09-01 21:31"},{"_id":"2659","normalized_imdb_id":1772240,"title":"Apollo 18","year":2011,"rating":0,"dubious":false,"date":"2011-09-05 18:25"},{"_id":"2660","normalized_imdb_id":1540133,"title":"Guard, The","year":2011,"rating":1,"dubious":false,"date":"2011-09-05 21:27"},{"_id":"2673","normalized_imdb_id":1598778,"title":"Contagion","year":2011,"rating":3,"dubious":false,"date":"2011-09-10 06:12"},{"_id":"2679","normalized_imdb_id":780504,"title":"Drive","year":2011,"rating":3,"dubious":true,"date":"2011-09-15 04:51"},{"_id":"2688","normalized_imdb_id":1302011,"title":"Kung Fu Panda 2","year":2011,"rating":3,"dubious":false,"date":"2011-09-17 19:20"},{"_id":"2689","normalized_imdb_id":1714208,"title":"Woman, The","year":2011,"rating":3,"dubious":false,"date":"2011-09-17 21:20"},{"_id":"2691","normalized_imdb_id":1564349,"title":"Dolphin Tale","year":2011,"rating":2,"dubious":false,"date":"2011-09-18 05:17"},{"_id":"2692","normalized_imdb_id":999913,"title":"Straw Dogs","year":2011,"rating":3,"dubious":false,"date":"2011-09-18 05:21"},{"_id":"2693","normalized_imdb_id":873886,"title":"Red State","year":2011,"rating":3,"dubious":false,"date":"2011-09-18 14:25"},{"_id":"2695","normalized_imdb_id":1716772,"title":"Inbetweeners Movie, The","year":2011,"rating":1,"dubious":false,"date":"2011-09-20 14:26"},{"_id":"2703","normalized_imdb_id":1672845,"title":"You Instead","year":2011,"rating":3,"dubious":false,"date":"2011-09-23 15:10"},{"_id":"2706","normalized_imdb_id":1781812,"title":"Exit Humanity","year":2011,"rating":3,"dubious":false,"date":"2011-09-24 06:34"},{"_id":"2707","normalized_imdb_id":1582270,"title":"Dead Inside, The","year":2011,"rating":1,"dubious":false,"date":"2011-09-24 06:41"},{"_id":"2711","normalized_imdb_id":1743922,"title":"Donovan's Echo","year":2011,"rating":1,"dubious":false,"date":"2011-09-25 15:57"},{"_id":"2714","normalized_imdb_id":1448755,"title":"Killer Elite","year":2011,"rating":0,"dubious":false,"date":"2011-09-26 23:09"},{"_id":"2716","normalized_imdb_id":1592281,"title":"Take This Waltz","year":2011,"rating":3,"dubious":false,"date":"2011-09-27 06:07"},{"_id":"2717","normalized_imdb_id":1210166,"title":"Moneyball","year":2011,"rating":1,"dubious":false,"date":"2011-09-27 19:38"},{"_id":"2718","normalized_imdb_id":1684628,"title":"Circumstance","year":2011,"rating":3,"dubious":false,"date":"2011-09-27 22:40"},{"_id":"2719","normalized_imdb_id":1562568,"title":"Higher Ground","year":2011,"rating":3,"dubious":false,"date":"2011-09-28 23:18"},{"_id":"2721","normalized_imdb_id":1691323,"title":"Attenberg","year":2011,"rating":3,"dubious":false,"date":"2011-09-29 18:36"},{"_id":"2724","normalized_imdb_id":1531930,"title":"Lie, The","year":2011,"rating":3,"dubious":false,"date":"2011-09-30 06:40"},{"_id":"2726","normalized_imdb_id":1832405,"title":"Moon Point","year":2011,"rating":1,"dubious":false,"date":"2011-10-01 20:11"},{"_id":"2727","normalized_imdb_id":1604225,"title":"Thespians","year":2011,"rating":3,"dubious":false,"date":"2011-10-01 20:26"},{"_id":"2728","normalized_imdb_id":1756750,"title":"Starbuck","year":2011,"rating":1,"dubious":false,"date":"2011-10-01 20:31"},{"_id":"2732","normalized_imdb_id":1592527,"title":"Black Power Mixtape 1967-1975, The","year":2011,"rating":3,"dubious":false,"date":"2011-10-02 12:44"},{"_id":"2734","normalized_imdb_id":1675439,"title":"Lloyd the Conqueror","year":2011,"rating":2,"dubious":false,"date":"2011-10-03 04:30"},{"_id":"2735","normalized_imdb_id":1478964,"title":"Attack the Block","year":2011,"rating":3,"dubious":false,"date":"2011-10-04 13:38"},{"_id":"2736","normalized_imdb_id":1124035,"title":"Ides Of March","year":2011,"rating":1,"dubious":false,"date":"2011-10-05 02:49"},{"_id":"2747","normalized_imdb_id":1340800,"title":"Tinker Tailor Soldier Spy","year":2011,"rating":1,"dubious":false,"date":"2011-10-08 20:46"},{"_id":"2748","normalized_imdb_id":1787777,"title":"Page One: Inside the New York Times","year":2011,"rating":1,"dubious":false,"date":"2011-10-09 01:38"},{"_id":"2752","normalized_imdb_id":433035,"title":"Real Steel","year":2011,"rating":1,"dubious":false,"date":"2011-10-10 21:01"},{"_id":"2754","normalized_imdb_id":472399,"title":"Mechanic, The","year":2011,"rating":0,"dubious":false,"date":"2011-10-12 18:34"},{"_id":"2758","normalized_imdb_id":1068242,"title":"Footloose","year":2011,"rating":3,"dubious":false,"date":"2011-10-13 04:35"},{"_id":"2759","normalized_imdb_id":1655442,"title":"Artist, The","year":2011,"rating":1,"dubious":true,"date":"2011-10-13 14:21"},{"_id":"2761","normalized_imdb_id":1946421,"title":"Captains, The","year":2011,"rating":1,"dubious":false,"date":"2011-10-14 03:58"},{"_id":"2764","normalized_imdb_id":905372,"title":"Thing, The","year":2011,"rating":3,"dubious":false,"date":"2011-10-14 07:45"},{"_id":"2779","normalized_imdb_id":1216475,"title":"Cars 2","year":2011,"rating":2,"dubious":false,"date":"2011-10-20 14:58"},{"_id":"2787","normalized_imdb_id":1509767,"title":"Three Musketeers, The","year":2011,"rating":2,"dubious":false,"date":"2011-10-23 15:50"},{"_id":"2788","normalized_imdb_id":1053810,"title":"Big Year, The","year":2011,"rating":2,"dubious":true,"date":"2011-10-23 17:36"},{"_id":"2789","normalized_imdb_id":1440118,"title":"I Am Nasrine","year":2011,"rating":3,"dubious":false,"date":"2011-10-23 21:23"},{"_id":"2790","normalized_imdb_id":1498569,"title":"Restless","year":2011,"rating":3,"dubious":false,"date":"2011-10-23 21:49"},{"_id":"2792","normalized_imdb_id":1242460,"title":"We Need to Talk About Kevin","year":2011,"rating":3,"dubious":false,"date":"2011-10-24 16:46"},{"_id":"2805","normalized_imdb_id":1630027,"title":"Alamanya","year":2011,"rating":3,"dubious":false,"date":"2011-10-28 08:42"},{"_id":"2806","normalized_imdb_id":1674692,"title":"French Immersion","year":2011,"rating":3,"dubious":false,"date":"2011-10-28 14:35"},{"_id":"2807","normalized_imdb_id":1637688,"title":"In Time","year":2011,"rating":1,"dubious":false,"date":"2011-10-29 08:53"},{"_id":"2818","normalized_imdb_id":983193,"title":"Adventures of Tintin, The","year":2011,"rating":1,"dubious":false,"date":"2011-11-01 19:32"},{"_id":"2819","normalized_imdb_id":1306980,"title":"50/50","year":2011,"rating":2,"dubious":false,"date":"2011-11-01 21:14"},{"_id":"2822","normalized_imdb_id":1615147,"title":"Margin Call","year":2011,"rating":1,"dubious":false,"date":"2011-11-02 23:52"},{"_id":"3147","normalized_imdb_id":1720182,"title":"October Baby","year":2011,"rating":3,"dubious":false,"date":"2012-03-26 16:18"},{"_id":"2825","normalized_imdb_id":1235170,"title":"Future, The","year":2011,"rating":3,"dubious":false,"date":"2011-11-04 05:00"},{"_id":"2826","normalized_imdb_id":1813314,"title":"Fjellet","year":2011,"rating":3,"dubious":false,"date":"2011-11-05 01:43"},{"_id":"2833","normalized_imdb_id":1675192,"title":"Take Shelter","year":2011,"rating":3,"dubious":false,"date":"2011-11-08 02:59"},{"_id":"2834","normalized_imdb_id":1462041,"title":"Dream House","year":2011,"rating":3,"dubious":false,"date":"2011-11-08 16:23"},{"_id":"2837","normalized_imdb_id":1376233,"title":"Rid of Me","year":2011,"rating":3,"dubious":false,"date":"2011-11-09 18:07"},{"_id":"2839","normalized_imdb_id":1441326,"title":"Martha Marcy May Marlene","year":2011,"rating":3,"dubious":false,"date":"2011-11-13 23:48"},{"_id":"2842","normalized_imdb_id":1253864,"title":"Immortals","year":2011,"rating":2,"dubious":false,"date":"2011-11-15 04:37"},{"_id":"2854","normalized_imdb_id":1268799,"title":"A Very Harold & Kumar 3D Christmas","year":2011,"rating":1,"dubious":false,"date":"2011-11-20 06:32"},{"_id":"2859","normalized_imdb_id":1699185,"title":"Free Men","year":2011,"rating":1,"dubious":false,"date":"2011-11-21 10:34"},{"_id":"2865","normalized_imdb_id":1758692,"title":"Like Crazy","year":2011,"rating":3,"dubious":false,"date":"2011-11-26 16:36"},{"_id":"2869","normalized_imdb_id":1033575,"title":"Descendants, The","year":2011,"rating":3,"dubious":false,"date":"2011-11-26 18:19"},{"_id":"2870","normalized_imdb_id":1900856,"title":"Coup d'éclat","year":2011,"rating":3,"dubious":false,"date":"2011-11-26 21:39"},{"_id":"2876","normalized_imdb_id":1564367,"title":"Just Go with It","year":2011,"rating":3,"dubious":true,"date":"2011-11-29 13:09"},{"_id":"2877","normalized_imdb_id":1622979,"title":"Final Destination 5","year":2011,"rating":2,"dubious":false,"date":"2011-11-29 13:14"},{"_id":"2878","normalized_imdb_id":1778304,"title":"Paranormal Activity 3","year":2011,"rating":3,"dubious":false,"date":"2011-11-29 13:18"},{"_id":"2879","normalized_imdb_id":448694,"title":"Puss in Boots","year":2011,"rating":1,"dubious":false,"date":"2011-11-29 13:21"},{"_id":"2880","normalized_imdb_id":1596346,"title":"Soul Surfer","year":2011,"rating":3,"dubious":false,"date":"2011-11-29 13:22"},{"_id":"2887","normalized_imdb_id":1655420,"title":"My Week with Marilyn","year":2011,"rating":3,"dubious":false,"date":"2011-11-30 03:06"},{"_id":"2889","normalized_imdb_id":1204342,"title":"Muppets, The","year":2011,"rating":1,"dubious":false,"date":"2011-11-30 17:08"},{"_id":"2909","normalized_imdb_id":1508675,"title":"Le Havre","year":2011,"rating":3,"dubious":true,"date":"2011-12-07 05:46"},{"_id":"2911","normalized_imdb_id":844993,"title":"Hoodwinked Too! Hood vs. Evil","year":2011,"rating":3,"dubious":false,"date":"2011-12-07 21:42"},{"_id":"2918","normalized_imdb_id":822847,"title":"Priest","year":2011,"rating":1,"dubious":false,"date":"2011-12-10 14:22"},{"_id":"2919","normalized_imdb_id":1675434,"title":"Untouchable","year":2011,"rating":1,"dubious":false,"date":"2011-12-10 23:24"},{"_id":"2929","normalized_imdb_id":1661420,"title":"Polisse","year":2011,"rating":3,"dubious":false,"date":"2011-12-15 08:59"},{"_id":"2935","normalized_imdb_id":1541160,"title":"Flypaper","year":2011,"rating":3,"dubious":false,"date":"2011-12-17 10:20"},{"_id":"2943","normalized_imdb_id":1515091,"title":"Sherlock Holmes: A Game of Shadows","year":2011,"rating":1,"dubious":false,"date":"2011-12-19 03:46"},{"_id":"2944","normalized_imdb_id":480687,"title":"Hall Pass","year":2011,"rating":2,"dubious":false,"date":"2011-12-19 05:23"},{"_id":"2947","normalized_imdb_id":1265990,"title":"Roommate, The","year":2011,"rating":3,"dubious":false,"date":"2011-12-21 21:25"},{"_id":"2948","normalized_imdb_id":1615918,"title":"Alvin and the Chipmunks: Chipwrecked","year":2011,"rating":3,"dubious":true,"date":"2011-12-21 22:51"},{"_id":"2952","normalized_imdb_id":1625346,"title":"Young Adult","year":2011,"rating":3,"dubious":false,"date":"2011-12-23 22:13"},{"_id":"2953","normalized_imdb_id":1568346,"title":"Girl with the Dragon Tattoo, The","year":2011,"rating":1,"dubious":false,"date":"2011-12-24 03:56"},{"_id":"2954","normalized_imdb_id":1650043,"title":"Diary of a Wimpy Kid: Rodrick Rules","year":2011,"rating":1,"dubious":false,"date":"2011-12-24 08:08"},{"_id":"2955","normalized_imdb_id":1093357,"title":"Darkest Hour, The","year":2011,"rating":3,"dubious":false,"date":"2011-12-26 05:16"},{"_id":"2958","normalized_imdb_id":1568911,"title":"War Horse","year":2011,"rating":1,"dubious":false,"date":"2011-12-26 14:05"},{"_id":"3394","normalized_imdb_id":1510938,"title":"Sunset Limited, The","year":2011,"rating":0,"dubious":false,"date":"2012-07-02 21:12"},{"_id":"2964","normalized_imdb_id":471042,"title":"Tower Heist","year":2011,"rating":1,"dubious":false,"date":"2011-12-29 22:09"},{"_id":"2967","normalized_imdb_id":1229238,"title":"Mission: Impossible - Ghost Protocol","year":2011,"rating":1,"dubious":false,"date":"2011-12-31 09:27"},{"_id":"2975","normalized_imdb_id":1438176,"title":"Fright Night","year":2011,"rating":3,"dubious":true,"date":"2012-01-07 03:22"},{"_id":"2978","normalized_imdb_id":1621994,"title":"Once Upon a Warrior","year":2011,"rating":3,"dubious":false,"date":"2012-01-08 08:59"},{"_id":"2985","normalized_imdb_id":970179,"title":"Hugo","year":2011,"rating":3,"dubious":true,"date":"2012-01-12 01:06"},{"_id":"2987","normalized_imdb_id":376136,"title":"Rum Diary, The","year":2011,"rating":1,"dubious":false,"date":"2012-01-13 08:52"},{"_id":"2990","normalized_imdb_id":1692486,"title":"Carnage","year":2011,"rating":3,"dubious":false,"date":"2012-01-15 05:33"},{"_id":"2991","normalized_imdb_id":1435513,"title":"Hysteria","year":2011,"rating":3,"dubious":false,"date":"2012-01-15 17:56"},{"_id":"2998","normalized_imdb_id":1506999,"title":"Haywire","year":2011,"rating":0,"dubious":false,"date":"2012-01-23 03:25"},{"_id":"3006","normalized_imdb_id":1827487,"title":"Once upon a time in Anatolia","year":2011,"rating":1,"dubious":false,"date":"2012-01-27 09:02"},{"_id":"9178","normalized_imdb_id":1772398,"title":"Strange Thing About the Johnsons, The","year":2011,"rating":3,"dubious":false,"date":"2020-06-22 07:05"},{"_id":"3021","normalized_imdb_id":1637706,"title":"Our Idiot Brother","year":2011,"rating":3,"dubious":false,"date":"2012-01-29 04:23"},{"_id":"3025","normalized_imdb_id":1860152,"title":"17 Girls","year":2011,"rating":3,"dubious":false,"date":"2012-01-31 19:41"},{"_id":"3026","normalized_imdb_id":1606618,"title":"Iris","year":2011,"rating":3,"dubious":false,"date":"2012-01-31 19:43"},{"_id":"3028","normalized_imdb_id":1477837,"title":"Cedar Rapids","year":2011,"rating":1,"dubious":false,"date":"2012-02-02 04:15"},{"_id":"3032","normalized_imdb_id":477302,"title":"Extremely Loud & Incredibly Close","year":2011,"rating":2,"dubious":true,"date":"2012-02-08 00:47"},{"_id":"3043","normalized_imdb_id":1291584,"title":"Warrior","year":2011,"rating":1,"dubious":false,"date":"2012-02-12 08:05"},{"_id":"3045","normalized_imdb_id":2140371,"title":"Saving Face","year":2011,"rating":3,"dubious":false,"date":"2012-02-13 05:38"},{"_id":"3057","normalized_imdb_id":1492030,"title":"Mildred Pierce","year":2011,"rating":3,"dubious":false,"date":"2012-02-19 07:42"},{"_id":"3063","normalized_imdb_id":1602098,"title":"Albert Nobbs","year":2011,"rating":3,"dubious":true,"date":"2012-02-20 18:58"},{"_id":"3065","normalized_imdb_id":1007029,"title":"Iron Lady, The","year":2011,"rating":3,"dubious":false,"date":"2012-02-20 19:03"},{"_id":"3083","normalized_imdb_id":1071875,"title":"Ghost Rider: Spirit of Vengeance","year":2011,"rating":0,"dubious":false,"date":"2012-03-01 22:58"},{"_id":"3388","normalized_imdb_id":1798188,"title":"From Up on Poppy Hill","year":2011,"rating":3,"dubious":false,"date":"2012-06-28 06:05"},{"_id":"3107","normalized_imdb_id":1699231,"title":"Quarantine 2: Terminal","year":2011,"rating":3,"dubious":false,"date":"2012-03-11 04:13"},{"_id":"3144","normalized_imdb_id":1568816,"title":"Phase 7","year":2011,"rating":0,"dubious":false,"date":"2012-03-25 02:54"},{"_id":"3120","normalized_imdb_id":1720616,"title":"Friends with Kids","year":2011,"rating":3,"dubious":false,"date":"2012-03-14 18:43"},{"_id":"3131","normalized_imdb_id":1641410,"title":"Terraferma","year":2011,"rating":3,"dubious":false,"date":"2012-03-20 08:41"},{"_id":"3136","normalized_imdb_id":1389137,"title":"We Bought a Zoo","year":2011,"rating":2,"dubious":false,"date":"2012-03-21 18:50"},{"_id":"3140","normalized_imdb_id":1530509,"title":"Human Centipede II (Full Sequence), The","year":2011,"rating":1,"dubious":false,"date":"2012-03-23 08:40"},{"_id":"3156","normalized_imdb_id":906778,"title":"Black Butterflies","year":2011,"rating":3,"dubious":false,"date":"2012-04-01 17:23"},{"_id":"3170","normalized_imdb_id":1067774,"title":"Monte Carlo","year":2011,"rating":3,"dubious":false,"date":"2012-04-08 04:26"},{"_id":"3174","normalized_imdb_id":1588334,"title":"Jeff, Who Lives at Home","year":2011,"rating":3,"dubious":false,"date":"2012-04-09 14:14"},{"_id":"3273","normalized_imdb_id":1412386,"title":"Best Exotic Marigold Hotel, The","year":2011,"rating":3,"dubious":false,"date":"2012-05-20 21:08"},{"_id":"3177","normalized_imdb_id":2011971,"title":"Monsieur Lahzar","year":2011,"rating":3,"dubious":false,"date":"2012-04-11 08:41"},{"_id":"3181","normalized_imdb_id":1259521,"title":"Cabin in the Woods, The","year":2011,"rating":3,"dubious":true,"date":"2012-04-13 08:47"},{"_id":"3185","normalized_imdb_id":1667905,"title":"This is not a film","year":2011,"rating":1,"dubious":false,"date":"2012-04-16 07:31"},{"_id":"3186","normalized_imdb_id":1687901,"title":"Awakening, The","year":2011,"rating":3,"dubious":false,"date":"2012-04-16 13:13"},{"_id":"3196","normalized_imdb_id":1440161,"title":"A Little Bit of Heaven","year":2011,"rating":3,"dubious":false,"date":"2012-04-20 22:14"},{"_id":"3204","normalized_imdb_id":1181614,"title":"Wuthering Heights","year":2011,"rating":2,"dubious":false,"date":"2012-04-25 08:42"},{"_id":"3207","normalized_imdb_id":1859446,"title":"Alps","year":2011,"rating":3,"dubious":false,"date":"2012-04-27 09:44"},{"_id":"3214","normalized_imdb_id":1671457,"title":"Familiar Grounds","year":2011,"rating":1,"dubious":false,"date":"2012-04-30 13:09"},{"_id":"3215","normalized_imdb_id":1371585,"title":"Life Without Principle","year":2011,"rating":3,"dubious":false,"date":"2012-04-30 13:11"},{"_id":"3219","normalized_imdb_id":1700844,"title":"Deep Blue Sea, The","year":2011,"rating":3,"dubious":false,"date":"2012-04-30 13:29"},{"_id":"3220","normalized_imdb_id":1906426,"title":"Michael","year":2011,"rating":2,"dubious":false,"date":"2012-04-30 13:34"},{"_id":"3221","normalized_imdb_id":1683921,"title":"Sleepless Night","year":2011,"rating":1,"dubious":false,"date":"2012-04-30 13:39"},{"_id":"3226","normalized_imdb_id":1550312,"title":"Cafe de Flore","year":2011,"rating":3,"dubious":false,"date":"2012-05-05 16:20"},{"_id":"3229","normalized_imdb_id":1701210,"title":"Black Gold","year":2011,"rating":0,"dubious":false,"date":"2012-05-06 16:12"},{"_id":"3244","normalized_imdb_id":1441952,"title":"Salmon Fishing in the Yemen","year":2011,"rating":2,"dubious":false,"date":"2012-05-11 05:52"},{"_id":"3255","normalized_imdb_id":1233334,"title":"Pariah","year":2011,"rating":3,"dubious":false,"date":"2012-05-15 03:54"},{"_id":"3262","normalized_imdb_id":1667307,"title":"Damsels in Distress","year":2011,"rating":3,"dubious":false,"date":"2012-05-16 19:49"},{"_id":"3268","normalized_imdb_id":1445520,"title":"Footnote","year":2011,"rating":2,"dubious":false,"date":"2012-05-17 22:46"},{"_id":"3270","normalized_imdb_id":1897941,"title":"Mitsuko Delivers","year":2011,"rating":3,"dubious":false,"date":"2012-05-18 23:54"},{"_id":"3276","normalized_imdb_id":1634122,"title":"Johnny English Reborn","year":2011,"rating":3,"dubious":true,"date":"2012-05-21 04:24"},{"_id":"3305","normalized_imdb_id":1899353,"title":"Raid: Redemption, The","year":2011,"rating":0,"dubious":false,"date":"2012-06-02 12:23"},{"_id":"3306","normalized_imdb_id":2007418,"title":"Three Disappearances of Soad Hosni, The","year":2011,"rating":3,"dubious":false,"date":"2012-06-02 14:56"},{"_id":"3307","normalized_imdb_id":1847731,"title":"Tomboy","year":2011,"rating":3,"dubious":false,"date":"2012-06-02 21:15"},{"_id":"3322","normalized_imdb_id":1541149,"title":"Albatross","year":2011,"rating":3,"dubious":false,"date":"2012-06-05 02:50"},{"_id":"3325","normalized_imdb_id":1719071,"title":"Another Happy Day","year":2011,"rating":3,"dubious":false,"date":"2012-06-05 21:38"},{"_id":"3340","normalized_imdb_id":1204340,"title":"Tyrannosaur","year":2011,"rating":2,"dubious":false,"date":"2012-06-11 18:45"},{"_id":"3341","normalized_imdb_id":1650407,"title":"Turn Me On, Dammit!","year":2011,"rating":3,"dubious":false,"date":"2012-06-11 18:48"},{"_id":"3346","normalized_imdb_id":1439572,"title":"Perfect Sense","year":2011,"rating":3,"dubious":false,"date":"2012-06-11 19:43"},{"_id":"3347","normalized_imdb_id":1890373,"title":"Combat Girls","year":2011,"rating":3,"dubious":false,"date":"2012-06-11 19:47"},{"_id":"3349","normalized_imdb_id":1886493,"title":"Catch .44","year":2011,"rating":3,"dubious":false,"date":"2012-06-13 05:17"},{"_id":"3375","normalized_imdb_id":1541995,"title":"Snow Flower and the Secret Fan","year":2011,"rating":3,"dubious":false,"date":"2012-06-23 06:39"},{"_id":"3411","normalized_imdb_id":1614989,"title":"Headhunters","year":2011,"rating":1,"dubious":false,"date":"2012-07-10 00:15"},{"_id":"3412","normalized_imdb_id":2043879,"title":"Found Memories (Historias que so existem quando lembradas)","year":2011,"rating":3,"dubious":false,"date":"2012-07-10 08:01"},{"_id":"3428","normalized_imdb_id":1456472,"title":"We Have a Pope","year":2011,"rating":1,"dubious":false,"date":"2012-07-16 17:30"},{"_id":"3436","normalized_imdb_id":1536048,"title":"W.E.","year":2011,"rating":3,"dubious":false,"date":"2012-07-19 00:20"},{"_id":"3439","normalized_imdb_id":1930315,"title":"Cyberbully","year":2011,"rating":3,"dubious":false,"date":"2012-07-22 03:35"},{"_id":"3440","normalized_imdb_id":1788391,"title":"Kill List","year":2011,"rating":3,"dubious":true,"date":"2012-07-23 07:31"},{"_id":"3441","normalized_imdb_id":2042432,"title":"11 Flowers","year":2011,"rating":3,"dubious":true,"date":"2012-07-23 08:07"},{"_id":"3443","normalized_imdb_id":1762248,"title":"Codependent Lesbian Space Alien Seeks Same","year":2011,"rating":3,"dubious":false,"date":"2012-07-23 22:30"},{"_id":"3452","normalized_imdb_id":810913,"title":"Jack and Jill","year":2011,"rating":3,"dubious":false,"date":"2012-07-29 00:37"},{"_id":"3458","normalized_imdb_id":1549572,"title":"Another Earth","year":2011,"rating":3,"dubious":false,"date":"2012-08-05 16:19"},{"_id":"3487","normalized_imdb_id":1728196,"title":"Hara-Kiri: Death of a Samurai","year":2011,"rating":0,"dubious":false,"date":"2012-08-21 04:43"},{"_id":"3490","normalized_imdb_id":466893,"title":"Margaret","year":2011,"rating":3,"dubious":false,"date":"2012-08-21 11:40"},{"_id":"3491","normalized_imdb_id":1571222,"title":"A Dangerous Method","year":2011,"rating":3,"dubious":true,"date":"2012-08-23 23:06"},{"_id":"3493","normalized_imdb_id":1535616,"title":"Divide, The","year":2011,"rating":3,"dubious":false,"date":"2012-08-24 21:26"},{"_id":"3498","normalized_imdb_id":1645080,"title":"Art of Getting By, The","year":2011,"rating":1,"dubious":false,"date":"2012-08-26 16:47"},{"_id":"3511","normalized_imdb_id":1723811,"title":"Shame","year":2011,"rating":1,"dubious":false,"date":"2012-09-02 16:54"},{"_id":"3517","normalized_imdb_id":1784575,"title":"Parada","year":2011,"rating":3,"dubious":false,"date":"2012-09-04 11:17"},{"_id":"3527","normalized_imdb_id":1742336,"title":"Your Sister's Sister","year":2011,"rating":3,"dubious":false,"date":"2012-09-11 04:02"},{"_id":"3528","normalized_imdb_id":1836987,"title":"Trishna","year":2011,"rating":3,"dubious":false,"date":"2012-09-11 07:36"},{"_id":"3531","normalized_imdb_id":1674057,"title":"And if we all live together","year":2011,"rating":2,"dubious":false,"date":"2012-09-17 07:56"},{"_id":"3534","normalized_imdb_id":1640459,"title":"Hobo with a Shotgun","year":2011,"rating":0,"dubious":false,"date":"2012-09-18 17:00"},{"_id":"3546","normalized_imdb_id":1707392,"title":"Lovely Molly","year":2011,"rating":3,"dubious":false,"date":"2012-09-24 15:13"},{"_id":"3893","normalized_imdb_id":1821593,"title":"Rundskop","year":2011,"rating":2,"dubious":false,"date":"2013-02-12 16:52"},{"_id":"3584","normalized_imdb_id":1594562,"title":"Innkeepers, The","year":2011,"rating":3,"dubious":false,"date":"2012-10-10 17:01"},{"_id":"3603","normalized_imdb_id":1987018,"title":"A Happy Event","year":2011,"rating":3,"dubious":false,"date":"2012-10-16 23:12"},{"_id":"3605","normalized_imdb_id":1440345,"title":"This Must Be the Place","year":2011,"rating":1,"dubious":false,"date":"2012-10-16 23:18"},{"_id":"3606","normalized_imdb_id":1640484,"title":"Jumping the Broom","year":2011,"rating":3,"dubious":false,"date":"2012-10-16 23:19"},{"_id":"3620","normalized_imdb_id":1407065,"title":"Moth Diaries, The","year":2011,"rating":3,"dubious":false,"date":"2012-10-21 09:14"},{"_id":"3639","normalized_imdb_id":1650058,"title":"Perfect Family, The","year":2011,"rating":3,"dubious":false,"date":"2012-10-30 04:42"},{"_id":"3675","normalized_imdb_id":1772424,"title":"Where Do We Go Now?","year":2011,"rating":3,"dubious":false,"date":"2012-11-17 14:10"},{"_id":"3691","normalized_imdb_id":1686067,"title":"Source, The","year":2011,"rating":3,"dubious":false,"date":"2012-11-26 08:56"},{"_id":"3695","normalized_imdb_id":770802,"title":"Samsara","year":2011,"rating":0,"dubious":false,"date":"2012-11-27 20:04"},{"_id":"3702","normalized_imdb_id":1657507,"title":"Colombiana","year":2011,"rating":1,"dubious":false,"date":"2012-12-01 21:41"},{"_id":"3738","normalized_imdb_id":1748207,"title":"Sound of My Voice","year":2011,"rating":3,"dubious":false,"date":"2012-12-09 23:57"},{"_id":"3740","normalized_imdb_id":1772925,"title":"Jiro Dreams of Sushi","year":2011,"rating":0,"dubious":false,"date":"2012-12-11 04:51"},{"_id":"3756","normalized_imdb_id":1324999,"title":"Twilight Saga: Breaking Dawn - Part 1, The","year":2011,"rating":3,"dubious":false,"date":"2012-12-17 06:39"},{"_id":"3768","normalized_imdb_id":1900893,"title":"Himizu","year":2011,"rating":3,"dubious":true,"date":"2012-12-22 01:25"},{"_id":"3782","normalized_imdb_id":1610996,"title":"Absentia","year":2011,"rating":3,"dubious":false,"date":"2012-12-29 04:15"},{"_id":"3805","normalized_imdb_id":1629705,"title":"Blackthorn","year":2011,"rating":1,"dubious":false,"date":"2013-01-05 09:30"},{"_id":"3831","normalized_imdb_id":1672723,"title":"Batman: Year One","year":2011,"rating":3,"dubious":false,"date":"2013-01-15 03:01"},{"_id":"3876","normalized_imdb_id":1930371,"title":"Joe and Belle","year":2011,"rating":3,"dubious":false,"date":"2013-02-06 21:59"},{"_id":"3884","normalized_imdb_id":1809231,"title":"Jackpot (Arme Riddere)","year":2011,"rating":1,"dubious":false,"date":"2013-02-09 08:36"},{"_id":"3895","normalized_imdb_id":1701990,"title":"Detention","year":2011,"rating":3,"dubious":false,"date":"2013-02-13 08:04"},{"_id":"3901","normalized_imdb_id":1910498,"title":"Alien Armageddon","year":2011,"rating":3,"dubious":false,"date":"2013-02-17 12:44"},{"_id":"3943","normalized_imdb_id":1594917,"title":"Age of the Dragons","year":2011,"rating":0,"dubious":false,"date":"2013-02-28 10:00"},{"_id":"3969","normalized_imdb_id":1372686,"title":"Coriolanus","year":2011,"rating":2,"dubious":false,"date":"2013-03-11 00:16"},{"_id":"3992","normalized_imdb_id":1298554,"title":"Eva","year":2011,"rating":3,"dubious":false,"date":"2013-03-17 22:49"},{"_id":"4018","normalized_imdb_id":1630626,"title":"Blue Crush 2","year":2011,"rating":3,"dubious":false,"date":"2013-03-27 07:54"},{"_id":"4070","normalized_imdb_id":1536410,"title":"Faces in the Crowd","year":2011,"rating":3,"dubious":false,"date":"2013-04-17 20:03"},{"_id":"4089","normalized_imdb_id":1205558,"title":"Hick","year":2011,"rating":3,"dubious":false,"date":"2013-04-25 05:19"},{"_id":"4095","normalized_imdb_id":1891942,"title":"Nicostratos le pelican","year":2011,"rating":1,"dubious":false,"date":"2013-04-25 13:25"},{"_id":"4097","normalized_imdb_id":1735200,"title":"When Pigs Have Wings","year":2011,"rating":1,"dubious":false,"date":"2013-04-25 13:30"},{"_id":"4098","normalized_imdb_id":1638328,"title":"L'amour dure trois ans","year":2011,"rating":3,"dubious":true,"date":"2013-04-25 13:33"},{"_id":"4099","normalized_imdb_id":1669794,"title":"Au cul du loup","year":2011,"rating":3,"dubious":true,"date":"2013-04-25 13:35"},{"_id":"4100","normalized_imdb_id":1753887,"title":"Hasta la Vista","year":2011,"rating":1,"dubious":false,"date":"2013-04-25 13:38"},{"_id":"4104","normalized_imdb_id":1700467,"title":"L'art d'aimer","year":2011,"rating":3,"dubious":true,"date":"2013-04-25 13:49"},{"_id":"4139","normalized_imdb_id":1349451,"title":"Butter","year":2011,"rating":3,"dubious":false,"date":"2013-05-18 16:57"},{"_id":"4235","normalized_imdb_id":1561770,"title":"Shunning, The","year":2011,"rating":3,"dubious":false,"date":"2013-06-13 01:04"},{"_id":"4242","normalized_imdb_id":1525552,"title":"Apart","year":2011,"rating":3,"dubious":false,"date":"2013-06-14 19:26"},{"_id":"4285","normalized_imdb_id":1410063,"title":"Jin ling shi san chai","year":2011,"rating":3,"dubious":false,"date":"2013-06-28 22:21"},{"_id":"4291","normalized_imdb_id":1909270,"title":"17 Miracles","year":2011,"rating":3,"dubious":false,"date":"2013-06-29 14:38"},{"_id":"4295","normalized_imdb_id":1838571,"title":"Juan of the Dead","year":2011,"rating":1,"dubious":false,"date":"2013-06-30 18:27"},{"_id":"4307","normalized_imdb_id":1643222,"title":"Hell","year":2011,"rating":3,"dubious":false,"date":"2013-07-04 01:13"},{"_id":"4311","normalized_imdb_id":1466054,"title":"Cloudburst","year":2011,"rating":3,"dubious":false,"date":"2013-07-05 05:51"},{"_id":"4396","normalized_imdb_id":1757944,"title":"Princess and the Pony, The","year":2011,"rating":3,"dubious":false,"date":"2013-07-25 19:18"},{"_id":"4418","normalized_imdb_id":1845866,"title":"Teen Spirit","year":2011,"rating":3,"dubious":false,"date":"2013-07-29 22:42"},{"_id":"4427","normalized_imdb_id":1828224,"title":"La Leyenda de la Llorona","year":2011,"rating":3,"dubious":false,"date":"2013-07-31 22:18"},{"_id":"4485","normalized_imdb_id":1649780,"title":"Peace, Love, & Misunderstanding","year":2011,"rating":3,"dubious":false,"date":"2013-08-17 17:59"},{"_id":"4489","normalized_imdb_id":2009643,"title":"Á annan veg","year":2011,"rating":0,"dubious":false,"date":"2013-08-18 23:24"},{"_id":"4499","normalized_imdb_id":1787127,"title":"Forgiveness of Blood, The","year":2011,"rating":3,"dubious":false,"date":"2013-08-22 03:26"},{"_id":"4505","normalized_imdb_id":1853739,"title":"You're Next","year":2011,"rating":3,"dubious":false,"date":"2013-08-25 14:52"},{"_id":"4529","normalized_imdb_id":1646980,"title":"Double, The","year":2011,"rating":1,"dubious":false,"date":"2013-08-31 20:38"},{"_id":"4531","normalized_imdb_id":1598822,"title":"New Year's Eve","year":2011,"rating":3,"dubious":false,"date":"2013-08-31 21:29"},{"_id":"4532","normalized_imdb_id":1638350,"title":"Le Skylab","year":2011,"rating":3,"dubious":false,"date":"2013-08-31 21:48"},{"_id":"4549","normalized_imdb_id":1525890,"title":"Caller, The","year":2011,"rating":3,"dubious":false,"date":"2013-09-08 21:10"},{"_id":"4563","normalized_imdb_id":1657299,"title":"Decoy Bride, The","year":2011,"rating":3,"dubious":false,"date":"2013-09-12 23:52"},{"_id":"4567","normalized_imdb_id":1948150,"title":"Singham","year":2011,"rating":2,"dubious":false,"date":"2013-09-13 11:25"},{"_id":"4588","normalized_imdb_id":1833781,"title":"Ruggine","year":2011,"rating":3,"dubious":false,"date":"2013-09-15 16:38"},{"_id":"4601","normalized_imdb_id":1714210,"title":"Weekend","year":2011,"rating":1,"dubious":false,"date":"2013-09-18 13:45"},{"_id":"4605","normalized_imdb_id":1695405,"title":"Loneliest Planet, The","year":2011,"rating":0,"dubious":false,"date":"2013-09-18 19:40"},{"_id":"4686","normalized_imdb_id":1772373,"title":"Craiglist Killer, The","year":2011,"rating":3,"dubious":false,"date":"2013-10-12 15:01"},{"_id":"4691","normalized_imdb_id":1582271,"title":"Good Doctor, The","year":2011,"rating":3,"dubious":true,"date":"2013-10-13 17:39"},{"_id":"4732","normalized_imdb_id":1757742,"title":"Apartment 143","year":2011,"rating":3,"dubious":true,"date":"2013-10-23 21:36"},{"_id":"4889","normalized_imdb_id":2043900,"title":"Last Call at the Oasis","year":2011,"rating":3,"dubious":false,"date":"2013-11-29 21:16"},{"_id":"4897","normalized_imdb_id":770703,"title":"What's Your Number","year":2011,"rating":3,"dubious":false,"date":"2013-12-01 14:33"},{"_id":"4914","normalized_imdb_id":1430607,"title":"Arthur Christmas","year":2011,"rating":1,"dubious":false,"date":"2013-12-05 04:39"},{"_id":"4941","normalized_imdb_id":1305591,"title":"Mars Needs Moms","year":2011,"rating":3,"dubious":true,"date":"2013-12-12 04:43"},{"_id":"4970","normalized_imdb_id":1588398,"title":"Sleeping Beauty","year":2011,"rating":3,"dubious":false,"date":"2013-12-21 05:29"},{"_id":"5041","normalized_imdb_id":1422136,"title":"A Lonely Place to Die","year":2011,"rating":3,"dubious":false,"date":"2014-01-05 01:58"},{"_id":"5043","normalized_imdb_id":1623745,"title":"Little Birds","year":2011,"rating":3,"dubious":false,"date":"2014-01-05 06:31"},{"_id":"5057","normalized_imdb_id":1783798,"title":"Union Squre","year":2011,"rating":3,"dubious":false,"date":"2014-01-09 14:45"},{"_id":"5139","normalized_imdb_id":1366344,"title":"Sitter, The","year":2011,"rating":3,"dubious":true,"date":"2014-02-06 05:53"},{"_id":"5101","normalized_imdb_id":1854506,"title":"Aliens vs. Avatars","year":2011,"rating":3,"dubious":false,"date":"2014-01-24 01:52"},{"_id":"5147","normalized_imdb_id":1641624,"title":"My Piece of the Pie","year":2011,"rating":3,"dubious":false,"date":"2014-02-07 20:49"},{"_id":"5160","normalized_imdb_id":893412,"title":"From Prada to Nada","year":2011,"rating":3,"dubious":false,"date":"2014-02-11 22:07"},{"_id":"5216","normalized_imdb_id":1634136,"title":"Violet & Daisy","year":2011,"rating":3,"dubious":false,"date":"2014-03-01 03:42"},{"_id":"5228","normalized_imdb_id":1737090,"title":"Amber Lake","year":2011,"rating":3,"dubious":false,"date":"2014-03-04 03:41"},{"_id":"5253","normalized_imdb_id":1680051,"title":"Alyce Kills","year":2011,"rating":3,"dubious":false,"date":"2014-03-08 02:50"},{"_id":"5259","normalized_imdb_id":1764666,"title":"Little Engine That Could, The","year":2011,"rating":3,"dubious":false,"date":"2014-03-08 23:18"},{"_id":"5267","normalized_imdb_id":1630036,"title":"Courageous","year":2011,"rating":3,"dubious":true,"date":"2014-03-11 01:37"},{"_id":"5294","normalized_imdb_id":1836212,"title":"All Superheroes Must Die","year":2011,"rating":1,"dubious":false,"date":"2014-03-17 21:44"},{"_id":"5330","normalized_imdb_id":2008006,"title":"A Simple Life","year":2011,"rating":3,"dubious":false,"date":"2014-03-27 19:36"},{"_id":"5502","normalized_imdb_id":1648204,"title":"Lemonade Mouth","year":2011,"rating":3,"dubious":false,"date":"2014-05-27 01:51"},{"_id":"5543","normalized_imdb_id":1198199,"title":"About Sunny","year":2011,"rating":3,"dubious":false,"date":"2014-06-06 23:39"},{"_id":"5558","normalized_imdb_id":1660379,"title":"House of Tolerance","year":2011,"rating":3,"dubious":false,"date":"2014-06-09 22:22"},{"_id":"5568","normalized_imdb_id":1682246,"title":"Girl Walks Into a Bar","year":2011,"rating":3,"dubious":false,"date":"2014-06-15 21:44"},{"_id":"5572","normalized_imdb_id":1665418,"title":"Dorfman in Love","year":2011,"rating":3,"dubious":false,"date":"2014-06-17 20:11"},{"_id":"5575","normalized_imdb_id":1488555,"title":"Change-Up, The","year":2011,"rating":1,"dubious":false,"date":"2014-06-19 02:02"},{"_id":"5699","normalized_imdb_id":1726589,"title":"L!fe Happens","year":2011,"rating":3,"dubious":false,"date":"2014-08-16 01:28"},{"_id":"5808","normalized_imdb_id":1859522,"title":"Kiss Me","year":2011,"rating":3,"dubious":false,"date":"2014-10-05 23:34"},{"_id":"5828","normalized_imdb_id":1703199,"title":"Grave Encounters","year":2011,"rating":0,"dubious":false,"date":"2014-10-09 23:56"},{"_id":"5860","normalized_imdb_id":1767382,"title":"Silent House","year":2011,"rating":3,"dubious":false,"date":"2014-10-22 02:52"},{"_id":"5986","normalized_imdb_id":1487118,"title":"Chalet Girl","year":2011,"rating":3,"dubious":false,"date":"2014-12-15 22:11"},{"_id":"6015","normalized_imdb_id":1703148,"title":"Hunter, The","year":2011,"rating":3,"dubious":false,"date":"2015-01-04 01:21"},{"_id":"6033","normalized_imdb_id":1604171,"title":"Prom","year":2011,"rating":3,"dubious":false,"date":"2015-01-09 14:20"},{"_id":"6106","normalized_imdb_id":1316540,"title":"A torinoi lo","year":2011,"rating":0,"dubious":false,"date":"2015-02-09 15:50"},{"_id":"6111","normalized_imdb_id":1705134,"title":"State of Emergency","year":2011,"rating":1,"dubious":false,"date":"2015-02-16 02:02"},{"_id":"6153","normalized_imdb_id":1742650,"title":"I Don't Know How She Does It","year":2011,"rating":3,"dubious":false,"date":"2015-03-19 20:32"},{"_id":"6235","normalized_imdb_id":4627404,"title":"xxxHolic Ro Adayume","year":2011,"rating":1,"dubious":false,"date":"2015-05-09 04:11"},{"_id":"6285","normalized_imdb_id":1401152,"title":"Unknown","year":2011,"rating":1,"dubious":false,"date":"2015-06-01 06:26"},{"_id":"6295","normalized_imdb_id":1942120,"title":"Toutes nos envies","year":2011,"rating":3,"dubious":false,"date":"2015-06-05 11:35"},{"_id":"6302","normalized_imdb_id":1857913,"title":"Sorcerer and the White Snake, The","year":2011,"rating":3,"dubious":false,"date":"2015-06-08 04:31"},{"_id":"6427","normalized_imdb_id":1683526,"title":"Detachment","year":2011,"rating":3,"dubious":false,"date":"2015-08-29 23:24"},{"_id":"6525","normalized_imdb_id":1504508,"title":"Yelling to the Sky","year":2011,"rating":3,"dubious":false,"date":"2015-11-01 09:13"},{"_id":"6606","normalized_imdb_id":2150139,"title":"A 2nd Chance","year":2011,"rating":3,"dubious":false,"date":"2015-12-14 02:50"},{"_id":"6639","normalized_imdb_id":1732730,"title":"Roller Town","year":2011,"rating":3,"dubious":false,"date":"2015-12-27 21:26"},{"_id":"6697","normalized_imdb_id":1736633,"title":"Oslo, 31. august","year":2011,"rating":1,"dubious":false,"date":"2016-01-29 09:47"},{"_id":"6725","normalized_imdb_id":1316624,"title":"Year Dolly Parton Was My Mom, The","year":2011,"rating":3,"dubious":false,"date":"2016-02-13 03:29"},{"_id":"6764","normalized_imdb_id":1437358,"title":"Mientras duermes","year":2011,"rating":1,"dubious":false,"date":"2016-03-08 15:13"},{"_id":"6826","normalized_imdb_id":1772250,"title":"Hidden Face, The","year":2011,"rating":1,"dubious":true,"date":"2016-04-13 00:31"},{"_id":"6847","normalized_imdb_id":1843678,"title":"Scott and Bailey","year":2011,"rating":3,"dubious":true,"date":"2016-04-24 12:28"},{"_id":"7028","normalized_imdb_id":1563738,"title":"One Day","year":2011,"rating":1,"dubious":false,"date":"2016-08-07 10:47"},{"_id":"7060","normalized_imdb_id":1547090,"title":"Without Men","year":2011,"rating":3,"dubious":false,"date":"2016-08-23 03:55"},{"_id":"7138","normalized_imdb_id":1961281,"title":"Drengen der ikke kunne svomme","year":2011,"rating":0,"dubious":false,"date":"2016-09-24 16:41"},{"_id":"7164","normalized_imdb_id":1734110,"title":"No One Killed Jessica","year":2011,"rating":3,"dubious":false,"date":"2016-09-30 00:58"},{"_id":"7171","normalized_imdb_id":1815836,"title":"Moy papa Baryshnikov","year":2011,"rating":2,"dubious":false,"date":"2016-10-05 21:28"},{"_id":"7330","normalized_imdb_id":1437357,"title":"Faust","year":2011,"rating":1,"dubious":true,"date":"2016-12-15 22:31"},{"_id":"7535","normalized_imdb_id":1355638,"title":"Le Chat du Rabbin","year":2011,"rating":3,"dubious":false,"date":"2017-03-27 15:39"},{"_id":"7689","normalized_imdb_id":1313139,"title":"Oranges, The","year":2011,"rating":3,"dubious":false,"date":"2017-06-17 01:35"},{"_id":"7506","normalized_imdb_id":1704573,"title":"Bernie","year":2011,"rating":1,"dubious":false,"date":"2017-03-12 10:17"},{"_id":"7749","normalized_imdb_id":2066832,"title":"Barbie: Princess Charm School","year":2011,"rating":3,"dubious":false,"date":"2017-07-23 08:55"},{"_id":"7809","normalized_imdb_id":1872328,"title":"Gosick","year":2011,"rating":3,"dubious":true,"date":"2017-09-20 19:07"},{"_id":"7845","normalized_imdb_id":1909796,"title":"K-ON! Movie","year":2011,"rating":3,"dubious":false,"date":"2017-10-03 17:43"},{"_id":"8059","normalized_imdb_id":1995242,"title":"A tus espaldas","year":2011,"rating":3,"dubious":false,"date":"2018-02-16 22:04"},{"_id":"8504","normalized_imdb_id":1711366,"title":"Dead Space: Aftermath","year":2011,"rating":2,"dubious":false,"date":"2018-11-29 04:17"},{"_id":"8829","normalized_imdb_id":1600195,"title":"Abduction","year":2011,"rating":1,"dubious":false,"date":"2019-08-25 14:44"},{"_id":"8843","normalized_imdb_id":1456635,"title":"Goon","year":2011,"rating":0,"dubious":false,"date":"2019-09-11 02:09"},{"_id":"8891","normalized_imdb_id":1578275,"title":"Dilemma, The","year":2011,"rating":1,"dubious":false,"date":"2019-11-11 03:40"},{"_id":"8939","normalized_imdb_id":1793931,"title":"Les Tuche","year":2011,"rating":3,"dubious":false,"date":"2019-12-28 02:46"},{"_id":"8996","normalized_imdb_id":2190475,"title":"Outrage, The","year":2011,"rating":1,"dubious":true,"date":"2020-02-02 18:15"},{"_id":"9238","normalized_imdb_id":1625155,"title":"Sangue do Meu Sangue","year":2011,"rating":3,"dubious":false,"date":"2020-08-14 18:21"},{"_id":"9359","normalized_imdb_id":1862457,"title":"Catch Me... I'm in Love","year":2011,"rating":1,"dubious":true,"date":"2020-12-06 13:35"},{"_id":"9562","normalized_imdb_id":1525836,"title":"Gantz: Perfect Answer","year":2011,"rating":1,"dubious":false,"date":"2021-03-16 07:41"},{"_id":"9625","normalized_imdb_id":1233301,"title":"Ironclad","year":2011,"rating":1,"dubious":false,"date":"2021-04-05 10:58"},{"_id":"9645","normalized_imdb_id":1650555,"title":"Lobos de Arga","year":2011,"rating":0,"dubious":false,"date":"2021-04-11 11:31"},{"_id":"9771","normalized_imdb_id":1986806,"title":"Catwoman","year":2011,"rating":3,"dubious":false,"date":"2021-05-01 11:31"},{"_id":"9825","normalized_imdb_id":1846442,"title":"12 Dates of Christmas","year":2011,"rating":3,"dubious":false,"date":"2021-05-13 22:51"},{"_id":"3894","normalized_imdb_id":1954780,"title":"Rise of the Animals","year":2012,"rating":3,"dubious":false,"date":"2013-02-13 05:06"},{"_id":"3392","normalized_imdb_id":2224455,"title":"Superman vs. The Elite","year":2012,"rating":2,"dubious":false,"date":"2012-07-02 18:50"},{"_id":"2993","normalized_imdb_id":1560985,"title":"Devil Inside, The","year":2012,"rating":3,"dubious":false,"date":"2012-01-15 20:31"},{"_id":"2997","normalized_imdb_id":1496025,"title":"Underworld: Awakening","year":2012,"rating":3,"dubious":false,"date":"2012-01-22 18:57"},{"_id":"3010","normalized_imdb_id":485985,"title":"Red Tails","year":2012,"rating":2,"dubious":false,"date":"2012-01-28 04:10"},{"_id":"3024","normalized_imdb_id":1601913,"title":"Grey, The","year":2012,"rating":0,"dubious":false,"date":"2012-01-30 23:08"},{"_id":"3037","normalized_imdb_id":1706593,"title":"Chronicle","year":2012,"rating":1,"dubious":false,"date":"2012-02-10 09:38"},{"_id":"3055","normalized_imdb_id":1596350,"title":"This Means War","year":2012,"rating":2,"dubious":false,"date":"2012-02-18 22:18"},{"_id":"3067","normalized_imdb_id":1430615,"title":"Big Miracle","year":2012,"rating":3,"dubious":false,"date":"2012-02-20 21:57"},{"_id":"3071","normalized_imdb_id":1838544,"title":"Gone","year":2012,"rating":3,"dubious":false,"date":"2012-02-25 12:28"},{"_id":"3091","normalized_imdb_id":1596365,"title":"Woman in Black, The","year":2012,"rating":1,"dubious":false,"date":"2012-03-05 03:43"},{"_id":"3096","normalized_imdb_id":1606389,"title":"Vow, The","year":2012,"rating":3,"dubious":false,"date":"2012-03-07 20:48"},{"_id":"3108","normalized_imdb_id":401729,"title":"John Carter","year":2012,"rating":3,"dubious":false,"date":"2012-03-11 05:20"},{"_id":"3386","normalized_imdb_id":1716777,"title":"People Like Us","year":2012,"rating":3,"dubious":false,"date":"2012-06-27 04:05"},{"_id":"3138","normalized_imdb_id":1392170,"title":"Hunger Games, The","year":2012,"rating":3,"dubious":false,"date":"2012-03-22 23:21"},{"_id":"3150","normalized_imdb_id":1646987,"title":"Wrath of the Titans","year":2012,"rating":1,"dubious":false,"date":"2012-03-28 13:22"},{"_id":"3152","normalized_imdb_id":1667353,"title":"Mirror Mirror","year":2012,"rating":3,"dubious":true,"date":"2012-03-30 10:42"},{"_id":"3164","normalized_imdb_id":1034314,"title":"Iron Sky","year":2012,"rating":3,"dubious":false,"date":"2012-04-04 11:10"},{"_id":"3167","normalized_imdb_id":1430626,"title":"Pirates! Band of Misfits, The","year":2012,"rating":1,"dubious":false,"date":"2012-04-05 19:28"},{"_id":"3171","normalized_imdb_id":2185503,"title":"Snackbar","year":2012,"rating":1,"dubious":false,"date":"2012-04-08 07:46"},{"_id":"3385","normalized_imdb_id":1915581,"title":"Magic Mike","year":2012,"rating":3,"dubious":false,"date":"2012-06-27 03:22"},{"_id":"3178","normalized_imdb_id":2107835,"title":"Skinny, The","year":2012,"rating":3,"dubious":false,"date":"2012-04-11 16:09"},{"_id":"3272","normalized_imdb_id":1700808,"title":"Fast Girls","year":2012,"rating":3,"dubious":false,"date":"2012-05-20 13:02"},{"_id":"3192","normalized_imdb_id":1440129,"title":"Battleship","year":2012,"rating":1,"dubious":false,"date":"2012-04-18 11:44"},{"_id":"3205","normalized_imdb_id":848228,"title":"Avengers, The","year":2012,"rating":1,"dubious":false,"date":"2012-04-26 01:12"},{"_id":"3209","normalized_imdb_id":1195478,"title":"Five-Year Engagement, The","year":2012,"rating":3,"dubious":false,"date":"2012-04-29 16:22"},{"_id":"3275","normalized_imdb_id":1586265,"title":"What to Expect When You're Expecting","year":2012,"rating":3,"dubious":false,"date":"2012-05-21 02:41"},{"_id":"3384","normalized_imdb_id":1277953,"title":"Madagascar 3: Europe's Most Wanted","year":2012,"rating":2,"dubious":true,"date":"2012-06-27 02:45"},{"_id":"4320","normalized_imdb_id":1047540,"title":"Parental Guidance","year":2012,"rating":3,"dubious":false,"date":"2013-07-08 12:20"},{"_id":"3253","normalized_imdb_id":1077368,"title":"Dark Shadows","year":2012,"rating":3,"dubious":false,"date":"2012-05-14 18:28"},{"_id":"3260","normalized_imdb_id":1486192,"title":"Raven, The","year":2012,"rating":1,"dubious":false,"date":"2012-05-15 16:37"},{"_id":"3282","normalized_imdb_id":1232200,"title":"That's My Boy","year":2012,"rating":1,"dubious":false,"date":"2012-05-24 02:32"},{"_id":"3284","normalized_imdb_id":1409024,"title":"Men in Black III","year":2012,"rating":1,"dubious":false,"date":"2012-05-25 13:48"},{"_id":"3287","normalized_imdb_id":1991245,"title":"Chernobyl Diaries","year":2012,"rating":1,"dubious":false,"date":"2012-05-26 02:55"},{"_id":"3289","normalized_imdb_id":1645170,"title":"Dictator, The","year":2012,"rating":1,"dubious":false,"date":"2012-05-27 21:23"},{"_id":"3296","normalized_imdb_id":1568338,"title":"Man on a Ledge","year":2012,"rating":1,"dubious":false,"date":"2012-05-30 02:27"},{"_id":"3297","normalized_imdb_id":1735898,"title":"Snow White and the Huntsman","year":2012,"rating":3,"dubious":false,"date":"2012-05-30 13:38"},{"_id":"3301","normalized_imdb_id":1446714,"title":"Prometheus","year":2012,"rating":3,"dubious":false,"date":"2012-06-01 21:46"},{"_id":"3338","normalized_imdb_id":2178941,"title":"Barbara","year":2012,"rating":3,"dubious":false,"date":"2012-06-11 09:34"},{"_id":"3348","normalized_imdb_id":1748122,"title":"Moonrise Kingdom","year":2012,"rating":3,"dubious":false,"date":"2012-06-13 00:02"},{"_id":"3351","normalized_imdb_id":1862079,"title":"Safety Not Guaranteed","year":2012,"rating":3,"dubious":false,"date":"2012-06-13 06:08"},{"_id":"3355","normalized_imdb_id":1336608,"title":"Rock of Ages","year":2012,"rating":3,"dubious":false,"date":"2012-06-13 21:09"},{"_id":"3367","normalized_imdb_id":1926992,"title":"Goodbye","year":2012,"rating":3,"dubious":false,"date":"2012-06-19 08:08"},{"_id":"3380","normalized_imdb_id":1232829,"title":"21 Jump Street","year":2012,"rating":2,"dubious":false,"date":"2012-06-26 03:39"},{"_id":"3379","normalized_imdb_id":1217209,"title":"Brave","year":2012,"rating":3,"dubious":false,"date":"2012-06-23 14:35"},{"_id":"3397","normalized_imdb_id":1615065,"title":"Savages","year":2012,"rating":3,"dubious":false,"date":"2012-07-03 19:31"},{"_id":"3399","normalized_imdb_id":948470,"title":"Amazing Spider-Man, The","year":2012,"rating":2,"dubious":true,"date":"2012-07-06 17:32"},{"_id":"3407","normalized_imdb_id":2125435,"title":"Beasts of the Southern Wild","year":2012,"rating":3,"dubious":true,"date":"2012-07-09 03:54"},{"_id":"3415","normalized_imdb_id":1637725,"title":"Ted","year":2012,"rating":2,"dubious":false,"date":"2012-07-11 00:49"},{"_id":"3418","normalized_imdb_id":1699498,"title":"Lake Effects","year":2012,"rating":3,"dubious":false,"date":"2012-07-11 17:12"},{"_id":"3422","normalized_imdb_id":2005156,"title":"BearCity 2: The Proposal","year":2012,"rating":3,"dubious":false,"date":"2012-07-15 04:06"},{"_id":"3426","normalized_imdb_id":1730189,"title":"Blood Fare","year":2012,"rating":1,"dubious":false,"date":"2012-07-15 20:55"},{"_id":"3434","normalized_imdb_id":1859650,"title":"To Rome With Love","year":2012,"rating":2,"dubious":false,"date":"2012-07-17 13:35"},{"_id":"3437","normalized_imdb_id":1345836,"title":"Dark Knight Rises, The","year":2012,"rating":1,"dubious":false,"date":"2012-07-19 12:04"},{"_id":"3445","normalized_imdb_id":1800741,"title":"Step Up Revolution","year":2012,"rating":3,"dubious":false,"date":"2012-07-26 04:35"},{"_id":"3453","normalized_imdb_id":1298649,"title":"Watch, The","year":2012,"rating":2,"dubious":false,"date":"2012-07-29 04:13"},{"_id":"3468","normalized_imdb_id":1623288,"title":"ParaNorman","year":2012,"rating":3,"dubious":false,"date":"2012-08-12 06:34"},{"_id":"3469","normalized_imdb_id":1194173,"title":"Bourne Legacy, The","year":2012,"rating":3,"dubious":false,"date":"2012-08-13 03:57"},{"_id":"3473","normalized_imdb_id":1655460,"title":"Wanderlust","year":2012,"rating":3,"dubious":false,"date":"2012-08-16 12:16"},{"_id":"3477","normalized_imdb_id":1996264,"title":"For a Good Time, Call...","year":2012,"rating":3,"dubious":false,"date":"2012-08-17 06:26"},{"_id":"3478","normalized_imdb_id":1611224,"title":"Abraham Lincoln: Vampire Hunter","year":2012,"rating":3,"dubious":true,"date":"2012-08-18 13:15"},{"_id":"3479","normalized_imdb_id":1971352,"title":"Compliance","year":2012,"rating":3,"dubious":false,"date":"2012-08-19 14:29"},{"_id":"3480","normalized_imdb_id":1405365,"title":"Celeste and Jesse Forever","year":2012,"rating":3,"dubious":false,"date":"2012-08-19 14:36"},{"_id":"3481","normalized_imdb_id":1480656,"title":"Cosmopolis","year":2012,"rating":1,"dubious":false,"date":"2012-08-20 19:57"},{"_id":"3483","normalized_imdb_id":1764651,"title":"Expendables 2, The","year":2012,"rating":3,"dubious":false,"date":"2012-08-20 22:09"},{"_id":"3484","normalized_imdb_id":1462769,"title":"Odd Life of Timothy Green, The","year":2012,"rating":3,"dubious":false,"date":"2012-08-20 22:10"},{"_id":"3485","normalized_imdb_id":1212450,"title":"Lawless","year":2012,"rating":1,"dubious":false,"date":"2012-08-21 04:00"},{"_id":"3486","normalized_imdb_id":1726669,"title":"Killer Joe","year":2012,"rating":2,"dubious":false,"date":"2012-08-21 04:37"},{"_id":"3488","normalized_imdb_id":2076220,"title":"Holy Motors","year":2012,"rating":1,"dubious":false,"date":"2012-08-21 04:45"},{"_id":"3492","normalized_imdb_id":1482459,"title":"Lorax, The","year":2012,"rating":1,"dubious":false,"date":"2012-08-24 05:37"},{"_id":"3496","normalized_imdb_id":1790886,"title":"Campaign, The","year":2012,"rating":1,"dubious":false,"date":"2012-08-25 00:27"},{"_id":"3497","normalized_imdb_id":1547234,"title":"Premium Rush","year":2012,"rating":3,"dubious":false,"date":"2012-08-26 04:01"},{"_id":"3513","normalized_imdb_id":431021,"title":"Possession, The","year":2012,"rating":3,"dubious":false,"date":"2012-09-02 22:01"},{"_id":"3515","normalized_imdb_id":1990314,"title":"Robot & Frank","year":2012,"rating":1,"dubious":false,"date":"2012-09-03 19:21"},{"_id":"3521","normalized_imdb_id":2077851,"title":"Sleepwalk With Me","year":2012,"rating":2,"dubious":false,"date":"2012-09-07 05:34"},{"_id":"3523","normalized_imdb_id":1840417,"title":"Words, The","year":2012,"rating":1,"dubious":false,"date":"2012-09-08 00:25"},{"_id":"3532","normalized_imdb_id":1343727,"title":"Dredd 3D","year":2012,"rating":3,"dubious":false,"date":"2012-09-18 10:33"},{"_id":"3533","normalized_imdb_id":1307068,"title":"Seeking a Friend for the End of the World","year":2012,"rating":1,"dubious":false,"date":"2012-09-18 16:02"},{"_id":"3535","normalized_imdb_id":1386703,"title":"Total Recall","year":2012,"rating":1,"dubious":false,"date":"2012-09-19 01:21"},{"_id":"3536","normalized_imdb_id":1855325,"title":"Resident Evil: Retribution","year":2012,"rating":3,"dubious":false,"date":"2012-09-20 00:28"},{"_id":"3538","normalized_imdb_id":1839492,"title":"Ruby Sparks","year":2012,"rating":3,"dubious":false,"date":"2012-09-23 00:34"},{"_id":"3540","normalized_imdb_id":2151543,"title":"Arachnoquake","year":2012,"rating":3,"dubious":false,"date":"2012-09-23 21:25"},{"_id":"3541","normalized_imdb_id":1560747,"title":"Master, The","year":2012,"rating":1,"dubious":false,"date":"2012-09-23 21:53"},{"_id":"3562","normalized_imdb_id":1276104,"title":"Looper","year":2012,"rating":1,"dubious":false,"date":"2012-09-29 22:19"},{"_id":"3572","normalized_imdb_id":1582507,"title":"House at the End of the Street","year":2012,"rating":3,"dubious":false,"date":"2012-10-04 20:41"},{"_id":"3573","normalized_imdb_id":1764234,"title":"Killing Them Softly","year":2012,"rating":0,"dubious":false,"date":"2012-10-04 23:40"},{"_id":"3574","normalized_imdb_id":2106739,"title":"Gayby","year":2012,"rating":3,"dubious":false,"date":"2012-10-05 06:34"},{"_id":"3575","normalized_imdb_id":2040560,"title":"Pact, The","year":2012,"rating":3,"dubious":false,"date":"2012-10-05 20:52"},{"_id":"3578","normalized_imdb_id":1981677,"title":"Pitch Perfect","year":2012,"rating":3,"dubious":false,"date":"2012-10-08 02:59"},{"_id":"3580","normalized_imdb_id":1492841,"title":"Foreign Letters","year":2012,"rating":3,"dubious":false,"date":"2012-10-08 04:27"},{"_id":"3581","normalized_imdb_id":1655416,"title":"Mental","year":2012,"rating":3,"dubious":false,"date":"2012-10-08 23:18"},{"_id":"3587","normalized_imdb_id":1142977,"title":"Frankenweenie","year":2012,"rating":0,"dubious":false,"date":"2012-10-14 03:06"},{"_id":"3588","normalized_imdb_id":1931533,"title":"Seven Psychopaths","year":2012,"rating":1,"dubious":false,"date":"2012-10-14 14:16"},{"_id":"3589","normalized_imdb_id":1922777,"title":"Sinister","year":2012,"rating":2,"dubious":false,"date":"2012-10-14 16:40"},{"_id":"3590","normalized_imdb_id":2025667,"title":"Smiley","year":2012,"rating":3,"dubious":false,"date":"2012-10-14 22:47"},{"_id":"3591","normalized_imdb_id":837562,"title":"Hotel Transylvania","year":2012,"rating":3,"dubious":false,"date":"2012-10-14 23:42"},{"_id":"3593","normalized_imdb_id":1371111,"title":"Cloud Atlas","year":2012,"rating":3,"dubious":false,"date":"2012-10-15 01:11"},{"_id":"3601","normalized_imdb_id":850677,"title":"Jack and Diane","year":2012,"rating":3,"dubious":false,"date":"2012-10-16 11:51"},{"_id":"3622","normalized_imdb_id":1535438,"title":"Hope Springs","year":2012,"rating":3,"dubious":false,"date":"2012-10-22 16:23"},{"_id":"3624","normalized_imdb_id":1658837,"title":"Tall Man, The","year":2012,"rating":3,"dubious":false,"date":"2012-10-24 03:00"},{"_id":"3627","normalized_imdb_id":2387222,"title":"All I Want Is Everything","year":2012,"rating":3,"dubious":false,"date":"2012-10-25 14:16"},{"_id":"3632","normalized_imdb_id":1074638,"title":"Skyfall","year":2012,"rating":3,"dubious":true,"date":"2012-10-27 22:45"},{"_id":"3633","normalized_imdb_id":1024648,"title":"Argo","year":2012,"rating":3,"dubious":false,"date":"2012-10-28 20:56"},{"_id":"3653","normalized_imdb_id":2063781,"title":"Smashed","year":2012,"rating":3,"dubious":false,"date":"2012-11-03 19:21"},{"_id":"3638","normalized_imdb_id":938330,"title":"Silent Hill: Revelation 3D","year":2012,"rating":3,"dubious":false,"date":"2012-10-29 15:47"},{"_id":"3650","normalized_imdb_id":1772341,"title":"Wreck-It Ralph","year":2012,"rating":3,"dubious":false,"date":"2012-11-03 11:34"},{"_id":"3664","normalized_imdb_id":443272,"title":"Lincoln","year":2012,"rating":3,"dubious":false,"date":"2012-11-07 01:30"},{"_id":"3669","normalized_imdb_id":2082197,"title":"Barfi!","year":2012,"rating":2,"dubious":false,"date":"2012-11-14 03:03"},{"_id":"3678","normalized_imdb_id":1674773,"title":"Hannah Arendt","year":2012,"rating":3,"dubious":false,"date":"2012-11-20 06:20"},{"_id":"3689","normalized_imdb_id":1673697,"title":"Sapphires, The","year":2012,"rating":3,"dubious":false,"date":"2012-11-26 08:48"},{"_id":"3690","normalized_imdb_id":2115295,"title":"Ginger and Rosa","year":2012,"rating":3,"dubious":false,"date":"2012-11-26 08:52"},{"_id":"3696","normalized_imdb_id":1591071,"title":"Qwerty","year":2012,"rating":3,"dubious":false,"date":"2012-11-28 04:00"},{"_id":"3699","normalized_imdb_id":2008602,"title":"Privacy","year":2012,"rating":3,"dubious":false,"date":"2012-11-30 16:58"},{"_id":"3709","normalized_imdb_id":1876451,"title":"Sparkle","year":2012,"rating":3,"dubious":false,"date":"2012-12-04 22:16"},{"_id":"3710","normalized_imdb_id":1866249,"title":"Sessions, The","year":2012,"rating":2,"dubious":false,"date":"2012-12-05 04:19"},{"_id":"3716","normalized_imdb_id":1234719,"title":"Red Dawn","year":2012,"rating":1,"dubious":false,"date":"2012-12-06 09:22"},{"_id":"3718","normalized_imdb_id":1920849,"title":"Bachelorette","year":2012,"rating":3,"dubious":false,"date":"2012-12-06 20:17"},{"_id":"3726","normalized_imdb_id":2098627,"title":"Attack of the 50ft Cheerleader","year":2012,"rating":3,"dubious":false,"date":"2012-12-07 00:02"},{"_id":"3729","normalized_imdb_id":1821480,"title":"Kahaani","year":2012,"rating":3,"dubious":false,"date":"2012-12-07 09:49"},{"_id":"3733","normalized_imdb_id":1701215,"title":"Future Weather","year":2012,"rating":3,"dubious":false,"date":"2012-12-08 17:14"},{"_id":"3736","normalized_imdb_id":1781769,"title":"Anna Karenina","year":2012,"rating":2,"dubious":false,"date":"2012-12-09 18:21"},{"_id":"3735","normalized_imdb_id":2168910,"title":"Cocktail","year":2012,"rating":3,"dubious":false,"date":"2012-12-09 10:47"},{"_id":"3737","normalized_imdb_id":1790885,"title":"Zero Dark Thirty","year":2012,"rating":3,"dubious":false,"date":"2012-12-09 19:07"},{"_id":"3743","normalized_imdb_id":1845849,"title":"Price Check","year":2012,"rating":3,"dubious":false,"date":"2012-12-11 19:09"},{"_id":"3744","normalized_imdb_id":2346744,"title":"Cigarette Ki Tarah","year":2012,"rating":3,"dubious":true,"date":"2012-12-12 08:27"},{"_id":"4318","normalized_imdb_id":860907,"title":"Evangelion: 3.0 You Can (Not) Redo","year":2012,"rating":3,"dubious":false,"date":"2013-07-08 04:31"},{"_id":"3746","normalized_imdb_id":903624,"title":"Hobbit: An Unexpected Journey, The","year":2012,"rating":0,"dubious":false,"date":"2012-12-15 00:36"},{"_id":"3748","normalized_imdb_id":790724,"title":"Jack Reacher","year":2012,"rating":1,"dubious":false,"date":"2012-12-15 06:37"},{"_id":"3749","normalized_imdb_id":1707386,"title":"Les Miserables","year":2012,"rating":3,"dubious":false,"date":"2012-12-15 06:47"},{"_id":"3754","normalized_imdb_id":975645,"title":"Hitchcock","year":2012,"rating":2,"dubious":false,"date":"2012-12-17 05:52"},{"_id":"3755","normalized_imdb_id":1673434,"title":"Twilight Saga: Breaking Dawn - Part 2, The","year":2012,"rating":3,"dubious":true,"date":"2012-12-17 06:37"},{"_id":"3757","normalized_imdb_id":1446192,"title":"Rise of the Guardians","year":2012,"rating":1,"dubious":false,"date":"2012-12-17 19:13"},{"_id":"3759","normalized_imdb_id":1760967,"title":"Ill Manors","year":2012,"rating":3,"dubious":false,"date":"2012-12-20 16:56"},{"_id":"3764","normalized_imdb_id":1764183,"title":"Arbitrage","year":2012,"rating":2,"dubious":false,"date":"2012-12-21 11:53"},{"_id":"3775","normalized_imdb_id":454876,"title":"Life of Pi","year":2012,"rating":1,"dubious":false,"date":"2012-12-26 20:10"},{"_id":"3776","normalized_imdb_id":1758830,"title":"This Is 40","year":2012,"rating":3,"dubious":false,"date":"2012-12-27 06:55"},{"_id":"3778","normalized_imdb_id":2112131,"title":"Dabangg 2","year":2012,"rating":1,"dubious":false,"date":"2012-12-27 10:17"},{"_id":"3780","normalized_imdb_id":1602620,"title":"Amour","year":2012,"rating":3,"dubious":true,"date":"2012-12-28 23:00"},{"_id":"3790","normalized_imdb_id":1397280,"title":"Taken 2","year":2012,"rating":2,"dubious":false,"date":"2012-12-30 21:41"},{"_id":"3792","normalized_imdb_id":1853728,"title":"Django Unchained","year":2012,"rating":1,"dubious":false,"date":"2012-12-31 15:46"},{"_id":"3793","normalized_imdb_id":2153963,"title":"Tabu","year":2012,"rating":3,"dubious":false,"date":"2012-12-31 20:18"},{"_id":"3794","normalized_imdb_id":2023690,"title":"Sightseers","year":2012,"rating":3,"dubious":false,"date":"2013-01-01 08:01"},{"_id":"3806","normalized_imdb_id":2181931,"title":"English Vinglish","year":2012,"rating":3,"dubious":false,"date":"2013-01-05 14:06"},{"_id":"3809","normalized_imdb_id":2258337,"title":"Eega","year":2012,"rating":2,"dubious":false,"date":"2013-01-06 17:50"},{"_id":"3814","normalized_imdb_id":1217213,"title":"Tinkerbell and the Secret of the Wings","year":2012,"rating":3,"dubious":false,"date":"2013-01-09 11:02"},{"_id":"3818","normalized_imdb_id":1045658,"title":"Silver Linings Playbook","year":2012,"rating":3,"dubious":false,"date":"2013-01-10 15:53"},{"_id":"3823","normalized_imdb_id":1848902,"title":"Game Change","year":2012,"rating":3,"dubious":false,"date":"2013-01-14 14:43"},{"_id":"3824","normalized_imdb_id":1977739,"title":"Call Girl","year":2012,"rating":3,"dubious":false,"date":"2013-01-14 15:00"},{"_id":"3835","normalized_imdb_id":2313197,"title":"Batman: The Dark Knight Returns, part 1","year":2012,"rating":3,"dubious":false,"date":"2013-01-15 03:38"},{"_id":"3837","normalized_imdb_id":1230215,"title":"Not Fade Away","year":2012,"rating":3,"dubious":false,"date":"2013-01-16 17:59"},{"_id":"3854","normalized_imdb_id":1194577,"title":"Door, The","year":2012,"rating":3,"dubious":false,"date":"2013-01-26 07:31"},{"_id":"3855","normalized_imdb_id":1441951,"title":"Quartet","year":2012,"rating":3,"dubious":false,"date":"2013-01-26 21:49"},{"_id":"3870","normalized_imdb_id":1659337,"title":"Perks of Being a Wallflower, The","year":2012,"rating":3,"dubious":false,"date":"2013-02-05 08:32"},{"_id":"3859","normalized_imdb_id":1839654,"title":"Magic of Belle Isle, The","year":2012,"rating":3,"dubious":true,"date":"2013-01-27 23:12"},{"_id":"3860","normalized_imdb_id":1833844,"title":"Berberian Sound Studio","year":2012,"rating":1,"dubious":false,"date":"2013-01-27 23:59"},{"_id":"3864","normalized_imdb_id":2322603,"title":"Strike Witches - The Movie","year":2012,"rating":3,"dubious":false,"date":"2013-01-30 22:40"},{"_id":"3869","normalized_imdb_id":1656190,"title":"Safe","year":2012,"rating":1,"dubious":true,"date":"2013-02-04 10:59"},{"_id":"3874","normalized_imdb_id":2101441,"title":"Spring Breakers","year":2012,"rating":3,"dubious":false,"date":"2013-02-06 16:47"},{"_id":"3889","normalized_imdb_id":2059255,"title":"No","year":2012,"rating":1,"dubious":false,"date":"2013-02-10 10:36"},{"_id":"3904","normalized_imdb_id":2326087,"title":"Girl Vs. Monster","year":2012,"rating":3,"dubious":false,"date":"2013-02-18 20:17"},{"_id":"3907","normalized_imdb_id":1907668,"title":"Flight","year":2012,"rating":3,"dubious":true,"date":"2013-02-18 22:05"},{"_id":"3908","normalized_imdb_id":1477855,"title":"Hyde Park on Hudson","year":2012,"rating":2,"dubious":false,"date":"2013-02-18 22:09"},{"_id":"3910","normalized_imdb_id":1979319,"title":"Ruroni Kenshin: Meiji kenkaku roman tan","year":2012,"rating":3,"dubious":false,"date":"2013-02-19 13:29"},{"_id":"3912","normalized_imdb_id":2142955,"title":"Stars Above","year":2012,"rating":3,"dubious":false,"date":"2013-02-19 21:29"},{"_id":"3914","normalized_imdb_id":1649419,"title":"Impossible, The","year":2012,"rating":2,"dubious":true,"date":"2013-02-20 01:58"},{"_id":"3924","normalized_imdb_id":2258281,"title":"Beyond the Hills","year":2012,"rating":3,"dubious":false,"date":"2013-02-22 09:09"},{"_id":"3929","normalized_imdb_id":2393787,"title":"Women's Day (Dzien kobiet)","year":2012,"rating":3,"dubious":false,"date":"2013-02-22 19:48"},{"_id":"3931","normalized_imdb_id":1870529,"title":"Won't Back Down","year":2012,"rating":3,"dubious":false,"date":"2013-02-24 05:56"},{"_id":"3933","normalized_imdb_id":2105044,"title":"V/H/S","year":2012,"rating":1,"dubious":true,"date":"2013-02-24 17:42"},{"_id":"3940","normalized_imdb_id":1978480,"title":"Mosquita y Mari","year":2012,"rating":3,"dubious":false,"date":"2013-02-27 17:19"},{"_id":"3944","normalized_imdb_id":2601160,"title":"Key and the Frame, The","year":2012,"rating":3,"dubious":false,"date":"2013-02-28 16:36"},{"_id":"3948","normalized_imdb_id":2377396,"title":"I Belong","year":2012,"rating":3,"dubious":false,"date":"2013-03-03 19:10"},{"_id":"3953","normalized_imdb_id":1996310,"title":"Lore","year":2012,"rating":3,"dubious":false,"date":"2013-03-05 15:47"},{"_id":"3956","normalized_imdb_id":1308729,"title":"Bullet to the Head","year":2012,"rating":0,"dubious":false,"date":"2013-03-06 15:19"},{"_id":"3964","normalized_imdb_id":1226240,"title":"A Late Quartet","year":2012,"rating":3,"dubious":false,"date":"2013-03-09 16:31"},{"_id":"3979","normalized_imdb_id":1524137,"title":"Contraband","year":2012,"rating":3,"dubious":false,"date":"2013-03-14 09:15"},{"_id":"3980","normalized_imdb_id":1613750,"title":"Kon-Tiki","year":2012,"rating":0,"dubious":false,"date":"2013-03-14 17:04"},{"_id":"3983","normalized_imdb_id":2008562,"title":"Le grand soir","year":2012,"rating":1,"dubious":false,"date":"2013-03-16 11:49"},{"_id":"4016","normalized_imdb_id":2298820,"title":"La cinquieme saison","year":2012,"rating":3,"dubious":false,"date":"2013-03-26 09:25"},{"_id":"4033","normalized_imdb_id":2070776,"title":"Populaire","year":2012,"rating":3,"dubious":false,"date":"2013-04-06 18:02"},{"_id":"4037","normalized_imdb_id":2287655,"title":"Bitchkram","year":2012,"rating":3,"dubious":false,"date":"2013-04-09 13:53"},{"_id":"4042","normalized_imdb_id":1836202,"title":"Das Wochenende","year":2012,"rating":3,"dubious":true,"date":"2013-04-10 21:50"},{"_id":"4043","normalized_imdb_id":1945062,"title":"About Cherry","year":2012,"rating":3,"dubious":false,"date":"2013-04-11 03:46"},{"_id":"4061","normalized_imdb_id":1595656,"title":"To the Wonder","year":2012,"rating":3,"dubious":false,"date":"2013-04-15 17:23"},{"_id":"4068","normalized_imdb_id":2147550,"title":"Das Leben ist nichts fur Feiglinge","year":2012,"rating":3,"dubious":false,"date":"2013-04-17 16:09"},{"_id":"4074","normalized_imdb_id":1817273,"title":"Place Beyond the Pines, The","year":2012,"rating":1,"dubious":false,"date":"2013-04-19 06:50"},{"_id":"4081","normalized_imdb_id":2106476,"title":"Jagten","year":2012,"rating":2,"dubious":false,"date":"2013-04-23 19:52"},{"_id":"4085","normalized_imdb_id":2024519,"title":"Broken Circle Breakdown, The","year":2012,"rating":3,"dubious":true,"date":"2013-04-24 21:02"},{"_id":"4091","normalized_imdb_id":1403214,"title":"Paradies: Liebe","year":2012,"rating":3,"dubious":false,"date":"2013-04-25 13:04"},{"_id":"4092","normalized_imdb_id":1854236,"title":"Den skaldede frisor","year":2012,"rating":3,"dubious":false,"date":"2013-04-25 13:06"},{"_id":"4093","normalized_imdb_id":1954701,"title":"Oh Boy","year":2012,"rating":1,"dubious":false,"date":"2013-04-25 13:11"},{"_id":"4094","normalized_imdb_id":1924394,"title":"Angels' Share, The","year":2012,"rating":1,"dubious":false,"date":"2013-04-25 13:17"},{"_id":"4096","normalized_imdb_id":2179121,"title":"Le prenom","year":2012,"rating":3,"dubious":true,"date":"2013-04-25 13:28"},{"_id":"4101","normalized_imdb_id":1602472,"title":"2 Days in New York","year":2012,"rating":3,"dubious":false,"date":"2013-04-25 13:41"},{"_id":"4105","normalized_imdb_id":2446108,"title":"Monster High: Ghoul's Rule","year":2012,"rating":3,"dubious":false,"date":"2013-04-25 23:24"},{"_id":"4106","normalized_imdb_id":1781840,"title":"Jayne Mansfield's Car","year":2012,"rating":3,"dubious":false,"date":"2013-04-27 09:40"},{"_id":"4136","normalized_imdb_id":2347569,"title":"Frances Ha","year":2012,"rating":3,"dubious":false,"date":"2013-05-18 08:53"},{"_id":"4144","normalized_imdb_id":1959438,"title":"Kiss of the Damned","year":2012,"rating":3,"dubious":false,"date":"2013-05-20 04:23"},{"_id":"4151","normalized_imdb_id":1930294,"title":"Black Rock","year":2012,"rating":3,"dubious":false,"date":"2013-05-22 03:24"},{"_id":"4165","normalized_imdb_id":2035630,"title":"Starlet","year":2012,"rating":3,"dubious":false,"date":"2013-05-25 07:08"},{"_id":"4173","normalized_imdb_id":1932767,"title":"What Maisie Knew","year":2012,"rating":3,"dubious":false,"date":"2013-05-28 16:39"},{"_id":"4176","normalized_imdb_id":404978,"title":"Gambit","year":2012,"rating":1,"dubious":false,"date":"2013-05-29 09:38"},{"_id":"4177","normalized_imdb_id":2254131,"title":"Shelter","year":2012,"rating":3,"dubious":false,"date":"2013-05-29 14:50"},{"_id":"4187","normalized_imdb_id":1733114,"title":"Cheesecake Casserole","year":2012,"rating":3,"dubious":false,"date":"2013-05-31 08:09"},{"_id":"4190","normalized_imdb_id":2243973,"title":"Hannibal","year":2012,"rating":3,"dubious":false,"date":"2013-06-01 01:04"},{"_id":"4207","normalized_imdb_id":1478804,"title":"Four Assassins","year":2012,"rating":1,"dubious":false,"date":"2013-06-05 14:07"},{"_id":"4208","normalized_imdb_id":2191671,"title":"Elementary","year":2012,"rating":3,"dubious":false,"date":"2013-06-05 14:16"},{"_id":"4314","normalized_imdb_id":1822302,"title":"Sassy Pants","year":2012,"rating":3,"dubious":false,"date":"2013-07-07 08:30"},{"_id":"4223","normalized_imdb_id":2370034,"title":"Tango libre","year":2012,"rating":0,"dubious":false,"date":"2013-06-09 10:21"},{"_id":"4329","normalized_imdb_id":1258972,"title":"Man with the Iron Fists, The","year":2012,"rating":1,"dubious":false,"date":"2013-07-11 02:35"},{"_id":"4273","normalized_imdb_id":2094064,"title":"Much Ado About Nothing","year":2012,"rating":3,"dubious":true,"date":"2013-06-27 02:23"},{"_id":"4276","normalized_imdb_id":1817676,"title":"Girl in Progress","year":2012,"rating":3,"dubious":false,"date":"2013-06-27 23:08"},{"_id":"4280","normalized_imdb_id":1829012,"title":"Passion","year":2012,"rating":3,"dubious":false,"date":"2013-06-28 21:16"},{"_id":"4289","normalized_imdb_id":2006810,"title":"Papadopoulos & Sons","year":2012,"rating":1,"dubious":false,"date":"2013-06-29 06:54"},{"_id":"4299","normalized_imdb_id":1791614,"title":"Struck by Lightning","year":2012,"rating":3,"dubious":true,"date":"2013-07-02 07:12"},{"_id":"4303","normalized_imdb_id":2098628,"title":"Augustine","year":2012,"rating":3,"dubious":false,"date":"2013-07-03 15:41"},{"_id":"4308","normalized_imdb_id":1132285,"title":"Factory, The","year":2012,"rating":3,"dubious":false,"date":"2013-07-04 02:59"},{"_id":"4336","normalized_imdb_id":1855401,"title":"Tim and Eric's Billion Dollar Movie","year":2012,"rating":0,"dubious":false,"date":"2013-07-12 10:20"},{"_id":"4342","normalized_imdb_id":2304517,"title":"Bikini Spring Break","year":2012,"rating":3,"dubious":false,"date":"2013-07-12 22:11"},{"_id":"4348","normalized_imdb_id":2150332,"title":"Renoir","year":2012,"rating":3,"dubious":false,"date":"2013-07-13 19:57"},{"_id":"4361","normalized_imdb_id":1885331,"title":"Paris-Manhattan","year":2012,"rating":3,"dubious":true,"date":"2013-07-17 22:34"},{"_id":"4371","normalized_imdb_id":1531901,"title":"Byzantium","year":2012,"rating":3,"dubious":false,"date":"2013-07-19 10:10"},{"_id":"4384","normalized_imdb_id":2061712,"title":"Interview with a Hitman","year":2012,"rating":1,"dubious":false,"date":"2013-07-22 18:13"},{"_id":"4404","normalized_imdb_id":2097307,"title":"Hit and Run","year":2012,"rating":3,"dubious":false,"date":"2013-07-26 23:24"},{"_id":"4405","normalized_imdb_id":2392261,"title":"Lizzie Bennet Diaries, The","year":2012,"rating":3,"dubious":false,"date":"2013-07-27 19:56"},{"_id":"4432","normalized_imdb_id":1783732,"title":"John Dies at the End","year":2012,"rating":1,"dubious":false,"date":"2013-08-02 23:11"},{"_id":"4465","normalized_imdb_id":1381404,"title":"Company You Keep, The","year":2012,"rating":1,"dubious":false,"date":"2013-08-11 18:22"},{"_id":"4468","normalized_imdb_id":2109184,"title":"Paranormal Activity 4","year":2012,"rating":3,"dubious":false,"date":"2013-08-12 18:07"},{"_id":"4469","normalized_imdb_id":2008633,"title":"Radio Rebel","year":2012,"rating":3,"dubious":false,"date":"2013-08-12 22:42"},{"_id":"4478","normalized_imdb_id":2094155,"title":"Dead Man's Burden","year":2012,"rating":0,"dubious":false,"date":"2013-08-16 17:13"},{"_id":"4536","normalized_imdb_id":2366450,"title":"Stories We Tell","year":2012,"rating":3,"dubious":false,"date":"2013-09-01 08:40"},{"_id":"4538","normalized_imdb_id":1874789,"title":"Supporting Characters","year":2012,"rating":2,"dubious":false,"date":"2013-09-01 22:06"},{"_id":"4546","normalized_imdb_id":1959332,"title":"American Mary","year":2012,"rating":3,"dubious":false,"date":"2013-09-07 00:59"},{"_id":"4551","normalized_imdb_id":1995341,"title":"It's a Disaster","year":2012,"rating":3,"dubious":false,"date":"2013-09-09 17:13"},{"_id":"4558","normalized_imdb_id":1937149,"title":"Body, The","year":2012,"rating":3,"dubious":true,"date":"2013-09-12 19:01"},{"_id":"4566","normalized_imdb_id":3100510,"title":"Warpaint","year":2012,"rating":0,"dubious":false,"date":"2013-09-13 03:54"},{"_id":"4586","normalized_imdb_id":1731697,"title":"Lords of Salem, The","year":2012,"rating":3,"dubious":false,"date":"2013-09-15 15:49"},{"_id":"4650","normalized_imdb_id":1641975,"title":"Citadel","year":2012,"rating":1,"dubious":false,"date":"2013-09-30 19:40"},{"_id":"4654","normalized_imdb_id":2336960,"title":"Inch'Allah","year":2012,"rating":3,"dubious":false,"date":"2013-10-01 22:04"},{"_id":"4663","normalized_imdb_id":1496422,"title":"Paperboy, The","year":2012,"rating":3,"dubious":false,"date":"2013-10-05 19:43"},{"_id":"4742","normalized_imdb_id":1900908,"title":"Klip","year":2012,"rating":3,"dubious":false,"date":"2013-10-27 18:48"},{"_id":"4744","normalized_imdb_id":2140203,"title":"Okami kodomo no ame to yuki","year":2012,"rating":3,"dubious":false,"date":"2013-10-27 22:56"},{"_id":"4746","normalized_imdb_id":1757746,"title":"Extracted","year":2012,"rating":1,"dubious":false,"date":"2013-10-28 06:59"},{"_id":"4776","normalized_imdb_id":2088714,"title":"Call Me Kuchu","year":2012,"rating":3,"dubious":false,"date":"2013-11-04 03:21"},{"_id":"4818","normalized_imdb_id":2396701,"title":"Haunting of Whaley House, The","year":2012,"rating":3,"dubious":false,"date":"2013-11-12 22:58"},{"_id":"4825","normalized_imdb_id":1591479,"title":"Act of Valor","year":2012,"rating":0,"dubious":false,"date":"2013-11-14 22:39"},{"_id":"4843","normalized_imdb_id":2215395,"title":"Paulette","year":2012,"rating":3,"dubious":false,"date":"2013-11-16 20:09"},{"_id":"4861","normalized_imdb_id":2046090,"title":"Fin","year":2012,"rating":3,"dubious":false,"date":"2013-11-20 23:01"},{"_id":"4875","normalized_imdb_id":1621045,"title":"Think Like a Man","year":2012,"rating":3,"dubious":false,"date":"2013-11-25 16:06"},{"_id":"4881","normalized_imdb_id":1758575,"title":"Blue Like Jazz","year":2012,"rating":3,"dubious":false,"date":"2013-11-26 23:35"},{"_id":"4884","normalized_imdb_id":1869653,"title":"Rock Jocks","year":2012,"rating":1,"dubious":false,"date":"2013-11-27 04:34"},{"_id":"4913","normalized_imdb_id":2076850,"title":"Flukt","year":2012,"rating":3,"dubious":false,"date":"2013-12-04 06:48"},{"_id":"4946","normalized_imdb_id":2504614,"title":"Swing, The","year":2012,"rating":3,"dubious":false,"date":"2013-12-13 20:40"},{"_id":"4962","normalized_imdb_id":1984153,"title":"Excision","year":2012,"rating":3,"dubious":false,"date":"2013-12-18 03:18"},{"_id":"4974","normalized_imdb_id":2354196,"title":"Croczilla","year":2012,"rating":0,"dubious":false,"date":"2013-12-22 20:40"},{"_id":"4976","normalized_imdb_id":1713476,"title":"Bay, The","year":2012,"rating":1,"dubious":false,"date":"2013-12-24 03:27"},{"_id":"4985","normalized_imdb_id":1857718,"title":"Gyo","year":2012,"rating":3,"dubious":false,"date":"2013-12-25 23:00"},{"_id":"5008","normalized_imdb_id":2216240,"title":"Kapringen","year":2012,"rating":1,"dubious":false,"date":"2013-12-29 23:14"},{"_id":"5010","normalized_imdb_id":1649444,"title":"[REC]3 Genesis","year":2012,"rating":3,"dubious":false,"date":"2013-12-30 02:07"},{"_id":"5053","normalized_imdb_id":423455,"title":"Hemingway & Gellhorn","year":2012,"rating":2,"dubious":false,"date":"2014-01-07 20:09"},{"_id":"5054","normalized_imdb_id":2245195,"title":"History of Future Folk, The","year":2012,"rating":2,"dubious":false,"date":"2014-01-08 06:47"},{"_id":"5035","normalized_imdb_id":1525366,"title":"Grabbers","year":2012,"rating":3,"dubious":false,"date":"2014-01-03 03:09"},{"_id":"5044","normalized_imdb_id":1362058,"title":"Cockneys vs Zombies","year":2012,"rating":2,"dubious":false,"date":"2014-01-05 21:05"},{"_id":"5066","normalized_imdb_id":2107648,"title":"Ahi va el diablo","year":2012,"rating":3,"dubious":true,"date":"2014-01-12 15:24"},{"_id":"5086","normalized_imdb_id":1995304,"title":"Fat Kid Rules the World","year":2012,"rating":0,"dubious":false,"date":"2014-01-18 23:47"},{"_id":"5109","normalized_imdb_id":1885300,"title":"Best Man Down","year":2012,"rating":3,"dubious":false,"date":"2014-01-28 21:53"},{"_id":"5098","normalized_imdb_id":2328749,"title":"Steel Magnolias","year":2012,"rating":3,"dubious":false,"date":"2014-01-23 02:58"},{"_id":"5152","normalized_imdb_id":2175927,"title":"American Warships","year":2012,"rating":3,"dubious":false,"date":"2014-02-09 00:56"},{"_id":"5155","normalized_imdb_id":1816518,"title":"Ernest & Celestine","year":2012,"rating":1,"dubious":false,"date":"2014-02-09 22:39"},{"_id":"5168","normalized_imdb_id":1764645,"title":"In The Dark Half","year":2012,"rating":3,"dubious":false,"date":"2014-02-14 23:54"},{"_id":"5186","normalized_imdb_id":2318360,"title":"Morgana","year":2012,"rating":3,"dubious":false,"date":"2014-02-19 20:48"},{"_id":"5212","normalized_imdb_id":1918806,"title":"Entrance","year":2012,"rating":3,"dubious":false,"date":"2014-02-28 00:02"},{"_id":"5240","normalized_imdb_id":2523692,"title":"Decay","year":2012,"rating":3,"dubious":false,"date":"2014-03-06 11:07"},{"_id":"5247","normalized_imdb_id":2285752,"title":"Tears of Steel","year":2012,"rating":0,"dubious":false,"date":"2014-03-07 13:38"},{"_id":"5250","normalized_imdb_id":2081178,"title":"Bad Parents","year":2012,"rating":3,"dubious":false,"date":"2014-03-07 21:41"},{"_id":"5264","normalized_imdb_id":2243621,"title":"Snow Queen","year":2012,"rating":3,"dubious":false,"date":"2014-03-09 19:04"},{"_id":"5270","normalized_imdb_id":1855199,"title":"End of Watch","year":2012,"rating":3,"dubious":false,"date":"2014-03-11 18:53"},{"_id":"5271","normalized_imdb_id":1327194,"title":"Lucky One, The","year":2012,"rating":3,"dubious":false,"date":"2014-03-11 18:55"},{"_id":"5275","normalized_imdb_id":1694020,"title":"Guilt Trip, The","year":2012,"rating":3,"dubious":true,"date":"2014-03-12 04:32"},{"_id":"5279","normalized_imdb_id":2275990,"title":"Bletchley Circle","year":2012,"rating":3,"dubious":false,"date":"2014-03-13 16:07"},{"_id":"5352","normalized_imdb_id":1587309,"title":"If I Were You","year":2012,"rating":3,"dubious":false,"date":"2014-04-02 18:48"},{"_id":"5407","normalized_imdb_id":1844025,"title":"Sadako 3D","year":2012,"rating":3,"dubious":false,"date":"2014-04-20 21:45"},{"_id":"5420","normalized_imdb_id":2108546,"title":"Jackie","year":2012,"rating":3,"dubious":false,"date":"2014-04-26 13:57"},{"_id":"5477","normalized_imdb_id":1900854,"title":"Comes a Bright Day","year":2012,"rating":0,"dubious":false,"date":"2014-05-16 15:17"},{"_id":"5479","normalized_imdb_id":2404153,"title":"A Halloween Puppy","year":2012,"rating":2,"dubious":false,"date":"2014-05-16 23:00"},{"_id":"5489","normalized_imdb_id":1842356,"title":"Entity","year":2012,"rating":3,"dubious":false,"date":"2014-05-19 00:39"},{"_id":"5492","normalized_imdb_id":763831,"title":"A Thousand Words","year":2012,"rating":2,"dubious":false,"date":"2014-05-19 23:58"},{"_id":"5538","normalized_imdb_id":1745686,"title":"Die Wand","year":2012,"rating":0,"dubious":false,"date":"2014-06-05 16:52"},{"_id":"5562","normalized_imdb_id":1920945,"title":"Good Vibrations","year":2012,"rating":3,"dubious":true,"date":"2014-06-13 19:57"},{"_id":"5600","normalized_imdb_id":1770734,"title":"Shadow Dancer","year":2012,"rating":3,"dubious":false,"date":"2014-06-29 13:05"},{"_id":"5610","normalized_imdb_id":2435166,"title":"White Alligator","year":2012,"rating":3,"dubious":false,"date":"2014-07-02 20:37"},{"_id":"5612","normalized_imdb_id":2189240,"title":"Cybergeddon","year":2012,"rating":3,"dubious":false,"date":"2014-07-03 00:14"},{"_id":"5645","normalized_imdb_id":2119383,"title":"As High as the Sky","year":2012,"rating":3,"dubious":false,"date":"2014-07-22 03:31"},{"_id":"5657","normalized_imdb_id":2678152,"title":"Wireboy","year":2012,"rating":1,"dubious":false,"date":"2014-07-28 16:56"},{"_id":"5759","normalized_imdb_id":1748260,"title":"Tiger Eyes","year":2012,"rating":3,"dubious":false,"date":"2014-09-18 22:18"},{"_id":"5760","normalized_imdb_id":1935902,"title":"Brass Teapot, The","year":2012,"rating":3,"dubious":false,"date":"2014-09-19 04:37"},{"_id":"5768","normalized_imdb_id":2093109,"title":"Escape Fire: The Fight to Rescue American Healthcare","year":2012,"rating":3,"dubious":false,"date":"2014-09-20 16:45"},{"_id":"5785","normalized_imdb_id":1764625,"title":"Tad: The Lost Explorer","year":2012,"rating":1,"dubious":false,"date":"2014-09-28 04:30"},{"_id":"5805","normalized_imdb_id":1769363,"title":"Giant Mechanical Man, The","year":2012,"rating":3,"dubious":false,"date":"2014-10-05 17:54"},{"_id":"5875","normalized_imdb_id":1735839,"title":"Any Questions for Ben?","year":2012,"rating":2,"dubious":false,"date":"2014-10-26 06:36"},{"_id":"5894","normalized_imdb_id":1928337,"title":"Mine Games","year":2012,"rating":3,"dubious":false,"date":"2014-11-03 08:04"},{"_id":"5980","normalized_imdb_id":1965065,"title":"Save the Date","year":2012,"rating":2,"dubious":true,"date":"2014-12-13 05:00"},{"_id":"6005","normalized_imdb_id":1928335,"title":"Kill 'em All","year":2012,"rating":1,"dubious":false,"date":"2014-12-31 19:48"},{"_id":"6016","normalized_imdb_id":1645155,"title":"Erased","year":2012,"rating":1,"dubious":false,"date":"2015-01-04 03:19"},{"_id":"6073","normalized_imdb_id":2202750,"title":"Golden Winter","year":2012,"rating":1,"dubious":false,"date":"2015-01-27 02:43"},{"_id":"6075","normalized_imdb_id":2205697,"title":"Stuck in Love","year":2012,"rating":3,"dubious":false,"date":"2015-01-27 02:47"},{"_id":"6141","normalized_imdb_id":2496366,"title":"Ali has blue eyes","year":2012,"rating":1,"dubious":false,"date":"2015-03-11 08:39"},{"_id":"6181","normalized_imdb_id":2190367,"title":"Neighboring Sounds","year":2012,"rating":3,"dubious":false,"date":"2015-04-01 13:22"},{"_id":"6183","normalized_imdb_id":2204379,"title":"Devil's Carnival, The","year":2012,"rating":1,"dubious":false,"date":"2015-04-01 18:54"},{"_id":"6203","normalized_imdb_id":455323,"title":"Being Flynn","year":2012,"rating":1,"dubious":false,"date":"2015-04-14 22:53"},{"_id":"6323","normalized_imdb_id":2293276,"title":"Making of a Lady, The","year":2012,"rating":3,"dubious":false,"date":"2015-06-18 21:01"},{"_id":"6378","normalized_imdb_id":2139843,"title":"Electrick Children","year":2012,"rating":3,"dubious":true,"date":"2015-07-29 18:33"},{"_id":"6443","normalized_imdb_id":1753722,"title":"2 Coelhos","year":2012,"rating":1,"dubious":false,"date":"2015-09-12 22:05"},{"_id":"6464","normalized_imdb_id":1555093,"title":"Seasoning House, The","year":2012,"rating":3,"dubious":true,"date":"2015-09-24 00:13"},{"_id":"6538","normalized_imdb_id":2062969,"title":"L'enfant d'en haut","year":2012,"rating":2,"dubious":false,"date":"2015-11-09 23:22"},{"_id":"6569","normalized_imdb_id":1976633,"title":"Occupants, The","year":2012,"rating":0,"dubious":false,"date":"2015-12-03 16:46"},{"_id":"6608","normalized_imdb_id":2034761,"title":"Journey to the Christmas Star","year":2012,"rating":3,"dubious":false,"date":"2015-12-15 03:57"},{"_id":"6627","normalized_imdb_id":598828,"title":"One for the Money","year":2012,"rating":3,"dubious":false,"date":"2015-12-24 22:55"},{"_id":"6658","normalized_imdb_id":1942798,"title":"Alien Tornado","year":2012,"rating":3,"dubious":false,"date":"2016-01-09 21:35"},{"_id":"6664","normalized_imdb_id":1872818,"title":"Liberal Arts","year":2012,"rating":1,"dubious":false,"date":"2016-01-14 01:48"},{"_id":"6694","normalized_imdb_id":1801123,"title":"Travelling Salesman","year":2012,"rating":0,"dubious":false,"date":"2016-01-28 19:44"},{"_id":"6701","normalized_imdb_id":2208216,"title":"Aurora","year":2012,"rating":1,"dubious":false,"date":"2016-01-31 12:45"},{"_id":"6705","normalized_imdb_id":1606339,"title":"Sushi Girl","year":2012,"rating":0,"dubious":false,"date":"2016-02-01 13:33"},{"_id":"6729","normalized_imdb_id":2275949,"title":"Silence","year":2012,"rating":1,"dubious":false,"date":"2016-02-15 11:01"},{"_id":"6742","normalized_imdb_id":2368749,"title":"Despues de Lucia","year":2012,"rating":3,"dubious":false,"date":"2016-02-23 23:43"},{"_id":"6793","normalized_imdb_id":1854513,"title":"Snow White","year":2012,"rating":3,"dubious":false,"date":"2016-03-26 07:25"},{"_id":"6803","normalized_imdb_id":2147319,"title":"Heruta sukeruta","year":2012,"rating":3,"dubious":false,"date":"2016-03-26 08:46"},{"_id":"6850","normalized_imdb_id":1276419,"title":"A Royal Affair","year":2012,"rating":3,"dubious":false,"date":"2016-04-25 07:06"},{"_id":"6960","normalized_imdb_id":1942989,"title":"Citizen, The","year":2012,"rating":1,"dubious":false,"date":"2016-07-02 17:28"},{"_id":"6993","normalized_imdb_id":1597522,"title":"Asterix and Obelix: God Save Britannia","year":2012,"rating":1,"dubious":false,"date":"2016-07-25 14:41"},{"_id":"7043","normalized_imdb_id":2328503,"title":"Ko-ri-a","year":2012,"rating":3,"dubious":false,"date":"2016-08-13 07:57"},{"_id":"7083","normalized_imdb_id":1545106,"title":"Vamps","year":2012,"rating":3,"dubious":false,"date":"2016-08-30 22:00"},{"_id":"7148","normalized_imdb_id":2249628,"title":"Violine","year":2012,"rating":0,"dubious":false,"date":"2016-09-26 21:39"},{"_id":"7149","normalized_imdb_id":2509008,"title":"Vattnet","year":2012,"rating":0,"dubious":false,"date":"2016-09-26 21:55"},{"_id":"7155","normalized_imdb_id":1823125,"title":"Greetings from Tim Buckley","year":2012,"rating":2,"dubious":false,"date":"2016-09-27 16:53"},{"_id":"7543","normalized_imdb_id":2592512,"title":"Happy Caterpillars, The","year":2012,"rating":1,"dubious":false,"date":"2017-03-30 17:29"},{"_id":"7582","normalized_imdb_id":1636826,"title":"Project X","year":2012,"rating":1,"dubious":false,"date":"2017-04-20 12:12"},{"_id":"7656","normalized_imdb_id":2318625,"title":"Out in the Dark","year":2012,"rating":0,"dubious":false,"date":"2017-05-21 17:37"},{"_id":"7769","normalized_imdb_id":1710417,"title":"Lola Versus","year":2012,"rating":3,"dubious":false,"date":"2017-08-02 19:14"},{"_id":"7848","normalized_imdb_id":1853643,"title":"Why Stop Now?","year":2012,"rating":3,"dubious":false,"date":"2017-10-06 21:36"},{"_id":"8297","normalized_imdb_id":2287663,"title":"Blue Lagoon: The Awakening","year":2012,"rating":3,"dubious":true,"date":"2018-06-18 15:01"},{"_id":"8435","normalized_imdb_id":2091243,"title":"Bindlestiffs","year":2012,"rating":3,"dubious":false,"date":"2018-10-13 18:32"},{"_id":"8479","normalized_imdb_id":2262308,"title":"Halo 4: Forward Unto Dawn","year":2012,"rating":3,"dubious":true,"date":"2018-11-06 20:13"},{"_id":"8700","normalized_imdb_id":1764275,"title":"Djupid","year":2012,"rating":1,"dubious":false,"date":"2019-04-11 09:49"},{"_id":"8830","normalized_imdb_id":1766094,"title":"So Undercover","year":2012,"rating":3,"dubious":false,"date":"2019-08-25 14:55"},{"_id":"8999","normalized_imdb_id":1964624,"title":"Dans la maison","year":2012,"rating":3,"dubious":true,"date":"2020-02-04 07:10"},{"_id":"9213","normalized_imdb_id":2106403,"title":"Dripping in Chocolate","year":2012,"rating":3,"dubious":false,"date":"2020-07-26 00:53"},{"_id":"9315","normalized_imdb_id":2023453,"title":"Diary of a Wimpy Kid: Dog Days","year":2012,"rating":3,"dubious":false,"date":"2020-10-26 16:28"},{"_id":"9396","normalized_imdb_id":1937264,"title":"Now Is Good","year":2012,"rating":3,"dubious":false,"date":"2020-12-19 02:46"},{"_id":"9423","normalized_imdb_id":1397514,"title":"Journey 2: The Mysterious Island","year":2012,"rating":1,"dubious":false,"date":"2021-01-03 19:37"},{"_id":"9540","normalized_imdb_id":1999995,"title":"Would You Rather","year":2012,"rating":3,"dubious":false,"date":"2021-03-14 16:50"},{"_id":"9834","normalized_imdb_id":2142801,"title":"Last Stop: Kurtulus","year":2012,"rating":3,"dubious":false,"date":"2021-05-16 12:12"},{"_id":"10062","normalized_imdb_id":1667889,"title":"Ice Age: Continental Drift","year":2012,"rating":2,"dubious":false,"date":"2021-09-19 17:45"},{"_id":"4324","normalized_imdb_id":2051879,"title":"Europa Report","year":2013,"rating":3,"dubious":false,"date":"2013-07-10 01:18"},{"_id":"3836","normalized_imdb_id":1321870,"title":"Gangster Squad","year":2013,"rating":1,"dubious":false,"date":"2013-01-15 08:08"},{"_id":"3853","normalized_imdb_id":2023587,"title":"Mama","year":2013,"rating":3,"dubious":false,"date":"2013-01-25 01:45"},{"_id":"3856","normalized_imdb_id":1428538,"title":"Hansel & Gretel: Witch Hunters","year":2013,"rating":3,"dubious":false,"date":"2013-01-27 01:04"},{"_id":"3861","normalized_imdb_id":2287715,"title":"Ego","year":2013,"rating":2,"dubious":false,"date":"2013-01-29 10:17"},{"_id":"3862","normalized_imdb_id":1588173,"title":"Warm Bodies","year":2013,"rating":2,"dubious":false,"date":"2013-01-30 02:10"},{"_id":"3883","normalized_imdb_id":2580928,"title":"Mt. Zion","year":2013,"rating":1,"dubious":false,"date":"2013-02-09 07:03"},{"_id":"3886","normalized_imdb_id":2024432,"title":"Identity Thief","year":2013,"rating":2,"dubious":false,"date":"2013-02-09 16:33"},{"_id":"3900","normalized_imdb_id":2303110,"title":"Jurassic Attack","year":2013,"rating":2,"dubious":false,"date":"2013-02-17 12:41"},{"_id":"3911","normalized_imdb_id":1702439,"title":"Safe Haven","year":2013,"rating":3,"dubious":false,"date":"2013-02-19 17:43"},{"_id":"3913","normalized_imdb_id":2053463,"title":"Side Effects","year":2013,"rating":3,"dubious":false,"date":"2013-02-20 01:52"},{"_id":"3915","normalized_imdb_id":1559547,"title":"Beautiful Creatures","year":2013,"rating":3,"dubious":false,"date":"2013-02-20 02:03"},{"_id":"3923","normalized_imdb_id":1939659,"title":"Carrie","year":2013,"rating":3,"dubious":false,"date":"2013-02-21 13:16"},{"_id":"3942","normalized_imdb_id":2511190,"title":"A Talking Cat!?!","year":2013,"rating":3,"dubious":false,"date":"2013-02-28 08:10"},{"_id":"3949","normalized_imdb_id":765446,"title":"Escape from Planet Earth","year":2013,"rating":3,"dubious":false,"date":"2013-03-04 02:31"},{"_id":"3955","normalized_imdb_id":1351685,"title":"Jack the Giant Slayer","year":2013,"rating":0,"dubious":false,"date":"2013-03-06 09:18"},{"_id":"3961","normalized_imdb_id":1623205,"title":"Oz the Great and Powerful","year":2013,"rating":3,"dubious":false,"date":"2013-03-09 04:53"},{"_id":"3978","normalized_imdb_id":2101341,"title":"Dead Man Down","year":2013,"rating":3,"dubious":true,"date":"2013-03-12 17:16"},{"_id":"3996","normalized_imdb_id":790628,"title":"Incredible Burt Wonderstone, The","year":2013,"rating":1,"dubious":false,"date":"2013-03-19 01:53"},{"_id":"4012","normalized_imdb_id":1814621,"title":"Admission","year":2013,"rating":3,"dubious":false,"date":"2013-03-24 19:28"},{"_id":"4017","normalized_imdb_id":1869716,"title":"East, The","year":2013,"rating":3,"dubious":false,"date":"2013-03-26 16:13"},{"_id":"4019","normalized_imdb_id":1583421,"title":"G.I. Joe: Retaliation","year":2013,"rating":3,"dubious":false,"date":"2013-03-27 09:48"},{"_id":"4021","normalized_imdb_id":2302755,"title":"Olympus Has Fallen","year":2013,"rating":1,"dubious":false,"date":"2013-03-31 06:21"},{"_id":"4023","normalized_imdb_id":1517260,"title":"Host, The","year":2013,"rating":3,"dubious":true,"date":"2013-04-03 16:10"},{"_id":"4024","normalized_imdb_id":1288558,"title":"Evil Dead","year":2013,"rating":3,"dubious":false,"date":"2013-04-03 23:52"},{"_id":"4025","normalized_imdb_id":1924429,"title":"Trance","year":2013,"rating":0,"dubious":true,"date":"2013-04-04 17:52"},{"_id":"4051","normalized_imdb_id":1911644,"title":"Call, The","year":2013,"rating":3,"dubious":false,"date":"2013-04-14 01:47"},{"_id":"4054","normalized_imdb_id":453562,"title":"42","year":2013,"rating":2,"dubious":false,"date":"2013-04-14 14:39"},{"_id":"4055","normalized_imdb_id":1483013,"title":"Oblivion","year":2013,"rating":3,"dubious":false,"date":"2013-04-14 19:12"},{"_id":"4072","normalized_imdb_id":2357263,"title":"Pasadena","year":2013,"rating":3,"dubious":false,"date":"2013-04-18 16:29"},{"_id":"4090","normalized_imdb_id":1300854,"title":"Iron Man 3","year":2013,"rating":3,"dubious":true,"date":"2013-04-25 12:36"},{"_id":"4115","normalized_imdb_id":1935179,"title":"Mud","year":2013,"rating":1,"dubious":false,"date":"2013-04-29 20:01"},{"_id":"4125","normalized_imdb_id":2617828,"title":"Freier Fall","year":2013,"rating":1,"dubious":false,"date":"2013-05-09 19:15"},{"_id":"4126","normalized_imdb_id":2220408,"title":"Vai que da Certo","year":2013,"rating":1,"dubious":true,"date":"2013-05-09 21:44"},{"_id":"4127","normalized_imdb_id":1408101,"title":"Star Trek Into Darkness","year":2013,"rating":1,"dubious":false,"date":"2013-05-09 22:13"},{"_id":"4132","normalized_imdb_id":2034139,"title":"Last Exorcism Part II, The","year":2013,"rating":3,"dubious":false,"date":"2013-05-12 18:04"},{"_id":"4133","normalized_imdb_id":481499,"title":"Croods, The","year":2013,"rating":3,"dubious":false,"date":"2013-05-16 14:51"},{"_id":"4138","normalized_imdb_id":1343092,"title":"Great Gatsby, The","year":2013,"rating":3,"dubious":true,"date":"2013-05-18 13:34"},{"_id":"4142","normalized_imdb_id":1572315,"title":"Texas Chainsaw 3D","year":2013,"rating":3,"dubious":false,"date":"2013-05-20 01:26"},{"_id":"4145","normalized_imdb_id":1931435,"title":"Big Wedding, The","year":2013,"rating":3,"dubious":false,"date":"2013-05-20 08:57"},{"_id":"4155","normalized_imdb_id":2187115,"title":"Pozitia copilului","year":2013,"rating":3,"dubious":false,"date":"2013-05-22 09:09"},{"_id":"4156","normalized_imdb_id":1462900,"title":"Grandmaster, The","year":2013,"rating":1,"dubious":false,"date":"2013-05-22 09:11"},{"_id":"4163","normalized_imdb_id":1904996,"title":"Parker","year":2013,"rating":3,"dubious":false,"date":"2013-05-24 20:56"},{"_id":"4166","normalized_imdb_id":2651924,"title":"Hit Girl, The","year":2013,"rating":3,"dubious":false,"date":"2013-05-25 20:45"},{"_id":"4167","normalized_imdb_id":1245492,"title":"This Is the End","year":2013,"rating":1,"dubious":false,"date":"2013-05-26 03:19"},{"_id":"4168","normalized_imdb_id":1291580,"title":"Behind the Candelabra","year":2013,"rating":1,"dubious":false,"date":"2013-05-27 02:59"},{"_id":"4180","normalized_imdb_id":848537,"title":"Epic","year":2013,"rating":3,"dubious":false,"date":"2013-05-29 22:10"},{"_id":"4181","normalized_imdb_id":1951261,"title":"Hangover part 3, The","year":2013,"rating":2,"dubious":false,"date":"2013-05-30 04:39"},{"_id":"4188","normalized_imdb_id":1670345,"title":"Now You See Me","year":2013,"rating":1,"dubious":false,"date":"2013-05-31 23:58"},{"_id":"4189","normalized_imdb_id":2094762,"title":"And Now a Word from Our Sponsor","year":2013,"rating":3,"dubious":false,"date":"2013-06-01 00:30"},{"_id":"4191","normalized_imdb_id":1815862,"title":"After Earth","year":2013,"rating":1,"dubious":true,"date":"2013-06-01 05:08"},{"_id":"4192","normalized_imdb_id":1905041,"title":"Fast and Furious 6","year":2013,"rating":3,"dubious":false,"date":"2013-06-01 05:14"},{"_id":"4194","normalized_imdb_id":1711425,"title":"21 & Over","year":2013,"rating":1,"dubious":false,"date":"2013-06-01 05:28"},{"_id":"4195","normalized_imdb_id":1980209,"title":"Pain & Gain","year":2013,"rating":1,"dubious":false,"date":"2013-06-01 06:02"},{"_id":"4196","normalized_imdb_id":2404463,"title":"Heat, The","year":2013,"rating":3,"dubious":false,"date":"2013-06-01 06:11"},{"_id":"4197","normalized_imdb_id":1869416,"title":"Faroeste caboclo","year":2013,"rating":3,"dubious":false,"date":"2013-06-01 21:48"},{"_id":"4203","normalized_imdb_id":2250234,"title":"Dragon Lore: Curse of the Shadow","year":2013,"rating":1,"dubious":true,"date":"2013-06-02 23:38"},{"_id":"4205","normalized_imdb_id":1699755,"title":"Peeples","year":2013,"rating":3,"dubious":true,"date":"2013-06-04 17:03"},{"_id":"4212","normalized_imdb_id":2628260,"title":"Lost In Living","year":2013,"rating":3,"dubious":false,"date":"2013-06-06 17:53"},{"_id":"4213","normalized_imdb_id":2234155,"title":"Internship, The","year":2013,"rating":1,"dubious":false,"date":"2013-06-06 22:49"},{"_id":"4225","normalized_imdb_id":2184339,"title":"Purge, The","year":2013,"rating":3,"dubious":true,"date":"2013-06-09 22:28"},{"_id":"4226","normalized_imdb_id":1659338,"title":"Numbers Station, The","year":2013,"rating":1,"dubious":false,"date":"2013-06-10 00:22"},{"_id":"4238","normalized_imdb_id":770828,"title":"Man of Steel","year":2013,"rating":3,"dubious":false,"date":"2013-06-13 06:26"},{"_id":"4256","normalized_imdb_id":1453405,"title":"Monsters University","year":2013,"rating":1,"dubious":false,"date":"2013-06-21 10:46"},{"_id":"4259","normalized_imdb_id":816711,"title":"World War Z","year":2013,"rating":3,"dubious":true,"date":"2013-06-22 07:36"},{"_id":"4261","normalized_imdb_id":2255372,"title":"Sisters Plotz, The","year":2013,"rating":3,"dubious":false,"date":"2013-06-22 22:32"},{"_id":"4266","normalized_imdb_id":2908228,"title":"My Little Pony: Equestria Girls","year":2013,"rating":3,"dubious":false,"date":"2013-06-24 01:51"},{"_id":"4272","normalized_imdb_id":2209418,"title":"Before Midnight","year":2013,"rating":3,"dubious":false,"date":"2013-06-27 00:56"},{"_id":"4278","normalized_imdb_id":2542420,"title":"White Bear","year":2013,"rating":3,"dubious":true,"date":"2013-06-28 06:13"},{"_id":"4279","normalized_imdb_id":1210819,"title":"Lone Ranger, The","year":2013,"rating":1,"dubious":false,"date":"2013-06-28 19:38"},{"_id":"4281","normalized_imdb_id":1682180,"title":"Stoker","year":2013,"rating":3,"dubious":false,"date":"2013-06-28 21:30"},{"_id":"4294","normalized_imdb_id":2027140,"title":"L'ecume des jours","year":2013,"rating":3,"dubious":false,"date":"2013-06-30 18:25"},{"_id":"4296","normalized_imdb_id":2132285,"title":"Bling Ring, The","year":2013,"rating":3,"dubious":false,"date":"2013-06-30 23:24"},{"_id":"4300","normalized_imdb_id":1690953,"title":"Despicable Me 2","year":2013,"rating":3,"dubious":false,"date":"2013-07-02 09:26"},{"_id":"4304","normalized_imdb_id":2258858,"title":"Wadjda","year":2013,"rating":3,"dubious":false,"date":"2013-07-03 20:22"},{"_id":"4305","normalized_imdb_id":2243389,"title":"I'm So Excited","year":2013,"rating":2,"dubious":false,"date":"2013-07-03 22:23"},{"_id":"4306","normalized_imdb_id":2284766,"title":"Mary and Martha","year":2013,"rating":3,"dubious":false,"date":"2013-07-04 00:30"},{"_id":"4309","normalized_imdb_id":2334879,"title":"White House Down","year":2013,"rating":2,"dubious":false,"date":"2013-07-04 21:21"},{"_id":"4334","normalized_imdb_id":1663662,"title":"Pacific Rim","year":2013,"rating":1,"dubious":false,"date":"2013-07-12 06:20"},{"_id":"4365","normalized_imdb_id":2724064,"title":"Sharknado","year":2013,"rating":3,"dubious":true,"date":"2013-07-18 21:01"},{"_id":"4367","normalized_imdb_id":1602613,"title":"Only God Forgives","year":2013,"rating":3,"dubious":false,"date":"2013-07-18 21:47"},{"_id":"4369","normalized_imdb_id":1821426,"title":"Family Weekend","year":2013,"rating":3,"dubious":false,"date":"2013-07-19 01:18"},{"_id":"4370","normalized_imdb_id":1457767,"title":"Conjuring, The","year":2013,"rating":3,"dubious":false,"date":"2013-07-19 08:17"},{"_id":"4375","normalized_imdb_id":1860353,"title":"Turbo","year":2013,"rating":3,"dubious":true,"date":"2013-07-20 22:35"},{"_id":"4379","normalized_imdb_id":2343371,"title":"Amiche da morire","year":2013,"rating":3,"dubious":false,"date":"2013-07-21 16:26"},{"_id":"4382","normalized_imdb_id":790736,"title":"R.I.P.D.","year":2013,"rating":1,"dubious":false,"date":"2013-07-22 05:06"},{"_id":"4387","normalized_imdb_id":2081194,"title":"Hansel and Gretel Get Baked","year":2013,"rating":3,"dubious":false,"date":"2013-07-23 18:29"},{"_id":"4388","normalized_imdb_id":1430132,"title":"Wolverine, The","year":2013,"rating":3,"dubious":false,"date":"2013-07-24 19:36"},{"_id":"4393","normalized_imdb_id":1821694,"title":"Red 2","year":2013,"rating":3,"dubious":false,"date":"2013-07-25 06:28"},{"_id":"4414","normalized_imdb_id":1213663,"title":"World's End, The","year":2013,"rating":2,"dubious":false,"date":"2013-07-29 13:45"},{"_id":"4416","normalized_imdb_id":2017020,"title":"Smurfs 2, The","year":2013,"rating":3,"dubious":false,"date":"2013-07-29 18:36"},{"_id":"4419","normalized_imdb_id":2191701,"title":"Grown Ups 2","year":2013,"rating":2,"dubious":false,"date":"2013-07-30 00:44"},{"_id":"4420","normalized_imdb_id":1727388,"title":"Way Way Back, The","year":2013,"rating":3,"dubious":false,"date":"2013-07-30 05:05"},{"_id":"4426","normalized_imdb_id":2106550,"title":"Mobius","year":2013,"rating":3,"dubious":true,"date":"2013-07-31 14:24"},{"_id":"4431","normalized_imdb_id":1758795,"title":"To Do List, The","year":2013,"rating":3,"dubious":false,"date":"2013-08-02 05:06"},{"_id":"4433","normalized_imdb_id":1684233,"title":"Welcome to the Punch","year":2013,"rating":1,"dubious":false,"date":"2013-08-03 03:24"},{"_id":"4435","normalized_imdb_id":2334873,"title":"Blue Jasmine","year":2013,"rating":3,"dubious":false,"date":"2013-08-03 21:52"},{"_id":"4436","normalized_imdb_id":2334649,"title":"Fruitvale Station","year":2013,"rating":3,"dubious":true,"date":"2013-08-03 22:02"},{"_id":"4440","normalized_imdb_id":1913178,"title":"Crown and the Dragon, The","year":2013,"rating":3,"dubious":true,"date":"2013-08-04 06:04"},{"_id":"4450","normalized_imdb_id":1272878,"title":"2 Guns","year":2013,"rating":1,"dubious":false,"date":"2013-08-07 16:37"},{"_id":"4455","normalized_imdb_id":2201251,"title":"Hot Flashes, The","year":2013,"rating":3,"dubious":false,"date":"2013-08-08 15:56"},{"_id":"4456","normalized_imdb_id":2396566,"title":"20 Feet from Stardom","year":2013,"rating":3,"dubious":false,"date":"2013-08-10 02:44"},{"_id":"4460","normalized_imdb_id":1535108,"title":"Elysium","year":2013,"rating":3,"dubious":false,"date":"2013-08-10 17:15"},{"_id":"4461","normalized_imdb_id":2007360,"title":"Computer Chess","year":2013,"rating":1,"dubious":false,"date":"2013-08-10 18:34"},{"_id":"4462","normalized_imdb_id":2387433,"title":"Dark Skies","year":2013,"rating":2,"dubious":false,"date":"2013-08-10 19:30"},{"_id":"4463","normalized_imdb_id":1691917,"title":"Planes","year":2013,"rating":1,"dubious":false,"date":"2013-08-11 02:38"},{"_id":"4470","normalized_imdb_id":1650554,"title":"Kick-Ass 2","year":2013,"rating":3,"dubious":false,"date":"2013-08-13 18:51"},{"_id":"4471","normalized_imdb_id":1698648,"title":"Girl Most Likely","year":2013,"rating":3,"dubious":false,"date":"2013-08-14 00:21"},{"_id":"4472","normalized_imdb_id":2294677,"title":"In a World...","year":2013,"rating":3,"dubious":false,"date":"2013-08-14 21:25"},{"_id":"4473","normalized_imdb_id":2188560,"title":"Nazotoki wa Dinner no Ato de (The After-Dinner Mysteries)","year":2013,"rating":2,"dubious":false,"date":"2013-08-15 07:59"},{"_id":"4476","normalized_imdb_id":2387413,"title":"Captain Battle: Legacy War","year":2013,"rating":3,"dubious":true,"date":"2013-08-15 21:26"},{"_id":"4477","normalized_imdb_id":2294189,"title":"Fall, The","year":2013,"rating":3,"dubious":false,"date":"2013-08-16 07:51"},{"_id":"4488","normalized_imdb_id":2195548,"title":"Prince Avalanche","year":2013,"rating":0,"dubious":false,"date":"2013-08-18 23:24"},{"_id":"4492","normalized_imdb_id":2279864,"title":"Clear History","year":2013,"rating":2,"dubious":true,"date":"2013-08-19 20:51"},{"_id":"4509","normalized_imdb_id":1538403,"title":"Mortal Instruments: City of Bones, The","year":2013,"rating":3,"dubious":false,"date":"2013-08-26 14:56"},{"_id":"4514","normalized_imdb_id":2585078,"title":"Summer League","year":2013,"rating":3,"dubious":false,"date":"2013-08-28 20:58"},{"_id":"4507","normalized_imdb_id":1723121,"title":"We're the Millers","year":2013,"rating":3,"dubious":false,"date":"2013-08-25 22:25"},{"_id":"4508","normalized_imdb_id":2312390,"title":"Gamers: Hands of Fate, The","year":2013,"rating":3,"dubious":false,"date":"2013-08-26 04:54"},{"_id":"4522","normalized_imdb_id":1327773,"title":"Lee Daniels' The Butler","year":2013,"rating":3,"dubious":false,"date":"2013-08-29 18:19"},{"_id":"4537","normalized_imdb_id":1480295,"title":"Killing Season","year":2013,"rating":1,"dubious":false,"date":"2013-09-01 19:26"},{"_id":"4540","normalized_imdb_id":2664258,"title":"UMMAH - Unter Freunden","year":2013,"rating":1,"dubious":false,"date":"2013-09-04 13:00"},{"_id":"4542","normalized_imdb_id":1160996,"title":"Colony, The","year":2013,"rating":1,"dubious":false,"date":"2013-09-05 05:44"},{"_id":"4543","normalized_imdb_id":1411250,"title":"Riddick","year":2013,"rating":0,"dubious":false,"date":"2013-09-05 16:24"},{"_id":"4545","normalized_imdb_id":1433811,"title":"Disconnect","year":2013,"rating":2,"dubious":true,"date":"2013-09-06 20:27"},{"_id":"4548","normalized_imdb_id":2309295,"title":"Hemlock Grove","year":2013,"rating":3,"dubious":false,"date":"2013-09-08 14:56"},{"_id":"4553","normalized_imdb_id":2054790,"title":"Michael Kohlhaas","year":2013,"rating":1,"dubious":false,"date":"2013-09-11 08:29"},{"_id":"4568","normalized_imdb_id":2229499,"title":"Don Jon","year":2013,"rating":3,"dubious":true,"date":"2013-09-13 16:56"},{"_id":"4583","normalized_imdb_id":1426329,"title":"Lovelace","year":2013,"rating":3,"dubious":false,"date":"2013-09-14 21:15"},{"_id":"4594","normalized_imdb_id":2218003,"title":"Closed Circuit","year":2013,"rating":2,"dubious":false,"date":"2013-09-16 16:21"},{"_id":"4598","normalized_imdb_id":2370248,"title":"Short Term 12","year":2013,"rating":3,"dubious":false,"date":"2013-09-17 23:23"},{"_id":"4603","normalized_imdb_id":2094877,"title":"Haute Cuisine","year":2013,"rating":3,"dubious":false,"date":"2013-09-18 16:35"},{"_id":"4604","normalized_imdb_id":2865802,"title":"Zum Geburtstag","year":2013,"rating":2,"dubious":false,"date":"2013-09-18 18:49"},{"_id":"4607","normalized_imdb_id":2404311,"title":"Family, The","year":2013,"rating":3,"dubious":false,"date":"2013-09-21 21:16"},{"_id":"4608","normalized_imdb_id":2375574,"title":"A Field in England","year":2013,"rating":0,"dubious":false,"date":"2013-09-21 21:37"},{"_id":"4609","normalized_imdb_id":2005374,"title":"Frozen Ground, The","year":2013,"rating":3,"dubious":false,"date":"2013-09-22 00:27"},{"_id":"4619","normalized_imdb_id":2312890,"title":"Afternoon Delight","year":2013,"rating":3,"dubious":false,"date":"2013-09-22 19:46"},{"_id":"4624","normalized_imdb_id":2265398,"title":"Drinking Buddies","year":2013,"rating":3,"dubious":true,"date":"2013-09-24 00:49"},{"_id":"4627","normalized_imdb_id":2818348,"title":"Saige Paints the Sky","year":2013,"rating":3,"dubious":false,"date":"2013-09-24 16:11"},{"_id":"4641","normalized_imdb_id":1392214,"title":"Prisoners","year":2013,"rating":3,"dubious":false,"date":"2013-09-28 18:09"},{"_id":"4642","normalized_imdb_id":2401711,"title":"O Tempo e o Vento","year":2013,"rating":3,"dubious":false,"date":"2013-09-28 21:58"},{"_id":"4647","normalized_imdb_id":2364975,"title":"Vi ar bast!","year":2013,"rating":3,"dubious":false,"date":"2013-09-29 20:40"},{"_id":"4651","normalized_imdb_id":2002718,"title":"Machete Kills","year":2013,"rating":3,"dubious":false,"date":"2013-09-30 20:55"},{"_id":"4652","normalized_imdb_id":2378281,"title":"Instructions Not Included","year":2013,"rating":3,"dubious":true,"date":"2013-10-01 07:40"},{"_id":"4653","normalized_imdb_id":2364841,"title":"Runner Runner","year":2013,"rating":0,"dubious":false,"date":"2013-10-01 12:31"},{"_id":"4655","normalized_imdb_id":1454468,"title":"Gravity","year":2013,"rating":0,"dubious":false,"date":"2013-10-02 04:03"},{"_id":"4656","normalized_imdb_id":2338864,"title":"Finsterworld","year":2013,"rating":1,"dubious":false,"date":"2013-10-02 15:29"},{"_id":"4658","normalized_imdb_id":1821549,"title":"Nebraska","year":2013,"rating":3,"dubious":false,"date":"2013-10-02 19:53"},{"_id":"4660","normalized_imdb_id":790636,"title":"Dallas Buyers Club","year":2013,"rating":3,"dubious":false,"date":"2013-10-03 20:57"},{"_id":"4661","normalized_imdb_id":1171222,"title":"Baggage Claim","year":2013,"rating":3,"dubious":false,"date":"2013-10-04 18:18"},{"_id":"4677","normalized_imdb_id":1535109,"title":"Captain Phillips","year":2013,"rating":1,"dubious":false,"date":"2013-10-07 20:25"},{"_id":"4681","normalized_imdb_id":1450321,"title":"Filth","year":2013,"rating":1,"dubious":false,"date":"2013-10-09 12:00"},{"_id":"4689","normalized_imdb_id":1211956,"title":"Escape Plan","year":2013,"rating":2,"dubious":true,"date":"2013-10-12 22:20"},{"_id":"4701","normalized_imdb_id":1813609,"title":"A Haunting at Silver Falls","year":2013,"rating":3,"dubious":false,"date":"2013-10-16 21:22"},{"_id":"4704","normalized_imdb_id":2278871,"title":"Blue Is the Warmest Color","year":2013,"rating":3,"dubious":false,"date":"2013-10-17 14:47"},{"_id":"4707","normalized_imdb_id":2194499,"title":"About Time","year":2013,"rating":3,"dubious":false,"date":"2013-10-17 20:41"},{"_id":"4714","normalized_imdb_id":1837703,"title":"Fifth Estate, The","year":2013,"rating":1,"dubious":false,"date":"2013-10-20 00:53"},{"_id":"4715","normalized_imdb_id":2066133,"title":"Wine of Summer, The","year":2013,"rating":3,"dubious":false,"date":"2013-10-20 04:42"},{"_id":"4733","normalized_imdb_id":1982177,"title":"Exit Marrakech","year":2013,"rating":2,"dubious":false,"date":"2013-10-25 12:42"},{"_id":"4739","normalized_imdb_id":3066242,"title":"RWBY","year":2013,"rating":3,"dubious":false,"date":"2013-10-26 00:15"},{"_id":"4740","normalized_imdb_id":2193215,"title":"Counselor, The","year":2013,"rating":3,"dubious":false,"date":"2013-10-26 23:27"},{"_id":"4743","normalized_imdb_id":2147728,"title":"I Used to Be Darker","year":2013,"rating":3,"dubious":false,"date":"2013-10-27 18:57"},{"_id":"4751","normalized_imdb_id":2247432,"title":"Go for Sisters","year":2013,"rating":3,"dubious":false,"date":"2013-10-29 18:21"},{"_id":"4753","normalized_imdb_id":1731141,"title":"Ender's Game","year":2013,"rating":2,"dubious":true,"date":"2013-10-29 21:50"},{"_id":"4756","normalized_imdb_id":1981115,"title":"Thor: The Dark World","year":2013,"rating":3,"dubious":false,"date":"2013-10-31 15:21"},{"_id":"4759","normalized_imdb_id":2481198,"title":"Sunshine on Leith","year":2013,"rating":3,"dubious":false,"date":"2013-11-01 10:45"},{"_id":"4768","normalized_imdb_id":2404738,"title":"Witching and Bitching","year":2013,"rating":3,"dubious":false,"date":"2013-11-01 17:12"},{"_id":"5142","normalized_imdb_id":3212568,"title":"Beltracchi: The Art of Forgery","year":2013,"rating":1,"dubious":false,"date":"2014-02-06 22:13"},{"_id":"4777","normalized_imdb_id":2017038,"title":"All is Lost","year":2013,"rating":0,"dubious":false,"date":"2013-11-04 06:36"},{"_id":"4781","normalized_imdb_id":2390361,"title":"Enough Said","year":2013,"rating":3,"dubious":false,"date":"2013-11-05 19:02"},{"_id":"4788","normalized_imdb_id":2018086,"title":"Camille Claudel 1915","year":2013,"rating":3,"dubious":true,"date":"2013-11-06 13:19"},{"_id":"5079","normalized_imdb_id":1932718,"title":"Thanks for Sharing","year":2013,"rating":2,"dubious":false,"date":"2014-01-16 05:42"},{"_id":"4803","normalized_imdb_id":2881698,"title":"Skinwalker Ranch","year":2013,"rating":0,"dubious":false,"date":"2013-11-09 12:58"},{"_id":"4808","normalized_imdb_id":2103267,"title":"Perfect Mothers","year":2013,"rating":3,"dubious":false,"date":"2013-11-11 11:16"},{"_id":"4814","normalized_imdb_id":2042568,"title":"Inside Llewyn Davis","year":2013,"rating":1,"dubious":false,"date":"2013-11-11 22:56"},{"_id":"4816","normalized_imdb_id":1509788,"title":"Ass Backwards","year":2013,"rating":3,"dubious":false,"date":"2013-11-12 06:14"},{"_id":"4836","normalized_imdb_id":2752200,"title":"Jeune & jolie","year":2013,"rating":3,"dubious":false,"date":"2013-11-15 13:34"},{"_id":"4840","normalized_imdb_id":2296697,"title":"Concussion","year":2013,"rating":3,"dubious":false,"date":"2013-11-16 14:55"},{"_id":"4891","normalized_imdb_id":1654523,"title":"Night Train to Lisbon","year":2013,"rating":1,"dubious":false,"date":"2013-11-30 19:06"},{"_id":"4851","normalized_imdb_id":1951264,"title":"Hunger Games: Catching Fire, The","year":2013,"rating":3,"dubious":false,"date":"2013-11-18 02:20"},{"_id":"4853","normalized_imdb_id":2415174,"title":"Moving Mountains","year":2013,"rating":3,"dubious":false,"date":"2013-11-18 15:33"},{"_id":"4855","normalized_imdb_id":2969656,"title":"Gam-si-ja-deul","year":2013,"rating":3,"dubious":true,"date":"2013-11-19 16:27"},{"_id":"4857","normalized_imdb_id":2350496,"title":"Lunchbox, The","year":2013,"rating":3,"dubious":false,"date":"2013-11-20 09:34"},{"_id":"4858","normalized_imdb_id":2294629,"title":"Frozen","year":2013,"rating":3,"dubious":false,"date":"2013-11-20 15:52"},{"_id":"4860","normalized_imdb_id":1798709,"title":"Her","year":2013,"rating":2,"dubious":false,"date":"2013-11-20 22:57"},{"_id":"4866","normalized_imdb_id":2330546,"title":"Les Reines du Ring (English: Wrestling Queens)","year":2013,"rating":3,"dubious":false,"date":"2013-11-23 17:46"},{"_id":"4888","normalized_imdb_id":2431286,"title":"Philomena","year":2013,"rating":3,"dubious":false,"date":"2013-11-29 19:38"},{"_id":"4873","normalized_imdb_id":2779318,"title":"Day of the Doctor, The","year":2013,"rating":3,"dubious":true,"date":"2013-11-25 02:37"},{"_id":"4887","normalized_imdb_id":1716767,"title":"Last Keepers, The","year":2013,"rating":3,"dubious":false,"date":"2013-11-29 04:59"},{"_id":"4878","normalized_imdb_id":2415464,"title":"Hansel & Gretel","year":2013,"rating":3,"dubious":false,"date":"2013-11-25 23:43"},{"_id":"4879","normalized_imdb_id":2226417,"title":"Insidious: Chapter 2","year":2013,"rating":2,"dubious":false,"date":"2013-11-26 02:51"},{"_id":"4880","normalized_imdb_id":1322269,"title":"August: Osage County","year":2013,"rating":3,"dubious":false,"date":"2013-11-26 05:17"},{"_id":"4906","normalized_imdb_id":1854564,"title":"Percy Jackson: Sea of Monsters","year":2013,"rating":3,"dubious":false,"date":"2013-12-03 12:16"},{"_id":"4908","normalized_imdb_id":2016940,"title":"Man of Tai Chi","year":2013,"rating":3,"dubious":true,"date":"2013-12-03 16:09"},{"_id":"4910","normalized_imdb_id":1206543,"title":"Out of the Furnace","year":2013,"rating":1,"dubious":false,"date":"2013-12-04 05:13"},{"_id":"4911","normalized_imdb_id":1800241,"title":"American Hustle","year":2013,"rating":3,"dubious":false,"date":"2013-12-04 05:29"},{"_id":"4912","normalized_imdb_id":359950,"title":"Secret Life of Walter Mitty, The","year":2013,"rating":3,"dubious":false,"date":"2013-12-04 05:41"},{"_id":"4921","normalized_imdb_id":1170358,"title":"Hobbit: The Desolation of Smaug, The","year":2013,"rating":3,"dubious":false,"date":"2013-12-06 19:17"},{"_id":"4922","normalized_imdb_id":993846,"title":"Wolf of Wall Street, The","year":2013,"rating":3,"dubious":false,"date":"2013-12-06 22:41"},{"_id":"4924","normalized_imdb_id":2332579,"title":"Crystal Fairy & the Magical Cactus and 2012","year":2013,"rating":3,"dubious":false,"date":"2013-12-07 00:45"},{"_id":"4925","normalized_imdb_id":1894476,"title":"How I Live Now","year":2013,"rating":3,"dubious":false,"date":"2013-12-07 06:32"},{"_id":"5140","normalized_imdb_id":2388759,"title":"Love & Air Sex","year":2013,"rating":3,"dubious":false,"date":"2014-02-06 09:41"},{"_id":"4948","normalized_imdb_id":2309021,"title":"We Are What We Are","year":2013,"rating":3,"dubious":false,"date":"2013-12-14 18:40"},{"_id":"4953","normalized_imdb_id":2944454,"title":"Riley Rewind","year":2013,"rating":3,"dubious":false,"date":"2013-12-16 02:25"},{"_id":"4965","normalized_imdb_id":2140373,"title":"Saving Mr. Banks","year":2013,"rating":3,"dubious":false,"date":"2013-12-20 08:50"},{"_id":"4975","normalized_imdb_id":1606378,"title":"A Good Day to Die Hard","year":2013,"rating":1,"dubious":false,"date":"2013-12-23 05:25"},{"_id":"4980","normalized_imdb_id":2457282,"title":"Puella Magi Madoka Magica the Movie Part III: The Rebellion Story","year":2013,"rating":3,"dubious":false,"date":"2013-12-24 20:34"},{"_id":"4989","normalized_imdb_id":1335975,"title":"47 Ronin","year":2013,"rating":2,"dubious":false,"date":"2013-12-26 04:09"},{"_id":"4996","normalized_imdb_id":2403419,"title":"For Elisa","year":2013,"rating":3,"dubious":false,"date":"2013-12-27 00:36"},{"_id":"5000","normalized_imdb_id":1714915,"title":"Only Lovers Left Alive","year":2013,"rating":3,"dubious":true,"date":"2013-12-28 17:21"},{"_id":"5001","normalized_imdb_id":2446502,"title":"Zombie Hunter","year":2013,"rating":3,"dubious":false,"date":"2013-12-28 18:53"},{"_id":"5011","normalized_imdb_id":2101473,"title":"Physician, The","year":2013,"rating":1,"dubious":false,"date":"2013-12-30 02:07"},{"_id":"5014","normalized_imdb_id":816442,"title":"Book Thief, The","year":2013,"rating":3,"dubious":false,"date":"2013-12-30 23:48"},{"_id":"5015","normalized_imdb_id":1905040,"title":"Devil's Pass","year":2013,"rating":3,"dubious":false,"date":"2013-12-31 02:52"},{"_id":"5020","normalized_imdb_id":2298416,"title":"Suzanne","year":2013,"rating":3,"dubious":false,"date":"2014-01-01 15:29"},{"_id":"5021","normalized_imdb_id":1937118,"title":"Casse-tete chinois","year":2013,"rating":3,"dubious":false,"date":"2014-01-01 15:32"},{"_id":"5022","normalized_imdb_id":2315200,"title":"Les garcons et Guillaume, a table!","year":2013,"rating":1,"dubious":false,"date":"2014-01-01 15:37"},{"_id":"5023","normalized_imdb_id":2304771,"title":"Mandela: Long Walk to Freedom","year":2013,"rating":1,"dubious":false,"date":"2014-01-01 15:44"},{"_id":"5033","normalized_imdb_id":2024544,"title":"12 Years a Slave","year":2013,"rating":3,"dubious":false,"date":"2014-01-03 02:49"},{"_id":"5037","normalized_imdb_id":2234222,"title":"Orphan Black","year":2013,"rating":3,"dubious":false,"date":"2014-01-04 02:19"},{"_id":"5061","normalized_imdb_id":1979320,"title":"Rush","year":2013,"rating":1,"dubious":false,"date":"2014-01-11 15:09"},{"_id":"5062","normalized_imdb_id":2058107,"title":"Railway Man, The","year":2013,"rating":0,"dubious":false,"date":"2014-01-12 00:17"},{"_id":"5067","normalized_imdb_id":1937390,"title":"Nymphomaniac: Volume 1","year":2013,"rating":3,"dubious":false,"date":"2014-01-12 18:12"},{"_id":"5076","normalized_imdb_id":2395417,"title":"Still Life","year":2013,"rating":1,"dubious":false,"date":"2014-01-15 10:35"},{"_id":"5085","normalized_imdb_id":3183630,"title":"Boy and the World, The","year":2013,"rating":0,"dubious":false,"date":"2014-01-18 18:22"},{"_id":"5093","normalized_imdb_id":2792728,"title":"Karlek deluxe","year":2013,"rating":3,"dubious":true,"date":"2014-01-21 09:46"},{"_id":"5096","normalized_imdb_id":2429414,"title":"Hannas Reise","year":2013,"rating":3,"dubious":false,"date":"2014-01-22 13:09"},{"_id":"5097","normalized_imdb_id":2369396,"title":"Bounty Killer","year":2013,"rating":3,"dubious":true,"date":"2014-01-22 17:12"},{"_id":"5105","normalized_imdb_id":2404461,"title":"Le Passé","year":2013,"rating":3,"dubious":true,"date":"2014-01-25 05:46"},{"_id":"5106","normalized_imdb_id":1985019,"title":"Austenland","year":2013,"rating":3,"dubious":false,"date":"2014-01-25 12:26"},{"_id":"5110","normalized_imdb_id":1985966,"title":"Cloudy with a Chance of Meatballs 2","year":2013,"rating":3,"dubious":false,"date":"2014-01-28 22:24"},{"_id":"5111","normalized_imdb_id":2403029,"title":"Starving Games, The","year":2013,"rating":3,"dubious":false,"date":"2014-01-28 22:36"},{"_id":"5113","normalized_imdb_id":2829458,"title":"Kyss meg for faen i helvete","year":2013,"rating":3,"dubious":false,"date":"2014-01-28 22:43"},{"_id":"5114","normalized_imdb_id":2201221,"title":"Some Girl(s)","year":2013,"rating":1,"dubious":false,"date":"2014-01-28 22:46"},{"_id":"5119","normalized_imdb_id":3103576,"title":"L'amour est un crime parfait","year":2013,"rating":2,"dubious":false,"date":"2014-01-31 10:04"},{"_id":"5121","normalized_imdb_id":2382009,"title":"Nymphomaniac: Volume 2","year":2013,"rating":3,"dubious":false,"date":"2014-02-01 10:38"},{"_id":"5126","normalized_imdb_id":2450186,"title":"V/H/S/2","year":2013,"rating":3,"dubious":true,"date":"2014-02-01 20:55"},{"_id":"5131","normalized_imdb_id":1657510,"title":"Gimme Shelter","year":2013,"rating":1,"dubious":false,"date":"2014-02-03 17:27"},{"_id":"5145","normalized_imdb_id":1545660,"title":"Knights of Badassdom","year":2013,"rating":3,"dubious":true,"date":"2014-02-07 07:19"},{"_id":"5150","normalized_imdb_id":2395385,"title":"1","year":2013,"rating":3,"dubious":true,"date":"2014-02-08 15:27"},{"_id":"5156","normalized_imdb_id":2224073,"title":"Best Friends Forever","year":2013,"rating":3,"dubious":false,"date":"2014-02-10 02:10"},{"_id":"5161","normalized_imdb_id":1204975,"title":"Last Vegas","year":2013,"rating":1,"dubious":false,"date":"2014-02-11 23:23"},{"_id":"5162","normalized_imdb_id":1951216,"title":"Look of Love, The","year":2013,"rating":3,"dubious":true,"date":"2014-02-13 21:34"},{"_id":"5167","normalized_imdb_id":1321511,"title":"Oldboy","year":2013,"rating":2,"dubious":false,"date":"2014-02-14 22:22"},{"_id":"5169","normalized_imdb_id":2355540,"title":"Cutie and the Boxer","year":2013,"rating":0,"dubious":false,"date":"2014-02-15 01:30"},{"_id":"5176","normalized_imdb_id":1674047,"title":"Birdemic 2: The Resurrection","year":2013,"rating":3,"dubious":false,"date":"2014-02-16 14:39"},{"_id":"5177","normalized_imdb_id":2425486,"title":"Gloria","year":2013,"rating":3,"dubious":false,"date":"2014-02-16 18:58"},{"_id":"5180","normalized_imdb_id":2345567,"title":"Haunter","year":2013,"rating":3,"dubious":false,"date":"2014-02-17 05:21"},{"_id":"5188","normalized_imdb_id":2582008,"title":"Meine Schwestern","year":2013,"rating":3,"dubious":false,"date":"2014-02-20 21:20"},{"_id":"5190","normalized_imdb_id":2331143,"title":"Soshite chichi ni naru (Like Father, Like Son)","year":2013,"rating":3,"dubious":false,"date":"2014-02-22 08:30"},{"_id":"5193","normalized_imdb_id":1858481,"title":"Last Passenger","year":2013,"rating":3,"dubious":true,"date":"2014-02-22 20:30"},{"_id":"5203","normalized_imdb_id":2523600,"title":"Viva la liberta","year":2013,"rating":1,"dubious":false,"date":"2014-02-25 00:20"},{"_id":"5215","normalized_imdb_id":2083355,"title":"Best Man Holiday, The","year":2013,"rating":3,"dubious":false,"date":"2014-02-28 17:55"},{"_id":"5225","normalized_imdb_id":2388821,"title":"Zipi y Zape y el club de la canica","year":2013,"rating":0,"dubious":false,"date":"2014-03-03 21:00"},{"_id":"5268","normalized_imdb_id":2244901,"title":"I Give it a Year","year":2013,"rating":3,"dubious":false,"date":"2014-03-11 03:43"},{"_id":"5269","normalized_imdb_id":2349460,"title":"Grace Unplugged","year":2013,"rating":3,"dubious":true,"date":"2014-03-11 16:31"},{"_id":"5272","normalized_imdb_id":2113681,"title":"100-Year-Old Man Who Climbed Out the Window and Disappeared, The","year":2013,"rating":1,"dubious":false,"date":"2014-03-11 19:50"},{"_id":"5273","normalized_imdb_id":2987732,"title":"Fack ju Gohte","year":2013,"rating":3,"dubious":false,"date":"2014-03-11 19:58"},{"_id":"5283","normalized_imdb_id":2896036,"title":"Vivir es facil con los ojos cerrados","year":2013,"rating":0,"dubious":false,"date":"2014-03-15 16:44"},{"_id":"5292","normalized_imdb_id":2263944,"title":"Dragon Ball Z: Battle of Gods","year":2013,"rating":3,"dubious":true,"date":"2014-03-17 19:12"},{"_id":"5296","normalized_imdb_id":1706620,"title":"Snowpiercer","year":2013,"rating":3,"dubious":true,"date":"2014-03-18 00:35"},{"_id":"5298","normalized_imdb_id":1821641,"title":"Congress, The","year":2013,"rating":3,"dubious":false,"date":"2014-03-18 02:00"},{"_id":"5309","normalized_imdb_id":1229340,"title":"Anchorman 2: The Legend Continues","year":2013,"rating":3,"dubious":false,"date":"2014-03-22 03:48"},{"_id":"5311","normalized_imdb_id":2328549,"title":"Dark Touch","year":2013,"rating":3,"dubious":false,"date":"2014-03-22 16:29"},{"_id":"5322","normalized_imdb_id":2265534,"title":"Lifeguard, The","year":2013,"rating":3,"dubious":false,"date":"2014-03-25 05:09"},{"_id":"5335","normalized_imdb_id":2718492,"title":"Ida","year":2013,"rating":3,"dubious":false,"date":"2014-03-28 14:43"},{"_id":"5354","normalized_imdb_id":2776074,"title":"Angélique","year":2013,"rating":3,"dubious":false,"date":"2014-04-03 03:29"},{"_id":"5362","normalized_imdb_id":1311071,"title":"Kill Your Darlings","year":2013,"rating":1,"dubious":false,"date":"2014-04-04 17:11"},{"_id":"5374","normalized_imdb_id":2656122,"title":"Nashorn im Galopp","year":2013,"rating":0,"dubious":false,"date":"2014-04-08 17:53"},{"_id":"5376","normalized_imdb_id":2289538,"title":"Elle s'en va","year":2013,"rating":3,"dubious":false,"date":"2014-04-09 15:45"},{"_id":"5377","normalized_imdb_id":2406252,"title":"La Venus a la fourrure","year":2013,"rating":0,"dubious":false,"date":"2014-04-09 16:18"},{"_id":"5389","normalized_imdb_id":2545118,"title":"Blackfish","year":2013,"rating":3,"dubious":false,"date":"2014-04-12 02:26"},{"_id":"5400","normalized_imdb_id":2281159,"title":"Contracted","year":2013,"rating":3,"dubious":false,"date":"2014-04-15 19:00"},{"_id":"5428","normalized_imdb_id":2258345,"title":"Fading Gigolo","year":2013,"rating":2,"dubious":false,"date":"2014-05-02 01:53"},{"_id":"5436","normalized_imdb_id":1766175,"title":"Trap for Cinderella","year":2013,"rating":3,"dubious":false,"date":"2014-05-03 10:10"},{"_id":"5448","normalized_imdb_id":2169322,"title":"Finding Mr. Right","year":2013,"rating":1,"dubious":true,"date":"2014-05-05 02:23"},{"_id":"5457","normalized_imdb_id":2017561,"title":"Xi you xiang mo pian (Journey to the West)","year":2013,"rating":2,"dubious":true,"date":"2014-05-09 14:26"},{"_id":"5460","normalized_imdb_id":2170299,"title":"Bad Words","year":2013,"rating":2,"dubious":false,"date":"2014-05-10 19:12"},{"_id":"5464","normalized_imdb_id":2380331,"title":"Words and Pictures","year":2013,"rating":3,"dubious":false,"date":"2014-05-12 23:28"},{"_id":"5478","normalized_imdb_id":2599226,"title":"An Easter Bunny Puppy","year":2013,"rating":3,"dubious":false,"date":"2014-05-16 22:58"},{"_id":"5480","normalized_imdb_id":2429074,"title":"G.B.F.","year":2013,"rating":3,"dubious":false,"date":"2014-05-16 23:01"},{"_id":"5490","normalized_imdb_id":1767354,"title":"Odd Thomas","year":2013,"rating":3,"dubious":false,"date":"2014-05-19 11:58"},{"_id":"5491","normalized_imdb_id":2352488,"title":"Interior. Leather Bar.","year":2013,"rating":1,"dubious":false,"date":"2014-05-19 16:04"},{"_id":"5507","normalized_imdb_id":2364949,"title":"Touchy Feely","year":2013,"rating":3,"dubious":false,"date":"2014-05-28 17:57"},{"_id":"5518","normalized_imdb_id":1785612,"title":"Punk Singer, The","year":2013,"rating":3,"dubious":false,"date":"2014-05-31 09:46"},{"_id":"5520","normalized_imdb_id":2499414,"title":"Best Night Ever","year":2013,"rating":3,"dubious":false,"date":"2014-05-31 19:30"},{"_id":"5525","normalized_imdb_id":1951181,"title":"Immigrant, The","year":2013,"rating":3,"dubious":false,"date":"2014-06-03 13:01"},{"_id":"5526","normalized_imdb_id":2479800,"title":"Palo Alto","year":2013,"rating":3,"dubious":false,"date":"2014-06-03 13:10"},{"_id":"5527","normalized_imdb_id":2692904,"title":"Locke","year":2013,"rating":0,"dubious":false,"date":"2014-06-03 13:17"},{"_id":"5537","normalized_imdb_id":2289920,"title":"Justice Is Mind","year":2013,"rating":3,"dubious":false,"date":"2014-06-05 09:24"},{"_id":"5541","normalized_imdb_id":1464191,"title":"Decoding Annie Parker","year":2013,"rating":3,"dubious":false,"date":"2014-06-06 19:10"},{"_id":"5542","normalized_imdb_id":2140577,"title":"Pretty One, The","year":2013,"rating":3,"dubious":false,"date":"2014-06-06 21:44"},{"_id":"5570","normalized_imdb_id":1549920,"title":"Last Stand, The","year":2013,"rating":1,"dubious":false,"date":"2014-06-17 03:11"},{"_id":"5576","normalized_imdb_id":2179116,"title":"Kings of Summer, The","year":2013,"rating":2,"dubious":false,"date":"2014-06-19 02:05"},{"_id":"5579","normalized_imdb_id":2013293,"title":"Kaze tachinu","year":2013,"rating":3,"dubious":false,"date":"2014-06-20 06:21"},{"_id":"5587","normalized_imdb_id":2543508,"title":"Life Inside Out","year":2013,"rating":3,"dubious":false,"date":"2014-06-23 22:12"},{"_id":"5589","normalized_imdb_id":2319580,"title":"Grand Seduction, The","year":2013,"rating":1,"dubious":false,"date":"2014-06-23 23:22"},{"_id":"5604","normalized_imdb_id":2991296,"title":"Beneath","year":2013,"rating":0,"dubious":false,"date":"2014-06-30 04:23"},{"_id":"5607","normalized_imdb_id":1981107,"title":"Young and Prodigious T.S. Spivet, The","year":2013,"rating":3,"dubious":false,"date":"2014-06-30 23:16"},{"_id":"5613","normalized_imdb_id":2495118,"title":"Yip Man: Jung gik yat jin","year":2013,"rating":3,"dubious":false,"date":"2014-07-04 03:34"},{"_id":"5622","normalized_imdb_id":2167266,"title":"Tracks","year":2013,"rating":3,"dubious":false,"date":"2014-07-08 19:33"},{"_id":"5626","normalized_imdb_id":2981768,"title":"Patema Inverted","year":2013,"rating":0,"dubious":false,"date":"2014-07-10 17:29"},{"_id":"5630","normalized_imdb_id":2527186,"title":"All Cheerleaders Die","year":2013,"rating":3,"dubious":false,"date":"2014-07-12 19:24"},{"_id":"5637","normalized_imdb_id":2235902,"title":"Geography Club","year":2013,"rating":3,"dubious":false,"date":"2014-07-14 03:22"},{"_id":"5640","normalized_imdb_id":2312718,"title":"Homefront","year":2013,"rating":2,"dubious":false,"date":"2014-07-15 03:27"},{"_id":"5641","normalized_imdb_id":2531258,"title":"Once Upon a Time in Vietnam","year":2013,"rating":0,"dubious":false,"date":"2014-07-15 05:27"},{"_id":"5647","normalized_imdb_id":2333804,"title":"Zero Theorem, The","year":2013,"rating":0,"dubious":false,"date":"2014-07-23 11:57"},{"_id":"5652","normalized_imdb_id":3106846,"title":"Gabrielle","year":2013,"rating":3,"dubious":false,"date":"2014-07-24 21:21"},{"_id":"5653","normalized_imdb_id":2359024,"title":"Blue Ruin","year":2013,"rating":3,"dubious":false,"date":"2014-07-25 06:18"},{"_id":"5714","normalized_imdb_id":1847746,"title":"German Doctor, The","year":2013,"rating":3,"dubious":false,"date":"2014-08-24 19:48"},{"_id":"5670","normalized_imdb_id":2166616,"title":"Wrong Cops","year":2013,"rating":1,"dubious":false,"date":"2014-07-31 13:05"},{"_id":"5672","normalized_imdb_id":2395421,"title":"Svecenikova djeca","year":2013,"rating":1,"dubious":false,"date":"2014-08-01 16:05"},{"_id":"5676","normalized_imdb_id":2440362,"title":"Sadako 3D 2","year":2013,"rating":3,"dubious":false,"date":"2014-08-04 02:33"},{"_id":"5707","normalized_imdb_id":2288044,"title":"300 Worte Deutsch","year":2013,"rating":3,"dubious":false,"date":"2014-08-19 12:26"},{"_id":"5727","normalized_imdb_id":1545754,"title":"Are You Here","year":2013,"rating":3,"dubious":true,"date":"2014-09-06 01:23"},{"_id":"5732","normalized_imdb_id":2165859,"title":"In Fear","year":2013,"rating":0,"dubious":false,"date":"2014-09-07 20:20"},{"_id":"5746","normalized_imdb_id":1700845,"title":"Invisible Woman, The","year":2013,"rating":3,"dubious":false,"date":"2014-09-14 08:41"},{"_id":"5754","normalized_imdb_id":2234261,"title":"Love Punch, The","year":2013,"rating":3,"dubious":false,"date":"2014-09-17 07:43"},{"_id":"5758","normalized_imdb_id":1483324,"title":"At Middleton","year":2013,"rating":3,"dubious":false,"date":"2014-09-18 08:24"},{"_id":"5787","normalized_imdb_id":2317225,"title":"Machine, The","year":2013,"rating":3,"dubious":true,"date":"2014-09-28 16:18"},{"_id":"5809","normalized_imdb_id":2085957,"title":"Kill for Me","year":2013,"rating":3,"dubious":false,"date":"2014-10-05 23:57"},{"_id":"5822","normalized_imdb_id":2084093,"title":"Ashley","year":2013,"rating":3,"dubious":false,"date":"2014-10-09 00:27"},{"_id":"5829","normalized_imdb_id":2217458,"title":"Flores Raras","year":2013,"rating":3,"dubious":false,"date":"2014-10-10 18:13"},{"_id":"5841","normalized_imdb_id":2386278,"title":"Haunt","year":2013,"rating":3,"dubious":false,"date":"2014-10-15 07:32"},{"_id":"5845","normalized_imdb_id":2770480,"title":"Remember Sunday","year":2013,"rating":3,"dubious":false,"date":"2014-10-16 15:54"},{"_id":"5849","normalized_imdb_id":3100636,"title":"52 Tuesdays","year":2013,"rating":3,"dubious":false,"date":"2014-10-19 01:03"},{"_id":"5853","normalized_imdb_id":2852460,"title":"Bends","year":2013,"rating":3,"dubious":false,"date":"2014-10-19 22:11"},{"_id":"5861","normalized_imdb_id":3122122,"title":"Princess Twins of Legendale, The","year":2013,"rating":3,"dubious":false,"date":"2014-10-22 18:29"},{"_id":"5882","normalized_imdb_id":1816608,"title":"Another Me","year":2013,"rating":3,"dubious":false,"date":"2014-10-28 23:00"},{"_id":"5893","normalized_imdb_id":1528071,"title":"Horns","year":2013,"rating":3,"dubious":true,"date":"2014-11-02 19:36"},{"_id":"5895","normalized_imdb_id":3321254,"title":"Barbie & Her Sisters in a Pony Tale","year":2013,"rating":3,"dubious":false,"date":"2014-11-03 08:10"},{"_id":"5896","normalized_imdb_id":2576852,"title":"Tale of The Princess Kaguya, The","year":2013,"rating":3,"dubious":false,"date":"2014-11-03 09:15"},{"_id":"5903","normalized_imdb_id":1838520,"title":"Truth About Emanuel, The","year":2013,"rating":3,"dubious":false,"date":"2014-11-06 16:07"},{"_id":"5917","normalized_imdb_id":884726,"title":"Legends of Oz: Dorothy's Return","year":2013,"rating":3,"dubious":false,"date":"2014-11-12 20:48"},{"_id":"5985","normalized_imdb_id":2991316,"title":"Future Shift","year":2013,"rating":3,"dubious":false,"date":"2014-12-15 19:01"},{"_id":"5987","normalized_imdb_id":1714206,"title":"Spectacular Now, The","year":2013,"rating":2,"dubious":false,"date":"2014-12-16 20:11"},{"_id":"5989","normalized_imdb_id":2202928,"title":"Down River","year":2013,"rating":3,"dubious":false,"date":"2014-12-17 23:38"},{"_id":"5992","normalized_imdb_id":3521332,"title":"rastres de sÁndal","year":2013,"rating":3,"dubious":false,"date":"2014-12-19 16:24"},{"_id":"6004","normalized_imdb_id":1385956,"title":"Particle Fever","year":2013,"rating":3,"dubious":false,"date":"2014-12-31 19:40"},{"_id":"6006","normalized_imdb_id":3089388,"title":"Tim's Vermeer","year":2013,"rating":2,"dubious":false,"date":"2014-12-31 19:52"},{"_id":"6082","normalized_imdb_id":3252208,"title":"Vivian Maier Mystery, The","year":2013,"rating":3,"dubious":false,"date":"2015-01-27 07:55"},{"_id":"6083","normalized_imdb_id":1486834,"title":"What If","year":2013,"rating":3,"dubious":false,"date":"2015-01-27 18:34"},{"_id":"6086","normalized_imdb_id":2401715,"title":"Devil's Violinist, The","year":2013,"rating":3,"dubious":false,"date":"2015-01-28 15:58"},{"_id":"6100","normalized_imdb_id":3074732,"title":"Hross i oss","year":2013,"rating":3,"dubious":false,"date":"2015-02-05 15:10"},{"_id":"6110","normalized_imdb_id":2093270,"title":"Returned, The","year":2013,"rating":3,"dubious":false,"date":"2015-02-16 01:57"},{"_id":"6130","normalized_imdb_id":1922679,"title":"Open Road","year":2013,"rating":3,"dubious":false,"date":"2015-03-03 17:42"},{"_id":"6138","normalized_imdb_id":2207050,"title":"Bicycling with Molière","year":2013,"rating":2,"dubious":false,"date":"2015-03-08 09:10"},{"_id":"6142","normalized_imdb_id":2992146,"title":"Young Detective Dee: Rise of the Sea Dragon","year":2013,"rating":2,"dubious":false,"date":"2015-03-11 11:14"},{"_id":"6145","normalized_imdb_id":2392326,"title":"Le week-end","year":2013,"rating":1,"dubious":false,"date":"2015-03-12 21:00"},{"_id":"6167","normalized_imdb_id":2524674,"title":"Wetlands","year":2013,"rating":3,"dubious":false,"date":"2015-03-27 19:25"},{"_id":"6232","normalized_imdb_id":2230358,"title":"Curse of Chucky","year":2013,"rating":3,"dubious":false,"date":"2015-05-07 03:24"},{"_id":"6246","normalized_imdb_id":3078718,"title":"Zoran, il mio nipote scemo","year":2013,"rating":0,"dubious":false,"date":"2015-05-17 20:10"},{"_id":"6272","normalized_imdb_id":2226519,"title":"Plush","year":2013,"rating":3,"dubious":false,"date":"2015-05-25 09:49"},{"_id":"6377","normalized_imdb_id":1181840,"title":"Jack and the Cuckoo-Clock Heart","year":2013,"rating":3,"dubious":false,"date":"2015-07-29 17:42"},{"_id":"6415","normalized_imdb_id":2358891,"title":"La grande bellezza","year":2013,"rating":3,"dubious":false,"date":"2015-08-21 16:39"},{"_id":"6437","normalized_imdb_id":2414766,"title":"Frequencies","year":2013,"rating":3,"dubious":false,"date":"2015-09-07 13:56"},{"_id":"6458","normalized_imdb_id":2508258,"title":"First Period","year":2013,"rating":3,"dubious":false,"date":"2015-09-19 07:31"},{"_id":"6483","normalized_imdb_id":1817287,"title":"Is the Man Who Is Tall Happy?","year":2013,"rating":0,"dubious":false,"date":"2015-10-10 19:45"},{"_id":"6559","normalized_imdb_id":2334896,"title":"Dirties, The","year":2013,"rating":3,"dubious":false,"date":"2015-11-24 17:34"},{"_id":"6570","normalized_imdb_id":2193185,"title":"Rewind","year":2013,"rating":1,"dubious":false,"date":"2015-12-03 17:08"},{"_id":"6592","normalized_imdb_id":2520512,"title":"Maron","year":2013,"rating":0,"dubious":false,"date":"2015-12-11 05:14"},{"_id":"6647","normalized_imdb_id":2325989,"title":"Teen Beach Movie","year":2013,"rating":3,"dubious":false,"date":"2016-01-02 17:45"},{"_id":"6686","normalized_imdb_id":2866360,"title":"Coherence","year":2013,"rating":3,"dubious":false,"date":"2016-01-28 18:40"},{"_id":"6693","normalized_imdb_id":2084989,"title":"Upstream Color","year":2013,"rating":0,"dubious":false,"date":"2016-01-28 19:43"},{"_id":"6699","normalized_imdb_id":1067765,"title":"Adult World","year":2013,"rating":3,"dubious":false,"date":"2016-01-30 00:43"},{"_id":"6709","normalized_imdb_id":2555268,"title":"Maidentrip","year":2013,"rating":3,"dubious":false,"date":"2016-02-03 00:23"},{"_id":"6727","normalized_imdb_id":2351098,"title":"A Picture of You","year":2013,"rating":3,"dubious":false,"date":"2016-02-15 04:15"},{"_id":"6734","normalized_imdb_id":2042583,"title":"La jaula de oro","year":2013,"rating":0,"dubious":false,"date":"2016-02-18 00:15"},{"_id":"6750","normalized_imdb_id":1966566,"title":"Stalingrad","year":2013,"rating":1,"dubious":false,"date":"2016-02-28 17:36"},{"_id":"6753","normalized_imdb_id":2316411,"title":"Enemy","year":2013,"rating":1,"dubious":false,"date":"2016-02-29 17:42"},{"_id":"6892","normalized_imdb_id":2304426,"title":"Selfish Giant, The","year":2013,"rating":1,"dubious":false,"date":"2016-05-18 15:47"},{"_id":"6940","normalized_imdb_id":1667355,"title":"3096 Tage","year":2013,"rating":3,"dubious":true,"date":"2016-06-19 15:18"},{"_id":"6966","normalized_imdb_id":2450440,"title":"Last of Robin Hood, The","year":2013,"rating":3,"dubious":false,"date":"2016-07-08 06:22"},{"_id":"7026","normalized_imdb_id":1856010,"title":"House of Cards","year":2013,"rating":1,"dubious":true,"date":"2016-08-06 18:32"},{"_id":"7050","normalized_imdb_id":2964334,"title":"138 segons. L'enigma Girones","year":2013,"rating":1,"dubious":false,"date":"2016-08-18 12:39"},{"_id":"7137","normalized_imdb_id":2379082,"title":"Monster Pies","year":2013,"rating":2,"dubious":false,"date":"2016-09-24 16:03"},{"_id":"7139","normalized_imdb_id":3348476,"title":"Uitgesproken","year":2013,"rating":1,"dubious":false,"date":"2016-09-24 23:03"},{"_id":"7141","normalized_imdb_id":2831440,"title":"Ronny","year":2013,"rating":0,"dubious":false,"date":"2016-09-25 00:19"},{"_id":"7150","normalized_imdb_id":2795478,"title":"Wastelands","year":2013,"rating":0,"dubious":false,"date":"2016-09-26 22:10"},{"_id":"7151","normalized_imdb_id":2796584,"title":"Lost Angel","year":2013,"rating":0,"dubious":false,"date":"2016-09-26 22:29"},{"_id":"7204","normalized_imdb_id":3306776,"title":"Bayonetta: Bloody Fate","year":2013,"rating":3,"dubious":false,"date":"2016-10-17 00:11"},{"_id":"7207","normalized_imdb_id":2820466,"title":"Justice League: The Flashpoint Paradox","year":2013,"rating":2,"dubious":false,"date":"2016-10-17 18:52"},{"_id":"7424","normalized_imdb_id":2389182,"title":"Cheap Thrills","year":2013,"rating":1,"dubious":false,"date":"2017-01-31 09:49"},{"_id":"7452","normalized_imdb_id":2407574,"title":"My mad fat diary","year":2013,"rating":3,"dubious":false,"date":"2017-02-16 21:45"},{"_id":"7533","normalized_imdb_id":2991224,"title":"Tangerines","year":2013,"rating":0,"dubious":false,"date":"2017-03-26 18:04"},{"_id":"7500","normalized_imdb_id":2306299,"title":"Vikings","year":2013,"rating":3,"dubious":false,"date":"2017-03-10 08:08"},{"_id":"7585","normalized_imdb_id":1924396,"title":"Best Offer, The","year":2013,"rating":1,"dubious":false,"date":"2017-04-22 15:38"},{"_id":"7694","normalized_imdb_id":2201548,"title":"A Teacher","year":2013,"rating":3,"dubious":false,"date":"2017-06-18 23:10"},{"_id":"7716","normalized_imdb_id":1931602,"title":"Very Good Girls","year":2013,"rating":3,"dubious":false,"date":"2017-07-02 13:47"},{"_id":"7731","normalized_imdb_id":469021,"title":"Alan Partridge: Alpha Papa","year":2013,"rating":3,"dubious":true,"date":"2017-07-09 22:42"},{"_id":"7765","normalized_imdb_id":1817081,"title":"A Case of You","year":2013,"rating":3,"dubious":true,"date":"2017-08-01 20:21"},{"_id":"7782","normalized_imdb_id":1864750,"title":"Time in Between, The","year":2013,"rating":1,"dubious":false,"date":"2017-08-25 14:21"},{"_id":"7783","normalized_imdb_id":1647413,"title":"Vino Veritas","year":2013,"rating":3,"dubious":false,"date":"2017-08-25 14:34"},{"_id":"7807","normalized_imdb_id":2336846,"title":"She Made Them Do It","year":2013,"rating":1,"dubious":false,"date":"2017-09-20 03:59"},{"_id":"8306","normalized_imdb_id":2243537,"title":"A Haunted House","year":2013,"rating":3,"dubious":true,"date":"2018-06-24 05:49"},{"_id":"7921","normalized_imdb_id":3015110,"title":"Christmas in the City","year":2013,"rating":3,"dubious":false,"date":"2017-11-25 04:09"},{"_id":"7959","normalized_imdb_id":2503154,"title":"Den, The","year":2013,"rating":3,"dubious":false,"date":"2017-12-21 10:20"},{"_id":"8101","normalized_imdb_id":2620736,"title":"Jug Face","year":2013,"rating":3,"dubious":false,"date":"2018-03-10 00:03"},{"_id":"8195","normalized_imdb_id":1091191,"title":"Lone Survivor","year":2013,"rating":0,"dubious":false,"date":"2018-05-08 01:09"},{"_id":"8454","normalized_imdb_id":1925435,"title":"Frankenstein's Army","year":2013,"rating":0,"dubious":false,"date":"2018-10-24 15:01"},{"_id":"8629","normalized_imdb_id":2386257,"title":"White Lies","year":2013,"rating":3,"dubious":false,"date":"2019-02-03 19:21"},{"_id":"8745","normalized_imdb_id":2178470,"title":"Yeh Jawaani Hai Deewani","year":2013,"rating":3,"dubious":false,"date":"2019-05-15 02:46"},{"_id":"8817","normalized_imdb_id":2464018,"title":"Minha Mae e uma Peca: O Filme","year":2013,"rating":3,"dubious":false,"date":"2019-08-12 19:57"},{"_id":"8920","normalized_imdb_id":1786751,"title":"CBGB","year":2013,"rating":1,"dubious":false,"date":"2019-12-05 19:45"},{"_id":"8954","normalized_imdb_id":2286988,"title":"Sleeping with the Fishes","year":2013,"rating":3,"dubious":false,"date":"2020-01-08 20:01"},{"_id":"9070","normalized_imdb_id":2358592,"title":"Lucia","year":2013,"rating":3,"dubious":false,"date":"2020-04-07 18:05"},{"_id":"9170","normalized_imdb_id":3198652,"title":"Persona 3 the Movie: #1 Spring of Birth","year":2013,"rating":3,"dubious":false,"date":"2020-06-15 00:04"},{"_id":"9462","normalized_imdb_id":2387559,"title":"Delivery Man","year":2013,"rating":1,"dubious":false,"date":"2021-02-02 02:44"},{"_id":"9521","normalized_imdb_id":3856638,"title":"Gekijouban Hakuouki: Daiisshou Kyouto ranbu","year":2013,"rating":0,"dubious":false,"date":"2021-03-14 09:24"},{"_id":"9553","normalized_imdb_id":1825157,"title":"Double, The","year":2013,"rating":1,"dubious":false,"date":"2021-03-14 21:21"},{"_id":"9613","normalized_imdb_id":2193418,"title":"Hammer of the Gods","year":2013,"rating":1,"dubious":false,"date":"2021-04-03 18:42"},{"_id":"9815","normalized_imdb_id":2630134,"title":"Barbie and the pink shoes","year":2013,"rating":3,"dubious":false,"date":"2021-05-12 23:41"},{"_id":"10020","normalized_imdb_id":2852458,"title":"Stranger by the Lake","year":2013,"rating":0,"dubious":false,"date":"2021-08-24 14:47"},{"_id":"5068","normalized_imdb_id":1043726,"title":"Legend of Hercules, The","year":2014,"rating":2,"dubious":false,"date":"2014-01-13 17:34"},{"_id":"5090","normalized_imdb_id":1205537,"title":"Jack Ryan: Shadow Recruit","year":2014,"rating":1,"dubious":false,"date":"2014-01-20 16:43"},{"_id":"5449","normalized_imdb_id":2404181,"title":"Belle","year":2014,"rating":3,"dubious":false,"date":"2014-05-05 12:18"},{"_id":"5104","normalized_imdb_id":1408253,"title":"Ride Along","year":2014,"rating":0,"dubious":false,"date":"2014-01-25 01:47"},{"_id":"5132","normalized_imdb_id":1490017,"title":"Lego Movie, The","year":2014,"rating":3,"dubious":false,"date":"2014-02-04 01:30"},{"_id":"5135","normalized_imdb_id":1686821,"title":"Vampire Academy","year":2014,"rating":3,"dubious":false,"date":"2014-02-04 17:04"},{"_id":"5144","normalized_imdb_id":2177771,"title":"Monuments Men, The","year":2014,"rating":0,"dubious":false,"date":"2014-02-07 03:21"},{"_id":"5149","normalized_imdb_id":2832470,"title":"Dead Snow 2","year":2014,"rating":3,"dubious":false,"date":"2014-02-08 13:13"},{"_id":"5157","normalized_imdb_id":3186838,"title":"Fields of the Dead","year":2014,"rating":3,"dubious":false,"date":"2014-02-10 04:21"},{"_id":"5159","normalized_imdb_id":2614684,"title":"'71","year":2014,"rating":0,"dubious":false,"date":"2014-02-11 09:09"},{"_id":"5164","normalized_imdb_id":1234721,"title":"Robocop","year":2014,"rating":2,"dubious":false,"date":"2014-02-14 07:38"},{"_id":"5175","normalized_imdb_id":3118958,"title":"Lizzie Borden Took An Ax","year":2014,"rating":3,"dubious":false,"date":"2014-02-16 13:27"},{"_id":"5192","normalized_imdb_id":2172934,"title":"3 Days to Kill","year":2014,"rating":3,"dubious":false,"date":"2014-02-22 16:51"},{"_id":"5194","normalized_imdb_id":3504064,"title":"Barbie: The Pearl Princess","year":2014,"rating":3,"dubious":false,"date":"2014-02-22 22:18"},{"_id":"5196","normalized_imdb_id":1921064,"title":"Pompeii","year":2014,"rating":3,"dubious":false,"date":"2014-02-23 16:38"},{"_id":"5207","normalized_imdb_id":1376213,"title":"Adventurer: The Curse of the Midas Box, The","year":2014,"rating":1,"dubious":false,"date":"2014-02-26 19:35"},{"_id":"5214","normalized_imdb_id":3515892,"title":"Pa Boys, The","year":2014,"rating":2,"dubious":false,"date":"2014-02-28 06:03"},{"_id":"5217","normalized_imdb_id":2024469,"title":"Non-Stop","year":2014,"rating":3,"dubious":false,"date":"2014-03-01 05:32"},{"_id":"5218","normalized_imdb_id":1418377,"title":"I, Frankenstein","year":2014,"rating":1,"dubious":false,"date":"2014-03-01 09:28"},{"_id":"5219","normalized_imdb_id":2473682,"title":"Paranormal Activity: The Marked Ones","year":2014,"rating":2,"dubious":true,"date":"2014-03-01 13:09"},{"_id":"5220","normalized_imdb_id":1837709,"title":"Winter's Tale","year":2014,"rating":3,"dubious":false,"date":"2014-03-02 01:30"},{"_id":"5221","normalized_imdb_id":864835,"title":"Mr. Peabody and Sherman","year":2014,"rating":1,"dubious":false,"date":"2014-03-02 09:55"},{"_id":"5229","normalized_imdb_id":2278388,"title":"Grand Budapest Hotel, The","year":2014,"rating":1,"dubious":false,"date":"2014-03-04 11:40"},{"_id":"5236","normalized_imdb_id":1800246,"title":"That Awkward Moment","year":2014,"rating":3,"dubious":true,"date":"2014-03-05 20:50"},{"_id":"5256","normalized_imdb_id":1253863,"title":"300: Rise of an Empire","year":2014,"rating":1,"dubious":false,"date":"2014-03-08 13:20"},{"_id":"5263","normalized_imdb_id":3074694,"title":"Flowers in the Attic","year":2014,"rating":3,"dubious":false,"date":"2014-03-09 16:51"},{"_id":"5280","normalized_imdb_id":3322420,"title":"Queen","year":2014,"rating":3,"dubious":false,"date":"2014-03-14 08:21"},{"_id":"5282","normalized_imdb_id":2771372,"title":"Veronica Mars","year":2014,"rating":3,"dubious":false,"date":"2014-03-14 21:30"},{"_id":"5307","normalized_imdb_id":3528906,"title":"Our RoboCop Remake","year":2014,"rating":3,"dubious":false,"date":"2014-03-21 03:41"},{"_id":"5308","normalized_imdb_id":1840309,"title":"Divergent","year":2014,"rating":3,"dubious":false,"date":"2014-03-22 02:05"},{"_id":"5327","normalized_imdb_id":3469518,"title":"Alles Inklusive","year":2014,"rating":3,"dubious":false,"date":"2014-03-25 22:00"},{"_id":"5337","normalized_imdb_id":2528814,"title":"God's Not Dead","year":2014,"rating":3,"dubious":false,"date":"2014-03-29 03:13"},{"_id":"5340","normalized_imdb_id":2357291,"title":"Rio 2","year":2014,"rating":3,"dubious":false,"date":"2014-03-31 00:15"},{"_id":"5345","normalized_imdb_id":1621046,"title":"Cesar Chavez","year":2014,"rating":3,"dubious":false,"date":"2014-03-31 18:06"},{"_id":"5346","normalized_imdb_id":458413,"title":"A Long Way Down","year":2014,"rating":3,"dubious":false,"date":"2014-03-31 23:12"},{"_id":"5348","normalized_imdb_id":1959490,"title":"Noah","year":2014,"rating":3,"dubious":false,"date":"2014-04-01 03:38"},{"_id":"5349","normalized_imdb_id":3097084,"title":"Camp Takota","year":2014,"rating":3,"dubious":false,"date":"2014-04-01 14:29"},{"_id":"5351","normalized_imdb_id":1843866,"title":"Captain America: The Winter Soldier","year":2014,"rating":3,"dubious":false,"date":"2014-04-02 11:25"},{"_id":"5353","normalized_imdb_id":2287861,"title":"Lies I Told My Little Sister","year":2014,"rating":3,"dubious":false,"date":"2014-04-03 00:53"},{"_id":"5387","normalized_imdb_id":1647668,"title":"Million Dollar Arm","year":2014,"rating":1,"dubious":false,"date":"2014-04-11 15:35"},{"_id":"5388","normalized_imdb_id":1702014,"title":"Hoje Eu Quero Voltar Sozinho","year":2014,"rating":3,"dubious":false,"date":"2014-04-12 01:40"},{"_id":"5396","normalized_imdb_id":2382396,"title":"Joe","year":2014,"rating":2,"dubious":true,"date":"2014-04-14 13:28"},{"_id":"5397","normalized_imdb_id":1441395,"title":"Under the Skin","year":2014,"rating":0,"dubious":false,"date":"2014-04-14 13:40"},{"_id":"5405","normalized_imdb_id":2209764,"title":"Transcendence","year":2014,"rating":1,"dubious":false,"date":"2014-04-20 02:00"},{"_id":"5408","normalized_imdb_id":2536428,"title":"La crème de la crème","year":2014,"rating":3,"dubious":false,"date":"2014-04-21 09:10"},{"_id":"5409","normalized_imdb_id":2355495,"title":"Barefoot","year":2014,"rating":3,"dubious":false,"date":"2014-04-21 12:13"},{"_id":"5416","normalized_imdb_id":2388715,"title":"Oculus","year":2014,"rating":3,"dubious":false,"date":"2014-04-23 14:29"},{"_id":"5418","normalized_imdb_id":3152098,"title":"Mega Shark vs. Mecha Shark","year":2014,"rating":3,"dubious":false,"date":"2014-04-24 04:03"},{"_id":"5421","normalized_imdb_id":2707858,"title":"Yves Saint Laurent","year":2014,"rating":2,"dubious":false,"date":"2014-04-26 19:14"},{"_id":"5423","normalized_imdb_id":2203939,"title":"Other Woman, The","year":2014,"rating":3,"dubious":true,"date":"2014-04-28 14:47"},{"_id":"5429","normalized_imdb_id":1872181,"title":"Amazing Spider-Man 2","year":2014,"rating":1,"dubious":false,"date":"2014-05-02 05:33"},{"_id":"5442","normalized_imdb_id":2223990,"title":"Draft Day","year":2014,"rating":2,"dubious":false,"date":"2014-05-04 13:02"},{"_id":"5447","normalized_imdb_id":1430612,"title":"Brick Mansions","year":2014,"rating":3,"dubious":true,"date":"2014-05-05 01:59"},{"_id":"5450","normalized_imdb_id":3638604,"title":"Hard Corner: Le Film","year":2014,"rating":1,"dubious":false,"date":"2014-05-05 14:37"},{"_id":"5453","normalized_imdb_id":2483260,"title":"Pirate Fairy, The","year":2014,"rating":3,"dubious":false,"date":"2014-05-06 22:07"},{"_id":"5456","normalized_imdb_id":2582846,"title":"Fault in Our Stars, The","year":2014,"rating":3,"dubious":false,"date":"2014-05-08 19:16"},{"_id":"5458","normalized_imdb_id":3457342,"title":"Nosferatu In Love","year":2014,"rating":0,"dubious":false,"date":"2014-05-10 09:15"},{"_id":"5465","normalized_imdb_id":2463288,"title":"Walk of Shame","year":2014,"rating":3,"dubious":false,"date":"2014-05-13 11:41"},{"_id":"5466","normalized_imdb_id":831387,"title":"Godzilla","year":2014,"rating":2,"dubious":false,"date":"2014-05-13 18:22"},{"_id":"5468","normalized_imdb_id":3257692,"title":"Starving in Suburbia","year":2014,"rating":3,"dubious":false,"date":"2014-05-14 20:18"},{"_id":"5482","normalized_imdb_id":2281587,"title":"Muppets Most Wanted","year":2014,"rating":1,"dubious":false,"date":"2014-05-17 06:35"},{"_id":"5486","normalized_imdb_id":2883512,"title":"Chef","year":2014,"rating":1,"dubious":false,"date":"2014-05-18 03:52"},{"_id":"5487","normalized_imdb_id":2004420,"title":"Neighbors","year":2014,"rating":3,"dubious":true,"date":"2014-05-18 13:58"},{"_id":"5488","normalized_imdb_id":2199543,"title":"Praia do Futuro","year":2014,"rating":1,"dubious":false,"date":"2014-05-18 20:20"},{"_id":"5495","normalized_imdb_id":1976000,"title":"Two Faces of January, The","year":2014,"rating":3,"dubious":true,"date":"2014-05-20 08:54"},{"_id":"5499","normalized_imdb_id":1877832,"title":"X-Men: Days of Future Past","year":2014,"rating":1,"dubious":false,"date":"2014-05-25 02:37"},{"_id":"5508","normalized_imdb_id":1065073,"title":"Boyhood","year":2014,"rating":3,"dubious":false,"date":"2014-05-28 21:45"},{"_id":"5510","normalized_imdb_id":1587310,"title":"Maleficent","year":2014,"rating":3,"dubious":false,"date":"2014-05-29 03:08"},{"_id":"5515","normalized_imdb_id":2095649,"title":"Grace of Monaco","year":2014,"rating":3,"dubious":false,"date":"2014-05-30 14:07"},{"_id":"5516","normalized_imdb_id":2461126,"title":"Something, Anything","year":2014,"rating":3,"dubious":false,"date":"2014-05-30 22:54"},{"_id":"5517","normalized_imdb_id":2557490,"title":"A Million Ways to Die in the West","year":2014,"rating":2,"dubious":false,"date":"2014-05-31 05:10"},{"_id":"5529","normalized_imdb_id":1631867,"title":"Edge of Tomorrow","year":2014,"rating":1,"dubious":false,"date":"2014-06-03 15:29"},{"_id":"5535","normalized_imdb_id":1571249,"title":"Skeleton Twins, The","year":2014,"rating":3,"dubious":false,"date":"2014-06-04 21:46"},{"_id":"5540","normalized_imdb_id":2212008,"title":"Bag Man, The","year":2014,"rating":1,"dubious":false,"date":"2014-06-06 18:45"},{"_id":"5553","normalized_imdb_id":2412568,"title":"Ragamuffin","year":2014,"rating":2,"dubious":false,"date":"2014-06-09 03:35"},{"_id":"5559","normalized_imdb_id":2345737,"title":"Rover, The","year":2014,"rating":0,"dubious":false,"date":"2014-06-10 18:01"},{"_id":"5566","normalized_imdb_id":2545186,"title":"A coup sur","year":2014,"rating":2,"dubious":true,"date":"2014-06-15 13:51"},{"_id":"6147","normalized_imdb_id":3184934,"title":"Une nouvelle amie","year":2014,"rating":2,"dubious":false,"date":"2015-03-14 13:41"},{"_id":"5590","normalized_imdb_id":2910274,"title":"Obvious Child","year":2014,"rating":3,"dubious":false,"date":"2014-06-23 23:31"},{"_id":"5594","normalized_imdb_id":3421270,"title":"Asian School Girls","year":2014,"rating":3,"dubious":false,"date":"2014-06-27 17:47"},{"_id":"5597","normalized_imdb_id":3416742,"title":"What We Do in the Shadows","year":2014,"rating":1,"dubious":false,"date":"2014-06-28 07:40"},{"_id":"5598","normalized_imdb_id":2109248,"title":"Transformers: Age of Extinction","year":2014,"rating":3,"dubious":false,"date":"2014-06-28 09:51"},{"_id":"5599","normalized_imdb_id":3175038,"title":"Ek Villain","year":2014,"rating":2,"dubious":true,"date":"2014-06-28 14:16"},{"_id":"5608","normalized_imdb_id":2103254,"title":"Tammy","year":2014,"rating":3,"dubious":false,"date":"2014-07-01 04:05"},{"_id":"5616","normalized_imdb_id":1980929,"title":"Begin Again","year":2014,"rating":3,"dubious":false,"date":"2014-07-07 02:51"},{"_id":"5618","normalized_imdb_id":1646971,"title":"How to Train Your Dragon 2","year":2014,"rating":1,"dubious":false,"date":"2014-07-08 00:19"},{"_id":"5619","normalized_imdb_id":3777462,"title":"Wir sind die Neuen","year":2014,"rating":3,"dubious":false,"date":"2014-07-08 09:41"},{"_id":"5620","normalized_imdb_id":2234003,"title":"Calvary","year":2014,"rating":2,"dubious":false,"date":"2014-07-08 13:33"},{"_id":"5624","normalized_imdb_id":2103281,"title":"Dawn of the Planet of the Apes","year":2014,"rating":1,"dubious":false,"date":"2014-07-09 17:51"},{"_id":"5625","normalized_imdb_id":1742334,"title":"Sabotage","year":2014,"rating":3,"dubious":false,"date":"2014-07-10 02:39"},{"_id":"5633","normalized_imdb_id":3560546,"title":"Dead Girls","year":2014,"rating":3,"dubious":false,"date":"2014-07-13 15:00"},{"_id":"5642","normalized_imdb_id":2975578,"title":"Purge: Anarchy, The","year":2014,"rating":3,"dubious":false,"date":"2014-07-20 23:27"},{"_id":"5643","normalized_imdb_id":2761578,"title":"Wicked Blood","year":2014,"rating":3,"dubious":false,"date":"2014-07-22 00:39"},{"_id":"5649","normalized_imdb_id":1742044,"title":"Jersey Boys","year":2014,"rating":2,"dubious":false,"date":"2014-07-23 13:39"},{"_id":"5650","normalized_imdb_id":2872732,"title":"Lucy","year":2014,"rating":3,"dubious":false,"date":"2014-07-23 16:00"},{"_id":"5661","normalized_imdb_id":1267297,"title":"Hercules","year":2014,"rating":2,"dubious":false,"date":"2014-07-30 20:30"},{"_id":"5663","normalized_imdb_id":2294449,"title":"22 Jump St","year":2014,"rating":2,"dubious":false,"date":"2014-07-31 00:09"},{"_id":"5664","normalized_imdb_id":1086772,"title":"Blended","year":2014,"rating":3,"dubious":false,"date":"2014-07-31 00:09"},{"_id":"5668","normalized_imdb_id":3307774,"title":"Alpha House","year":2014,"rating":2,"dubious":false,"date":"2014-07-31 00:16"},{"_id":"5671","normalized_imdb_id":2015381,"title":"Guardians of the Galaxy","year":2014,"rating":3,"dubious":false,"date":"2014-07-31 17:04"},{"_id":"5674","normalized_imdb_id":2980706,"title":"Planes: Fire & Rescue","year":2014,"rating":1,"dubious":false,"date":"2014-08-03 17:33"},{"_id":"5678","normalized_imdb_id":3110960,"title":"Jimmy's Hall","year":2014,"rating":1,"dubious":false,"date":"2014-08-05 09:07"},{"_id":"5679","normalized_imdb_id":2106361,"title":"Into the Storm","year":2014,"rating":3,"dubious":false,"date":"2014-08-05 23:43"},{"_id":"5680","normalized_imdb_id":2800240,"title":"Qu'est-ce qu'on a fait au Bon Dieu?","year":2014,"rating":3,"dubious":false,"date":"2014-08-06 10:14"},{"_id":"5687","normalized_imdb_id":1291150,"title":"Teenage Mutant Ninja Turtles","year":2014,"rating":3,"dubious":false,"date":"2014-08-10 15:23"},{"_id":"5689","normalized_imdb_id":2751390,"title":"Life Of Riley","year":2014,"rating":2,"dubious":false,"date":"2014-08-11 08:01"},{"_id":"5692","normalized_imdb_id":2980648,"title":"Hundred-Foot Journey, The","year":2014,"rating":3,"dubious":false,"date":"2014-08-12 19:14"},{"_id":"5693","normalized_imdb_id":2369135,"title":"Need for Speed","year":2014,"rating":1,"dubious":false,"date":"2014-08-12 20:19"},{"_id":"5696","normalized_imdb_id":787474,"title":"Boxtrolls, The","year":2014,"rating":2,"dubious":false,"date":"2014-08-13 15:18"},{"_id":"5700","normalized_imdb_id":435651,"title":"Giver, The","year":2014,"rating":3,"dubious":false,"date":"2014-08-16 05:39"},{"_id":"5701","normalized_imdb_id":1626146,"title":"Hector and the Search for Happiness","year":2014,"rating":1,"dubious":false,"date":"2014-08-16 09:32"},{"_id":"5702","normalized_imdb_id":1924435,"title":"Let's Be Cops","year":2014,"rating":0,"dubious":false,"date":"2014-08-17 03:23"},{"_id":"5705","normalized_imdb_id":2333784,"title":"Expendables 3, The","year":2014,"rating":0,"dubious":false,"date":"2014-08-18 04:13"},{"_id":"5709","normalized_imdb_id":2247476,"title":"When the Game Stands Tall","year":2014,"rating":1,"dubious":false,"date":"2014-08-20 19:45"},{"_id":"5713","normalized_imdb_id":1972571,"title":"A Most Wanted Man","year":2014,"rating":2,"dubious":false,"date":"2014-08-23 07:58"},{"_id":"5717","normalized_imdb_id":458481,"title":"Sin City: A Dame to Kill For","year":2014,"rating":1,"dubious":false,"date":"2014-08-26 13:50"},{"_id":"5719","normalized_imdb_id":2835536,"title":"Quiet Roar, The","year":2014,"rating":3,"dubious":false,"date":"2014-08-28 16:46"},{"_id":"5720","normalized_imdb_id":1605717,"title":"Frank","year":2014,"rating":1,"dubious":false,"date":"2014-08-28 20:33"},{"_id":"5721","normalized_imdb_id":2473602,"title":"Get On Up","year":2014,"rating":2,"dubious":false,"date":"2014-08-29 02:45"},{"_id":"5722","normalized_imdb_id":1355630,"title":"If I Stay","year":2014,"rating":3,"dubious":false,"date":"2014-08-31 07:52"},{"_id":"5724","normalized_imdb_id":2756032,"title":"One I Love, The","year":2014,"rating":3,"dubious":false,"date":"2014-09-01 23:18"},{"_id":"5726","normalized_imdb_id":3992752,"title":"Women Aren't Funny","year":2014,"rating":3,"dubious":false,"date":"2014-09-06 01:15"},{"_id":"5729","normalized_imdb_id":2402157,"title":"November Man, The","year":2014,"rating":1,"dubious":false,"date":"2014-09-07 01:54"},{"_id":"5730","normalized_imdb_id":3504048,"title":"Housebound","year":2014,"rating":3,"dubious":false,"date":"2014-09-07 04:50"},{"_id":"5733","normalized_imdb_id":2870612,"title":"As Above So Below","year":2014,"rating":3,"dubious":false,"date":"2014-09-08 06:05"},{"_id":"5734","normalized_imdb_id":1600196,"title":"Drop, The","year":2014,"rating":1,"dubious":false,"date":"2014-09-08 21:31"},{"_id":"5737","normalized_imdb_id":3014666,"title":"Moms' Night Out","year":2014,"rating":3,"dubious":false,"date":"2014-09-11 04:07"},{"_id":"5745","normalized_imdb_id":2800038,"title":"Atlas Shrugged: Who Is John Galt?","year":2014,"rating":3,"dubious":false,"date":"2014-09-14 04:50"},{"_id":"5749","normalized_imdb_id":2231489,"title":"Saint Seiya: Legend of Sanctuary","year":2014,"rating":2,"dubious":false,"date":"2014-09-15 20:06"},{"_id":"5753","normalized_imdb_id":2141751,"title":"God Help the Girl","year":2014,"rating":3,"dubious":false,"date":"2014-09-17 00:05"},{"_id":"5755","normalized_imdb_id":1790864,"title":"Maze Runner, The","year":2014,"rating":1,"dubious":false,"date":"2014-09-17 18:33"},{"_id":"5756","normalized_imdb_id":3169706,"title":"Pride","year":2014,"rating":3,"dubious":false,"date":"2014-09-17 20:43"},{"_id":"5764","normalized_imdb_id":2172584,"title":"Maps to the Stars","year":2014,"rating":3,"dubious":false,"date":"2014-09-19 22:39"},{"_id":"5765","normalized_imdb_id":2618500,"title":"Lugen","year":2014,"rating":3,"dubious":false,"date":"2014-09-20 12:30"},{"_id":"5766","normalized_imdb_id":2717860,"title":"Riot Club, The","year":2014,"rating":1,"dubious":false,"date":"2014-09-20 12:39"},{"_id":"5770","normalized_imdb_id":365907,"title":"A Walk Among the Tombstones","year":2014,"rating":1,"dubious":false,"date":"2014-09-20 21:52"},{"_id":"5780","normalized_imdb_id":3729920,"title":"Disappearance of Eleanor Rigby: Them, The","year":2014,"rating":3,"dubious":false,"date":"2014-09-25 22:34"},{"_id":"5782","normalized_imdb_id":455944,"title":"Equalizer, The","year":2014,"rating":1,"dubious":false,"date":"2014-09-26 12:42"},{"_id":"5790","normalized_imdb_id":3013588,"title":"Avis de mistral","year":2014,"rating":3,"dubious":false,"date":"2014-09-30 06:10"},{"_id":"5791","normalized_imdb_id":3983072,"title":"Ein Geschenk der Gotter","year":2014,"rating":3,"dubious":false,"date":"2014-09-30 06:16"},{"_id":"5801","normalized_imdb_id":2267998,"title":"Gone Girl","year":2014,"rating":3,"dubious":false,"date":"2014-10-04 05:48"},{"_id":"5804","normalized_imdb_id":3322940,"title":"Annabelle","year":2014,"rating":3,"dubious":false,"date":"2014-10-05 05:19"},{"_id":"5807","normalized_imdb_id":2140619,"title":"Two Night Stand","year":2014,"rating":3,"dubious":false,"date":"2014-10-05 23:01"},{"_id":"5810","normalized_imdb_id":3529198,"title":"My Little Pony: Equestria Girls - Rainbow Rocks","year":2014,"rating":3,"dubious":false,"date":"2014-10-06 19:23"},{"_id":"5811","normalized_imdb_id":2870708,"title":"Wish I Was Here","year":2014,"rating":3,"dubious":false,"date":"2014-10-06 23:10"},{"_id":"5813","normalized_imdb_id":2011159,"title":"No Good Deed","year":2014,"rating":3,"dubious":true,"date":"2014-10-07 18:10"},{"_id":"5817","normalized_imdb_id":3125324,"title":"Beyond the Lights","year":2014,"rating":3,"dubious":false,"date":"2014-10-08 16:26"},{"_id":"5818","normalized_imdb_id":2582802,"title":"Whiplash","year":2014,"rating":1,"dubious":false,"date":"2014-10-08 16:30"},{"_id":"5826","normalized_imdb_id":3097204,"title":"Inbetweeners 2, The","year":2014,"rating":1,"dubious":false,"date":"2014-10-09 17:49"},{"_id":"5848","normalized_imdb_id":3971202,"title":"Le Paradis","year":2014,"rating":0,"dubious":false,"date":"2014-10-18 17:51"},{"_id":"5831","normalized_imdb_id":2034031,"title":"Laggies","year":2014,"rating":3,"dubious":false,"date":"2014-10-11 04:54"},{"_id":"5832","normalized_imdb_id":2652092,"title":"Good Lie, The","year":2014,"rating":3,"dubious":false,"date":"2014-10-11 14:15"},{"_id":"5835","normalized_imdb_id":3138192,"title":"Mostly Ghostly: Have You Met My Ghoulfriend?","year":2014,"rating":3,"dubious":false,"date":"2014-10-12 03:33"},{"_id":"5836","normalized_imdb_id":3042408,"title":"Who Am I - Kein System ist sicher","year":2014,"rating":2,"dubious":false,"date":"2014-10-12 14:20"},{"_id":"5837","normalized_imdb_id":1679276,"title":"Rico, Oskar und die Tieferschatten","year":2014,"rating":1,"dubious":false,"date":"2014-10-12 14:22"},{"_id":"5838","normalized_imdb_id":1872194,"title":"Judge, The","year":2014,"rating":2,"dubious":false,"date":"2014-10-12 22:44"},{"_id":"5839","normalized_imdb_id":1698641,"title":"Alexander and the Terrible, Horrible, No Good Very Bad Day","year":2014,"rating":3,"dubious":false,"date":"2014-10-13 02:24"},{"_id":"5847","normalized_imdb_id":3720802,"title":"Mange tes morts","year":2014,"rating":0,"dubious":false,"date":"2014-10-18 17:44"},{"_id":"5850","normalized_imdb_id":2262227,"title":"Book of Life, The","year":2014,"rating":3,"dubious":false,"date":"2014-10-19 18:42"},{"_id":"5862","normalized_imdb_id":2713180,"title":"Fury","year":2014,"rating":1,"dubious":false,"date":"2014-10-22 21:57"},{"_id":"5870","normalized_imdb_id":2955096,"title":"Happy Christmas","year":2014,"rating":3,"dubious":false,"date":"2014-10-24 12:31"},{"_id":"5874","normalized_imdb_id":2720680,"title":"Salvation, The","year":2014,"rating":1,"dubious":false,"date":"2014-10-25 16:20"},{"_id":"5887","normalized_imdb_id":2872718,"title":"Nightcrawler","year":2014,"rating":3,"dubious":false,"date":"2014-10-31 05:49"},{"_id":"5892","normalized_imdb_id":1971325,"title":"Automata","year":2014,"rating":1,"dubious":false,"date":"2014-11-02 13:33"},{"_id":"5897","normalized_imdb_id":2911666,"title":"John Wick","year":2014,"rating":1,"dubious":false,"date":"2014-11-03 20:58"},{"_id":"5899","normalized_imdb_id":3832158,"title":"Der Kleine Medicus - Geheimnisvolle Mission im Korper","year":2014,"rating":3,"dubious":false,"date":"2014-11-04 14:38"},{"_id":"5900","normalized_imdb_id":2675914,"title":"Kraftidioten","year":2014,"rating":1,"dubious":false,"date":"2014-11-04 14:39"},{"_id":"5902","normalized_imdb_id":816692,"title":"Interstellar","year":2014,"rating":3,"dubious":false,"date":"2014-11-05 08:20"},{"_id":"6001","normalized_imdb_id":2788710,"title":"Interview, The","year":2014,"rating":1,"dubious":false,"date":"2014-12-25 05:42"},{"_id":"5906","normalized_imdb_id":2245084,"title":"Big Hero 6","year":2014,"rating":3,"dubious":true,"date":"2014-11-07 23:47"},{"_id":"5911","normalized_imdb_id":2562232,"title":"Birdman","year":2014,"rating":3,"dubious":false,"date":"2014-11-10 00:33"},{"_id":"5918","normalized_imdb_id":2235108,"title":"Dear White People","year":2014,"rating":3,"dubious":false,"date":"2014-11-13 00:05"},{"_id":"5922","normalized_imdb_id":1791528,"title":"Inherent Vice","year":2014,"rating":1,"dubious":false,"date":"2014-11-14 01:25"},{"_id":"5927","normalized_imdb_id":2452254,"title":"Clouds of Sils Maria","year":2014,"rating":3,"dubious":false,"date":"2014-11-18 19:16"},{"_id":"5931","normalized_imdb_id":1951265,"title":"Hunger Games: Mockingjay - Part 1, The","year":2014,"rating":3,"dubious":false,"date":"2014-11-20 17:41"},{"_id":"5935","normalized_imdb_id":4044364,"title":"Citizenfour","year":2014,"rating":1,"dubious":false,"date":"2014-11-21 21:37"},{"_id":"5936","normalized_imdb_id":3630276,"title":"Turist","year":2014,"rating":3,"dubious":false,"date":"2014-11-21 21:39"},{"_id":"5940","normalized_imdb_id":2764784,"title":"Phoenix","year":2014,"rating":3,"dubious":false,"date":"2014-11-22 23:45"},{"_id":"5941","normalized_imdb_id":2084970,"title":"Imitation Game, The","year":2014,"rating":2,"dubious":false,"date":"2014-11-24 01:00"},{"_id":"5942","normalized_imdb_id":1100089,"title":"Foxcatcher","year":2014,"rating":1,"dubious":false,"date":"2014-11-24 02:05"},{"_id":"5947","normalized_imdb_id":2870756,"title":"Magic in the Moonlight","year":2014,"rating":3,"dubious":false,"date":"2014-11-25 21:09"},{"_id":"5950","normalized_imdb_id":1911658,"title":"Penguins of Madagascar","year":2014,"rating":0,"dubious":true,"date":"2014-11-29 01:53"},{"_id":"5953","normalized_imdb_id":2465140,"title":"Single Moms Club, The","year":2014,"rating":3,"dubious":false,"date":"2014-12-01 14:17"},{"_id":"5956","normalized_imdb_id":3921852,"title":"Barbie and the Secret Door","year":2014,"rating":3,"dubious":false,"date":"2014-12-02 06:20"},{"_id":"5957","normalized_imdb_id":3334794,"title":"About a Girl","year":2014,"rating":3,"dubious":false,"date":"2014-12-02 10:00"},{"_id":"5959","normalized_imdb_id":1020072,"title":"Selma","year":2014,"rating":3,"dubious":false,"date":"2014-12-02 21:35"},{"_id":"5965","normalized_imdb_id":1883180,"title":"En duva satt på en gren och funderade på tillvaron","year":2014,"rating":1,"dubious":false,"date":"2014-12-05 21:19"},{"_id":"6000","normalized_imdb_id":2180411,"title":"Into the Woods","year":2014,"rating":3,"dubious":false,"date":"2014-12-24 18:26"},{"_id":"5970","normalized_imdb_id":2980516,"title":"Theory of Everything, The","year":2014,"rating":3,"dubious":true,"date":"2014-12-08 18:24"},{"_id":"5971","normalized_imdb_id":2305051,"title":"Wild","year":2014,"rating":3,"dubious":false,"date":"2014-12-08 22:30"},{"_id":"5977","normalized_imdb_id":1371150,"title":"This Is Where I Leave You","year":2014,"rating":2,"dubious":false,"date":"2014-12-11 01:06"},{"_id":"5978","normalized_imdb_id":2802154,"title":"Leviathan","year":2014,"rating":3,"dubious":false,"date":"2014-12-11 23:17"},{"_id":"5981","normalized_imdb_id":1204977,"title":"Ouija","year":2014,"rating":3,"dubious":false,"date":"2014-12-13 08:21"},{"_id":"5982","normalized_imdb_id":2398231,"title":"Homesman, The","year":2014,"rating":1,"dubious":false,"date":"2014-12-15 01:15"},{"_id":"5993","normalized_imdb_id":4150316,"title":"Frozen in Time","year":2014,"rating":0,"dubious":false,"date":"2014-12-20 10:02"},{"_id":"5994","normalized_imdb_id":2310332,"title":"Hobbit: The Battle of the Five Armies, The","year":2014,"rating":1,"dubious":false,"date":"2014-12-20 10:06"},{"_id":"5997","normalized_imdb_id":1109624,"title":"Paddington","year":2014,"rating":3,"dubious":false,"date":"2014-12-21 17:22"},{"_id":"6003","normalized_imdb_id":1823664,"title":"Annie","year":2014,"rating":3,"dubious":true,"date":"2014-12-31 16:18"},{"_id":"6007","normalized_imdb_id":3612616,"title":"Mommy","year":2014,"rating":3,"dubious":false,"date":"2014-12-31 23:11"},{"_id":"6009","normalized_imdb_id":2473794,"title":"Mr. Turner","year":2014,"rating":1,"dubious":false,"date":"2015-01-02 14:10"},{"_id":"6010","normalized_imdb_id":2170593,"title":"St. Vincent","year":2014,"rating":3,"dubious":false,"date":"2015-01-02 23:05"},{"_id":"6011","normalized_imdb_id":2321549,"title":"Babadook, The","year":2014,"rating":3,"dubious":false,"date":"2015-01-03 12:18"},{"_id":"6013","normalized_imdb_id":1809398,"title":"Unbroken","year":2014,"rating":0,"dubious":false,"date":"2015-01-03 17:37"},{"_id":"6019","normalized_imdb_id":1528100,"title":"Exodus: Gods and Kings","year":2014,"rating":2,"dubious":false,"date":"2015-01-05 19:37"},{"_id":"6023","normalized_imdb_id":4299406,"title":"A Noite da Virada","year":2014,"rating":3,"dubious":false,"date":"2015-01-07 05:52"},{"_id":"6025","normalized_imdb_id":2238050,"title":"White Bird in a Blizzard","year":2014,"rating":3,"dubious":false,"date":"2015-01-07 10:34"},{"_id":"6026","normalized_imdb_id":2784678,"title":"Top Five","year":2014,"rating":3,"dubious":false,"date":"2015-01-07 15:55"},{"_id":"6032","normalized_imdb_id":3077108,"title":"Appropriate Behavior","year":2014,"rating":3,"dubious":false,"date":"2015-01-08 21:51"},{"_id":"6034","normalized_imdb_id":2398249,"title":"They Came Together","year":2014,"rating":3,"dubious":false,"date":"2015-01-09 14:24"},{"_id":"6035","normalized_imdb_id":1361318,"title":"Good People","year":2014,"rating":3,"dubious":false,"date":"2015-01-10 23:54"},{"_id":"6036","normalized_imdb_id":2326554,"title":"A Girl Walks Home Alone at Night","year":2014,"rating":3,"dubious":false,"date":"2015-01-11 00:02"},{"_id":"6037","normalized_imdb_id":1198156,"title":"You're Not You","year":2014,"rating":3,"dubious":false,"date":"2015-01-11 01:29"},{"_id":"6040","normalized_imdb_id":4056574,"title":"Agatha Raisin: The Quiche of Death","year":2014,"rating":3,"dubious":false,"date":"2015-01-12 00:26"},{"_id":"6045","normalized_imdb_id":2884206,"title":"I Origins","year":2014,"rating":3,"dubious":true,"date":"2015-01-13 21:10"},{"_id":"6050","normalized_imdb_id":3576084,"title":"Zero Motivation","year":2014,"rating":3,"dubious":false,"date":"2015-01-16 19:19"},{"_id":"6053","normalized_imdb_id":2737050,"title":"Two Days, One NIght","year":2014,"rating":3,"dubious":false,"date":"2015-01-18 22:13"},{"_id":"6054","normalized_imdb_id":2808680,"title":"Ei Kiitos","year":2014,"rating":2,"dubious":false,"date":"2015-01-18 22:36"},{"_id":"6061","normalized_imdb_id":1791681,"title":"Treehouse","year":2014,"rating":3,"dubious":false,"date":"2015-01-24 17:58"},{"_id":"6066","normalized_imdb_id":3316960,"title":"Still Alice","year":2014,"rating":3,"dubious":false,"date":"2015-01-26 20:35"},{"_id":"6091","normalized_imdb_id":2784512,"title":"Zombeavers","year":2014,"rating":3,"dubious":false,"date":"2015-02-02 16:10"},{"_id":"6108","normalized_imdb_id":2802144,"title":"Kingsman: The Secret Service","year":2014,"rating":3,"dubious":true,"date":"2015-02-14 02:24"},{"_id":"6103","normalized_imdb_id":2436386,"title":"Project Almanac","year":2014,"rating":3,"dubious":false,"date":"2015-02-07 05:13"},{"_id":"6109","normalized_imdb_id":3720788,"title":"Disappearance of Eleanor Rigby: Her, The","year":2014,"rating":3,"dubious":false,"date":"2015-02-14 05:53"},{"_id":"6117","normalized_imdb_id":2937898,"title":"A Most Violent Year","year":2014,"rating":3,"dubious":false,"date":"2015-02-18 00:22"},{"_id":"6118","normalized_imdb_id":2179136,"title":"American Sniper","year":2014,"rating":1,"dubious":false,"date":"2015-02-18 21:53"},{"_id":"6124","normalized_imdb_id":1684226,"title":"Normal Heart, The","year":2014,"rating":1,"dubious":false,"date":"2015-02-28 18:02"},{"_id":"6128","normalized_imdb_id":3442006,"title":"Cake","year":2014,"rating":3,"dubious":false,"date":"2015-03-02 18:58"},{"_id":"6139","normalized_imdb_id":3479316,"title":"Parallels","year":2014,"rating":3,"dubious":false,"date":"2015-03-08 15:59"},{"_id":"6143","normalized_imdb_id":3089326,"title":"Magical Girl","year":2014,"rating":3,"dubious":false,"date":"2015-03-11 16:35"},{"_id":"6198","normalized_imdb_id":3655522,"title":"Girlhood","year":2014,"rating":3,"dubious":false,"date":"2015-04-12 20:04"},{"_id":"6159","normalized_imdb_id":1126590,"title":"Big Eyes","year":2014,"rating":3,"dubious":false,"date":"2015-03-21 16:44"},{"_id":"6172","normalized_imdb_id":2397535,"title":"Predestination","year":2014,"rating":3,"dubious":true,"date":"2015-03-29 00:07"},{"_id":"6178","normalized_imdb_id":2920808,"title":"God's Pocket","year":2014,"rating":1,"dubious":false,"date":"2015-03-30 23:00"},{"_id":"6179","normalized_imdb_id":3368814,"title":"My Father Must Die","year":2014,"rating":3,"dubious":false,"date":"2015-03-31 19:53"},{"_id":"6180","normalized_imdb_id":3570168,"title":"Dyke Hard","year":2014,"rating":3,"dubious":true,"date":"2015-03-31 22:00"},{"_id":"6182","normalized_imdb_id":1865505,"title":"Song of the Sea","year":2014,"rating":3,"dubious":false,"date":"2015-04-01 17:36"},{"_id":"6185","normalized_imdb_id":1726592,"title":"Before I Go to Sleep","year":2014,"rating":3,"dubious":false,"date":"2015-04-02 08:37"},{"_id":"6188","normalized_imdb_id":1638002,"title":"Love, Rosie","year":2014,"rating":3,"dubious":false,"date":"2015-04-04 14:41"},{"_id":"6191","normalized_imdb_id":1121096,"title":"Seventh Son","year":2014,"rating":3,"dubious":false,"date":"2015-04-07 02:05"},{"_id":"6195","normalized_imdb_id":2639344,"title":"Love Is Strange","year":2014,"rating":2,"dubious":false,"date":"2015-04-10 13:15"},{"_id":"6196","normalized_imdb_id":900387,"title":"Suite francaise","year":2014,"rating":3,"dubious":false,"date":"2015-04-10 13:22"},{"_id":"6207","normalized_imdb_id":1978532,"title":"Someone Marry Barry","year":2014,"rating":2,"dubious":false,"date":"2015-04-19 00:06"},{"_id":"6208","normalized_imdb_id":3800012,"title":"Near Death Experience","year":2014,"rating":0,"dubious":false,"date":"2015-04-19 07:30"},{"_id":"6220","normalized_imdb_id":2396721,"title":"Scribbler, The","year":2014,"rating":3,"dubious":false,"date":"2015-04-25 18:15"},{"_id":"6219","normalized_imdb_id":2844798,"title":"Feher isten","year":2014,"rating":3,"dubious":false,"date":"2015-04-23 19:31"},{"_id":"6225","normalized_imdb_id":2788716,"title":"Welcome to Me","year":2014,"rating":3,"dubious":false,"date":"2015-05-01 18:20"},{"_id":"6230","normalized_imdb_id":2390237,"title":"Cuban Fury","year":2014,"rating":1,"dubious":false,"date":"2015-05-03 08:39"},{"_id":"6247","normalized_imdb_id":3284618,"title":"Pane e burlesque","year":2014,"rating":3,"dubious":false,"date":"2015-05-17 20:11"},{"_id":"6252","normalized_imdb_id":2474024,"title":"Last Five Years, The","year":2014,"rating":1,"dubious":false,"date":"2015-05-19 04:25"},{"_id":"6256","normalized_imdb_id":3011894,"title":"Relatos salvajes","year":2014,"rating":3,"dubious":true,"date":"2015-05-20 10:17"},{"_id":"6258","normalized_imdb_id":3499048,"title":"Gueros","year":2014,"rating":2,"dubious":false,"date":"2015-05-20 18:06"},{"_id":"6263","normalized_imdb_id":3565264,"title":"Thegidi","year":2014,"rating":2,"dubious":false,"date":"2015-05-21 20:22"},{"_id":"6264","normalized_imdb_id":3007302,"title":"Boy Meets Girl","year":2014,"rating":3,"dubious":false,"date":"2015-05-22 04:31"},{"_id":"6266","normalized_imdb_id":2908856,"title":"My Old Lady","year":2014,"rating":3,"dubious":false,"date":"2015-05-22 12:55"},{"_id":"6268","normalized_imdb_id":2955316,"title":"Ocho apellidos vascos","year":2014,"rating":1,"dubious":true,"date":"2015-05-23 12:32"},{"_id":"6304","normalized_imdb_id":3398268,"title":"Omoide no Mani (When Marnie Was There)","year":2014,"rating":3,"dubious":false,"date":"2015-06-08 20:46"},{"_id":"6305","normalized_imdb_id":903657,"title":"Love & Mercy","year":2014,"rating":2,"dubious":false,"date":"2015-06-09 15:12"},{"_id":"6307","normalized_imdb_id":3804984,"title":"Mike and I","year":2014,"rating":1,"dubious":false,"date":"2015-06-12 00:16"},{"_id":"6331","normalized_imdb_id":2515030,"title":"Escobar: Paradise Lost","year":2014,"rating":2,"dubious":false,"date":"2015-06-23 07:26"},{"_id":"6341","normalized_imdb_id":3139086,"title":"Batman: Assault on Arkham","year":2014,"rating":3,"dubious":true,"date":"2015-07-03 13:40"},{"_id":"6344","normalized_imdb_id":1958043,"title":"Houses October Built, The","year":2014,"rating":0,"dubious":false,"date":"2015-07-07 07:16"},{"_id":"6348","normalized_imdb_id":3263614,"title":"Kumiko, the Treasure Hunter","year":2014,"rating":3,"dubious":false,"date":"2015-07-10 23:41"},{"_id":"6368","normalized_imdb_id":2339741,"title":"Woman in Black 2: Angel of Death, The","year":2014,"rating":3,"dubious":false,"date":"2015-07-23 20:36"},{"_id":"6370","normalized_imdb_id":3253930,"title":"La isla minima","year":2014,"rating":2,"dubious":true,"date":"2015-07-25 22:56"},{"_id":"6373","normalized_imdb_id":3062976,"title":"Learning to Drive","year":2014,"rating":3,"dubious":false,"date":"2015-07-28 11:31"},{"_id":"6385","normalized_imdb_id":1969062,"title":"Infinitely Polar Bear","year":2014,"rating":3,"dubious":false,"date":"2015-08-01 23:19"},{"_id":"6400","normalized_imdb_id":2123146,"title":"Angry Video Game Nerd: The Movie","year":2014,"rating":3,"dubious":true,"date":"2015-08-11 19:38"},{"_id":"6413","normalized_imdb_id":1767372,"title":"She's Funny That Way","year":2014,"rating":3,"dubious":false,"date":"2015-08-19 04:14"},{"_id":"6416","normalized_imdb_id":1552224,"title":"Outcast","year":2014,"rating":3,"dubious":true,"date":"2015-08-22 04:07"},{"_id":"6421","normalized_imdb_id":2626350,"title":"Step Up All In","year":2014,"rating":2,"dubious":false,"date":"2015-08-27 09:21"},{"_id":"6423","normalized_imdb_id":2261331,"title":"Black Sea","year":2014,"rating":0,"dubious":false,"date":"2015-08-28 18:46"},{"_id":"6425","normalized_imdb_id":3149038,"title":"A Brilliant Young Mind","year":2014,"rating":1,"dubious":false,"date":"2015-08-29 22:32"},{"_id":"6440","normalized_imdb_id":3120408,"title":"Tinker Bell and the Legend of the NeverBeast","year":2014,"rating":3,"dubious":false,"date":"2015-09-11 16:31"},{"_id":"6459","normalized_imdb_id":3086442,"title":"Ich seh, Ich seh","year":2014,"rating":0,"dubious":false,"date":"2015-09-20 03:55"},{"_id":"6476","normalized_imdb_id":1605798,"title":"Effie Gray","year":2014,"rating":3,"dubious":false,"date":"2015-10-02 07:13"},{"_id":"6488","normalized_imdb_id":2490326,"title":"Cooties","year":2014,"rating":1,"dubious":false,"date":"2015-10-12 11:28"},{"_id":"6490","normalized_imdb_id":3661798,"title":"Dohee-ya","year":2014,"rating":3,"dubious":false,"date":"2015-10-13 12:34"},{"_id":"6491","normalized_imdb_id":2340650,"title":"East Side Sushi","year":2014,"rating":3,"dubious":false,"date":"2015-10-14 15:51"},{"_id":"6499","normalized_imdb_id":3294200,"title":"Falling, The","year":2014,"rating":3,"dubious":false,"date":"2015-10-18 21:09"},{"_id":"6501","normalized_imdb_id":3328716,"title":"Paper Planes","year":2014,"rating":1,"dubious":false,"date":"2015-10-18 22:29"},{"_id":"6504","normalized_imdb_id":3713166,"title":"Unfriended","year":2014,"rating":3,"dubious":false,"date":"2015-10-21 23:39"},{"_id":"6509","normalized_imdb_id":3483194,"title":"Tu Dors Nicole","year":2014,"rating":3,"dubious":false,"date":"2015-10-24 20:14"},{"_id":"6513","normalized_imdb_id":2088003,"title":"Big Game","year":2014,"rating":0,"dubious":false,"date":"2015-10-26 13:26"},{"_id":"6518","normalized_imdb_id":3235888,"title":"It Follows","year":2014,"rating":3,"dubious":false,"date":"2015-10-28 04:08"},{"_id":"6524","normalized_imdb_id":2106529,"title":"Lust for Love","year":2014,"rating":3,"dubious":false,"date":"2015-10-30 22:12"},{"_id":"6527","normalized_imdb_id":3387648,"title":"Taking of Deborah Logan, The","year":2014,"rating":3,"dubious":false,"date":"2015-11-01 18:02"},{"_id":"6528","normalized_imdb_id":2535470,"title":"Wyrmwood: Road of the Dead","year":2014,"rating":3,"dubious":false,"date":"2015-11-01 18:14"},{"_id":"6534","normalized_imdb_id":3148348,"title":"Let Us Prey","year":2014,"rating":3,"dubious":true,"date":"2015-11-05 19:30"},{"_id":"6545","normalized_imdb_id":2752688,"title":"Rosewater","year":2014,"rating":1,"dubious":false,"date":"2015-11-16 06:27"},{"_id":"6551","normalized_imdb_id":3598222,"title":"Mercenaries","year":2014,"rating":3,"dubious":false,"date":"2015-11-21 05:38"},{"_id":"6552","normalized_imdb_id":2251281,"title":"Dark Was the Night","year":2014,"rating":1,"dubious":false,"date":"2015-11-22 03:18"},{"_id":"6583","normalized_imdb_id":3145220,"title":"Hits","year":2014,"rating":3,"dubious":false,"date":"2015-12-06 18:55"},{"_id":"6600","normalized_imdb_id":3128900,"title":"Miss Meadows","year":2014,"rating":3,"dubious":false,"date":"2015-12-12 23:59"},{"_id":"6607","normalized_imdb_id":2965412,"title":"Comet","year":2014,"rating":1,"dubious":false,"date":"2015-12-15 01:44"},{"_id":"6642","normalized_imdb_id":2593224,"title":"In the Courtyard","year":2014,"rating":3,"dubious":false,"date":"2015-12-29 03:39"},{"_id":"6646","normalized_imdb_id":2505294,"title":"Ask Me Anything","year":2014,"rating":3,"dubious":true,"date":"2016-01-01 20:51"},{"_id":"6668","normalized_imdb_id":1724965,"title":"Innocence","year":2014,"rating":3,"dubious":false,"date":"2016-01-16 21:13"},{"_id":"6672","normalized_imdb_id":3344922,"title":"Hungry Hearts","year":2014,"rating":2,"dubious":false,"date":"2016-01-21 17:26"},{"_id":"6673","normalized_imdb_id":1791682,"title":"While We're Young","year":2014,"rating":3,"dubious":false,"date":"2016-01-21 17:28"},{"_id":"6690","normalized_imdb_id":3395184,"title":"Spring","year":2014,"rating":0,"dubious":false,"date":"2016-01-28 19:29"},{"_id":"6724","normalized_imdb_id":3104818,"title":"Like Sunday, Like Rain","year":2014,"rating":3,"dubious":false,"date":"2016-02-13 03:25"},{"_id":"6731","normalized_imdb_id":3717068,"title":"Court","year":2014,"rating":1,"dubious":false,"date":"2016-02-17 23:01"},{"_id":"6740","normalized_imdb_id":2870808,"title":"Life Partners","year":2014,"rating":3,"dubious":false,"date":"2016-02-22 17:22"},{"_id":"6743","normalized_imdb_id":3003800,"title":"Amour fou","year":2014,"rating":2,"dubious":false,"date":"2016-02-24 23:10"},{"_id":"6747","normalized_imdb_id":3569356,"title":"Not Cool","year":2014,"rating":3,"dubious":false,"date":"2016-02-26 21:57"},{"_id":"6765","normalized_imdb_id":2494280,"title":"Stretch","year":2014,"rating":1,"dubious":false,"date":"2016-03-08 23:28"},{"_id":"6773","normalized_imdb_id":3696086,"title":"Golden Era","year":2014,"rating":2,"dubious":false,"date":"2016-03-12 19:09"},{"_id":"6784","normalized_imdb_id":1661820,"title":"Cut Bank","year":2014,"rating":3,"dubious":false,"date":"2016-03-21 23:28"},{"_id":"6813","normalized_imdb_id":3529612,"title":"River of Fundament","year":2014,"rating":3,"dubious":false,"date":"2016-03-30 23:21"},{"_id":"6831","normalized_imdb_id":2645188,"title":"Quiet Hour, The","year":2014,"rating":3,"dubious":true,"date":"2016-04-14 17:46"},{"_id":"6845","normalized_imdb_id":3812402,"title":"How to Steal a Dog / Gae-leul hoom-chi-neun wan-byeok-han bang-beob","year":2014,"rating":3,"dubious":false,"date":"2016-04-21 22:48"},{"_id":"6860","normalized_imdb_id":1706598,"title":"Every Secret Thing","year":2014,"rating":3,"dubious":false,"date":"2016-04-29 13:38"},{"_id":"6864","normalized_imdb_id":2274604,"title":"Eat with Me","year":2014,"rating":3,"dubious":false,"date":"2016-04-30 10:44"},{"_id":"6885","normalized_imdb_id":3572132,"title":"Ju-on: Owari no hajimari","year":2014,"rating":3,"dubious":false,"date":"2016-05-15 02:51"},{"_id":"6906","normalized_imdb_id":3230162,"title":"Still the Water","year":2014,"rating":3,"dubious":false,"date":"2016-05-28 20:31"},{"_id":"6951","normalized_imdb_id":2936470,"title":"Electricity","year":2014,"rating":3,"dubious":false,"date":"2016-06-27 09:58"},{"_id":"6957","normalized_imdb_id":3726220,"title":"Der kleine Drache Kokosnuss","year":2014,"rating":0,"dubious":false,"date":"2016-07-02 15:17"},{"_id":"6958","normalized_imdb_id":3263732,"title":"Primero De Enero","year":2014,"rating":3,"dubious":true,"date":"2016-07-02 15:35"},{"_id":"6989","normalized_imdb_id":3021360,"title":"Faults","year":2014,"rating":3,"dubious":false,"date":"2016-07-21 21:11"},{"_id":"6994","normalized_imdb_id":2494384,"title":"Aloft","year":2014,"rating":3,"dubious":false,"date":"2016-07-25 15:23"},{"_id":"6996","normalized_imdb_id":443465,"title":"Before We Go","year":2014,"rating":3,"dubious":false,"date":"2016-07-26 04:01"},{"_id":"7007","normalized_imdb_id":3283556,"title":"Land Ho!","year":2014,"rating":3,"dubious":false,"date":"2016-07-30 00:02"},{"_id":"7036","normalized_imdb_id":2933544,"title":"5 Flights Up","year":2014,"rating":3,"dubious":false,"date":"2016-08-10 23:54"},{"_id":"7064","normalized_imdb_id":3748076,"title":"Damned Thing, The","year":2014,"rating":1,"dubious":false,"date":"2016-08-24 05:25"},{"_id":"7066","normalized_imdb_id":2199436,"title":"Sadilishteto","year":2014,"rating":1,"dubious":false,"date":"2016-08-24 21:37"},{"_id":"7086","normalized_imdb_id":1384925,"title":"Ardor","year":2014,"rating":0,"dubious":false,"date":"2016-08-31 14:57"},{"_id":"7133","normalized_imdb_id":3318220,"title":"Jongens","year":2014,"rating":1,"dubious":false,"date":"2016-09-22 22:20"},{"_id":"7203","normalized_imdb_id":3546114,"title":"Anatomy of a Love Seen","year":2014,"rating":3,"dubious":false,"date":"2016-10-16 22:04"},{"_id":"7208","normalized_imdb_id":3139072,"title":"Son of Batman","year":2014,"rating":2,"dubious":false,"date":"2016-10-17 19:24"},{"_id":"7226","normalized_imdb_id":4800178,"title":"Verden venter","year":2014,"rating":3,"dubious":false,"date":"2016-10-29 08:28"},{"_id":"7254","normalized_imdb_id":2693664,"title":"Young Ones","year":2014,"rating":1,"dubious":false,"date":"2016-11-10 16:20"},{"_id":"7275","normalized_imdb_id":3365778,"title":"Respire","year":2014,"rating":3,"dubious":false,"date":"2016-11-20 13:19"},{"_id":"7280","normalized_imdb_id":1780798,"title":"Clown","year":2014,"rating":3,"dubious":false,"date":"2016-11-22 00:50"},{"_id":"7314","normalized_imdb_id":3386954,"title":"Gabby Douglas Story, The","year":2014,"rating":1,"dubious":false,"date":"2016-12-05 04:30"},{"_id":"7537","normalized_imdb_id":2929690,"title":"Margarita with a Straw","year":2014,"rating":3,"dubious":false,"date":"2017-03-28 19:17"},{"_id":"7408","normalized_imdb_id":3566726,"title":"Jane the Virgin","year":2014,"rating":3,"dubious":false,"date":"2017-01-19 13:28"},{"_id":"7431","normalized_imdb_id":2818178,"title":"Nar dyrene drommer","year":2014,"rating":1,"dubious":false,"date":"2017-02-06 23:35"},{"_id":"7428","normalized_imdb_id":3060952,"title":"Justice League: WAR","year":2014,"rating":3,"dubious":false,"date":"2017-01-31 23:22"},{"_id":"7429","normalized_imdb_id":4211680,"title":"I Call It Love","year":2014,"rating":0,"dubious":true,"date":"2017-02-01 22:07"},{"_id":"8331","normalized_imdb_id":2170439,"title":"Horrible Bosses 2","year":2014,"rating":1,"dubious":false,"date":"2018-07-16 17:46"},{"_id":"7459","normalized_imdb_id":3457734,"title":"Fort Tilden","year":2014,"rating":1,"dubious":false,"date":"2017-02-18 02:10"},{"_id":"7499","normalized_imdb_id":3749900,"title":"Gotham","year":2014,"rating":3,"dubious":false,"date":"2017-03-10 08:08"},{"_id":"7516","normalized_imdb_id":2567038,"title":"Frame, The","year":2014,"rating":3,"dubious":false,"date":"2017-03-16 11:00"},{"_id":"7575","normalized_imdb_id":2316801,"title":"La belle et la bete","year":2014,"rating":3,"dubious":false,"date":"2017-04-15 23:03"},{"_id":"7578","normalized_imdb_id":3904770,"title":"Ventos de Agosto","year":2014,"rating":3,"dubious":false,"date":"2017-04-17 01:55"},{"_id":"7594","normalized_imdb_id":2872724,"title":"Out of the Dark","year":2014,"rating":3,"dubious":false,"date":"2017-04-29 04:17"},{"_id":"7633","normalized_imdb_id":1555440,"title":"Girltrash: All Night Long","year":2014,"rating":3,"dubious":false,"date":"2017-05-21 13:00"},{"_id":"7692","normalized_imdb_id":2027231,"title":"Perfect Sisters","year":2014,"rating":3,"dubious":false,"date":"2017-06-17 20:25"},{"_id":"7713","normalized_imdb_id":3390572,"title":"Haider","year":2014,"rating":2,"dubious":false,"date":"2017-06-30 22:56"},{"_id":"7730","normalized_imdb_id":3104930,"title":"Da Sweet Blood of Jesus","year":2014,"rating":3,"dubious":false,"date":"2017-07-09 21:20"},{"_id":"7764","normalized_imdb_id":3666210,"title":"H.","year":2014,"rating":1,"dubious":false,"date":"2017-07-31 21:12"},{"_id":"7776","normalized_imdb_id":3062074,"title":"Sharknado 2: The Second One","year":2014,"rating":3,"dubious":false,"date":"2017-08-12 19:52"},{"_id":"7777","normalized_imdb_id":1921149,"title":"Trash","year":2014,"rating":1,"dubious":false,"date":"2017-08-13 14:41"},{"_id":"7849","normalized_imdb_id":2497980,"title":"Lookalike, The","year":2014,"rating":3,"dubious":false,"date":"2017-10-07 17:27"},{"_id":"7880","normalized_imdb_id":2428170,"title":"Creep","year":2014,"rating":0,"dubious":false,"date":"2017-10-31 16:30"},{"_id":"7885","normalized_imdb_id":2965466,"title":"Last Shift","year":2014,"rating":3,"dubious":false,"date":"2017-11-02 02:56"},{"_id":"8330","normalized_imdb_id":1929263,"title":"Heaven Is For Real","year":2014,"rating":2,"dubious":false,"date":"2018-07-16 17:45"},{"_id":"7937","normalized_imdb_id":3438514,"title":"Sora no Otoshimono Final: Eternal My Master","year":2014,"rating":1,"dubious":false,"date":"2017-12-06 13:11"},{"_id":"7898","normalized_imdb_id":2758904,"title":"Search Party","year":2014,"rating":2,"dubious":false,"date":"2017-11-13 03:48"},{"_id":"7974","normalized_imdb_id":1609479,"title":"Better Living Through Chemistry","year":2014,"rating":1,"dubious":false,"date":"2017-12-30 07:03"},{"_id":"8099","normalized_imdb_id":2382422,"title":"Jacky in the kingdom of women","year":2014,"rating":3,"dubious":true,"date":"2018-03-08 12:50"},{"_id":"8119","normalized_imdb_id":3717532,"title":"Last: Naruto the Movie, The","year":2014,"rating":2,"dubious":true,"date":"2018-03-18 00:50"},{"_id":"8122","normalized_imdb_id":3595966,"title":"Conducta","year":2014,"rating":3,"dubious":false,"date":"2018-03-19 16:02"},{"_id":"8328","normalized_imdb_id":2096672,"title":"Dumb and Dumber 2","year":2014,"rating":3,"dubious":true,"date":"2018-07-16 17:43"},{"_id":"8162","normalized_imdb_id":2561546,"title":"Town That Dreaded Sundown, The","year":2014,"rating":3,"dubious":false,"date":"2018-04-11 20:35"},{"_id":"8327","normalized_imdb_id":2978462,"title":"Dolphin Tale 2","year":2014,"rating":3,"dubious":false,"date":"2018-07-16 17:41"},{"_id":"8236","normalized_imdb_id":2692250,"title":"Night at the Museum: Secret of the Tomb","year":2014,"rating":1,"dubious":false,"date":"2018-05-20 07:20"},{"_id":"8316","normalized_imdb_id":829150,"title":"Dracula Untold","year":2014,"rating":0,"dubious":false,"date":"2018-07-03 00:58"},{"_id":"8333","normalized_imdb_id":2183034,"title":"Earth To Echo","year":2014,"rating":1,"dubious":false,"date":"2018-07-16 19:10"},{"_id":"8340","normalized_imdb_id":1826590,"title":"About Last Night","year":2014,"rating":2,"dubious":false,"date":"2018-07-26 18:15"},{"_id":"8361","normalized_imdb_id":2725962,"title":"What We Did on Our Holiday","year":2014,"rating":3,"dubious":false,"date":"2018-08-06 15:28"},{"_id":"8377","normalized_imdb_id":2377322,"title":"Deliver Us From Evil","year":2014,"rating":2,"dubious":false,"date":"2018-08-16 20:09"},{"_id":"8531","normalized_imdb_id":2474310,"title":"Viharsarok","year":2014,"rating":1,"dubious":false,"date":"2018-12-14 22:39"},{"_id":"8560","normalized_imdb_id":3148952,"title":"Der Kreis","year":2014,"rating":1,"dubious":false,"date":"2018-12-15 00:02"},{"_id":"8561","normalized_imdb_id":3717242,"title":"Out in the Night","year":2014,"rating":3,"dubious":false,"date":"2018-12-15 00:03"},{"_id":"8605","normalized_imdb_id":3958098,"title":"Dolares de arena (Sand Dollars)","year":2014,"rating":3,"dubious":false,"date":"2019-01-14 18:06"},{"_id":"8650","normalized_imdb_id":1878942,"title":"Date and Switch","year":2014,"rating":2,"dubious":false,"date":"2019-02-25 04:07"},{"_id":"8689","normalized_imdb_id":3010990,"title":"Extirpador de Idolatrias","year":2014,"rating":3,"dubious":false,"date":"2019-03-28 17:09"},{"_id":"8702","normalized_imdb_id":2180411,"title":"Into the Woods","year":2014,"rating":3,"dubious":true,"date":"2019-04-16 13:20"},{"_id":"8739","normalized_imdb_id":2980794,"title":"Highway","year":2014,"rating":0,"dubious":false,"date":"2019-05-09 06:30"},{"_id":"8944","normalized_imdb_id":3428912,"title":"Happy Valley","year":2014,"rating":1,"dubious":false,"date":"2019-12-31 21:28"},{"_id":"8957","normalized_imdb_id":2751310,"title":"Sex Ed","year":2014,"rating":3,"dubious":true,"date":"2020-01-10 18:40"},{"_id":"9162","normalized_imdb_id":2977090,"title":"Alex of Venice","year":2014,"rating":3,"dubious":false,"date":"2020-06-08 01:27"},{"_id":"9415","normalized_imdb_id":2446042,"title":"Taken 3","year":2014,"rating":1,"dubious":false,"date":"2020-12-28 00:06"},{"_id":"9506","normalized_imdb_id":3840898,"title":"Tempest, The","year":2014,"rating":3,"dubious":true,"date":"2021-03-06 17:55"},{"_id":"9522","normalized_imdb_id":5825186,"title":"Gekijouban Hakuouki: Dainishou shikon soukyou","year":2014,"rating":0,"dubious":false,"date":"2021-03-14 09:26"},{"_id":"9659","normalized_imdb_id":2338151,"title":"PK","year":2014,"rating":2,"dubious":false,"date":"2021-04-19 07:50"},{"_id":"9665","normalized_imdb_id":3153524,"title":"Awesome Asian Bad Guys","year":2014,"rating":1,"dubious":false,"date":"2021-04-21 15:10"},{"_id":"10056","normalized_imdb_id":4264406,"title":"Mass Extinction: Life at the Brink","year":2014,"rating":0,"dubious":false,"date":"2021-09-17 03:13"},{"_id":"10156","normalized_imdb_id":3068894,"title":"Red Tent, The","year":2014,"rating":3,"dubious":false,"date":"2021-12-09 16:25"},{"_id":"6148","normalized_imdb_id":2224026,"title":"Home","year":2015,"rating":3,"dubious":false,"date":"2015-03-14 19:50"},{"_id":"6048","normalized_imdb_id":4216934,"title":"Frau Muller muss weg","year":2015,"rating":3,"dubious":false,"date":"2015-01-15 20:10"},{"_id":"6065","normalized_imdb_id":884732,"title":"Wedding Ringer, The","year":2015,"rating":3,"dubious":false,"date":"2015-01-26 08:04"},{"_id":"6084","normalized_imdb_id":470752,"title":"Ex Machina","year":2015,"rating":1,"dubious":false,"date":"2015-01-27 21:53"},{"_id":"6093","normalized_imdb_id":4191054,"title":"Strange Magic","year":2015,"rating":3,"dubious":false,"date":"2015-02-03 04:50"},{"_id":"6094","normalized_imdb_id":2994832,"title":"Summer of Sangaile, The","year":2015,"rating":3,"dubious":false,"date":"2015-02-03 10:03"},{"_id":"6098","normalized_imdb_id":3045616,"title":"Mortdecai","year":2015,"rating":1,"dubious":false,"date":"2015-02-04 21:43"},{"_id":"6101","normalized_imdb_id":1617661,"title":"Jupiter Ascending","year":2015,"rating":3,"dubious":false,"date":"2015-02-05 16:51"},{"_id":"6105","normalized_imdb_id":2279373,"title":"SpongeBob Movie: Sponge Out of Water, The","year":2015,"rating":2,"dubious":false,"date":"2015-02-08 20:21"},{"_id":"6107","normalized_imdb_id":2570858,"title":"Duke of Burgundy, The","year":2015,"rating":3,"dubious":false,"date":"2015-02-09 17:05"},{"_id":"6113","normalized_imdb_id":2322441,"title":"Fifty Shades of Grey","year":2015,"rating":3,"dubious":false,"date":"2015-02-16 18:37"},{"_id":"6125","normalized_imdb_id":1666801,"title":"DUFF, The","year":2015,"rating":3,"dubious":false,"date":"2015-02-28 20:35"},{"_id":"6132","normalized_imdb_id":3856042,"title":"Bad Hair Day","year":2015,"rating":3,"dubious":false,"date":"2015-03-03 20:58"},{"_id":"6134","normalized_imdb_id":1823672,"title":"Chappie","year":2015,"rating":1,"dubious":false,"date":"2015-03-07 00:12"},{"_id":"6152","normalized_imdb_id":1661199,"title":"Cinderella","year":2015,"rating":3,"dubious":false,"date":"2015-03-19 13:48"},{"_id":"6156","normalized_imdb_id":4247740,"title":"Three Es, The","year":2015,"rating":3,"dubious":false,"date":"2015-03-20 19:34"},{"_id":"6157","normalized_imdb_id":2908446,"title":"Insurgent","year":2015,"rating":3,"dubious":false,"date":"2015-03-21 02:45"},{"_id":"6163","normalized_imdb_id":3397082,"title":"Tod den Hippies!! Es lebe der Punk!","year":2015,"rating":1,"dubious":false,"date":"2015-03-26 12:24"},{"_id":"6166","normalized_imdb_id":2918436,"title":"Lazarus Effect, The","year":2015,"rating":3,"dubious":false,"date":"2015-03-27 12:05"},{"_id":"6186","normalized_imdb_id":2820852,"title":"Furious 7","year":2015,"rating":3,"dubious":false,"date":"2015-04-03 14:55"},{"_id":"6187","normalized_imdb_id":4392438,"title":"La Passion d'Augustine","year":2015,"rating":3,"dubious":false,"date":"2015-04-04 03:33"},{"_id":"6190","normalized_imdb_id":2210769,"title":"Liza, the fox fairy","year":2015,"rating":3,"dubious":false,"date":"2015-04-05 14:23"},{"_id":"6197","normalized_imdb_id":3711622,"title":"Ghosthunters","year":2015,"rating":3,"dubious":true,"date":"2015-04-10 20:18"},{"_id":"6217","normalized_imdb_id":2395427,"title":"Avengers: Age of Ultron","year":2015,"rating":3,"dubious":true,"date":"2015-04-23 18:17"},{"_id":"6222","normalized_imdb_id":4056738,"title":"Do You Believe?","year":2015,"rating":3,"dubious":true,"date":"2015-04-29 14:52"},{"_id":"6223","normalized_imdb_id":2273657,"title":"True Story","year":2015,"rating":1,"dubious":false,"date":"2015-04-29 19:11"},{"_id":"6226","normalized_imdb_id":3077214,"title":"Suffragette","year":2015,"rating":3,"dubious":false,"date":"2015-05-01 18:22"},{"_id":"6227","normalized_imdb_id":3661298,"title":"Septembers of Shiraz","year":2015,"rating":3,"dubious":true,"date":"2015-05-01 18:26"},{"_id":"6229","normalized_imdb_id":4145324,"title":"Bound","year":2015,"rating":3,"dubious":false,"date":"2015-05-03 07:57"},{"_id":"6284","normalized_imdb_id":2848292,"title":"Pitch Perfect 2","year":2015,"rating":3,"dubious":false,"date":"2015-05-31 03:54"},{"_id":"6237","normalized_imdb_id":2935476,"title":"Far From the Madding Crowd","year":2015,"rating":3,"dubious":false,"date":"2015-05-10 01:18"},{"_id":"6242","normalized_imdb_id":1392190,"title":"Mad Max: Fury Road","year":2015,"rating":3,"dubious":false,"date":"2015-05-15 17:36"},{"_id":"6283","normalized_imdb_id":3480446,"title":"Almost Mercy","year":2015,"rating":2,"dubious":true,"date":"2015-05-30 15:53"},{"_id":"6254","normalized_imdb_id":2381941,"title":"Focus","year":2015,"rating":1,"dubious":false,"date":"2015-05-19 14:32"},{"_id":"6255","normalized_imdb_id":2096673,"title":"Inside Out","year":2015,"rating":3,"dubious":false,"date":"2015-05-20 04:14"},{"_id":"6259","normalized_imdb_id":4000768,"title":"L'antiquaire","year":2015,"rating":3,"dubious":false,"date":"2015-05-20 20:18"},{"_id":"6260","normalized_imdb_id":4265878,"title":"Dora oder Die sexuellen Neurosen unserer Eltern","year":2015,"rating":3,"dubious":false,"date":"2015-05-21 10:29"},{"_id":"6261","normalized_imdb_id":3707396,"title":"Hedi Schneider steckt fest","year":2015,"rating":3,"dubious":false,"date":"2015-05-21 10:32"},{"_id":"6265","normalized_imdb_id":3079380,"title":"Spy","year":2015,"rating":3,"dubious":false,"date":"2015-05-22 07:55"},{"_id":"6267","normalized_imdb_id":1964418,"title":"Tomorrowland","year":2015,"rating":3,"dubious":false,"date":"2015-05-22 16:05"},{"_id":"6269","normalized_imdb_id":1655441,"title":"Age of Adaline, The","year":2015,"rating":3,"dubious":false,"date":"2015-05-23 22:03"},{"_id":"6271","normalized_imdb_id":2639254,"title":"A Little Chaos","year":2015,"rating":3,"dubious":true,"date":"2015-05-25 00:24"},{"_id":"6275","normalized_imdb_id":1950135,"title":"Drunk Wedding","year":2015,"rating":2,"dubious":false,"date":"2015-05-26 16:35"},{"_id":"6277","normalized_imdb_id":4171032,"title":"World of Tomorrow","year":2015,"rating":3,"dubious":false,"date":"2015-05-28 17:19"},{"_id":"6278","normalized_imdb_id":3472226,"title":"Kung Fury","year":2015,"rating":2,"dubious":false,"date":"2015-05-28 20:47"},{"_id":"6279","normalized_imdb_id":4428814,"title":"La loi du marché","year":2015,"rating":1,"dubious":false,"date":"2015-05-29 18:25"},{"_id":"6281","normalized_imdb_id":2126355,"title":"San Andreas","year":2015,"rating":3,"dubious":false,"date":"2015-05-30 03:55"},{"_id":"6282","normalized_imdb_id":4171544,"title":"Predator Dark Ages","year":2015,"rating":0,"dubious":false,"date":"2015-05-30 12:40"},{"_id":"6288","normalized_imdb_id":2404425,"title":"Woman in Gold","year":2015,"rating":3,"dubious":false,"date":"2015-06-01 21:37"},{"_id":"6291","normalized_imdb_id":3704352,"title":"Bessie","year":2015,"rating":3,"dubious":false,"date":"2015-06-02 02:25"},{"_id":"6292","normalized_imdb_id":3195644,"title":"Insidious: Chapter 3","year":2015,"rating":3,"dubious":false,"date":"2015-06-04 01:50"},{"_id":"6294","normalized_imdb_id":4714032,"title":"Battledream Chronicle","year":2015,"rating":3,"dubious":false,"date":"2015-06-05 07:47"},{"_id":"6296","normalized_imdb_id":4466936,"title":"Un peu, beaucoup, aveuglement!","year":2015,"rating":3,"dubious":false,"date":"2015-06-05 11:39"},{"_id":"6297","normalized_imdb_id":2493486,"title":"Last Knights","year":2015,"rating":1,"dubious":false,"date":"2015-06-05 15:48"},{"_id":"6299","normalized_imdb_id":2199571,"title":"Run All Night","year":2015,"rating":1,"dubious":true,"date":"2015-06-07 15:06"},{"_id":"6300","normalized_imdb_id":3058674,"title":"VANish","year":2015,"rating":1,"dubious":false,"date":"2015-06-07 17:32"},{"_id":"6303","normalized_imdb_id":1674771,"title":"Entourage","year":2015,"rating":2,"dubious":false,"date":"2015-06-08 12:19"},{"_id":"6306","normalized_imdb_id":369610,"title":"Jurassic World","year":2015,"rating":3,"dubious":false,"date":"2015-06-10 15:11"},{"_id":"6316","normalized_imdb_id":3877674,"title":"Maend & hons","year":2015,"rating":1,"dubious":false,"date":"2015-06-15 23:12"},{"_id":"6329","normalized_imdb_id":2872750,"title":"Shaun the Sheep Movie","year":2015,"rating":0,"dubious":false,"date":"2015-06-22 13:53"},{"_id":"6321","normalized_imdb_id":4780834,"title":"Reason I Shop Online, The","year":2015,"rating":3,"dubious":false,"date":"2015-06-18 12:07"},{"_id":"6322","normalized_imdb_id":1441953,"title":"Testament of Youth","year":2015,"rating":3,"dubious":false,"date":"2015-06-18 14:21"},{"_id":"6328","normalized_imdb_id":2515034,"title":"Gunman, The","year":2015,"rating":1,"dubious":false,"date":"2015-06-22 13:15"},{"_id":"6325","normalized_imdb_id":2561572,"title":"Get Hard","year":2015,"rating":1,"dubious":false,"date":"2015-06-19 21:41"},{"_id":"6330","normalized_imdb_id":3430042,"title":"Phoenix Project, The","year":2015,"rating":0,"dubious":false,"date":"2015-06-22 14:55"},{"_id":"6334","normalized_imdb_id":3019620,"title":"Titli","year":2015,"rating":0,"dubious":false,"date":"2015-06-28 06:31"},{"_id":"6336","normalized_imdb_id":4026600,"title":"Four Warriors, The","year":2015,"rating":1,"dubious":false,"date":"2015-06-29 16:42"},{"_id":"6338","normalized_imdb_id":2293640,"title":"Minions","year":2015,"rating":3,"dubious":false,"date":"2015-06-30 16:50"},{"_id":"6340","normalized_imdb_id":1340138,"title":"Terminator Genisys","year":2015,"rating":0,"dubious":false,"date":"2015-07-02 06:24"},{"_id":"6342","normalized_imdb_id":3878542,"title":"Justice League: Throne of Atlantis","year":2015,"rating":3,"dubious":true,"date":"2015-07-03 13:45"},{"_id":"6343","normalized_imdb_id":4226388,"title":"Victoria","year":2015,"rating":0,"dubious":false,"date":"2015-07-05 18:39"},{"_id":"6350","normalized_imdb_id":2637276,"title":"Ted 2","year":2015,"rating":1,"dubious":false,"date":"2015-07-13 02:29"},{"_id":"6354","normalized_imdb_id":1014763,"title":"Child 44","year":2015,"rating":2,"dubious":false,"date":"2015-07-15 16:13"},{"_id":"6355","normalized_imdb_id":3966404,"title":"Mustang","year":2015,"rating":3,"dubious":false,"date":"2015-07-15 17:59"},{"_id":"6356","normalized_imdb_id":3844362,"title":"Overnight, The","year":2015,"rating":3,"dubious":false,"date":"2015-07-15 20:28"},{"_id":"6357","normalized_imdb_id":3152624,"title":"Trainwreck","year":2015,"rating":3,"dubious":false,"date":"2015-07-15 20:37"},{"_id":"6359","normalized_imdb_id":478970,"title":"Ant-Man","year":2015,"rating":2,"dubious":false,"date":"2015-07-17 02:51"},{"_id":"6361","normalized_imdb_id":2555736,"title":"Second Best Exotic Marigold Hotel, The","year":2015,"rating":3,"dubious":false,"date":"2015-07-18 01:11"},{"_id":"6364","normalized_imdb_id":3205376,"title":"Slow West","year":2015,"rating":0,"dubious":false,"date":"2015-07-20 22:50"},{"_id":"6365","normalized_imdb_id":4359416,"title":"Taxi","year":2015,"rating":3,"dubious":true,"date":"2015-07-20 22:53"},{"_id":"6366","normalized_imdb_id":1798684,"title":"Southpaw","year":2015,"rating":2,"dubious":false,"date":"2015-07-22 05:37"},{"_id":"6367","normalized_imdb_id":2120120,"title":"Pixels","year":2015,"rating":1,"dubious":false,"date":"2015-07-23 18:47"},{"_id":"6369","normalized_imdb_id":1731701,"title":"Barely Lethal","year":2015,"rating":3,"dubious":false,"date":"2015-07-23 21:11"},{"_id":"6372","normalized_imdb_id":2268016,"title":"Magic Mike XXL","year":2015,"rating":3,"dubious":false,"date":"2015-07-27 18:43"},{"_id":"6375","normalized_imdb_id":3715320,"title":"Irrational Man","year":2015,"rating":2,"dubious":false,"date":"2015-07-29 04:38"},{"_id":"6376","normalized_imdb_id":4895704,"title":"Next Stop L.A.","year":2015,"rating":3,"dubious":false,"date":"2015-07-29 11:14"},{"_id":"6383","normalized_imdb_id":4270516,"title":"Grandma","year":2015,"rating":3,"dubious":false,"date":"2015-08-01 06:30"},{"_id":"6386","normalized_imdb_id":3440298,"title":"Descendants","year":2015,"rating":3,"dubious":false,"date":"2015-08-01 23:34"},{"_id":"6388","normalized_imdb_id":3622592,"title":"Papertowns","year":2015,"rating":2,"dubious":false,"date":"2015-08-03 15:20"},{"_id":"6389","normalized_imdb_id":2381249,"title":"Mission: Impossible - Rogue Nation","year":2015,"rating":0,"dubious":false,"date":"2015-08-04 04:13"},{"_id":"6390","normalized_imdb_id":3824458,"title":"Tangerine","year":2015,"rating":3,"dubious":false,"date":"2015-08-04 19:16"},{"_id":"6392","normalized_imdb_id":1502712,"title":"Fantastic Four","year":2015,"rating":0,"dubious":false,"date":"2015-08-05 20:54"},{"_id":"6393","normalized_imdb_id":3969208,"title":"Trust Fund","year":2015,"rating":3,"dubious":false,"date":"2015-08-06 03:45"},{"_id":"6399","normalized_imdb_id":3764966,"title":"Teen Beach 2","year":2015,"rating":3,"dubious":false,"date":"2015-08-10 18:46"},{"_id":"6404","normalized_imdb_id":4897214,"title":"Timelike","year":2015,"rating":3,"dubious":false,"date":"2015-08-14 00:20"},{"_id":"6407","normalized_imdb_id":1638355,"title":"Man from U.N.C.L.E., The","year":2015,"rating":3,"dubious":true,"date":"2015-08-16 04:34"},{"_id":"6409","normalized_imdb_id":3416744,"title":"End of the Tour, The","year":2015,"rating":1,"dubious":false,"date":"2015-08-17 20:27"},{"_id":"6410","normalized_imdb_id":3623726,"title":"Ricki and the Flash","year":2015,"rating":3,"dubious":false,"date":"2015-08-17 20:29"},{"_id":"6412","normalized_imdb_id":3742378,"title":"Que Horas Ela Volta?","year":2015,"rating":3,"dubious":false,"date":"2015-08-19 04:12"},{"_id":"6418","normalized_imdb_id":3278330,"title":"Il racconto dei racconti","year":2015,"rating":3,"dubious":false,"date":"2015-08-24 23:49"},{"_id":"6419","normalized_imdb_id":3236120,"title":"I'll See You in My Dreams","year":2015,"rating":3,"dubious":false,"date":"2015-08-25 19:19"},{"_id":"6422","normalized_imdb_id":2334733,"title":"Madame Bovary","year":2015,"rating":2,"dubious":false,"date":"2015-08-27 14:08"},{"_id":"6424","normalized_imdb_id":2140379,"title":"Self/less","year":2015,"rating":1,"dubious":false,"date":"2015-08-29 22:29"},{"_id":"6426","normalized_imdb_id":4437640,"title":"Batman Unlimited: Animal Instincts","year":2015,"rating":1,"dubious":false,"date":"2015-08-29 23:14"},{"_id":"6430","normalized_imdb_id":3168230,"title":"Mr. Holmes","year":2015,"rating":1,"dubious":false,"date":"2015-09-02 21:43"},{"_id":"6438","normalized_imdb_id":3487994,"title":"Bloodsucking Bastards","year":2015,"rating":2,"dubious":true,"date":"2015-09-09 11:30"},{"_id":"6434","normalized_imdb_id":1754656,"title":"little prince, The","year":2015,"rating":3,"dubious":false,"date":"2015-09-06 11:19"},{"_id":"6435","normalized_imdb_id":1398426,"title":"Straight Outta Compton","year":2015,"rating":1,"dubious":false,"date":"2015-09-06 16:55"},{"_id":"6436","normalized_imdb_id":2582496,"title":"Me and Earl and the Dying Girl","year":2015,"rating":3,"dubious":false,"date":"2015-09-06 16:57"},{"_id":"6447","normalized_imdb_id":3862750,"title":"Perfect Guy, The","year":2015,"rating":2,"dubious":false,"date":"2015-09-13 02:29"},{"_id":"6449","normalized_imdb_id":2742544,"title":"Until Dawn","year":2015,"rating":3,"dubious":false,"date":"2015-09-13 16:24"},{"_id":"6457","normalized_imdb_id":4046784,"title":"Maze Runner: The Scorch Trials","year":2015,"rating":3,"dubious":false,"date":"2015-09-17 18:50"},{"_id":"6487","normalized_imdb_id":2510894,"title":"Hotel Transylvania 2","year":2015,"rating":3,"dubious":false,"date":"2015-10-12 05:45"},{"_id":"6472","normalized_imdb_id":3316948,"title":"American Ultra","year":2015,"rating":1,"dubious":false,"date":"2015-10-01 08:56"},{"_id":"6466","normalized_imdb_id":3659388,"title":"Martian, The","year":2015,"rating":3,"dubious":false,"date":"2015-09-24 21:31"},{"_id":"6467","normalized_imdb_id":1243974,"title":"Aloha","year":2015,"rating":3,"dubious":false,"date":"2015-09-26 02:40"},{"_id":"6469","normalized_imdb_id":3291148,"title":"Just Jim","year":2015,"rating":1,"dubious":false,"date":"2015-09-26 17:06"},{"_id":"6470","normalized_imdb_id":3397884,"title":"Sicario","year":2015,"rating":0,"dubious":false,"date":"2015-09-28 01:42"},{"_id":"6475","normalized_imdb_id":1596345,"title":"Pawn Sacrifice","year":2015,"rating":1,"dubious":false,"date":"2015-10-02 03:55"},{"_id":"6478","normalized_imdb_id":2403021,"title":"Green Inferno, The","year":2015,"rating":3,"dubious":false,"date":"2015-10-03 08:32"},{"_id":"6479","normalized_imdb_id":3850214,"title":"Dope","year":2015,"rating":1,"dubious":false,"date":"2015-10-03 15:12"},{"_id":"6482","normalized_imdb_id":4450396,"title":"My Little Pony: Equestria Girls - Friendship Games","year":2015,"rating":3,"dubious":false,"date":"2015-10-10 01:57"},{"_id":"6486","normalized_imdb_id":1355683,"title":"Black Mass","year":2015,"rating":1,"dubious":false,"date":"2015-10-12 05:20"},{"_id":"6489","normalized_imdb_id":2118624,"title":"Final Girls, The","year":2015,"rating":3,"dubious":false,"date":"2015-10-13 08:23"},{"_id":"6494","normalized_imdb_id":2554274,"title":"Crimson Peak","year":2015,"rating":3,"dubious":false,"date":"2015-10-16 17:38"},{"_id":"6495","normalized_imdb_id":3480796,"title":"Vice","year":2015,"rating":3,"dubious":false,"date":"2015-10-16 22:36"},{"_id":"6502","normalized_imdb_id":3682448,"title":"Bridge of Spies","year":2015,"rating":1,"dubious":false,"date":"2015-10-18 23:58"},{"_id":"6506","normalized_imdb_id":2080374,"title":"Steve Jobs","year":2015,"rating":3,"dubious":false,"date":"2015-10-23 15:12"},{"_id":"6508","normalized_imdb_id":1051904,"title":"Goosebumps","year":2015,"rating":2,"dubious":false,"date":"2015-10-24 16:41"},{"_id":"6510","normalized_imdb_id":3488710,"title":"Walk, The","year":2015,"rating":1,"dubious":true,"date":"2015-10-25 19:40"},{"_id":"6519","normalized_imdb_id":2379713,"title":"Spectre","year":2015,"rating":1,"dubious":false,"date":"2015-10-28 10:50"},{"_id":"6597","normalized_imdb_id":2479478,"title":"Ridiculous 6, The","year":2015,"rating":2,"dubious":false,"date":"2015-12-12 21:57"},{"_id":"6521","normalized_imdb_id":4298966,"title":"Murder Pact, The","year":2015,"rating":3,"dubious":false,"date":"2015-10-30 02:05"},{"_id":"6530","normalized_imdb_id":2710826,"title":"AfterDeath","year":2015,"rating":3,"dubious":false,"date":"2015-11-02 06:11"},{"_id":"6532","normalized_imdb_id":3430416,"title":"Schneider vs. Bax","year":2015,"rating":2,"dubious":false,"date":"2015-11-05 14:04"},{"_id":"6537","normalized_imdb_id":4979652,"title":"Wo shi zheng ren","year":2015,"rating":0,"dubious":false,"date":"2015-11-07 02:49"},{"_id":"6548","normalized_imdb_id":2452042,"title":"Peanuts Movie, The","year":2015,"rating":3,"dubious":false,"date":"2015-11-18 22:56"},{"_id":"6549","normalized_imdb_id":2381111,"title":"Brooklyn","year":2015,"rating":3,"dubious":false,"date":"2015-11-19 01:51"},{"_id":"6557","normalized_imdb_id":1976009,"title":"Victor Frankenstein","year":2015,"rating":0,"dubious":false,"date":"2015-11-23 23:41"},{"_id":"6558","normalized_imdb_id":1979388,"title":"Good Dinosaur, The","year":2015,"rating":3,"dubious":false,"date":"2015-11-24 08:27"},{"_id":"6560","normalized_imdb_id":1951266,"title":"Hunger Games: Mockingjay - Part 2, The","year":2015,"rating":3,"dubious":false,"date":"2015-11-24 21:00"},{"_id":"6563","normalized_imdb_id":2402927,"title":"Carol","year":2015,"rating":3,"dubious":false,"date":"2015-11-29 15:56"},{"_id":"6565","normalized_imdb_id":3203606,"title":"Trumbo","year":2015,"rating":3,"dubious":true,"date":"2015-11-29 17:41"},{"_id":"6566","normalized_imdb_id":2910904,"title":"Dressmaker, The","year":2015,"rating":3,"dubious":true,"date":"2015-11-30 06:15"},{"_id":"6567","normalized_imdb_id":1663202,"title":"Revenant, The","year":2015,"rating":0,"dubious":false,"date":"2015-12-01 05:11"},{"_id":"6572","normalized_imdb_id":2717822,"title":"Blackhat","year":2015,"rating":1,"dubious":false,"date":"2015-12-04 15:45"},{"_id":"6581","normalized_imdb_id":3368222,"title":"Angry Indian Goddesses","year":2015,"rating":3,"dubious":false,"date":"2015-12-06 18:14"},{"_id":"6584","normalized_imdb_id":3170832,"title":"Room","year":2015,"rating":3,"dubious":false,"date":"2015-12-07 02:30"},{"_id":"6622","normalized_imdb_id":1658801,"title":"Feeheld","year":2015,"rating":3,"dubious":false,"date":"2015-12-21 17:08"},{"_id":"6588","normalized_imdb_id":3076658,"title":"Creed","year":2015,"rating":2,"dubious":true,"date":"2015-12-09 03:20"},{"_id":"6589","normalized_imdb_id":1390411,"title":"In the Heart of the Sea","year":2015,"rating":1,"dubious":false,"date":"2015-12-09 05:55"},{"_id":"6593","normalized_imdb_id":4472596,"title":"Hollow, The","year":2015,"rating":3,"dubious":false,"date":"2015-12-11 23:59"},{"_id":"6595","normalized_imdb_id":2279339,"title":"Love the Coopers","year":2015,"rating":3,"dubious":false,"date":"2015-12-12 03:05"},{"_id":"6596","normalized_imdb_id":1524930,"title":"Vacation","year":2015,"rating":3,"dubious":false,"date":"2015-12-12 05:59"},{"_id":"6601","normalized_imdb_id":3850590,"title":"Krampus","year":2015,"rating":3,"dubious":false,"date":"2015-12-13 03:29"},{"_id":"6609","normalized_imdb_id":1850457,"title":"Sisters","year":2015,"rating":3,"dubious":false,"date":"2015-12-15 13:00"},{"_id":"6610","normalized_imdb_id":2488496,"title":"Star Wars: The Force Awakens","year":2015,"rating":3,"dubious":false,"date":"2015-12-15 16:38"},{"_id":"6611","normalized_imdb_id":3332064,"title":"Pan","year":2015,"rating":1,"dubious":false,"date":"2015-12-15 18:55"},{"_id":"6612","normalized_imdb_id":3707106,"title":"By the Sea","year":2015,"rating":3,"dubious":false,"date":"2015-12-16 03:57"},{"_id":"6613","normalized_imdb_id":2131532,"title":"Hidden","year":2015,"rating":3,"dubious":false,"date":"2015-12-16 19:12"},{"_id":"6614","normalized_imdb_id":3464902,"title":"Lobster, The","year":2015,"rating":3,"dubious":true,"date":"2015-12-17 18:42"},{"_id":"6619","normalized_imdb_id":2872462,"title":"Mistres America","year":2015,"rating":3,"dubious":false,"date":"2015-12-20 12:13"},{"_id":"6628","normalized_imdb_id":3460252,"title":"Hateful Eight, The","year":2015,"rating":3,"dubious":true,"date":"2015-12-25 10:10"},{"_id":"6632","normalized_imdb_id":2058673,"title":"Point Break","year":2015,"rating":0,"dubious":false,"date":"2015-12-26 05:46"},{"_id":"6633","normalized_imdb_id":3322364,"title":"Concussion","year":2015,"rating":1,"dubious":false,"date":"2015-12-26 13:21"},{"_id":"6634","normalized_imdb_id":4767274,"title":"Dolly Parton's Coat of Many Colors","year":2015,"rating":3,"dubious":false,"date":"2015-12-26 16:48"},{"_id":"6635","normalized_imdb_id":2446980,"title":"Joy","year":2015,"rating":3,"dubious":false,"date":"2015-12-26 23:07"},{"_id":"6636","normalized_imdb_id":4858280,"title":"Stitcher","year":2015,"rating":0,"dubious":false,"date":"2015-12-26 23:08"},{"_id":"6637","normalized_imdb_id":2884018,"title":"Macbeth","year":2015,"rating":1,"dubious":false,"date":"2015-12-27 02:44"},{"_id":"6643","normalized_imdb_id":2361509,"title":"Intern, The","year":2015,"rating":3,"dubious":true,"date":"2015-12-30 13:13"},{"_id":"6644","normalized_imdb_id":3268668,"title":"Captive","year":2015,"rating":3,"dubious":false,"date":"2015-12-30 18:28"},{"_id":"6648","normalized_imdb_id":1596363,"title":"Big Short, The","year":2015,"rating":1,"dubious":false,"date":"2016-01-03 02:18"},{"_id":"6649","normalized_imdb_id":3064298,"title":"Man Up","year":2015,"rating":3,"dubious":false,"date":"2016-01-03 11:22"},{"_id":"6651","normalized_imdb_id":1528854,"title":"Daddy's Home","year":2015,"rating":1,"dubious":false,"date":"2016-01-04 04:48"},{"_id":"6655","normalized_imdb_id":810819,"title":"Danish Girl, The","year":2015,"rating":3,"dubious":false,"date":"2016-01-07 10:47"},{"_id":"6660","normalized_imdb_id":4594834,"title":"Chi-Raq","year":2015,"rating":3,"dubious":false,"date":"2016-01-11 01:40"},{"_id":"6661","normalized_imdb_id":3478232,"title":"Mythica: The Darkspore","year":2015,"rating":3,"dubious":false,"date":"2016-01-11 15:45"},{"_id":"6665","normalized_imdb_id":1870548,"title":"This changes everything","year":2015,"rating":3,"dubious":true,"date":"2016-01-15 13:03"},{"_id":"6667","normalized_imdb_id":3717016,"title":"After the Ball","year":2015,"rating":3,"dubious":false,"date":"2016-01-16 17:50"},{"_id":"6671","normalized_imdb_id":3569230,"title":"Legend","year":2015,"rating":3,"dubious":true,"date":"2016-01-19 23:33"},{"_id":"6674","normalized_imdb_id":3303652,"title":"A Sort of Homecoming","year":2015,"rating":3,"dubious":false,"date":"2016-01-22 14:03"},{"_id":"6715","normalized_imdb_id":2978576,"title":"Bill","year":2015,"rating":2,"dubious":false,"date":"2016-02-09 23:41"},{"_id":"6677","normalized_imdb_id":2401878,"title":"Anamolisa","year":2015,"rating":2,"dubious":false,"date":"2016-01-24 00:49"},{"_id":"6678","normalized_imdb_id":2938956,"title":"Transporter Refueled, The","year":2015,"rating":3,"dubious":true,"date":"2016-01-24 03:06"},{"_id":"6683","normalized_imdb_id":4576612,"title":"Comment c'est loin","year":2015,"rating":1,"dubious":false,"date":"2016-01-27 22:52"},{"_id":"6684","normalized_imdb_id":1618442,"title":"Last Witch Hunter, The","year":2015,"rating":3,"dubious":true,"date":"2016-01-28 12:00"},{"_id":"6685","normalized_imdb_id":3090670,"title":"Advantageous","year":2015,"rating":3,"dubious":false,"date":"2016-01-28 18:28"},{"_id":"6692","normalized_imdb_id":2321502,"title":"Uncanny","year":2015,"rating":0,"dubious":false,"date":"2016-01-28 19:39"},{"_id":"6696","normalized_imdb_id":4069042,"title":"Anna Unbound","year":2015,"rating":3,"dubious":false,"date":"2016-01-28 20:35"},{"_id":"6706","normalized_imdb_id":2245003,"title":"Miss You Already","year":2015,"rating":3,"dubious":false,"date":"2016-02-01 19:15"},{"_id":"6707","normalized_imdb_id":1895587,"title":"Spotlight","year":2015,"rating":1,"dubious":false,"date":"2016-02-02 10:43"},{"_id":"6708","normalized_imdb_id":3312830,"title":"Youth","year":2015,"rating":1,"dubious":false,"date":"2016-02-02 14:23"},{"_id":"6712","normalized_imdb_id":3715122,"title":"L'attesa","year":2015,"rating":3,"dubious":false,"date":"2016-02-05 14:59"},{"_id":"6717","normalized_imdb_id":3993894,"title":"Queen of Earth","year":2015,"rating":3,"dubious":false,"date":"2016-02-10 14:30"},{"_id":"6719","normalized_imdb_id":4515684,"title":"Comoara","year":2015,"rating":1,"dubious":false,"date":"2016-02-11 22:02"},{"_id":"6723","normalized_imdb_id":2537390,"title":"Slow Learners","year":2015,"rating":3,"dubious":false,"date":"2016-02-13 03:22"},{"_id":"6726","normalized_imdb_id":4420110,"title":"Invisible Sister","year":2015,"rating":3,"dubious":false,"date":"2016-02-13 09:11"},{"_id":"6732","normalized_imdb_id":4319698,"title":"Little Big Master","year":2015,"rating":3,"dubious":false,"date":"2016-02-17 23:16"},{"_id":"6737","normalized_imdb_id":3172532,"title":"Diary of a Teenage Girl, The","year":2015,"rating":3,"dubious":false,"date":"2016-02-19 20:36"},{"_id":"6752","normalized_imdb_id":4093680,"title":"Min lilla syster","year":2015,"rating":3,"dubious":false,"date":"2016-02-29 16:53"},{"_id":"6757","normalized_imdb_id":2461340,"title":"Till We Meet Again","year":2015,"rating":3,"dubious":false,"date":"2016-03-02 03:52"},{"_id":"6767","normalized_imdb_id":3529656,"title":"Meadowland","year":2015,"rating":3,"dubious":false,"date":"2016-03-11 23:33"},{"_id":"6769","normalized_imdb_id":4501454,"title":"Meddler, The","year":2015,"rating":3,"dubious":false,"date":"2016-03-12 18:28"},{"_id":"6770","normalized_imdb_id":4428788,"title":"Marguerite","year":2015,"rating":3,"dubious":false,"date":"2016-03-12 18:35"},{"_id":"6771","normalized_imdb_id":4392726,"title":"Office","year":2015,"rating":3,"dubious":false,"date":"2016-03-12 18:43"},{"_id":"6774","normalized_imdb_id":4010918,"title":"Throne","year":2015,"rating":3,"dubious":false,"date":"2016-03-12 19:35"},{"_id":"6775","normalized_imdb_id":4691166,"title":"7 Letters","year":2015,"rating":3,"dubious":false,"date":"2016-03-12 19:44"},{"_id":"6777","normalized_imdb_id":4263482,"title":"VVitch: A New-England Folktale, The","year":2015,"rating":3,"dubious":false,"date":"2016-03-13 10:14"},{"_id":"6786","normalized_imdb_id":4466872,"title":"Les ogres","year":2015,"rating":3,"dubious":false,"date":"2016-03-24 20:18"},{"_id":"6787","normalized_imdb_id":2726560,"title":"Longest Ride, The","year":2015,"rating":3,"dubious":false,"date":"2016-03-25 19:54"},{"_id":"6818","normalized_imdb_id":2911674,"title":"Tiger House","year":2015,"rating":3,"dubious":false,"date":"2016-04-01 03:22"},{"_id":"6823","normalized_imdb_id":4125300,"title":"Case of Hana and Alice, The","year":2015,"rating":3,"dubious":false,"date":"2016-04-08 20:36"},{"_id":"6836","normalized_imdb_id":2057392,"title":"Eye in the Sky","year":2015,"rating":3,"dubious":false,"date":"2016-04-18 00:48"},{"_id":"6875","normalized_imdb_id":3397918,"title":"Harbinger Down","year":2015,"rating":3,"dubious":false,"date":"2016-05-08 23:47"},{"_id":"6851","normalized_imdb_id":3620762,"title":"Anguish","year":2015,"rating":3,"dubious":false,"date":"2016-04-25 15:53"},{"_id":"6855","normalized_imdb_id":2631186,"title":"Baahubali: The Beginning","year":2015,"rating":1,"dubious":false,"date":"2016-04-27 17:12"},{"_id":"6866","normalized_imdb_id":4439120,"title":"Riaru onigokko","year":2015,"rating":3,"dubious":false,"date":"2016-05-01 01:25"},{"_id":"6868","normalized_imdb_id":4485178,"title":"Je suis un soldat","year":2015,"rating":3,"dubious":false,"date":"2016-05-02 16:42"},{"_id":"6887","normalized_imdb_id":4062536,"title":"Green Room","year":2015,"rating":3,"dubious":false,"date":"2016-05-17 13:14"},{"_id":"6895","normalized_imdb_id":3953626,"title":"A Country Called Home","year":2015,"rating":3,"dubious":false,"date":"2016-05-22 22:30"},{"_id":"6889","normalized_imdb_id":2097331,"title":"Family Fang","year":2015,"rating":3,"dubious":false,"date":"2016-05-17 18:14"},{"_id":"6913","normalized_imdb_id":2719848,"title":"Everest","year":2015,"rating":2,"dubious":false,"date":"2016-06-01 08:16"},{"_id":"6925","normalized_imdb_id":3766394,"title":"Hello, My Name Is Doris","year":2015,"rating":3,"dubious":false,"date":"2016-06-09 17:18"},{"_id":"6926","normalized_imdb_id":3577624,"title":"A Perfect Day","year":2015,"rating":2,"dubious":false,"date":"2016-06-09 18:35"},{"_id":"6928","normalized_imdb_id":2262161,"title":"Sunset Song","year":2015,"rating":3,"dubious":false,"date":"2016-06-10 20:28"},{"_id":"6948","normalized_imdb_id":1598642,"title":"Z for Zachariah","year":2015,"rating":0,"dubious":false,"date":"2016-06-24 11:10"},{"_id":"6949","normalized_imdb_id":3369806,"title":"Max","year":2015,"rating":3,"dubious":false,"date":"2016-06-24 14:20"},{"_id":"6950","normalized_imdb_id":3722070,"title":"Lady in the Van, The","year":2015,"rating":3,"dubious":false,"date":"2016-06-25 07:36"},{"_id":"6955","normalized_imdb_id":3726704,"title":"Experimenter","year":2015,"rating":2,"dubious":false,"date":"2016-06-30 16:04"},{"_id":"6956","normalized_imdb_id":3672742,"title":"Turbo Kid","year":2015,"rating":1,"dubious":false,"date":"2016-07-01 14:38"},{"_id":"6959","normalized_imdb_id":3775086,"title":"They Call Me Jeeg Robot","year":2015,"rating":1,"dubious":false,"date":"2016-07-02 15:48"},{"_id":"6961","normalized_imdb_id":5105218,"title":"Halal Love","year":2015,"rating":3,"dubious":false,"date":"2016-07-04 23:10"},{"_id":"6967","normalized_imdb_id":3471098,"title":"Maggie's Plan","year":2015,"rating":3,"dubious":false,"date":"2016-07-08 13:17"},{"_id":"6969","normalized_imdb_id":787524,"title":"Man Who Knew Infinity, The","year":2015,"rating":0,"dubious":false,"date":"2016-07-08 21:58"},{"_id":"6974","normalized_imdb_id":3756788,"title":"Our Little Sister","year":2015,"rating":3,"dubious":false,"date":"2016-07-12 21:09"},{"_id":"6982","normalized_imdb_id":3289728,"title":"Equals","year":2015,"rating":3,"dubious":false,"date":"2016-07-16 11:59"},{"_id":"6985","normalized_imdb_id":1172049,"title":"Demolition","year":2015,"rating":1,"dubious":false,"date":"2016-07-19 23:41"},{"_id":"7015","normalized_imdb_id":3567288,"title":"Visit, The","year":2015,"rating":3,"dubious":false,"date":"2016-08-01 17:50"},{"_id":"7024","normalized_imdb_id":3859304,"title":"Bronze, The","year":2015,"rating":3,"dubious":false,"date":"2016-08-05 21:59"},{"_id":"7029","normalized_imdb_id":3614530,"title":"Jem and the Holograms","year":2015,"rating":3,"dubious":false,"date":"2016-08-07 21:15"},{"_id":"7041","normalized_imdb_id":4084744,"title":"Battle For Sevastopol","year":2015,"rating":3,"dubious":false,"date":"2016-08-12 18:08"},{"_id":"7062","normalized_imdb_id":2217859,"title":"Louder Than Bombs","year":2015,"rating":1,"dubious":false,"date":"2016-08-23 20:25"},{"_id":"7063","normalized_imdb_id":3247714,"title":"Survivor","year":2015,"rating":3,"dubious":false,"date":"2016-08-24 04:08"},{"_id":"7072","normalized_imdb_id":3544082,"title":"45 Years","year":2015,"rating":3,"dubious":false,"date":"2016-08-27 04:13"},{"_id":"7089","normalized_imdb_id":4005402,"title":"Colony, The","year":2015,"rating":3,"dubious":false,"date":"2016-09-01 12:06"},{"_id":"7091","normalized_imdb_id":4080768,"title":"La belle saison","year":2015,"rating":3,"dubious":false,"date":"2016-09-02 01:45"},{"_id":"7178","normalized_imdb_id":3833474,"title":"Never Let Go","year":2015,"rating":1,"dubious":false,"date":"2016-10-08 11:13"},{"_id":"7102","normalized_imdb_id":2625810,"title":"Into the Forest","year":2015,"rating":3,"dubious":false,"date":"2016-09-07 06:20"},{"_id":"7111","normalized_imdb_id":3978720,"title":"Fourth Man Out","year":2015,"rating":1,"dubious":false,"date":"2016-09-11 09:51"},{"_id":"7116","normalized_imdb_id":3296658,"title":"Hrutar","year":2015,"rating":1,"dubious":false,"date":"2016-09-14 22:41"},{"_id":"7132","normalized_imdb_id":4341864,"title":"La memoria del agua","year":2015,"rating":2,"dubious":false,"date":"2016-09-22 21:29"},{"_id":"7197","normalized_imdb_id":1837562,"title":"A Royal Night Out","year":2015,"rating":3,"dubious":true,"date":"2016-10-14 04:37"},{"_id":"7219","normalized_imdb_id":3422078,"title":"Avril et le monde truque","year":2015,"rating":3,"dubious":false,"date":"2016-10-23 23:24"},{"_id":"7232","normalized_imdb_id":790770,"title":"Miles Ahead","year":2015,"rating":0,"dubious":false,"date":"2016-11-01 20:25"},{"_id":"7253","normalized_imdb_id":3532278,"title":"brothers of the wind","year":2015,"rating":0,"dubious":false,"date":"2016-11-08 15:15"},{"_id":"7259","normalized_imdb_id":3605262,"title":"Sin Seer, The","year":2015,"rating":3,"dubious":false,"date":"2016-11-12 18:50"},{"_id":"7270","normalized_imdb_id":4153324,"title":"Tjuvheder","year":2015,"rating":3,"dubious":false,"date":"2016-11-18 00:03"},{"_id":"7305","normalized_imdb_id":3685622,"title":"600 millas [600 Miles]","year":2015,"rating":0,"dubious":false,"date":"2016-11-29 22:05"},{"_id":"7327","normalized_imdb_id":3205394,"title":"Roald Dahl's Esio Trot","year":2015,"rating":1,"dubious":false,"date":"2016-12-14 17:19"},{"_id":"7335","normalized_imdb_id":4145304,"title":"Unexpected","year":2015,"rating":3,"dubious":false,"date":"2016-12-16 20:25"},{"_id":"7343","normalized_imdb_id":3503460,"title":"Embers","year":2015,"rating":1,"dubious":false,"date":"2016-12-21 13:30"},{"_id":"7347","normalized_imdb_id":4291590,"title":"Evolution","year":2015,"rating":0,"dubious":false,"date":"2016-12-23 16:00"},{"_id":"7361","normalized_imdb_id":1254322,"title":"Girl King, The","year":2015,"rating":3,"dubious":false,"date":"2016-12-27 16:17"},{"_id":"7378","normalized_imdb_id":2006295,"title":"33, The","year":2015,"rating":3,"dubious":true,"date":"2017-01-06 00:03"},{"_id":"7538","normalized_imdb_id":3043252,"title":"Parched","year":2015,"rating":3,"dubious":false,"date":"2017-03-28 19:24"},{"_id":"7427","normalized_imdb_id":3819668,"title":"Dragon Ball Z: Resurrection 'F'","year":2015,"rating":1,"dubious":false,"date":"2017-01-31 22:21"},{"_id":"7441","normalized_imdb_id":5005684,"title":"Nil Battey Sannata","year":2015,"rating":3,"dubious":false,"date":"2017-02-13 08:33"},{"_id":"7454","normalized_imdb_id":4298958,"title":"Sweet Bean","year":2015,"rating":3,"dubious":false,"date":"2017-02-17 15:44"},{"_id":"7458","normalized_imdb_id":2262345,"title":"Long Way North","year":2015,"rating":1,"dubious":false,"date":"2017-02-18 01:58"},{"_id":"7482","normalized_imdb_id":3977462,"title":"Full Out","year":2015,"rating":3,"dubious":false,"date":"2017-03-03 22:48"},{"_id":"7484","normalized_imdb_id":3817188,"title":"Milyy Khans, dorogoy Pyotr","year":2015,"rating":1,"dubious":false,"date":"2017-03-04 09:15"},{"_id":"7494","normalized_imdb_id":3700804,"title":"Already Tomorrow in Hong Kong","year":2015,"rating":2,"dubious":false,"date":"2017-03-10 07:57"},{"_id":"7502","normalized_imdb_id":4060576,"title":"Lavalantula","year":2015,"rating":3,"dubious":false,"date":"2017-03-10 15:13"},{"_id":"7503","normalized_imdb_id":2109127,"title":"Eaters","year":2015,"rating":1,"dubious":false,"date":"2017-03-10 15:42"},{"_id":"7511","normalized_imdb_id":4899406,"title":"Boi Neon","year":2015,"rating":3,"dubious":false,"date":"2017-03-13 19:13"},{"_id":"7522","normalized_imdb_id":6663788,"title":"Psychosis","year":2015,"rating":3,"dubious":true,"date":"2017-03-18 17:48"},{"_id":"7541","normalized_imdb_id":4108134,"title":"London Spy","year":2015,"rating":1,"dubious":false,"date":"2017-03-30 14:00"},{"_id":"7558","normalized_imdb_id":3727982,"title":"Ava's Possession","year":2015,"rating":3,"dubious":true,"date":"2017-04-04 09:18"},{"_id":"7577","normalized_imdb_id":4195368,"title":"Birigyaru","year":2015,"rating":3,"dubious":false,"date":"2017-04-17 00:02"},{"_id":"7672","normalized_imdb_id":3391348,"title":"3Tails Movie: A Mermaid Adventure, The","year":2015,"rating":3,"dubious":false,"date":"2017-05-30 19:46"},{"_id":"7686","normalized_imdb_id":2582502,"title":"Fathers & Daughters","year":2015,"rating":3,"dubious":false,"date":"2017-06-14 18:50"},{"_id":"7761","normalized_imdb_id":3801372,"title":"Steps, The","year":2015,"rating":3,"dubious":false,"date":"2017-07-29 23:54"},{"_id":"7862","normalized_imdb_id":4731504,"title":"Dofus - Livre 1: Julith","year":2015,"rating":3,"dubious":false,"date":"2017-10-21 05:04"},{"_id":"7832","normalized_imdb_id":4425152,"title":"Girls Lost","year":2015,"rating":3,"dubious":false,"date":"2017-09-25 14:15"},{"_id":"7873","normalized_imdb_id":4489160,"title":"You're My Boss","year":2015,"rating":0,"dubious":false,"date":"2017-10-26 09:45"},{"_id":"7881","normalized_imdb_id":4009278,"title":"Intruders","year":2015,"rating":3,"dubious":false,"date":"2017-10-31 18:24"},{"_id":"7890","normalized_imdb_id":2049543,"title":"Synchronicity","year":2015,"rating":2,"dubious":false,"date":"2017-11-07 00:42"},{"_id":"7902","normalized_imdb_id":3165612,"title":"Sleeping with Other People","year":2015,"rating":3,"dubious":false,"date":"2017-11-15 23:46"},{"_id":"7916","normalized_imdb_id":2948840,"title":"Life","year":2015,"rating":3,"dubious":true,"date":"2017-11-22 02:32"},{"_id":"7922","normalized_imdb_id":1365050,"title":"Beasts of No Nation","year":2015,"rating":0,"dubious":false,"date":"2017-11-25 21:14"},{"_id":"7931","normalized_imdb_id":3981858,"title":"Harter Brocken","year":2015,"rating":3,"dubious":false,"date":"2017-11-29 19:59"},{"_id":"7947","normalized_imdb_id":4308714,"title":"Other Halves","year":2015,"rating":3,"dubious":false,"date":"2017-12-15 23:38"},{"_id":"7993","normalized_imdb_id":4503598,"title":"Emelie","year":2015,"rating":3,"dubious":false,"date":"2018-01-08 20:00"},{"_id":"8000","normalized_imdb_id":3627488,"title":"Burn Burn Burn","year":2015,"rating":3,"dubious":false,"date":"2018-01-10 15:30"},{"_id":"8006","normalized_imdb_id":4341532,"title":"Phoenix Incident","year":2015,"rating":1,"dubious":false,"date":"2018-01-12 22:56"},{"_id":"8036","normalized_imdb_id":420293,"title":"Stanford Prison Experiment, The","year":2015,"rating":1,"dubious":false,"date":"2018-02-06 02:57"},{"_id":"8037","normalized_imdb_id":2967224,"title":"Hot Pursuit","year":2015,"rating":2,"dubious":true,"date":"2018-02-07 12:32"},{"_id":"8050","normalized_imdb_id":3286052,"title":"Blackcoat's Daughter, The","year":2015,"rating":3,"dubious":false,"date":"2018-02-12 13:00"},{"_id":"8079","normalized_imdb_id":4085084,"title":"Maryland","year":2015,"rating":0,"dubious":false,"date":"2018-02-28 15:27"},{"_id":"8081","normalized_imdb_id":3837248,"title":"Love Live! The School Idol Movie","year":2015,"rating":3,"dubious":false,"date":"2018-03-01 13:25"},{"_id":"8259","normalized_imdb_id":2358925,"title":"Unfinished Business","year":2015,"rating":2,"dubious":false,"date":"2018-05-29 17:11"},{"_id":"8227","normalized_imdb_id":1727776,"title":"Scouts Guide to the Zombie Apocalypse","year":2015,"rating":1,"dubious":false,"date":"2018-05-18 21:27"},{"_id":"8233","normalized_imdb_id":4178092,"title":"Gift, The","year":2015,"rating":3,"dubious":false,"date":"2018-05-18 23:33"},{"_id":"8334","normalized_imdb_id":2679042,"title":"Hitman: Agent 47","year":2015,"rating":0,"dubious":false,"date":"2018-07-16 21:17"},{"_id":"8352","normalized_imdb_id":3899796,"title":"Sharknado 3: Oh Hell No!","year":2015,"rating":3,"dubious":false,"date":"2018-08-01 17:08"},{"_id":"8356","normalized_imdb_id":3654680,"title":"Vampyres","year":2015,"rating":3,"dubious":false,"date":"2018-08-04 15:09"},{"_id":"8370","normalized_imdb_id":2322517,"title":"Mojave","year":2015,"rating":1,"dubious":false,"date":"2018-08-13 02:45"},{"_id":"8375","normalized_imdb_id":2974918,"title":"Alvin and the Chipmunks: The Road Chip","year":2015,"rating":1,"dubious":false,"date":"2018-08-15 21:37"},{"_id":"8509","normalized_imdb_id":462335,"title":"High Rise","year":2015,"rating":2,"dubious":true,"date":"2018-12-03 13:51"},{"_id":"8569","normalized_imdb_id":4235644,"title":"Shisha no teikoku (Empire of Corpses)","year":2015,"rating":1,"dubious":false,"date":"2018-12-19 05:47"},{"_id":"8606","normalized_imdb_id":2935662,"title":"Portrait of a Serial Monogamist","year":2015,"rating":3,"dubious":false,"date":"2019-01-14 18:07"},{"_id":"8614","normalized_imdb_id":3896100,"title":"Atrapa la bandera [Capture the Flag]","year":2015,"rating":1,"dubious":false,"date":"2019-01-26 16:15"},{"_id":"8643","normalized_imdb_id":1727770,"title":"Absolutely Anything","year":2015,"rating":3,"dubious":false,"date":"2019-02-19 18:21"},{"_id":"8675","normalized_imdb_id":1178665,"title":"A Walk in the Woods","year":2015,"rating":2,"dubious":false,"date":"2019-03-14 18:13"},{"_id":"8703","normalized_imdb_id":1226766,"title":"Great Gilly Hopkins, The","year":2015,"rating":3,"dubious":false,"date":"2019-04-16 13:36"},{"_id":"8738","normalized_imdb_id":3735246,"title":"Bajirao Mastani","year":2015,"rating":2,"dubious":false,"date":"2019-05-09 03:22"},{"_id":"8770","normalized_imdb_id":3450650,"title":"Paul Blart: Mall Cop 2","year":2015,"rating":1,"dubious":false,"date":"2019-06-22 03:13"},{"_id":"8922","normalized_imdb_id":4766604,"title":"Highway to Hellas","year":2015,"rating":1,"dubious":false,"date":"2019-12-07 17:22"},{"_id":"9029","normalized_imdb_id":4183692,"title":"Woodlawn","year":2015,"rating":1,"dubious":true,"date":"2020-03-03 16:39"},{"_id":"9142","normalized_imdb_id":12145728,"title":"Ethicist, The","year":2015,"rating":3,"dubious":false,"date":"2020-05-24 05:51"},{"_id":"9180","normalized_imdb_id":2400463,"title":"Invitation, The","year":2015,"rating":3,"dubious":false,"date":"2020-06-22 18:48"},{"_id":"9193","normalized_imdb_id":3118452,"title":"Circle","year":2015,"rating":1,"dubious":true,"date":"2020-07-08 08:45"},{"_id":"9210","normalized_imdb_id":3319018,"title":"My Name Is Emily","year":2015,"rating":3,"dubious":false,"date":"2020-07-22 20:19"},{"_id":"9248","normalized_imdb_id":4692234,"title":"O Desolado","year":2015,"rating":3,"dubious":false,"date":"2020-08-20 17:33"},{"_id":"9251","normalized_imdb_id":3431798,"title":"A German Youth","year":2015,"rating":0,"dubious":false,"date":"2020-08-27 21:16"},{"_id":"9257","normalized_imdb_id":2662716,"title":"Montanha","year":2015,"rating":1,"dubious":false,"date":"2020-09-02 15:27"},{"_id":"9261","normalized_imdb_id":3977428,"title":"John From","year":2015,"rating":3,"dubious":false,"date":"2020-09-03 12:24"},{"_id":"9486","normalized_imdb_id":4794188,"title":"Samurai Warrior Queens","year":2015,"rating":3,"dubious":true,"date":"2021-02-18 22:23"},{"_id":"9551","normalized_imdb_id":2888046,"title":"Ip Man 3","year":2015,"rating":1,"dubious":false,"date":"2021-03-14 21:10"},{"_id":"9611","normalized_imdb_id":3622332,"title":"Sword of Vengeance","year":2015,"rating":0,"dubious":false,"date":"2021-04-03 16:53"},{"_id":"9942","normalized_imdb_id":3508840,"title":"assassin, The","year":2015,"rating":2,"dubious":true,"date":"2021-07-05 02:53"},{"_id":"10034","normalized_imdb_id":12268798,"title":"Aluguel: O Filme","year":2015,"rating":0,"dubious":false,"date":"2021-09-04 20:01"},{"_id":"10159","normalized_imdb_id":4718770,"title":"Wiz Live!, The","year":2015,"rating":3,"dubious":false,"date":"2021-12-11 23:16"},{"_id":"6670","normalized_imdb_id":2140037,"title":"Jane Got a Gun","year":2016,"rating":0,"dubious":false,"date":"2016-01-19 23:21"},{"_id":"6669","normalized_imdb_id":2938496,"title":"Vampires In Virginia","year":2016,"rating":3,"dubious":false,"date":"2016-01-16 23:59"},{"_id":"6680","normalized_imdb_id":2304933,"title":"5th Wave, The","year":2016,"rating":2,"dubious":false,"date":"2016-01-25 07:04"},{"_id":"6710","normalized_imdb_id":475290,"title":"Hail, Caesar!","year":2016,"rating":1,"dubious":false,"date":"2016-02-03 08:03"},{"_id":"6713","normalized_imdb_id":1374989,"title":"Pride and Prejudice and Zombies","year":2016,"rating":3,"dubious":false,"date":"2016-02-07 05:53"},{"_id":"6720","normalized_imdb_id":3838728,"title":"Bang Gang","year":2016,"rating":3,"dubious":false,"date":"2016-02-11 22:16"},{"_id":"6721","normalized_imdb_id":4370784,"title":"Les innocentes","year":2016,"rating":3,"dubious":false,"date":"2016-02-11 22:41"},{"_id":"6722","normalized_imdb_id":1431045,"title":"Deadpool","year":2016,"rating":1,"dubious":false,"date":"2016-02-12 12:10"},{"_id":"6741","normalized_imdb_id":2948356,"title":"Zootopia","year":2016,"rating":3,"dubious":false,"date":"2016-02-22 19:09"},{"_id":"6755","normalized_imdb_id":3882082,"title":"Boy, The","year":2016,"rating":3,"dubious":false,"date":"2016-03-01 17:02"},{"_id":"6760","normalized_imdb_id":3553442,"title":"Whiskey Tango Foxtrot","year":2016,"rating":3,"dubious":false,"date":"2016-03-03 04:54"},{"_id":"6761","normalized_imdb_id":2652118,"title":"Crouching Tiger, Hidden Dragon: Sword of Destiny","year":2016,"rating":3,"dubious":false,"date":"2016-03-05 08:16"},{"_id":"6768","normalized_imdb_id":3410834,"title":"Divergent Series: Allegiant, The","year":2016,"rating":3,"dubious":false,"date":"2016-03-12 10:13"},{"_id":"6776","normalized_imdb_id":1179933,"title":"10 Cloverfield Lane","year":2016,"rating":3,"dubious":false,"date":"2016-03-13 03:56"},{"_id":"6778","normalized_imdb_id":3544218,"title":"Belgica","year":2016,"rating":1,"dubious":false,"date":"2016-03-13 12:42"},{"_id":"6779","normalized_imdb_id":1712261,"title":"Triple 9","year":2016,"rating":3,"dubious":false,"date":"2016-03-14 14:51"},{"_id":"6783","normalized_imdb_id":2649554,"title":"Midnight Special","year":2016,"rating":1,"dubious":false,"date":"2016-03-19 21:15"},{"_id":"6788","normalized_imdb_id":2975590,"title":"Batman v Superman: Dawn of Justice","year":2016,"rating":2,"dubious":false,"date":"2016-03-26 03:16"},{"_id":"6790","normalized_imdb_id":2381991,"title":"Huntsman: Winter's War, The","year":2016,"rating":3,"dubious":false,"date":"2016-03-26 06:00"},{"_id":"6808","normalized_imdb_id":2267968,"title":"Kung Fu Panda 3","year":2016,"rating":3,"dubious":false,"date":"2016-03-29 11:43"},{"_id":"6812","normalized_imdb_id":5091548,"title":"Justice League vs. Teen Titans","year":2016,"rating":3,"dubious":true,"date":"2016-03-30 19:45"},{"_id":"6820","normalized_imdb_id":3072482,"title":"Hardcore Henry","year":2016,"rating":1,"dubious":false,"date":"2016-04-03 21:14"},{"_id":"6821","normalized_imdb_id":2702724,"title":"Boss, The","year":2016,"rating":3,"dubious":false,"date":"2016-04-06 05:49"},{"_id":"6835","normalized_imdb_id":5022702,"title":"Hush","year":2016,"rating":3,"dubious":true,"date":"2016-04-17 21:55"},{"_id":"6837","normalized_imdb_id":3040964,"title":"Jungle Book, The","year":2016,"rating":2,"dubious":false,"date":"2016-04-18 01:15"},{"_id":"6856","normalized_imdb_id":3387542,"title":"Forest, The","year":2016,"rating":3,"dubious":false,"date":"2016-04-28 11:38"},{"_id":"6857","normalized_imdb_id":3498820,"title":"Captain America: Civil War","year":2016,"rating":3,"dubious":false,"date":"2016-04-28 12:41"},{"_id":"6859","normalized_imdb_id":4139124,"title":"Keanu","year":2016,"rating":3,"dubious":true,"date":"2016-04-29 03:53"},{"_id":"6876","normalized_imdb_id":2865120,"title":"Ratchet & Clank","year":2016,"rating":3,"dubious":false,"date":"2016-05-09 00:45"},{"_id":"6882","normalized_imdb_id":4824302,"title":"Mother's Day","year":2016,"rating":3,"dubious":false,"date":"2016-05-11 19:09"},{"_id":"6884","normalized_imdb_id":5538078,"title":"Extremis","year":2016,"rating":3,"dubious":false,"date":"2016-05-14 15:16"},{"_id":"6891","normalized_imdb_id":3068194,"title":"Love & Friendship","year":2016,"rating":3,"dubious":false,"date":"2016-05-18 01:22"},{"_id":"6894","normalized_imdb_id":3385516,"title":"X-Men: Apocalypse","year":2016,"rating":3,"dubious":false,"date":"2016-05-21 16:22"},{"_id":"6896","normalized_imdb_id":3453052,"title":"10 Days In A Madhouse","year":2016,"rating":3,"dubious":false,"date":"2016-05-24 23:42"},{"_id":"6898","normalized_imdb_id":3799694,"title":"Nice Guys, The","year":2016,"rating":3,"dubious":false,"date":"2016-05-28 08:20"},{"_id":"6908","normalized_imdb_id":2567026,"title":"Alice Through the Looking Glass","year":2016,"rating":3,"dubious":false,"date":"2016-05-28 22:47"},{"_id":"6909","normalized_imdb_id":4438848,"title":"Neighbors 2: Sorority Rising","year":2016,"rating":3,"dubious":false,"date":"2016-05-30 03:49"},{"_id":"6911","normalized_imdb_id":803096,"title":"Warcraft","year":2016,"rating":3,"dubious":false,"date":"2016-05-30 20:16"},{"_id":"6914","normalized_imdb_id":3544112,"title":"Sing Street","year":2016,"rating":1,"dubious":false,"date":"2016-06-03 22:56"},{"_id":"6915","normalized_imdb_id":3949660,"title":"Teenage Mutant Ninja Turtles: Out of the Shadows","year":2016,"rating":3,"dubious":true,"date":"2016-06-04 17:58"},{"_id":"6916","normalized_imdb_id":1292566,"title":"How to Be Single","year":2016,"rating":3,"dubious":false,"date":"2016-06-04 23:39"},{"_id":"6921","normalized_imdb_id":2404233,"title":"Gods of Egypt","year":2016,"rating":2,"dubious":true,"date":"2016-06-08 03:23"},{"_id":"6922","normalized_imdb_id":3110958,"title":"Now You See Me 2","year":2016,"rating":1,"dubious":false,"date":"2016-06-08 16:25"},{"_id":"6927","normalized_imdb_id":2674426,"title":"Me Before You","year":2016,"rating":3,"dubious":false,"date":"2016-06-10 16:18"},{"_id":"6929","normalized_imdb_id":2241351,"title":"Money Monster","year":2016,"rating":3,"dubious":false,"date":"2016-06-13 00:13"},{"_id":"6931","normalized_imdb_id":3065204,"title":"Conjuring 2, The","year":2016,"rating":3,"dubious":false,"date":"2016-06-14 03:09"},{"_id":"6932","normalized_imdb_id":2277860,"title":"Finding Dory","year":2016,"rating":3,"dubious":false,"date":"2016-06-15 01:26"},{"_id":"6934","normalized_imdb_id":2674430,"title":"Approaching the Unknown","year":2016,"rating":0,"dubious":false,"date":"2016-06-16 12:28"},{"_id":"6942","normalized_imdb_id":5512872,"title":"Be Somebody","year":2016,"rating":3,"dubious":false,"date":"2016-06-22 01:52"},{"_id":"6947","normalized_imdb_id":1628841,"title":"Independence Day: Resurgence","year":2016,"rating":3,"dubious":false,"date":"2016-06-23 17:28"},{"_id":"6952","normalized_imdb_id":1974419,"title":"Neon Demon, The","year":2016,"rating":3,"dubious":false,"date":"2016-06-29 16:52"},{"_id":"6953","normalized_imdb_id":4052882,"title":"Shallows, The","year":2016,"rating":3,"dubious":false,"date":"2016-06-29 18:21"},{"_id":"6962","normalized_imdb_id":4094724,"title":"Purge: Election Year, The","year":2016,"rating":3,"dubious":false,"date":"2016-07-05 18:53"},{"_id":"6963","normalized_imdb_id":2709768,"title":"Secret Life of Pets, The","year":2016,"rating":2,"dubious":false,"date":"2016-07-06 01:56"},{"_id":"6964","normalized_imdb_id":3691740,"title":"BFG, The","year":2016,"rating":3,"dubious":false,"date":"2016-07-07 00:11"},{"_id":"6965","normalized_imdb_id":3960412,"title":"Popstar: Never Stop Never Stopping","year":2016,"rating":1,"dubious":false,"date":"2016-07-07 16:05"},{"_id":"6968","normalized_imdb_id":4034354,"title":"Swiss Army Man","year":2016,"rating":2,"dubious":false,"date":"2016-07-08 14:22"},{"_id":"6970","normalized_imdb_id":4104054,"title":"Dad's Army","year":2016,"rating":3,"dubious":false,"date":"2016-07-09 20:53"},{"_id":"6973","normalized_imdb_id":2452386,"title":"Fundamentals of Caring, The","year":2016,"rating":3,"dubious":true,"date":"2016-07-12 13:15"},{"_id":"6976","normalized_imdb_id":2823054,"title":"Mike and Dave Need Wedding Dates","year":2016,"rating":3,"dubious":false,"date":"2016-07-13 04:57"},{"_id":"6977","normalized_imdb_id":1289401,"title":"Ghostbusters","year":2016,"rating":3,"dubious":false,"date":"2016-07-14 00:42"},{"_id":"6978","normalized_imdb_id":2112096,"title":"Absolutely Fabulous: The Movie","year":2016,"rating":3,"dubious":false,"date":"2016-07-14 12:18"},{"_id":"6980","normalized_imdb_id":4513674,"title":"Cafe Society","year":2016,"rating":1,"dubious":false,"date":"2016-07-15 12:02"},{"_id":"6983","normalized_imdb_id":1594972,"title":"Norm of the North","year":2016,"rating":3,"dubious":false,"date":"2016-07-16 15:34"},{"_id":"6984","normalized_imdb_id":3014866,"title":"Criminal","year":2016,"rating":3,"dubious":true,"date":"2016-07-19 22:51"},{"_id":"6991","normalized_imdb_id":2660888,"title":"Star Trek Beyond","year":2016,"rating":1,"dubious":false,"date":"2016-07-23 02:11"},{"_id":"6992","normalized_imdb_id":4172430,"title":"13 Hours","year":2016,"rating":2,"dubious":false,"date":"2016-07-23 06:48"},{"_id":"6998","normalized_imdb_id":1083452,"title":"Eddie the Eagle","year":2016,"rating":2,"dubious":false,"date":"2016-07-26 04:39"},{"_id":"6999","normalized_imdb_id":4258698,"title":"Southside with You","year":2016,"rating":2,"dubious":false,"date":"2016-07-26 06:16"},{"_id":"7000","normalized_imdb_id":4853102,"title":"Batman: The Killing Joke","year":2016,"rating":1,"dubious":false,"date":"2016-07-27 02:58"},{"_id":"7005","normalized_imdb_id":2093991,"title":"Elvis & Nixon","year":2016,"rating":2,"dubious":false,"date":"2016-07-28 22:19"},{"_id":"7011","normalized_imdb_id":2937696,"title":"Everybody Wants Some","year":2016,"rating":0,"dubious":false,"date":"2016-07-31 07:57"},{"_id":"7013","normalized_imdb_id":1639084,"title":"Tallulah","year":2016,"rating":3,"dubious":false,"date":"2016-07-31 20:45"},{"_id":"7014","normalized_imdb_id":3531824,"title":"Nerve","year":2016,"rating":3,"dubious":false,"date":"2016-08-01 16:55"},{"_id":"7016","normalized_imdb_id":3451230,"title":"High Strung","year":2016,"rating":2,"dubious":true,"date":"2016-08-01 19:17"},{"_id":"7023","normalized_imdb_id":1386697,"title":"Suicide Squad","year":2016,"rating":3,"dubious":false,"date":"2016-08-05 06:36"},{"_id":"7025","normalized_imdb_id":4651520,"title":"Bad Moms","year":2016,"rating":3,"dubious":false,"date":"2016-08-06 17:53"},{"_id":"7040","normalized_imdb_id":4786282,"title":"Lights Out","year":2016,"rating":3,"dubious":false,"date":"2016-08-12 12:09"},{"_id":"7042","normalized_imdb_id":1700841,"title":"Sausage Party","year":2016,"rating":3,"dubious":false,"date":"2016-08-12 18:20"},{"_id":"7046","normalized_imdb_id":4196776,"title":"Jason Bourne","year":2016,"rating":1,"dubious":false,"date":"2016-08-15 18:35"},{"_id":"7047","normalized_imdb_id":2927212,"title":"Dear Eleanor","year":2016,"rating":3,"dubious":false,"date":"2016-08-15 22:45"},{"_id":"7052","normalized_imdb_id":3263904,"title":"Sully","year":2016,"rating":1,"dubious":false,"date":"2016-08-19 06:07"},{"_id":"7053","normalized_imdb_id":2005151,"title":"War Dogs","year":2016,"rating":1,"dubious":false,"date":"2016-08-19 06:09"},{"_id":"7058","normalized_imdb_id":4699388,"title":"Un homme a la hauteur","year":2016,"rating":3,"dubious":false,"date":"2016-08-22 22:16"},{"_id":"7061","normalized_imdb_id":5700672,"title":"Busanhaeng","year":2016,"rating":3,"dubious":false,"date":"2016-08-23 18:48"},{"_id":"7065","normalized_imdb_id":4302938,"title":"Kubo and the Two Strings","year":2016,"rating":1,"dubious":false,"date":"2016-08-24 20:55"},{"_id":"7069","normalized_imdb_id":5580664,"title":"Voltron: Legendary Defender","year":2016,"rating":3,"dubious":true,"date":"2016-08-26 03:01"},{"_id":"7080","normalized_imdb_id":4160708,"title":"Don't Breathe","year":2016,"rating":3,"dubious":true,"date":"2016-08-29 21:09"},{"_id":"7082","normalized_imdb_id":3553976,"title":"Captain Fantastic","year":2016,"rating":3,"dubious":true,"date":"2016-08-30 21:45"},{"_id":"7084","normalized_imdb_id":2547584,"title":"Light Between Oceans, The","year":2016,"rating":3,"dubious":false,"date":"2016-08-31 02:40"},{"_id":"7087","normalized_imdb_id":2667380,"title":"Kill Command","year":2016,"rating":1,"dubious":false,"date":"2016-08-31 21:24"},{"_id":"7095","normalized_imdb_id":3958780,"title":"Equity","year":2016,"rating":3,"dubious":false,"date":"2016-09-06 04:13"},{"_id":"7097","normalized_imdb_id":5348774,"title":"Die letzte Sau","year":2016,"rating":1,"dubious":false,"date":"2016-09-06 07:35"},{"_id":"7177","normalized_imdb_id":3631112,"title":"Girl on the Train, The","year":2016,"rating":3,"dubious":false,"date":"2016-10-08 11:05"},{"_id":"7104","normalized_imdb_id":4456850,"title":"Adventures in Babysitting","year":2016,"rating":3,"dubious":false,"date":"2016-09-07 14:23"},{"_id":"7105","normalized_imdb_id":5274066,"title":"Raising the Bar","year":2016,"rating":3,"dubious":false,"date":"2016-09-07 14:29"},{"_id":"7106","normalized_imdb_id":4366830,"title":"Grease Live!","year":2016,"rating":3,"dubious":false,"date":"2016-09-07 14:52"},{"_id":"7110","normalized_imdb_id":2582782,"title":"Hell or High Water","year":2016,"rating":1,"dubious":false,"date":"2016-09-10 22:00"},{"_id":"7112","normalized_imdb_id":4520364,"title":"Morgan","year":2016,"rating":3,"dubious":false,"date":"2016-09-12 15:24"},{"_id":"7113","normalized_imdb_id":5474644,"title":"My Little Pony: Equestria Girls - Legend of Everfree","year":2016,"rating":3,"dubious":false,"date":"2016-09-12 19:16"},{"_id":"7122","normalized_imdb_id":3655972,"title":"El Olivo","year":2016,"rating":3,"dubious":false,"date":"2016-09-17 22:51"},{"_id":"7124","normalized_imdb_id":3774114,"title":"Snowden","year":2016,"rating":1,"dubious":false,"date":"2016-09-19 03:53"},{"_id":"7126","normalized_imdb_id":5294198,"title":"Catfight","year":2016,"rating":3,"dubious":false,"date":"2016-09-19 14:07"},{"_id":"7143","normalized_imdb_id":2404435,"title":"magnificent 7","year":2016,"rating":0,"dubious":false,"date":"2016-09-26 01:18"},{"_id":"7147","normalized_imdb_id":1355631,"title":"Infiltrator, The","year":2016,"rating":3,"dubious":false,"date":"2016-09-26 21:12"},{"_id":"7154","normalized_imdb_id":5521550,"title":"Dirty 30","year":2016,"rating":3,"dubious":false,"date":"2016-09-27 02:46"},{"_id":"7166","normalized_imdb_id":4621872,"title":"La pazza gioia","year":2016,"rating":3,"dubious":false,"date":"2016-10-01 17:52"},{"_id":"7167","normalized_imdb_id":4326444,"title":"Julieta","year":2016,"rating":3,"dubious":false,"date":"2016-10-01 17:55"},{"_id":"7180","normalized_imdb_id":4624424,"title":"Storks","year":2016,"rating":1,"dubious":false,"date":"2016-10-10 00:08"},{"_id":"7182","normalized_imdb_id":3721936,"title":"American Honey","year":2016,"rating":3,"dubious":false,"date":"2016-10-10 21:52"},{"_id":"7196","normalized_imdb_id":4262980,"title":"Shin Godzilla","year":2016,"rating":1,"dubious":false,"date":"2016-10-13 21:10"},{"_id":"7212","normalized_imdb_id":2140479,"title":"Accountant, The","year":2016,"rating":2,"dubious":true,"date":"2016-10-17 21:28"},{"_id":"7217","normalized_imdb_id":4551882,"title":"King Dave","year":2016,"rating":1,"dubious":false,"date":"2016-10-22 17:17"},{"_id":"7218","normalized_imdb_id":4361050,"title":"Ouija: Origin of Evil","year":2016,"rating":3,"dubious":false,"date":"2016-10-23 13:28"},{"_id":"7224","normalized_imdb_id":1267299,"title":"Rocky Horror Picture Show: Let's Do the Time Warp Again, The","year":2016,"rating":3,"dubious":true,"date":"2016-10-28 22:49"},{"_id":"7225","normalized_imdb_id":1211837,"title":"Doctor Strange","year":2016,"rating":1,"dubious":false,"date":"2016-10-28 23:11"},{"_id":"7228","normalized_imdb_id":4016934,"title":"Handmaiden (Ah-ga-ssi) , The","year":2016,"rating":3,"dubious":false,"date":"2016-10-29 21:47"},{"_id":"7229","normalized_imdb_id":1935859,"title":"Miss Peregrine's Home for Peculiar Children","year":2016,"rating":3,"dubious":false,"date":"2016-10-30 03:23"},{"_id":"7230","normalized_imdb_id":2025690,"title":"Finest Hours, The","year":2016,"rating":3,"dubious":false,"date":"2016-10-31 15:35"},{"_id":"7237","normalized_imdb_id":1679335,"title":"Trolls","year":2016,"rating":3,"dubious":false,"date":"2016-11-03 00:51"},{"_id":"7240","normalized_imdb_id":5168192,"title":"I, Daniel Blake","year":2016,"rating":3,"dubious":false,"date":"2016-11-03 19:36"},{"_id":"7246","normalized_imdb_id":4468634,"title":"Certain Women","year":2016,"rating":3,"dubious":false,"date":"2016-11-06 23:04"},{"_id":"7257","normalized_imdb_id":2543164,"title":"Arrival","year":2016,"rating":3,"dubious":true,"date":"2016-11-12 01:37"},{"_id":"7261","normalized_imdb_id":2869728,"title":"Ride Along 2","year":2016,"rating":0,"dubious":false,"date":"2016-11-14 23:51"},{"_id":"7271","normalized_imdb_id":3183660,"title":"Fantastic Beasts and Where to Find Them","year":2016,"rating":3,"dubious":true,"date":"2016-11-18 03:45"},{"_id":"7274","normalized_imdb_id":4730986,"title":"Divines","year":2016,"rating":3,"dubious":false,"date":"2016-11-18 19:23"},{"_id":"7278","normalized_imdb_id":4669986,"title":"Loving","year":2016,"rating":3,"dubious":false,"date":"2016-11-22 00:23"},{"_id":"7279","normalized_imdb_id":3393786,"title":"Jack Reacher: Never Go Back","year":2016,"rating":3,"dubious":false,"date":"2016-11-22 00:31"},{"_id":"7281","normalized_imdb_id":2119532,"title":"Hacksaw Ridge","year":2016,"rating":1,"dubious":false,"date":"2016-11-22 03:30"},{"_id":"7282","normalized_imdb_id":5973626,"title":"Batman: Return of the Caped Crusaders","year":2016,"rating":1,"dubious":false,"date":"2016-11-22 03:35"},{"_id":"7283","normalized_imdb_id":1473832,"title":"Bridget Jones's Baby","year":2016,"rating":3,"dubious":false,"date":"2016-11-22 03:43"},{"_id":"7284","normalized_imdb_id":918940,"title":"Legend of Tarzan, The","year":2016,"rating":0,"dubious":false,"date":"2016-11-22 03:54"},{"_id":"7285","normalized_imdb_id":4144190,"title":"Wiener-Dog","year":2016,"rating":1,"dubious":false,"date":"2016-11-22 04:09"},{"_id":"7286","normalized_imdb_id":1489889,"title":"Central Intelligence","year":2016,"rating":2,"dubious":false,"date":"2016-11-22 04:13"},{"_id":"7292","normalized_imdb_id":3521164,"title":"Moana","year":2016,"rating":3,"dubious":false,"date":"2016-11-24 02:28"},{"_id":"7297","normalized_imdb_id":3716530,"title":"Elle","year":2016,"rating":3,"dubious":true,"date":"2016-11-25 13:07"},{"_id":"7300","normalized_imdb_id":4550098,"title":"Nocturnal Animals","year":2016,"rating":3,"dubious":false,"date":"2016-11-28 00:21"},{"_id":"7310","normalized_imdb_id":2261287,"title":"Ballerina","year":2016,"rating":3,"dubious":false,"date":"2016-12-02 08:38"},{"_id":"7313","normalized_imdb_id":4738360,"title":"Birkebeinerne","year":2016,"rating":1,"dubious":false,"date":"2016-12-04 12:19"},{"_id":"7320","normalized_imdb_id":2436682,"title":"Duel, The","year":2016,"rating":1,"dubious":false,"date":"2016-12-11 23:53"},{"_id":"7325","normalized_imdb_id":5153952,"title":"Let Me Go","year":2016,"rating":3,"dubious":false,"date":"2016-12-13 16:39"},{"_id":"7326","normalized_imdb_id":4196848,"title":"Mr. Church","year":2016,"rating":3,"dubious":false,"date":"2016-12-14 02:02"},{"_id":"7328","normalized_imdb_id":5311514,"title":"Kimi no na wa.","year":2016,"rating":3,"dubious":false,"date":"2016-12-15 06:28"},{"_id":"7332","normalized_imdb_id":1124037,"title":"Free State of Jones","year":2016,"rating":2,"dubious":false,"date":"2016-12-16 15:22"},{"_id":"7334","normalized_imdb_id":3748528,"title":"Rogue One","year":2016,"rating":3,"dubious":false,"date":"2016-12-16 20:12"},{"_id":"7336","normalized_imdb_id":4846340,"title":"Hidden Figures","year":2016,"rating":3,"dubious":false,"date":"2016-12-16 21:28"},{"_id":"7337","normalized_imdb_id":5526028,"title":"Doukyuusei","year":2016,"rating":0,"dubious":false,"date":"2016-12-17 19:57"},{"_id":"7339","normalized_imdb_id":1542768,"title":"True Memoirs of an International Assassin","year":2016,"rating":0,"dubious":false,"date":"2016-12-19 22:21"},{"_id":"7350","normalized_imdb_id":4698584,"title":"Neruda","year":2016,"rating":0,"dubious":false,"date":"2016-12-23 21:46"},{"_id":"7351","normalized_imdb_id":2094766,"title":"Assassin's Creed","year":2016,"rating":1,"dubious":false,"date":"2016-12-24 05:02"},{"_id":"7353","normalized_imdb_id":3783958,"title":"La La Land","year":2016,"rating":3,"dubious":false,"date":"2016-12-25 17:52"},{"_id":"7355","normalized_imdb_id":3470600,"title":"Sing","year":2016,"rating":3,"dubious":true,"date":"2016-12-26 12:35"},{"_id":"7356","normalized_imdb_id":1355644,"title":"Passengers","year":2016,"rating":0,"dubious":false,"date":"2016-12-26 20:43"},{"_id":"7357","normalized_imdb_id":3608930,"title":"In a Valley of Violence","year":2016,"rating":2,"dubious":false,"date":"2016-12-26 23:07"},{"_id":"7358","normalized_imdb_id":1619029,"title":"Jackie","year":2016,"rating":3,"dubious":false,"date":"2016-12-27 02:38"},{"_id":"7367","normalized_imdb_id":5247022,"title":"Paterson","year":2016,"rating":1,"dubious":false,"date":"2016-12-30 07:49"},{"_id":"7368","normalized_imdb_id":5786040,"title":"Dernieres nouvelles du cosmos","year":2016,"rating":3,"dubious":false,"date":"2017-01-02 21:39"},{"_id":"7369","normalized_imdb_id":5664684,"title":"Hairspray Live!","year":2016,"rating":3,"dubious":false,"date":"2017-01-03 01:05"},{"_id":"7370","normalized_imdb_id":4007248,"title":"Hurricane Bianca","year":2016,"rating":3,"dubious":true,"date":"2017-01-03 02:35"},{"_id":"7372","normalized_imdb_id":4385888,"title":"20th Century Women","year":2016,"rating":3,"dubious":true,"date":"2017-01-03 03:46"},{"_id":"7374","normalized_imdb_id":5074352,"title":"Dangal","year":2016,"rating":3,"dubious":false,"date":"2017-01-04 21:50"},{"_id":"7375","normalized_imdb_id":2671706,"title":"Fences","year":2016,"rating":3,"dubious":false,"date":"2017-01-05 06:54"},{"_id":"7376","normalized_imdb_id":4034228,"title":"Manchester by the Sea","year":2016,"rating":3,"dubious":false,"date":"2017-01-05 07:02"},{"_id":"7377","normalized_imdb_id":4698684,"title":"Hunt for the Wilderpeople","year":2016,"rating":3,"dubious":true,"date":"2017-01-05 07:13"},{"_id":"7379","normalized_imdb_id":1860357,"title":"Deepwater Horizon","year":2016,"rating":2,"dubious":false,"date":"2017-01-06 00:07"},{"_id":"7385","normalized_imdb_id":3062096,"title":"Inferno","year":2016,"rating":2,"dubious":false,"date":"2017-01-08 20:48"},{"_id":"7393","normalized_imdb_id":5595168,"title":"Final Fantasy XV","year":2016,"rating":3,"dubious":false,"date":"2017-01-13 04:33"},{"_id":"7398","normalized_imdb_id":5078204,"title":"Demain tout commence","year":2016,"rating":3,"dubious":true,"date":"2017-01-15 13:45"},{"_id":"7430","normalized_imdb_id":4857264,"title":"Contratiempo","year":2016,"rating":1,"dubious":false,"date":"2017-02-05 12:10"},{"_id":"7416","normalized_imdb_id":4262174,"title":"First Girl I Loved","year":2016,"rating":3,"dubious":false,"date":"2017-01-25 06:00"},{"_id":"7417","normalized_imdb_id":2788732,"title":"Pete's Dragon","year":2016,"rating":3,"dubious":false,"date":"2017-01-25 06:55"},{"_id":"7421","normalized_imdb_id":4975722,"title":"Moonlight","year":2016,"rating":1,"dubious":false,"date":"2017-01-28 21:29"},{"_id":"7422","normalized_imdb_id":4972582,"title":"Split","year":2016,"rating":3,"dubious":false,"date":"2017-01-28 21:55"},{"_id":"7436","normalized_imdb_id":4247682,"title":"All Girls Weekend","year":2016,"rating":3,"dubious":false,"date":"2017-02-09 14:59"},{"_id":"7443","normalized_imdb_id":490215,"title":"Silence","year":2016,"rating":0,"dubious":false,"date":"2017-02-14 16:57"},{"_id":"7447","normalized_imdb_id":2592614,"title":"Resident Evil: The Final Chapter","year":2016,"rating":3,"dubious":false,"date":"2017-02-15 18:55"},{"_id":"7448","normalized_imdb_id":4136084,"title":"Florence Foster Jenkins","year":2016,"rating":3,"dubious":false,"date":"2017-02-15 19:51"},{"_id":"7449","normalized_imdb_id":3882074,"title":"Eagle Huntress, The","year":2016,"rating":1,"dubious":false,"date":"2017-02-16 03:44"},{"_id":"7451","normalized_imdb_id":3686998,"title":"Red Pill, The","year":2016,"rating":3,"dubious":false,"date":"2017-02-16 21:24"},{"_id":"7453","normalized_imdb_id":4645368,"title":"It's Only the End of the World","year":2016,"rating":3,"dubious":false,"date":"2017-02-17 15:40"},{"_id":"7455","normalized_imdb_id":4048272,"title":"Toni Erdmann","year":2016,"rating":3,"dubious":false,"date":"2017-02-17 15:45"},{"_id":"7456","normalized_imdb_id":5221584,"title":"Aquarius","year":2016,"rating":3,"dubious":false,"date":"2017-02-17 15:46"},{"_id":"7457","normalized_imdb_id":4714782,"title":"Personal Shopper","year":2016,"rating":3,"dubious":false,"date":"2017-02-17 15:55"},{"_id":"7460","normalized_imdb_id":4731136,"title":"A Cure for Wellness","year":2016,"rating":1,"dubious":false,"date":"2017-02-18 02:12"},{"_id":"7461","normalized_imdb_id":2091935,"title":"Mr. Right","year":2016,"rating":2,"dubious":false,"date":"2017-02-18 02:31"},{"_id":"7462","normalized_imdb_id":3963816,"title":"Marauders","year":2016,"rating":1,"dubious":false,"date":"2017-02-18 08:26"},{"_id":"7464","normalized_imdb_id":3741834,"title":"Lion","year":2016,"rating":2,"dubious":false,"date":"2017-02-19 11:37"},{"_id":"7465","normalized_imdb_id":4273292,"title":"Under The Shadow","year":2016,"rating":3,"dubious":false,"date":"2017-02-19 18:44"},{"_id":"7470","normalized_imdb_id":2034800,"title":"Great Wall, The","year":2016,"rating":0,"dubious":false,"date":"2017-02-22 18:53"},{"_id":"7473","normalized_imdb_id":4666726,"title":"Christine","year":2016,"rating":3,"dubious":false,"date":"2017-02-27 14:34"},{"_id":"7474","normalized_imdb_id":4120176,"title":"Things to come - L'avenir","year":2016,"rating":1,"dubious":false,"date":"2017-02-28 14:11"},{"_id":"7481","normalized_imdb_id":5434870,"title":"Little Sister","year":2016,"rating":3,"dubious":false,"date":"2017-03-03 21:38"},{"_id":"7485","normalized_imdb_id":5974388,"title":"Bar Bahar","year":2016,"rating":3,"dubious":false,"date":"2017-03-04 21:38"},{"_id":"7497","normalized_imdb_id":3717252,"title":"Underworld: Blood Wars","year":2016,"rating":2,"dubious":false,"date":"2017-03-10 08:04"},{"_id":"7505","normalized_imdb_id":4158876,"title":"Other People","year":2016,"rating":3,"dubious":false,"date":"2017-03-12 09:46"},{"_id":"7509","normalized_imdb_id":5254640,"title":"Spa Night","year":2016,"rating":3,"dubious":false,"date":"2017-03-13 09:33"},{"_id":"7515","normalized_imdb_id":1878870,"title":"Edge of Seventeen, The","year":2016,"rating":3,"dubious":false,"date":"2017-03-15 13:19"},{"_id":"7520","normalized_imdb_id":4714568,"title":"Young Offenders, The","year":2016,"rating":3,"dubious":true,"date":"2017-03-18 11:58"},{"_id":"7525","normalized_imdb_id":4392770,"title":"Always Shine","year":2016,"rating":3,"dubious":false,"date":"2017-03-20 02:35"},{"_id":"7545","normalized_imdb_id":3095734,"title":"Monster Trucks","year":2016,"rating":0,"dubious":false,"date":"2017-03-31 01:35"},{"_id":"7546","normalized_imdb_id":4869556,"title":"Breathing Deep","year":2016,"rating":1,"dubious":false,"date":"2017-03-31 02:19"},{"_id":"7555","normalized_imdb_id":1212428,"title":"Lost City of Z, The","year":2016,"rating":1,"dubious":false,"date":"2017-04-03 22:53"},{"_id":"7560","normalized_imdb_id":3908142,"title":"Love Witch, The","year":2016,"rating":3,"dubious":false,"date":"2017-04-06 18:41"},{"_id":"7561","normalized_imdb_id":4540710,"title":"Miss Sloane","year":2016,"rating":3,"dubious":false,"date":"2017-04-06 18:41"},{"_id":"7562","normalized_imdb_id":4645330,"title":"Denial","year":2016,"rating":3,"dubious":false,"date":"2017-04-06 18:42"},{"_id":"7565","normalized_imdb_id":4341582,"title":"Queen of Katwe","year":2016,"rating":3,"dubious":false,"date":"2017-04-08 01:26"},{"_id":"7569","normalized_imdb_id":5073620,"title":"Below Her Mouth","year":2016,"rating":3,"dubious":false,"date":"2017-04-13 18:46"},{"_id":"7583","normalized_imdb_id":2361317,"title":"Live by Night","year":2016,"rating":1,"dubious":false,"date":"2017-04-20 15:03"},{"_id":"7589","normalized_imdb_id":4644822,"title":"Electra Woman and Dyna Girl","year":2016,"rating":3,"dubious":false,"date":"2017-04-25 04:06"},{"_id":"7591","normalized_imdb_id":4158096,"title":"Free Fire","year":2016,"rating":0,"dubious":false,"date":"2017-04-26 06:17"},{"_id":"7662","normalized_imdb_id":4954522,"title":"Raw","year":2016,"rating":3,"dubious":false,"date":"2017-05-24 08:27"},{"_id":"7688","normalized_imdb_id":1082807,"title":"Belko Experiment, The","year":2016,"rating":3,"dubious":false,"date":"2017-06-15 12:06"},{"_id":"7691","normalized_imdb_id":4680182,"title":"Colossal","year":2016,"rating":0,"dubious":false,"date":"2017-06-17 18:01"},{"_id":"7704","normalized_imdb_id":4547056,"title":"Girl with All the Gifts, The","year":2016,"rating":3,"dubious":false,"date":"2017-06-23 23:47"},{"_id":"7705","normalized_imdb_id":3708886,"title":"War on Everyone","year":2016,"rating":3,"dubious":false,"date":"2017-06-26 07:40"},{"_id":"7722","normalized_imdb_id":2290819,"title":"Cam-Girl","year":2016,"rating":3,"dubious":false,"date":"2017-07-07 06:16"},{"_id":"7719","normalized_imdb_id":3991412,"title":"9th Life of Louis Drax, The","year":2016,"rating":1,"dubious":false,"date":"2017-07-04 19:32"},{"_id":"7721","normalized_imdb_id":4322180,"title":"L'età d'oro","year":2016,"rating":1,"dubious":false,"date":"2017-07-05 10:57"},{"_id":"7727","normalized_imdb_id":2387499,"title":"Keeping Up with the Joneses","year":2016,"rating":3,"dubious":false,"date":"2017-07-09 06:25"},{"_id":"7729","normalized_imdb_id":5059406,"title":"I Am the Pretty Thing That Lives in the House","year":2016,"rating":3,"dubious":false,"date":"2017-07-09 13:05"},{"_id":"7733","normalized_imdb_id":2262129,"title":"Spidarlings","year":2016,"rating":3,"dubious":false,"date":"2017-07-10 19:14"},{"_id":"7737","normalized_imdb_id":5954304,"title":"Dragon Spell, The","year":2016,"rating":1,"dubious":false,"date":"2017-07-14 03:05"},{"_id":"7738","normalized_imdb_id":5898034,"title":"Monster High: Welcome to Monster High","year":2016,"rating":3,"dubious":false,"date":"2017-07-14 03:17"},{"_id":"7741","normalized_imdb_id":4255304,"title":"Void, The","year":2016,"rating":3,"dubious":false,"date":"2017-07-14 17:38"},{"_id":"7754","normalized_imdb_id":2315582,"title":"Una","year":2016,"rating":2,"dubious":false,"date":"2017-07-27 06:15"},{"_id":"7758","normalized_imdb_id":4649416,"title":"Almost Christmas","year":2016,"rating":3,"dubious":false,"date":"2017-07-29 16:02"},{"_id":"7759","normalized_imdb_id":5695764,"title":"Varoonegi","year":2016,"rating":3,"dubious":false,"date":"2017-07-29 19:00"},{"_id":"7760","normalized_imdb_id":5265960,"title":"Untamed, The","year":2016,"rating":3,"dubious":false,"date":"2017-07-29 19:08"},{"_id":"7766","normalized_imdb_id":1878841,"title":"Darkness, The","year":2016,"rating":2,"dubious":false,"date":"2017-08-01 22:24"},{"_id":"7767","normalized_imdb_id":3610746,"title":"Don't Hang Up","year":2016,"rating":0,"dubious":false,"date":"2017-08-01 23:43"},{"_id":"7775","normalized_imdb_id":1663655,"title":"Martyrs","year":2016,"rating":3,"dubious":false,"date":"2017-08-11 23:23"},{"_id":"7784","normalized_imdb_id":3387266,"title":"A United Kingdom","year":2016,"rating":3,"dubious":false,"date":"2017-08-25 15:16"},{"_id":"7800","normalized_imdb_id":1661275,"title":"Their Finest","year":2016,"rating":3,"dubious":false,"date":"2017-09-12 19:11"},{"_id":"7802","normalized_imdb_id":3666024,"title":"Red Turtle, The","year":2016,"rating":0,"dubious":false,"date":"2017-09-16 09:37"},{"_id":"7865","normalized_imdb_id":2321405,"title":"My Life as a Zucchini","year":2016,"rating":3,"dubious":false,"date":"2017-10-22 07:35"},{"_id":"7837","normalized_imdb_id":2392830,"title":"A Quiet Passion","year":2016,"rating":3,"dubious":false,"date":"2017-09-25 22:38"},{"_id":"7871","normalized_imdb_id":5918104,"title":"King of the Dancehall","year":2016,"rating":2,"dubious":false,"date":"2017-10-23 08:28"},{"_id":"7879","normalized_imdb_id":5789664,"title":"Petersburg: a selfie","year":2016,"rating":3,"dubious":false,"date":"2017-10-31 11:02"},{"_id":"7882","normalized_imdb_id":1183374,"title":"Pet","year":2016,"rating":2,"dubious":false,"date":"2017-10-31 23:31"},{"_id":"7886","normalized_imdb_id":5154288,"title":"Prevenge","year":2016,"rating":3,"dubious":false,"date":"2017-11-03 03:01"},{"_id":"7911","normalized_imdb_id":5598100,"title":"Patients","year":2016,"rating":1,"dubious":false,"date":"2017-11-18 00:49"},{"_id":"7912","normalized_imdb_id":3922798,"title":"Siege of Jadotville, The","year":2016,"rating":1,"dubious":false,"date":"2017-11-18 18:39"},{"_id":"7952","normalized_imdb_id":4191702,"title":"Norman","year":2016,"rating":1,"dubious":false,"date":"2017-12-19 01:02"},{"_id":"7961","normalized_imdb_id":5867800,"title":"Aruvi","year":2016,"rating":3,"dubious":true,"date":"2017-12-21 22:14"},{"_id":"7962","normalized_imdb_id":1711525,"title":"Office Christmas Party","year":2016,"rating":3,"dubious":false,"date":"2017-12-22 03:18"},{"_id":"7965","normalized_imdb_id":5709236,"title":"Hated in the Nation","year":2016,"rating":3,"dubious":false,"date":"2017-12-24 11:25"},{"_id":"7975","normalized_imdb_id":3289956,"title":"Autopsy of Jane Doe, The","year":2016,"rating":1,"dubious":true,"date":"2017-12-30 09:54"},{"_id":"7976","normalized_imdb_id":5022298,"title":"Ice Fantasy","year":2016,"rating":3,"dubious":false,"date":"2017-12-31 22:57"},{"_id":"8001","normalized_imdb_id":4805316,"title":"A Dark Song","year":2016,"rating":0,"dubious":true,"date":"2018-01-10 19:45"},{"_id":"8009","normalized_imdb_id":3896738,"title":"Hounds of Love","year":2016,"rating":3,"dubious":false,"date":"2018-01-13 09:13"},{"_id":"8010","normalized_imdb_id":3838992,"title":"Yoga Hosers","year":2016,"rating":2,"dubious":false,"date":"2018-01-13 22:31"},{"_id":"8018","normalized_imdb_id":5791884,"title":"Ne gledaj mi u pijat","year":2016,"rating":1,"dubious":false,"date":"2018-01-20 16:26"},{"_id":"8028","normalized_imdb_id":4961380,"title":"House on Willow Street","year":2016,"rating":3,"dubious":false,"date":"2018-02-01 14:42"},{"_id":"8030","normalized_imdb_id":4788934,"title":"Little Door Gods","year":2016,"rating":3,"dubious":false,"date":"2018-02-02 05:43"},{"_id":"8032","normalized_imdb_id":5096536,"title":"Réparer les vivants","year":2016,"rating":1,"dubious":false,"date":"2018-02-05 03:08"},{"_id":"8034","normalized_imdb_id":5571734,"title":"Pink","year":2016,"rating":3,"dubious":false,"date":"2018-02-05 05:59"},{"_id":"8035","normalized_imdb_id":4680196,"title":"Planetarium","year":2016,"rating":3,"dubious":false,"date":"2018-02-05 15:30"},{"_id":"8047","normalized_imdb_id":4746506,"title":"Fai bei sogni","year":2016,"rating":2,"dubious":true,"date":"2018-02-09 21:42"},{"_id":"8049","normalized_imdb_id":4443658,"title":"Better Watch Out","year":2016,"rating":3,"dubious":false,"date":"2018-02-11 20:30"},{"_id":"8067","normalized_imdb_id":5165344,"title":"Rustom","year":2016,"rating":3,"dubious":false,"date":"2018-02-20 22:35"},{"_id":"8068","normalized_imdb_id":4836736,"title":"Nowhere Boys: The Book of Shadows","year":2016,"rating":3,"dubious":true,"date":"2018-02-21 14:49"},{"_id":"8076","normalized_imdb_id":5908566,"title":"Locos de Amor","year":2016,"rating":2,"dubious":false,"date":"2018-02-27 02:13"},{"_id":"8083","normalized_imdb_id":1995390,"title":"Our Kind of Traitor","year":2016,"rating":3,"dubious":false,"date":"2018-03-02 19:46"},{"_id":"8084","normalized_imdb_id":5697078,"title":"Sensitivity Training","year":2016,"rating":3,"dubious":false,"date":"2018-03-03 04:13"},{"_id":"8092","normalized_imdb_id":3721954,"title":"Maudie","year":2016,"rating":3,"dubious":false,"date":"2018-03-06 10:07"},{"_id":"8095","normalized_imdb_id":5039088,"title":"Transfiguration, The","year":2016,"rating":0,"dubious":false,"date":"2018-03-06 14:15"},{"_id":"8129","normalized_imdb_id":4682708,"title":"Tenemos la carne [We Are the Flesh]","year":2016,"rating":0,"dubious":false,"date":"2018-03-21 22:20"},{"_id":"8136","normalized_imdb_id":5629964,"title":"Midnight Man, The","year":2016,"rating":3,"dubious":false,"date":"2018-03-31 11:06"},{"_id":"8135","normalized_imdb_id":4911940,"title":"Tschick","year":2016,"rating":1,"dubious":false,"date":"2018-03-27 20:49"},{"_id":"8273","normalized_imdb_id":3760922,"title":"My Big Fat Greek Wedding 2","year":2016,"rating":3,"dubious":false,"date":"2018-06-06 01:09"},{"_id":"8272","normalized_imdb_id":3797868,"title":"Choice, The","year":2016,"rating":3,"dubious":false,"date":"2018-06-05 20:12"},{"_id":"8325","normalized_imdb_id":5563932,"title":"Thomas & Friends: The Great Race","year":2016,"rating":3,"dubious":false,"date":"2018-07-15 13:57"},{"_id":"8207","normalized_imdb_id":4196450,"title":"Birth of a Nation, The","year":2016,"rating":1,"dubious":false,"date":"2018-05-15 21:03"},{"_id":"8258","normalized_imdb_id":4871980,"title":"Perfect Match, The","year":2016,"rating":2,"dubious":false,"date":"2018-05-29 16:54"},{"_id":"8228","normalized_imdb_id":3381008,"title":"Brothers Grimsby, The","year":2016,"rating":1,"dubious":false,"date":"2018-05-18 21:44"},{"_id":"8312","normalized_imdb_id":5323662,"title":"Koe no katachi","year":2016,"rating":1,"dubious":false,"date":"2018-06-29 18:39"},{"_id":"8309","normalized_imdb_id":1985949,"title":"Angry Birds Movie, The","year":2016,"rating":1,"dubious":false,"date":"2018-06-24 18:32"},{"_id":"8332","normalized_imdb_id":3416828,"title":"Ice Age: Collision Course","year":2016,"rating":3,"dubious":false,"date":"2018-07-16 17:48"},{"_id":"8338","normalized_imdb_id":1540011,"title":"Blair Witch","year":2016,"rating":2,"dubious":false,"date":"2018-07-20 21:01"},{"_id":"8339","normalized_imdb_id":4682786,"title":"Collateral Beauty","year":2016,"rating":2,"dubious":false,"date":"2018-07-24 16:42"},{"_id":"8341","normalized_imdb_id":3640424,"title":"Allied","year":2016,"rating":3,"dubious":true,"date":"2018-07-26 20:35"},{"_id":"8348","normalized_imdb_id":4270492,"title":"Billions","year":2016,"rating":3,"dubious":false,"date":"2018-07-30 15:58"},{"_id":"8350","normalized_imdb_id":4981636,"title":"Middle School: The Worst Years of My Life","year":2016,"rating":3,"dubious":false,"date":"2018-07-31 08:25"},{"_id":"8366","normalized_imdb_id":4191580,"title":"Meet the Blacks","year":2016,"rating":3,"dubious":false,"date":"2018-08-10 03:49"},{"_id":"8372","normalized_imdb_id":3416532,"title":"A Monster Calls","year":2016,"rating":3,"dubious":true,"date":"2018-08-13 20:58"},{"_id":"8373","normalized_imdb_id":3628584,"title":"Barbershop: The Next Cut","year":2016,"rating":3,"dubious":false,"date":"2018-08-14 14:47"},{"_id":"8376","normalized_imdb_id":1860213,"title":"Dirty Grandpa","year":2016,"rating":2,"dubious":false,"date":"2018-08-16 00:18"},{"_id":"8455","normalized_imdb_id":2461150,"title":"Masterminds","year":2016,"rating":3,"dubious":false,"date":"2018-10-26 03:17"},{"_id":"8505","normalized_imdb_id":1316541,"title":"Bliss!","year":2016,"rating":3,"dubious":false,"date":"2018-11-30 15:33"},{"_id":"8570","normalized_imdb_id":5662932,"title":"Raman Raghav 2.0","year":2016,"rating":2,"dubious":false,"date":"2018-12-19 13:43"},{"_id":"8581","normalized_imdb_id":4779026,"title":"I Had a Bloody Good Time at House Harker","year":2016,"rating":1,"dubious":true,"date":"2019-01-02 18:32"},{"_id":"8602","normalized_imdb_id":4396662,"title":"Liberty's Secret","year":2016,"rating":3,"dubious":false,"date":"2019-01-14 18:01"},{"_id":"8603","normalized_imdb_id":4331970,"title":"Quand on a 17 ans","year":2016,"rating":3,"dubious":false,"date":"2019-01-14 18:03"},{"_id":"8604","normalized_imdb_id":3973012,"title":"Women Who Kill","year":2016,"rating":3,"dubious":false,"date":"2019-01-14 18:03"},{"_id":"8691","normalized_imdb_id":3352390,"title":"Friend Request","year":2016,"rating":3,"dubious":false,"date":"2019-03-28 18:49"},{"_id":"8696","normalized_imdb_id":3845670,"title":"Seoulyeok [Seoul Station]","year":2016,"rating":0,"dubious":false,"date":"2019-04-05 21:52"},{"_id":"8705","normalized_imdb_id":3589968,"title":"Courier X","year":2016,"rating":0,"dubious":false,"date":"2019-04-17 01:49"},{"_id":"8716","normalized_imdb_id":5173166,"title":"Vier gegen die Bank","year":2016,"rating":1,"dubious":false,"date":"2019-04-23 19:32"},{"_id":"8793","normalized_imdb_id":5340882,"title":"Zoombies","year":2016,"rating":3,"dubious":false,"date":"2019-07-22 20:03"},{"_id":"9022","normalized_imdb_id":3774802,"title":"Pandemic","year":2016,"rating":3,"dubious":false,"date":"2020-02-29 08:33"},{"_id":"9040","normalized_imdb_id":2638144,"title":"Ben-Hur","year":2016,"rating":1,"dubious":false,"date":"2020-03-18 02:28"},{"_id":"9041","normalized_imdb_id":4383594,"title":"Nine Lives","year":2016,"rating":1,"dubious":false,"date":"2020-03-18 17:00"},{"_id":"9044","normalized_imdb_id":4211044,"title":"Adult Life Skills","year":2016,"rating":3,"dubious":false,"date":"2020-03-21 10:15"},{"_id":"9053","normalized_imdb_id":4277264,"title":"Ma revolution","year":2016,"rating":3,"dubious":false,"date":"2020-03-27 23:00"},{"_id":"9073","normalized_imdb_id":3838802,"title":"Blood Stripe","year":2016,"rating":1,"dubious":false,"date":"2020-04-09 21:06"},{"_id":"9093","normalized_imdb_id":4972062,"title":"Don't Think Twice","year":2016,"rating":3,"dubious":false,"date":"2020-04-26 19:01"},{"_id":"9101","normalized_imdb_id":4991906,"title":"Suicide kale","year":2016,"rating":3,"dubious":false,"date":"2020-04-29 22:45"},{"_id":"9141","normalized_imdb_id":4991512,"title":"Tramps","year":2016,"rating":1,"dubious":true,"date":"2020-05-24 00:11"},{"_id":"9156","normalized_imdb_id":3893280,"title":"Ticket, The","year":2016,"rating":1,"dubious":false,"date":"2020-06-06 20:20"},{"_id":"9369","normalized_imdb_id":5016946,"title":"Handsome Devil","year":2016,"rating":1,"dubious":false,"date":"2020-12-13 01:00"},{"_id":"9259","normalized_imdb_id":4305148,"title":"Lovesong","year":2016,"rating":3,"dubious":false,"date":"2020-09-03 08:16"},{"_id":"9300","normalized_imdb_id":1920885,"title":"Big Fish & Begonia","year":2016,"rating":3,"dubious":false,"date":"2020-10-08 02:00"},{"_id":"9349","normalized_imdb_id":4273562,"title":"Yu-Gi-Oh!: The Dark Side of Dimensions","year":2016,"rating":1,"dubious":false,"date":"2020-12-03 03:56"},{"_id":"9390","normalized_imdb_id":5923962,"title":"Gantz: O","year":2016,"rating":1,"dubious":false,"date":"2020-12-14 18:51"},{"_id":"9394","normalized_imdb_id":6261136,"title":"Vse o muzhchinakh","year":2016,"rating":1,"dubious":false,"date":"2020-12-17 11:22"},{"_id":"9465","normalized_imdb_id":4831420,"title":"Sharknado 4: The 4th Awakens","year":2016,"rating":3,"dubious":true,"date":"2021-02-03 10:33"},{"_id":"9484","normalized_imdb_id":2788432,"title":"American Crime Story","year":2016,"rating":3,"dubious":false,"date":"2021-02-18 21:31"},{"_id":"9511","normalized_imdb_id":6162808,"title":"Miss Saigon: 25th Anniversary","year":2016,"rating":2,"dubious":false,"date":"2021-03-10 03:11"},{"_id":"9570","normalized_imdb_id":4074928,"title":"Realive","year":2016,"rating":1,"dubious":false,"date":"2021-03-17 21:13"},{"_id":"9572","normalized_imdb_id":5553782,"title":"Linefork","year":2016,"rating":3,"dubious":false,"date":"2021-03-18 15:55"},{"_id":"9581","normalized_imdb_id":4950110,"title":"I'm Not Ashamed","year":2016,"rating":3,"dubious":false,"date":"2021-03-24 01:16"},{"_id":"9746","normalized_imdb_id":3115906,"title":"Nowhereland","year":2016,"rating":3,"dubious":false,"date":"2021-04-30 08:52"},{"_id":"9844","normalized_imdb_id":6818880,"title":"Sluga naroda 2","year":2016,"rating":1,"dubious":false,"date":"2021-05-22 23:37"},{"_id":"7241","normalized_imdb_id":451279,"title":"Wonder Woman","year":2017,"rating":3,"dubious":false,"date":"2016-11-04 11:29"},{"_id":"7354","normalized_imdb_id":4030600,"title":"Bye Bye Man, The","year":2017,"rating":3,"dubious":false,"date":"2016-12-26 02:05"},{"_id":"7386","normalized_imdb_id":5740806,"title":"Coin Heist, The","year":2017,"rating":3,"dubious":false,"date":"2017-01-10 20:25"},{"_id":"7397","normalized_imdb_id":5540622,"title":"Alexander IRL","year":2017,"rating":2,"dubious":false,"date":"2017-01-15 07:25"},{"_id":"7411","normalized_imdb_id":1293847,"title":"xXx: Return of Xander Cage","year":2017,"rating":3,"dubious":false,"date":"2017-01-20 08:20"},{"_id":"7419","normalized_imdb_id":5493706,"title":"Death Race 2050","year":2017,"rating":3,"dubious":false,"date":"2017-01-25 22:38"},{"_id":"7439","normalized_imdb_id":4116284,"title":"LEGO Batman Movie, The","year":2017,"rating":3,"dubious":true,"date":"2017-02-12 12:45"},{"_id":"7445","normalized_imdb_id":3922818,"title":"Space Between Us, The","year":2017,"rating":3,"dubious":false,"date":"2017-02-15 18:36"},{"_id":"7446","normalized_imdb_id":4425200,"title":"John Wick: Chapter 2","year":2017,"rating":1,"dubious":false,"date":"2017-02-15 18:42"},{"_id":"7469","normalized_imdb_id":4465564,"title":"Fifty Shades Darker","year":2017,"rating":3,"dubious":false,"date":"2017-02-22 15:54"},{"_id":"7479","normalized_imdb_id":3315342,"title":"Logan","year":2017,"rating":3,"dubious":true,"date":"2017-03-03 04:46"},{"_id":"7486","normalized_imdb_id":4157510,"title":"For Here or To Go?","year":2017,"rating":3,"dubious":false,"date":"2017-03-05 00:45"},{"_id":"7490","normalized_imdb_id":1412528,"title":"Table 19","year":2017,"rating":3,"dubious":false,"date":"2017-03-06 21:29"},{"_id":"7690","normalized_imdb_id":1691916,"title":"Before I Fall","year":2017,"rating":3,"dubious":false,"date":"2017-06-17 02:09"},{"_id":"7501","normalized_imdb_id":5598192,"title":"Innan vi dor","year":2017,"rating":3,"dubious":false,"date":"2017-03-10 08:09"},{"_id":"7504","normalized_imdb_id":3731562,"title":"Kong: Skull Island","year":2017,"rating":1,"dubious":false,"date":"2017-03-12 09:16"},{"_id":"7508","normalized_imdb_id":5052448,"title":"Get Out","year":2017,"rating":3,"dubious":false,"date":"2017-03-13 00:22"},{"_id":"7523","normalized_imdb_id":2771200,"title":"Beauty and the Beast","year":2017,"rating":3,"dubious":true,"date":"2017-03-19 01:16"},{"_id":"7524","normalized_imdb_id":4144332,"title":"Deidra & Laney Rob a Train","year":2017,"rating":3,"dubious":false,"date":"2017-03-19 11:16"},{"_id":"7527","normalized_imdb_id":3717490,"title":"Power Rangers","year":2017,"rating":3,"dubious":false,"date":"2017-03-23 03:31"},{"_id":"7540","normalized_imdb_id":5442430,"title":"Life","year":2017,"rating":3,"dubious":false,"date":"2017-03-30 01:56"},{"_id":"7551","normalized_imdb_id":1219827,"title":"Ghost in the Shell","year":2017,"rating":3,"dubious":false,"date":"2017-04-01 17:13"},{"_id":"7553","normalized_imdb_id":3874544,"title":"Boss Baby, The","year":2017,"rating":1,"dubious":false,"date":"2017-04-03 16:52"},{"_id":"7564","normalized_imdb_id":5834660,"title":"Dance Academy: The Movie","year":2017,"rating":3,"dubious":false,"date":"2017-04-07 00:25"},{"_id":"7597","normalized_imdb_id":1734493,"title":"Unlocked","year":2017,"rating":3,"dubious":false,"date":"2017-04-30 10:50"},{"_id":"7573","normalized_imdb_id":5710514,"title":"I Don't Feel at Home in This World Anymore","year":2017,"rating":3,"dubious":false,"date":"2017-04-15 16:40"},{"_id":"7579","normalized_imdb_id":4630562,"title":"Fate of the Furious, The","year":2017,"rating":3,"dubious":true,"date":"2017-04-17 04:50"},{"_id":"7581","normalized_imdb_id":5155780,"title":"Discovery, The","year":2017,"rating":3,"dubious":false,"date":"2017-04-19 07:35"},{"_id":"7592","normalized_imdb_id":3462710,"title":"Unforgettable","year":2017,"rating":3,"dubious":false,"date":"2017-04-26 06:23"},{"_id":"7595","normalized_imdb_id":3896198,"title":"Guardians of the Galaxy Vol. 2","year":2017,"rating":3,"dubious":false,"date":"2017-04-29 08:05"},{"_id":"7604","normalized_imdb_id":4287320,"title":"Circle, The","year":2017,"rating":3,"dubious":false,"date":"2017-05-06 03:53"},{"_id":"7607","normalized_imdb_id":2316204,"title":"Alien: Covenant","year":2017,"rating":3,"dubious":true,"date":"2017-05-16 09:59"},{"_id":"7608","normalized_imdb_id":1972591,"title":"King Arthur","year":2017,"rating":1,"dubious":false,"date":"2017-05-17 02:16"},{"_id":"7665","normalized_imdb_id":1790809,"title":"Pirates of the Caribbean: Dead Men Tell No Tales","year":2017,"rating":1,"dubious":false,"date":"2017-05-27 19:15"},{"_id":"7669","normalized_imdb_id":4481414,"title":"Gifted","year":2017,"rating":3,"dubious":false,"date":"2017-05-30 01:12"},{"_id":"7670","normalized_imdb_id":5001718,"title":"Everything, Everything","year":2017,"rating":3,"dubious":false,"date":"2017-05-30 01:14"},{"_id":"7676","normalized_imdb_id":2334871,"title":"Snatched","year":2017,"rating":3,"dubious":false,"date":"2017-06-06 14:38"},{"_id":"7677","normalized_imdb_id":2763304,"title":"T2 Trainspotting","year":2017,"rating":3,"dubious":true,"date":"2017-06-07 05:20"},{"_id":"7681","normalized_imdb_id":2345759,"title":"Mummy, The","year":2017,"rating":2,"dubious":false,"date":"2017-06-08 16:55"},{"_id":"7682","normalized_imdb_id":4411596,"title":"My Cousin Rachel","year":2017,"rating":3,"dubious":true,"date":"2017-06-11 01:39"},{"_id":"7684","normalized_imdb_id":4899370,"title":"Megan Leavy","year":2017,"rating":3,"dubious":true,"date":"2017-06-12 23:41"},{"_id":"7700","normalized_imdb_id":2091256,"title":"Captain Underpants: The First Epic Movie","year":2017,"rating":1,"dubious":false,"date":"2017-06-21 13:53"},{"_id":"7701","normalized_imdb_id":4799050,"title":"Rough Night","year":2017,"rating":3,"dubious":false,"date":"2017-06-22 05:54"},{"_id":"7779","normalized_imdb_id":5140878,"title":"Annabelle: Creation","year":2017,"rating":3,"dubious":false,"date":"2017-08-16 03:33"},{"_id":"7707","normalized_imdb_id":5929750,"title":"Beatriz at Dinner","year":2017,"rating":3,"dubious":false,"date":"2017-06-28 01:35"},{"_id":"7708","normalized_imdb_id":2872518,"title":"Shack, The","year":2017,"rating":3,"dubious":true,"date":"2017-06-28 03:25"},{"_id":"7709","normalized_imdb_id":3606752,"title":"Cars 3","year":2017,"rating":3,"dubious":true,"date":"2017-06-28 08:22"},{"_id":"7715","normalized_imdb_id":3469046,"title":"Despicable Me 3","year":2017,"rating":3,"dubious":false,"date":"2017-07-02 03:15"},{"_id":"7717","normalized_imdb_id":3890160,"title":"Baby Driver","year":2017,"rating":1,"dubious":false,"date":"2017-07-03 19:57"},{"_id":"7720","normalized_imdb_id":5462602,"title":"Big Sick, The","year":2017,"rating":3,"dubious":false,"date":"2017-07-05 06:21"},{"_id":"7724","normalized_imdb_id":2250912,"title":"Spider-Man: Homecoming","year":2017,"rating":3,"dubious":false,"date":"2017-07-07 17:41"},{"_id":"7725","normalized_imdb_id":2406566,"title":"Atomic Blonde","year":2017,"rating":3,"dubious":false,"date":"2017-07-07 22:59"},{"_id":"7734","normalized_imdb_id":5023260,"title":"Last Word, The","year":2017,"rating":3,"dubious":false,"date":"2017-07-10 19:28"},{"_id":"7735","normalized_imdb_id":5666304,"title":"Little Hours, The","year":2017,"rating":3,"dubious":false,"date":"2017-07-11 00:15"},{"_id":"7736","normalized_imdb_id":4695012,"title":"It Comes at Night","year":2017,"rating":3,"dubious":true,"date":"2017-07-12 20:01"},{"_id":"7739","normalized_imdb_id":6536944,"title":"Monster High: Electrified","year":2017,"rating":3,"dubious":false,"date":"2017-07-14 03:22"},{"_id":"7742","normalized_imdb_id":3450958,"title":"War for the Planet of the Apes","year":2017,"rating":1,"dubious":false,"date":"2017-07-16 02:37"},{"_id":"7743","normalized_imdb_id":3967856,"title":"Okja","year":2017,"rating":3,"dubious":false,"date":"2017-07-18 02:57"},{"_id":"7745","normalized_imdb_id":5362988,"title":"Wind River","year":2017,"rating":3,"dubious":true,"date":"2017-07-20 03:35"},{"_id":"7746","normalized_imdb_id":5592248,"title":"Beguiled, The","year":2017,"rating":3,"dubious":false,"date":"2017-07-20 03:38"},{"_id":"7747","normalized_imdb_id":5322012,"title":"Wish Upon","year":2017,"rating":3,"dubious":false,"date":"2017-07-21 21:26"},{"_id":"7748","normalized_imdb_id":5013056,"title":"Dunkirk","year":2017,"rating":0,"dubious":false,"date":"2017-07-22 17:35"},{"_id":"7751","normalized_imdb_id":2239822,"title":"Valerian and the City of a Thousand Planets","year":2017,"rating":1,"dubious":false,"date":"2017-07-26 16:35"},{"_id":"7778","normalized_imdb_id":5390504,"title":"Detroit","year":2017,"rating":2,"dubious":false,"date":"2017-08-14 23:20"},{"_id":"7762","normalized_imdb_id":5990342,"title":"Incredible Jessica James, The","year":2017,"rating":3,"dubious":false,"date":"2017-07-30 02:20"},{"_id":"7763","normalized_imdb_id":3564472,"title":"Girls Trip","year":2017,"rating":3,"dubious":false,"date":"2017-07-31 19:53"},{"_id":"7768","normalized_imdb_id":6524480,"title":"Plasmatic Day","year":2017,"rating":1,"dubious":false,"date":"2017-08-02 05:17"},{"_id":"7770","normalized_imdb_id":1648190,"title":"Dark Tower, The","year":2017,"rating":1,"dubious":false,"date":"2017-08-04 13:43"},{"_id":"7772","normalized_imdb_id":4877122,"title":"Emoji Movie, The","year":2017,"rating":1,"dubious":false,"date":"2017-08-11 03:14"},{"_id":"7780","normalized_imdb_id":5541240,"title":"To the bone","year":2017,"rating":3,"dubious":false,"date":"2017-08-19 16:21"},{"_id":"7781","normalized_imdb_id":1959563,"title":"Hitman's Bodyguard, The","year":2017,"rating":3,"dubious":true,"date":"2017-08-20 05:00"},{"_id":"7785","normalized_imdb_id":3532216,"title":"American Made","year":2017,"rating":1,"dubious":false,"date":"2017-08-27 09:13"},{"_id":"7786","normalized_imdb_id":5439796,"title":"Logan Lucky","year":2017,"rating":3,"dubious":false,"date":"2017-08-27 22:48"},{"_id":"7787","normalized_imdb_id":491203,"title":"Tulip Fever","year":2017,"rating":3,"dubious":false,"date":"2017-08-30 08:57"},{"_id":"7788","normalized_imdb_id":6048930,"title":"Naked","year":2017,"rating":2,"dubious":false,"date":"2017-08-31 04:30"},{"_id":"7794","normalized_imdb_id":1241317,"title":"Death Note","year":2017,"rating":0,"dubious":false,"date":"2017-09-02 10:49"},{"_id":"7795","normalized_imdb_id":1536537,"title":"What Happened to Monday","year":2017,"rating":3,"dubious":false,"date":"2017-09-02 23:35"},{"_id":"7799","normalized_imdb_id":1396484,"title":"It","year":2017,"rating":3,"dubious":false,"date":"2017-09-09 18:54"},{"_id":"7803","normalized_imdb_id":5109784,"title":"Mother!","year":2017,"rating":2,"dubious":true,"date":"2017-09-16 19:33"},{"_id":"7806","normalized_imdb_id":5580036,"title":"I, Tonya","year":2017,"rating":3,"dubious":false,"date":"2017-09-20 02:23"},{"_id":"7808","normalized_imdb_id":5962210,"title":"Ingrid Goes West","year":2017,"rating":3,"dubious":false,"date":"2017-09-20 04:04"},{"_id":"7811","normalized_imdb_id":5142400,"title":"Book of Birdie, The","year":2017,"rating":3,"dubious":false,"date":"2017-09-21 20:17"},{"_id":"7864","normalized_imdb_id":1935897,"title":"Amityville: The Awakening","year":2017,"rating":3,"dubious":false,"date":"2017-10-22 07:29"},{"_id":"7863","normalized_imdb_id":4218696,"title":"Wall, The","year":2017,"rating":0,"dubious":false,"date":"2017-10-22 07:24"},{"_id":"7860","normalized_imdb_id":1981128,"title":"Geostorm","year":2017,"rating":3,"dubious":true,"date":"2017-10-19 02:03"},{"_id":"7859","normalized_imdb_id":4995790,"title":"Square, The","year":2017,"rating":1,"dubious":false,"date":"2017-10-18 22:08"},{"_id":"7858","normalized_imdb_id":1615160,"title":"Foreigner, The","year":2017,"rating":1,"dubious":false,"date":"2017-10-14 05:31"},{"_id":"7825","normalized_imdb_id":5296086,"title":"Revelator","year":2017,"rating":3,"dubious":false,"date":"2017-09-22 20:10"},{"_id":"7826","normalized_imdb_id":4649466,"title":"Kingsman: The Golden Circle","year":2017,"rating":1,"dubious":false,"date":"2017-09-23 14:47"},{"_id":"7827","normalized_imdb_id":1961175,"title":"American Assassin","year":2017,"rating":3,"dubious":true,"date":"2017-09-24 15:32"},{"_id":"7857","normalized_imdb_id":5308322,"title":"Happy Death Day","year":2017,"rating":3,"dubious":false,"date":"2017-10-13 02:59"},{"_id":"7856","normalized_imdb_id":4622512,"title":"Battle of the Sexes","year":2017,"rating":3,"dubious":false,"date":"2017-10-12 21:22"},{"_id":"7833","normalized_imdb_id":5816374,"title":"Band Aid","year":2017,"rating":3,"dubious":false,"date":"2017-09-25 14:16"},{"_id":"7838","normalized_imdb_id":5607714,"title":"On Body and Soul","year":2017,"rating":3,"dubious":false,"date":"2017-09-27 22:13"},{"_id":"7839","normalized_imdb_id":6738136,"title":"Revenge","year":2017,"rating":0,"dubious":false,"date":"2017-09-28 04:37"},{"_id":"7841","normalized_imdb_id":5980798,"title":"Felicite","year":2017,"rating":3,"dubious":false,"date":"2017-09-28 23:04"},{"_id":"7843","normalized_imdb_id":4925292,"title":"Lady Bird","year":2017,"rating":3,"dubious":false,"date":"2017-09-29 09:42"},{"_id":"7844","normalized_imdb_id":4956232,"title":"seven sisters","year":2017,"rating":3,"dubious":false,"date":"2017-10-01 19:47"},{"_id":"7846","normalized_imdb_id":1856101,"title":"Blade Runner 2049","year":2017,"rating":3,"dubious":true,"date":"2017-10-06 06:44"},{"_id":"7847","normalized_imdb_id":3748172,"title":"Gerald's Game","year":2017,"rating":3,"dubious":true,"date":"2017-10-06 06:56"},{"_id":"7850","normalized_imdb_id":4131800,"title":"My Little Pony: The Movie","year":2017,"rating":3,"dubious":false,"date":"2017-10-07 21:26"},{"_id":"7855","normalized_imdb_id":4846232,"title":"Good Time","year":2017,"rating":3,"dubious":true,"date":"2017-10-12 19:34"},{"_id":"7852","normalized_imdb_id":6133130,"title":"Professor Marston and the Wonder Women","year":2017,"rating":3,"dubious":false,"date":"2017-10-11 02:40"},{"_id":"7853","normalized_imdb_id":6423776,"title":"Un beau soleil interieur","year":2017,"rating":2,"dubious":false,"date":"2017-10-11 03:14"},{"_id":"7854","normalized_imdb_id":5816682,"title":"Victoria & Abdul","year":2017,"rating":2,"dubious":false,"date":"2017-10-11 17:55"},{"_id":"7868","normalized_imdb_id":5719700,"title":"Home Again","year":2017,"rating":3,"dubious":true,"date":"2017-10-22 20:50"},{"_id":"7869","normalized_imdb_id":5723286,"title":"Wheelman","year":2017,"rating":1,"dubious":false,"date":"2017-10-23 08:15"},{"_id":"7870","normalized_imdb_id":3531202,"title":"Pilgrimage","year":2017,"rating":0,"dubious":false,"date":"2017-10-23 08:18"},{"_id":"7872","normalized_imdb_id":3829920,"title":"Only the Brave","year":2017,"rating":2,"dubious":false,"date":"2017-10-25 15:59"},{"_id":"7874","normalized_imdb_id":4686844,"title":"Death of Stalin, The","year":2017,"rating":1,"dubious":false,"date":"2017-10-26 12:20"},{"_id":"7875","normalized_imdb_id":3501632,"title":"Thor: Ragnarok","year":2017,"rating":1,"dubious":false,"date":"2017-10-26 20:03"},{"_id":"7883","normalized_imdb_id":2932536,"title":"47 Meters Down","year":2017,"rating":3,"dubious":false,"date":"2017-11-01 01:48"},{"_id":"7884","normalized_imdb_id":3348730,"title":"Jigsaw","year":2017,"rating":3,"dubious":false,"date":"2017-11-02 00:22"},{"_id":"7887","normalized_imdb_id":3887208,"title":"Mad Ones, The","year":2017,"rating":3,"dubious":false,"date":"2017-11-03 23:42"},{"_id":"7888","normalized_imdb_id":6595896,"title":"Pokemon the Movie: I Choose You!","year":2017,"rating":3,"dubious":false,"date":"2017-11-06 01:20"},{"_id":"7894","normalized_imdb_id":5997830,"title":"Seagull","year":2017,"rating":3,"dubious":false,"date":"2017-11-12 19:11"},{"_id":"7895","normalized_imdb_id":7341676,"title":"OM+ME","year":2017,"rating":3,"dubious":false,"date":"2017-11-12 19:16"},{"_id":"7896","normalized_imdb_id":5536736,"title":"Meyerowitz Stories (new and selected), The","year":2017,"rating":1,"dubious":false,"date":"2017-11-12 22:37"},{"_id":"7897","normalized_imdb_id":5649144,"title":"Florida Project, The","year":2017,"rating":3,"dubious":false,"date":"2017-11-13 03:31"},{"_id":"7899","normalized_imdb_id":5301662,"title":"Marshall","year":2017,"rating":1,"dubious":false,"date":"2017-11-14 05:40"},{"_id":"7903","normalized_imdb_id":2543472,"title":"Wonder","year":2017,"rating":3,"dubious":false,"date":"2017-11-15 23:47"},{"_id":"7904","normalized_imdb_id":6029106,"title":"Dim the Fluorescents","year":2017,"rating":3,"dubious":false,"date":"2017-11-15 23:58"},{"_id":"7906","normalized_imdb_id":974015,"title":"Justice League","year":2017,"rating":3,"dubious":false,"date":"2017-11-17 16:54"},{"_id":"7908","normalized_imdb_id":4703048,"title":"6 days","year":2017,"rating":0,"dubious":false,"date":"2017-11-18 00:25"},{"_id":"7909","normalized_imdb_id":2582576,"title":"Sand Castle","year":2017,"rating":0,"dubious":false,"date":"2017-11-18 00:36"},{"_id":"7910","normalized_imdb_id":3296908,"title":"Man with the Iron Heart, The","year":2017,"rating":1,"dubious":false,"date":"2017-11-18 00:46"},{"_id":"7913","normalized_imdb_id":5675620,"title":"Punisher, The","year":2017,"rating":3,"dubious":true,"date":"2017-11-20 22:24"},{"_id":"7919","normalized_imdb_id":3402236,"title":"Murder on the Orient Express","year":2017,"rating":3,"dubious":true,"date":"2017-11-24 12:59"},{"_id":"7920","normalized_imdb_id":6142314,"title":"Batman vs. Two-Face","year":2017,"rating":3,"dubious":true,"date":"2017-11-24 20:58"},{"_id":"7930","normalized_imdb_id":2380307,"title":"Coco","year":2017,"rating":3,"dubious":false,"date":"2017-11-29 03:38"},{"_id":"7934","normalized_imdb_id":3371366,"title":"Transformers: The Last Knight","year":2017,"rating":1,"dubious":false,"date":"2017-12-01 10:50"},{"_id":"7936","normalized_imdb_id":3486626,"title":"Nut Job 2: Nutty By Nature, The","year":2017,"rating":3,"dubious":false,"date":"2017-12-03 05:02"},{"_id":"7939","normalized_imdb_id":6868216,"title":"Psych: The Movie","year":2017,"rating":3,"dubious":false,"date":"2017-12-10 17:09"},{"_id":"7940","normalized_imdb_id":460890,"title":"Only Living Boy in New York, The","year":2017,"rating":1,"dubious":false,"date":"2017-12-11 18:47"},{"_id":"7941","normalized_imdb_id":5914996,"title":"Nogemu noraifu: Zero","year":2017,"rating":3,"dubious":false,"date":"2017-12-12 04:38"},{"_id":"7942","normalized_imdb_id":7608418,"title":"A Christmas Prince","year":2017,"rating":3,"dubious":false,"date":"2017-12-12 15:15"},{"_id":"7945","normalized_imdb_id":3255590,"title":"El Camino Christmas","year":2017,"rating":2,"dubious":false,"date":"2017-12-13 00:47"},{"_id":"7946","normalized_imdb_id":2527336,"title":"Star Wars: The Last Jedi","year":2017,"rating":3,"dubious":false,"date":"2017-12-13 23:48"},{"_id":"7948","normalized_imdb_id":4209788,"title":"Molly's Game","year":2017,"rating":3,"dubious":false,"date":"2017-12-16 22:39"},{"_id":"7949","normalized_imdb_id":4225622,"title":"Babysitter, The","year":2017,"rating":3,"dubious":false,"date":"2017-12-18 21:01"},{"_id":"7950","normalized_imdb_id":3521126,"title":"Disaster Artist, The","year":2017,"rating":3,"dubious":false,"date":"2017-12-19 00:56"},{"_id":"7951","normalized_imdb_id":5580390,"title":"Shape of Water, The","year":2017,"rating":3,"dubious":false,"date":"2017-12-19 00:59"},{"_id":"7953","normalized_imdb_id":5027774,"title":"Three Billboards Outside Ebbing, Missouri","year":2017,"rating":3,"dubious":false,"date":"2017-12-19 01:10"},{"_id":"7954","normalized_imdb_id":5825380,"title":"Wonder Wheel","year":2017,"rating":3,"dubious":false,"date":"2017-12-19 04:05"},{"_id":"7956","normalized_imdb_id":2396589,"title":"Mudbound","year":2017,"rating":3,"dubious":false,"date":"2017-12-19 18:43"},{"_id":"7958","normalized_imdb_id":1458169,"title":"Kidnap","year":2017,"rating":3,"dubious":true,"date":"2017-12-20 22:31"},{"_id":"7963","normalized_imdb_id":2283362,"title":"Jumanji: Welcome to the Jungle","year":2017,"rating":3,"dubious":false,"date":"2017-12-22 22:25"},{"_id":"7966","normalized_imdb_id":5519340,"title":"Bright","year":2017,"rating":3,"dubious":false,"date":"2017-12-25 15:29"},{"_id":"7970","normalized_imdb_id":5726616,"title":"Call Me by Your Name","year":2017,"rating":3,"dubious":false,"date":"2017-12-28 04:25"},{"_id":"7978","normalized_imdb_id":1781058,"title":"Wilson","year":2017,"rating":3,"dubious":false,"date":"2018-01-03 22:48"},{"_id":"7979","normalized_imdb_id":5294550,"title":"All the Money in the World","year":2017,"rating":2,"dubious":false,"date":"2018-01-03 22:56"},{"_id":"7980","normalized_imdb_id":1389072,"title":"Downsizing","year":2017,"rating":1,"dubious":false,"date":"2018-01-03 23:06"},{"_id":"7981","normalized_imdb_id":4720702,"title":"Bushwick","year":2017,"rating":3,"dubious":false,"date":"2018-01-04 23:15"},{"_id":"7982","normalized_imdb_id":3654796,"title":"Creep 2","year":2017,"rating":0,"dubious":false,"date":"2018-01-05 00:35"},{"_id":"7983","normalized_imdb_id":1485796,"title":"Greatest Showman, The","year":2017,"rating":3,"dubious":true,"date":"2018-01-06 03:16"},{"_id":"7984","normalized_imdb_id":3203620,"title":"Dinner, The","year":2017,"rating":3,"dubious":false,"date":"2018-01-06 03:35"},{"_id":"7988","normalized_imdb_id":4765284,"title":"Pitch Perfect 3","year":2017,"rating":3,"dubious":false,"date":"2018-01-07 19:33"},{"_id":"7989","normalized_imdb_id":4807950,"title":"Cherry Pop","year":2017,"rating":0,"dubious":false,"date":"2018-01-07 19:56"},{"_id":"7994","normalized_imdb_id":7401540,"title":"Disco","year":2017,"rating":3,"dubious":false,"date":"2018-01-09 01:01"},{"_id":"7995","normalized_imdb_id":5878326,"title":"Jesus, Bro!","year":2017,"rating":1,"dubious":false,"date":"2018-01-09 01:09"},{"_id":"7996","normalized_imdb_id":5117876,"title":"Descendants 2","year":2017,"rating":3,"dubious":true,"date":"2018-01-09 21:45"},{"_id":"8005","normalized_imdb_id":6265828,"title":"A Ghost Story","year":2017,"rating":1,"dubious":false,"date":"2018-01-11 15:23"},{"_id":"8074","normalized_imdb_id":2582498,"title":"Sweet Virginia","year":2017,"rating":3,"dubious":false,"date":"2018-02-25 22:01"},{"_id":"8015","normalized_imdb_id":6336356,"title":"Mary and The Witch's Flower","year":2017,"rating":3,"dubious":false,"date":"2018-01-19 05:26"},{"_id":"8017","normalized_imdb_id":5776858,"title":"Phantom Thread","year":2017,"rating":3,"dubious":false,"date":"2018-01-20 07:53"},{"_id":"8020","normalized_imdb_id":4555426,"title":"Darkest Hour","year":2017,"rating":2,"dubious":false,"date":"2018-01-22 21:45"},{"_id":"8023","normalized_imdb_id":6776462,"title":"A man of integrity","year":2017,"rating":3,"dubious":false,"date":"2018-01-24 21:38"},{"_id":"8024","normalized_imdb_id":4468740,"title":"Paddington 2","year":2017,"rating":3,"dubious":false,"date":"2018-01-27 14:48"},{"_id":"8025","normalized_imdb_id":3335606,"title":"Berlin Syndrome","year":2017,"rating":1,"dubious":false,"date":"2018-01-31 02:41"},{"_id":"8026","normalized_imdb_id":7131870,"title":"Wolf Warrior 2","year":2017,"rating":1,"dubious":false,"date":"2018-01-31 03:01"},{"_id":"8027","normalized_imdb_id":5176252,"title":"La llamada","year":2017,"rating":3,"dubious":false,"date":"2018-01-31 22:08"},{"_id":"8031","normalized_imdb_id":4065552,"title":"Tuntematon sotilas","year":2017,"rating":3,"dubious":false,"date":"2018-02-02 14:54"},{"_id":"8038","normalized_imdb_id":5478478,"title":"Hostiles","year":2017,"rating":3,"dubious":false,"date":"2018-02-08 08:03"},{"_id":"8042","normalized_imdb_id":5657846,"title":"Daddy's Home 2","year":2017,"rating":3,"dubious":true,"date":"2018-02-09 20:30"},{"_id":"8044","normalized_imdb_id":6000478,"title":"Roman J. Israel, Esq.","year":2017,"rating":3,"dubious":true,"date":"2018-02-09 21:11"},{"_id":"8045","normalized_imdb_id":6303866,"title":"Beach Rats","year":2017,"rating":3,"dubious":true,"date":"2018-02-09 21:20"},{"_id":"8046","normalized_imdb_id":4348012,"title":"Mayhem","year":2017,"rating":3,"dubious":false,"date":"2018-02-09 21:26"},{"_id":"8048","normalized_imdb_id":3411444,"title":"Ferdinand","year":2017,"rating":3,"dubious":true,"date":"2018-02-11 17:21"},{"_id":"8055","normalized_imdb_id":3262342,"title":"Loving Vincent","year":2017,"rating":1,"dubious":false,"date":"2018-02-15 01:12"},{"_id":"8143","normalized_imdb_id":5462326,"title":"Mom and Dad","year":2017,"rating":3,"dubious":false,"date":"2018-04-04 23:06"},{"_id":"8078","normalized_imdb_id":6214928,"title":"1922","year":2017,"rating":1,"dubious":false,"date":"2018-02-27 15:08"},{"_id":"8329","normalized_imdb_id":2568862,"title":"Going In Style","year":2017,"rating":1,"dubious":false,"date":"2018-07-16 17:43"},{"_id":"8089","normalized_imdb_id":5715874,"title":"Killing of a Sacred Deer, The","year":2017,"rating":3,"dubious":false,"date":"2018-03-04 21:43"},{"_id":"8093","normalized_imdb_id":7342204,"title":"I Can Speak","year":2017,"rating":3,"dubious":false,"date":"2018-03-06 10:33"},{"_id":"8094","normalized_imdb_id":7160070,"title":"Singwa hamgge","year":2017,"rating":1,"dubious":false,"date":"2018-03-06 10:48"},{"_id":"8096","normalized_imdb_id":5829040,"title":"Fun Mom Dinner","year":2017,"rating":3,"dubious":true,"date":"2018-03-06 19:33"},{"_id":"8100","normalized_imdb_id":6359956,"title":"A Bad Moms Christmas","year":2017,"rating":3,"dubious":false,"date":"2018-03-08 18:21"},{"_id":"8103","normalized_imdb_id":5649108,"title":"Thoroughbreds","year":2017,"rating":3,"dubious":false,"date":"2018-03-11 00:42"},{"_id":"8106","normalized_imdb_id":6294822,"title":"Post, The","year":2017,"rating":3,"dubious":true,"date":"2018-03-11 14:10"},{"_id":"8113","normalized_imdb_id":6304046,"title":"Thelma","year":2017,"rating":3,"dubious":false,"date":"2018-03-15 14:21"},{"_id":"8118","normalized_imdb_id":6194530,"title":"Ava","year":2017,"rating":3,"dubious":false,"date":"2018-03-17 16:14"},{"_id":"8127","normalized_imdb_id":5859238,"title":"Lucky","year":2017,"rating":2,"dubious":false,"date":"2018-03-20 23:38"},{"_id":"8163","normalized_imdb_id":5742374,"title":"You Were Never Really Here","year":2017,"rating":1,"dubious":false,"date":"2018-04-13 15:01"},{"_id":"8166","normalized_imdb_id":4547194,"title":"I Kill Giants","year":2017,"rating":3,"dubious":false,"date":"2018-04-16 15:39"},{"_id":"8172","normalized_imdb_id":2291540,"title":"My Friend Dahmer","year":2017,"rating":1,"dubious":false,"date":"2018-04-24 13:31"},{"_id":"8176","normalized_imdb_id":5638642,"title":"Ritual, The","year":2017,"rating":0,"dubious":false,"date":"2018-04-27 05:34"},{"_id":"8226","normalized_imdb_id":2378507,"title":"Glass Castle, The","year":2017,"rating":3,"dubious":false,"date":"2018-05-18 02:35"},{"_id":"8230","normalized_imdb_id":1469304,"title":"Baywatch","year":2017,"rating":1,"dubious":false,"date":"2018-05-18 22:18"},{"_id":"8231","normalized_imdb_id":3401882,"title":"Fist Fight","year":2017,"rating":3,"dubious":false,"date":"2018-05-18 23:03"},{"_id":"8232","normalized_imdb_id":4795124,"title":"How to Be a Latin Lover","year":2017,"rating":2,"dubious":false,"date":"2018-05-18 23:03"},{"_id":"8250","normalized_imdb_id":6805302,"title":"Petit paysan","year":2017,"rating":1,"dubious":false,"date":"2018-05-26 09:22"},{"_id":"8311","normalized_imdb_id":2582784,"title":"Flower","year":2017,"rating":3,"dubious":false,"date":"2018-06-28 10:56"},{"_id":"8307","normalized_imdb_id":5539054,"title":"You Get Me","year":2017,"rating":3,"dubious":false,"date":"2018-06-24 11:43"},{"_id":"8335","normalized_imdb_id":1753383,"title":"A Dog's Purpose","year":2017,"rating":1,"dubious":false,"date":"2018-07-19 00:42"},{"_id":"8336","normalized_imdb_id":1666185,"title":"All Eyez On Me","year":2017,"rating":1,"dubious":false,"date":"2018-07-20 15:10"},{"_id":"8353","normalized_imdb_id":6298780,"title":"Sharknado 5: Global Swarming","year":2017,"rating":3,"dubious":false,"date":"2018-08-01 17:17"},{"_id":"8357","normalized_imdb_id":3986820,"title":"Endless, The","year":2017,"rating":1,"dubious":false,"date":"2018-08-04 15:14"},{"_id":"8360","normalized_imdb_id":3901826,"title":"Breadwinner, The","year":2017,"rating":3,"dubious":false,"date":"2018-08-05 22:26"},{"_id":"8371","normalized_imdb_id":6003368,"title":"Diary of a Wimpy Kid: The Long Haul","year":2017,"rating":0,"dubious":false,"date":"2018-08-13 17:16"},{"_id":"8374","normalized_imdb_id":4082644,"title":"Canaries","year":2017,"rating":3,"dubious":false,"date":"2018-08-14 20:51"},{"_id":"8379","normalized_imdb_id":6069126,"title":"Escape, The","year":2017,"rating":3,"dubious":false,"date":"2018-08-18 12:13"},{"_id":"8384","normalized_imdb_id":6814914,"title":"Djam","year":2017,"rating":3,"dubious":false,"date":"2018-08-23 05:00"},{"_id":"8391","normalized_imdb_id":6053438,"title":"First Reformed","year":2017,"rating":1,"dubious":false,"date":"2018-08-30 07:05"},{"_id":"8394","normalized_imdb_id":5635086,"title":"God's Own Country","year":2017,"rating":0,"dubious":false,"date":"2018-08-31 19:58"},{"_id":"8403","normalized_imdb_id":6539420,"title":"A Man Wanted (Hatooly Ragel)","year":2017,"rating":2,"dubious":true,"date":"2018-09-04 17:43"},{"_id":"8408","normalized_imdb_id":2226597,"title":"Mountain Between Us, The","year":2017,"rating":3,"dubious":false,"date":"2018-09-07 02:56"},{"_id":"8409","normalized_imdb_id":4738802,"title":"That's Not Me","year":2017,"rating":3,"dubious":false,"date":"2018-09-09 02:14"},{"_id":"8428","normalized_imdb_id":5727282,"title":"Borg vs McEnroe","year":2017,"rating":1,"dubious":false,"date":"2018-10-03 12:37"},{"_id":"8448","normalized_imdb_id":4717402,"title":"MFKZ","year":2017,"rating":0,"dubious":false,"date":"2018-10-18 09:07"},{"_id":"8449","normalized_imdb_id":4729896,"title":"Apostasy","year":2017,"rating":3,"dubious":false,"date":"2018-10-19 11:44"},{"_id":"8471","normalized_imdb_id":6108178,"title":"Disobedience","year":2017,"rating":3,"dubious":false,"date":"2018-11-04 14:03"},{"_id":"8487","normalized_imdb_id":5795086,"title":"Gemini","year":2017,"rating":3,"dubious":false,"date":"2018-11-19 15:37"},{"_id":"8595","normalized_imdb_id":5833846,"title":"Maximilian","year":2017,"rating":2,"dubious":false,"date":"2019-01-14 17:49"},{"_id":"8599","normalized_imdb_id":5633706,"title":"Karera ga honki de amu toki wa (Close Knit)","year":2017,"rating":3,"dubious":false,"date":"2019-01-14 17:57"},{"_id":"8600","normalized_imdb_id":5328952,"title":"Signature Move","year":2017,"rating":3,"dubious":false,"date":"2019-01-14 17:58"},{"_id":"8601","normalized_imdb_id":6441072,"title":"Embrasse-moi!","year":2017,"rating":3,"dubious":false,"date":"2019-01-14 18:00"},{"_id":"8621","normalized_imdb_id":5175450,"title":"Mark Felt: The Man Who Brought Down the White House","year":2017,"rating":2,"dubious":false,"date":"2019-01-29 14:46"},{"_id":"8657","normalized_imdb_id":5687334,"title":"Godard Mon Amour","year":2017,"rating":1,"dubious":false,"date":"2019-02-28 21:25"},{"_id":"8663","normalized_imdb_id":5516328,"title":"Ghost Stories","year":2017,"rating":1,"dubious":false,"date":"2019-03-04 14:10"},{"_id":"8669","normalized_imdb_id":498381,"title":"Rings","year":2017,"rating":2,"dubious":false,"date":"2019-03-09 01:09"},{"_id":"8670","normalized_imdb_id":3750872,"title":"Wife, The","year":2017,"rating":3,"dubious":false,"date":"2019-03-09 23:24"},{"_id":"8697","normalized_imdb_id":6108090,"title":"Secret Superstar","year":2017,"rating":3,"dubious":false,"date":"2019-04-06 16:27"},{"_id":"8707","normalized_imdb_id":6870750,"title":"El libro de Lila","year":2017,"rating":3,"dubious":false,"date":"2019-04-18 03:00"},{"_id":"8712","normalized_imdb_id":6548966,"title":"Gekijoban Fairy Tail: Dragon Cry","year":2017,"rating":3,"dubious":false,"date":"2019-04-22 05:22"},{"_id":"8726","normalized_imdb_id":2338454,"title":"Unicorn Store","year":2017,"rating":3,"dubious":false,"date":"2019-04-29 23:54"},{"_id":"8751","normalized_imdb_id":6002232,"title":"Jusqu'a la garde (Custody)","year":2017,"rating":3,"dubious":false,"date":"2019-05-26 07:58"},{"_id":"8752","normalized_imdb_id":6467968,"title":"Posoki (Directions)","year":2017,"rating":1,"dubious":false,"date":"2019-05-26 08:01"},{"_id":"8799","normalized_imdb_id":6095090,"title":"Bride, The","year":2017,"rating":3,"dubious":false,"date":"2019-07-27 20:51"},{"_id":"8806","normalized_imdb_id":6249434,"title":"Shelter","year":2017,"rating":3,"dubious":false,"date":"2019-08-01 21:11"},{"_id":"9177","normalized_imdb_id":6212496,"title":"Mr. Roosevelt","year":2017,"rating":3,"dubious":false,"date":"2020-06-22 06:42"},{"_id":"8831","normalized_imdb_id":3906082,"title":"Mary Shelley","year":2017,"rating":3,"dubious":false,"date":"2019-08-25 17:54"},{"_id":"8846","normalized_imdb_id":2417712,"title":"Goon: Last of the Enforcers","year":2017,"rating":2,"dubious":false,"date":"2019-09-11 02:26"},{"_id":"8847","normalized_imdb_id":4758646,"title":"War Machine","year":2017,"rating":0,"dubious":false,"date":"2019-09-11 02:29"},{"_id":"8906","normalized_imdb_id":1034385,"title":"Cold Skin","year":2017,"rating":0,"dubious":false,"date":"2019-11-23 13:03"},{"_id":"8960","normalized_imdb_id":5826432,"title":"Burning Sands","year":2017,"rating":2,"dubious":false,"date":"2020-01-12 22:19"},{"_id":"8998","normalized_imdb_id":6053440,"title":"Princess Cyd","year":2017,"rating":3,"dubious":false,"date":"2020-02-03 19:54"},{"_id":"9010","normalized_imdb_id":5791732,"title":"Il demone di Laplace","year":2017,"rating":0,"dubious":false,"date":"2020-02-09 20:41"},{"_id":"9024","normalized_imdb_id":4823434,"title":"Tigers Are Not Afraid","year":2017,"rating":0,"dubious":false,"date":"2020-03-01 08:24"},{"_id":"9072","normalized_imdb_id":4693358,"title":"OtherLife","year":2017,"rating":1,"dubious":true,"date":"2020-04-09 18:19"},{"_id":"9102","normalized_imdb_id":5247704,"title":"Back to Burgundy (Ce que nous lie)","year":2017,"rating":2,"dubious":false,"date":"2020-04-30 01:19"},{"_id":"9105","normalized_imdb_id":4738174,"title":"Bon Cop Bad Cop 2","year":2017,"rating":1,"dubious":false,"date":"2020-05-02 01:13"},{"_id":"9128","normalized_imdb_id":5698320,"title":"Euphoria","year":2017,"rating":3,"dubious":false,"date":"2020-05-11 09:38"},{"_id":"9145","normalized_imdb_id":5348236,"title":"Midwife, The","year":2017,"rating":3,"dubious":false,"date":"2020-05-26 04:24"},{"_id":"9147","normalized_imdb_id":5665452,"title":"Sun Dogs","year":2017,"rating":2,"dubious":false,"date":"2020-05-29 00:53"},{"_id":"9215","normalized_imdb_id":6433880,"title":"Anna and the Apocalypse","year":2017,"rating":3,"dubious":false,"date":"2020-07-27 05:04"},{"_id":"9231","normalized_imdb_id":5651952,"title":"Lears, The","year":2017,"rating":3,"dubious":false,"date":"2020-08-10 03:10"},{"_id":"9236","normalized_imdb_id":5157326,"title":"Western","year":2017,"rating":1,"dubious":false,"date":"2020-08-13 21:48"},{"_id":"9392","normalized_imdb_id":5340300,"title":"Lean on Pete","year":2017,"rating":1,"dubious":false,"date":"2020-12-16 01:59"},{"_id":"9400","normalized_imdb_id":3463106,"title":"Cured, The","year":2017,"rating":3,"dubious":false,"date":"2020-12-21 23:36"},{"_id":"9422","normalized_imdb_id":6387232,"title":"A Royal Winter","year":2017,"rating":3,"dubious":false,"date":"2021-01-03 17:37"},{"_id":"9455","normalized_imdb_id":5833412,"title":"Get My Gun","year":2017,"rating":3,"dubious":false,"date":"2021-01-26 15:42"},{"_id":"9459","normalized_imdb_id":3829378,"title":"Stephanie","year":2017,"rating":3,"dubious":false,"date":"2021-01-30 04:36"},{"_id":"9469","normalized_imdb_id":5143226,"title":"12 feet deep","year":2017,"rating":3,"dubious":false,"date":"2021-02-05 15:31"},{"_id":"9554","normalized_imdb_id":5723416,"title":"Beyond, The","year":2017,"rating":3,"dubious":false,"date":"2021-03-14 21:31"},{"_id":"9622","normalized_imdb_id":11644096,"title":"What Did Jack Do?","year":2017,"rating":0,"dubious":false,"date":"2021-04-04 18:27"},{"_id":"9712","normalized_imdb_id":6116060,"title":"Bold Type, The","year":2017,"rating":3,"dubious":false,"date":"2021-04-28 09:35"},{"_id":"9734","normalized_imdb_id":3901340,"title":"Bigfoot: Blood Trap","year":2017,"rating":0,"dubious":false,"date":"2021-04-29 18:05"},{"_id":"9856","normalized_imdb_id":4513316,"title":"Novitiate","year":2017,"rating":2,"dubious":false,"date":"2021-05-29 03:44"},{"_id":"10045","normalized_imdb_id":5737862,"title":"Landline","year":2017,"rating":3,"dubious":false,"date":"2021-09-11 03:11"},{"_id":"10024","normalized_imdb_id":5752360,"title":"Female Brain, The","year":2017,"rating":3,"dubious":false,"date":"2021-08-29 03:15"},{"_id":"10053","normalized_imdb_id":6185658,"title":"Barbie Video Game Hero","year":2017,"rating":1,"dubious":false,"date":"2021-09-16 14:53"},{"_id":"10148","normalized_imdb_id":3859272,"title":"Tragedy Girls","year":2017,"rating":3,"dubious":false,"date":"2021-11-30 16:22"},{"_id":"8280","normalized_imdb_id":5164214,"title":"Ocean's 8","year":2018,"rating":3,"dubious":false,"date":"2018-06-10 03:13"},{"_id":"8347","normalized_imdb_id":6772950,"title":"Truth or Dare","year":2018,"rating":3,"dubious":true,"date":"2018-07-29 17:40"},{"_id":"8421","normalized_imdb_id":3892172,"title":"Leave No Trace","year":2018,"rating":3,"dubious":false,"date":"2018-09-25 08:52"},{"_id":"8134","normalized_imdb_id":2557478,"title":"Pacific Rim: Uprising","year":2018,"rating":3,"dubious":false,"date":"2018-03-25 22:06"},{"_id":"8145","normalized_imdb_id":2873282,"title":"Red Sparrow","year":2018,"rating":3,"dubious":false,"date":"2018-04-04 23:17"},{"_id":"8305","normalized_imdb_id":7784604,"title":"Hereditary","year":2018,"rating":3,"dubious":false,"date":"2018-06-23 23:37"},{"_id":"8056","normalized_imdb_id":4500922,"title":"Maze Runner: The Death Cure","year":2018,"rating":3,"dubious":false,"date":"2018-02-15 01:22"},{"_id":"8058","normalized_imdb_id":1825683,"title":"Black Panther","year":2018,"rating":3,"dubious":false,"date":"2018-02-16 04:28"},{"_id":"8073","normalized_imdb_id":7853242,"title":"Love per square foot","year":2018,"rating":3,"dubious":false,"date":"2018-02-25 06:37"},{"_id":"8144","normalized_imdb_id":4701724,"title":"Early Man","year":2018,"rating":1,"dubious":false,"date":"2018-04-04 23:10"},{"_id":"8077","normalized_imdb_id":2798920,"title":"Annihilation","year":2018,"rating":3,"dubious":false,"date":"2018-02-27 05:50"},{"_id":"8080","normalized_imdb_id":2704998,"title":"Game Night","year":2018,"rating":3,"dubious":false,"date":"2018-03-01 04:31"},{"_id":"8082","normalized_imdb_id":2548396,"title":"Cloverfield Paradox, The","year":2018,"rating":3,"dubious":false,"date":"2018-03-01 22:19"},{"_id":"8142","normalized_imdb_id":5164432,"title":"Love, Simon","year":2018,"rating":1,"dubious":false,"date":"2018-04-04 22:57"},{"_id":"8091","normalized_imdb_id":7158430,"title":"Hearts Beat Loud","year":2018,"rating":3,"dubious":false,"date":"2018-03-06 03:20"},{"_id":"8199","normalized_imdb_id":6878820,"title":"Z-O-M-B-I-E-S","year":2018,"rating":3,"dubious":false,"date":"2018-05-11 11:45"},{"_id":"8137","normalized_imdb_id":5104604,"title":"Isle of Dogs","year":2018,"rating":3,"dubious":false,"date":"2018-04-01 07:55"},{"_id":"8112","normalized_imdb_id":5783956,"title":"When We First Met","year":2018,"rating":2,"dubious":false,"date":"2018-03-15 01:47"},{"_id":"8121","normalized_imdb_id":1365519,"title":"Tomb Raider","year":2018,"rating":3,"dubious":false,"date":"2018-03-19 13:49"},{"_id":"8125","normalized_imdb_id":1677720,"title":"Ready Player One","year":2018,"rating":3,"dubious":false,"date":"2018-03-20 10:38"},{"_id":"8126","normalized_imdb_id":7869818,"title":"My Little Pony Equestria Girls: Forgotten Friendship","year":2018,"rating":3,"dubious":false,"date":"2018-03-20 17:12"},{"_id":"8128","normalized_imdb_id":7875464,"title":"Heiresses, The","year":2018,"rating":3,"dubious":false,"date":"2018-03-21 08:17"},{"_id":"8151","normalized_imdb_id":4986098,"title":"Titan, The","year":2018,"rating":2,"dubious":false,"date":"2018-04-07 20:42"},{"_id":"8277","normalized_imdb_id":5619332,"title":"Life of the Party","year":2018,"rating":3,"dubious":false,"date":"2018-06-08 01:11"},{"_id":"8157","normalized_imdb_id":6644200,"title":"A Quiet Place","year":2018,"rating":1,"dubious":false,"date":"2018-04-09 04:20"},{"_id":"8276","normalized_imdb_id":7555774,"title":"En guerre","year":2018,"rating":1,"dubious":false,"date":"2018-06-07 07:47"},{"_id":"8178","normalized_imdb_id":4154756,"title":"Avengers: Infinity War","year":2018,"rating":3,"dubious":false,"date":"2018-04-28 14:05"},{"_id":"8179","normalized_imdb_id":1289403,"title":"Guernsey Literary and Potato Peel Pie Society, The","year":2018,"rating":3,"dubious":false,"date":"2018-04-28 14:08"},{"_id":"8324","normalized_imdb_id":5688932,"title":"Sorry to Bother You","year":2018,"rating":1,"dubious":false,"date":"2018-07-14 02:34"},{"_id":"8214","normalized_imdb_id":3799232,"title":"Kissing Booth, The","year":2018,"rating":3,"dubious":false,"date":"2018-05-16 21:49"},{"_id":"8263","normalized_imdb_id":7768846,"title":"Pass Over","year":2018,"rating":0,"dubious":false,"date":"2018-05-30 19:23"},{"_id":"8229","normalized_imdb_id":5463162,"title":"Deadpool 2","year":2018,"rating":2,"dubious":false,"date":"2018-05-18 21:49"},{"_id":"8319","normalized_imdb_id":7156222,"title":"Au poste!","year":2018,"rating":0,"dubious":false,"date":"2018-07-09 22:01"},{"_id":"8318","normalized_imdb_id":5095030,"title":"Ant-Man and the Wasp","year":2018,"rating":3,"dubious":false,"date":"2018-07-06 06:23"},{"_id":"8239","normalized_imdb_id":5610554,"title":"Tully","year":2018,"rating":3,"dubious":true,"date":"2018-05-21 01:31"},{"_id":"8317","normalized_imdb_id":6212478,"title":"American Animals","year":2018,"rating":1,"dubious":false,"date":"2018-07-05 23:53"},{"_id":"8246","normalized_imdb_id":3778644,"title":"Solo: A Star Wars Story","year":2018,"rating":2,"dubious":false,"date":"2018-05-25 03:21"},{"_id":"8247","normalized_imdb_id":1318517,"title":"Man Who Killed Don Quixote, The","year":2018,"rating":1,"dubious":false,"date":"2018-05-25 12:58"},{"_id":"8313","normalized_imdb_id":2854926,"title":"Tag","year":2018,"rating":3,"dubious":true,"date":"2018-06-30 03:00"},{"_id":"8290","normalized_imdb_id":3606756,"title":"Incredibles 2","year":2018,"rating":3,"dubious":false,"date":"2018-06-15 00:44"},{"_id":"8310","normalized_imdb_id":6929642,"title":"Kaala","year":2018,"rating":3,"dubious":false,"date":"2018-06-26 02:52"},{"_id":"8298","normalized_imdb_id":5688996,"title":"Alex Strangelove","year":2018,"rating":2,"dubious":false,"date":"2018-06-18 15:12"},{"_id":"8308","normalized_imdb_id":5304992,"title":"Set It Up","year":2018,"rating":3,"dubious":false,"date":"2018-06-24 17:41"},{"_id":"8302","normalized_imdb_id":4881806,"title":"Jurassic World: Fallen Kingdom","year":2018,"rating":3,"dubious":true,"date":"2018-06-22 02:57"},{"_id":"8337","normalized_imdb_id":6911608,"title":"Mamma Mia! Here We Go Again","year":2018,"rating":3,"dubious":false,"date":"2018-07-20 20:34"},{"_id":"8342","normalized_imdb_id":4912910,"title":"Mission Impossible: Fallout","year":2018,"rating":1,"dubious":false,"date":"2018-07-27 00:59"},{"_id":"8343","normalized_imdb_id":6133466,"title":"First Purge , The","year":2018,"rating":3,"dubious":false,"date":"2018-07-27 20:58"},{"_id":"8345","normalized_imdb_id":7424200,"title":"Teen Titans Go! To the Movies","year":2018,"rating":3,"dubious":false,"date":"2018-07-28 05:27"},{"_id":"8349","normalized_imdb_id":7279188,"title":"Woman at War","year":2018,"rating":3,"dubious":false,"date":"2018-07-31 04:48"},{"_id":"8351","normalized_imdb_id":7242142,"title":"Blindspotting","year":2018,"rating":1,"dubious":false,"date":"2018-08-01 00:49"},{"_id":"8359","normalized_imdb_id":7014006,"title":"Eighth Grade","year":2018,"rating":3,"dubious":false,"date":"2018-08-05 03:27"},{"_id":"8362","normalized_imdb_id":6663582,"title":"Spy Who Dumped Me, The","year":2018,"rating":3,"dubious":false,"date":"2018-08-06 15:32"},{"_id":"8364","normalized_imdb_id":4575576,"title":"Christopher Robin","year":2018,"rating":2,"dubious":false,"date":"2018-08-09 23:41"},{"_id":"8365","normalized_imdb_id":6791096,"title":"I Feel Pretty","year":2018,"rating":3,"dubious":false,"date":"2018-08-10 03:48"},{"_id":"8368","normalized_imdb_id":7349662,"title":"BlacKkKlansman","year":2018,"rating":3,"dubious":true,"date":"2018-08-11 01:44"},{"_id":"8369","normalized_imdb_id":4779682,"title":"Meg, The","year":2018,"rating":3,"dubious":false,"date":"2018-08-11 23:23"},{"_id":"8378","normalized_imdb_id":3104988,"title":"Crazy Rich Asians","year":2018,"rating":3,"dubious":false,"date":"2018-08-16 22:23"},{"_id":"8380","normalized_imdb_id":4073790,"title":"Darkest Minds, The","year":2018,"rating":3,"dubious":false,"date":"2018-08-18 21:34"},{"_id":"8381","normalized_imdb_id":2231461,"title":"Rampage","year":2018,"rating":3,"dubious":false,"date":"2018-08-20 04:16"},{"_id":"8382","normalized_imdb_id":6892462,"title":"Le monde est a toi","year":2018,"rating":2,"dubious":false,"date":"2018-08-21 10:29"},{"_id":"8383","normalized_imdb_id":3458254,"title":"Patient Zero","year":2018,"rating":1,"dubious":false,"date":"2018-08-21 10:59"},{"_id":"8385","normalized_imdb_id":3846674,"title":"To All the Boys I've Loved Before","year":2018,"rating":3,"dubious":false,"date":"2018-08-23 10:00"},{"_id":"8386","normalized_imdb_id":4244998,"title":"Alpha","year":2018,"rating":0,"dubious":false,"date":"2018-08-23 17:57"},{"_id":"8395","normalized_imdb_id":7485508,"title":"Carmen y Lola","year":2018,"rating":3,"dubious":false,"date":"2018-09-01 11:57"},{"_id":"8396","normalized_imdb_id":6142496,"title":"6 Balloons","year":2018,"rating":3,"dubious":false,"date":"2018-09-01 15:29"},{"_id":"8397","normalized_imdb_id":7282468,"title":"Burning","year":2018,"rating":0,"dubious":false,"date":"2018-09-02 06:21"},{"_id":"8399","normalized_imdb_id":8459250,"title":"Sheherazade","year":2018,"rating":3,"dubious":true,"date":"2018-09-02 21:19"},{"_id":"8400","normalized_imdb_id":6628102,"title":"Wild Pear Tree, The","year":2018,"rating":2,"dubious":true,"date":"2018-09-03 07:43"},{"_id":"8407","normalized_imdb_id":5690360,"title":"Slender Man","year":2018,"rating":3,"dubious":false,"date":"2018-09-06 19:29"},{"_id":"8414","normalized_imdb_id":3829266,"title":"Predator, The","year":2018,"rating":1,"dubious":false,"date":"2018-09-16 16:51"},{"_id":"8420","normalized_imdb_id":7040874,"title":"A Simple Favor","year":2018,"rating":3,"dubious":false,"date":"2018-09-25 07:25"},{"_id":"8422","normalized_imdb_id":7745068,"title":"My hero academia: Two heroes","year":2018,"rating":3,"dubious":false,"date":"2018-09-28 18:49"},{"_id":"8423","normalized_imdb_id":365545,"title":"Nappily Ever Aftet","year":2018,"rating":3,"dubious":false,"date":"2018-09-28 19:15"},{"_id":"8424","normalized_imdb_id":6921996,"title":"Johnny English Strikes Again","year":2018,"rating":1,"dubious":false,"date":"2018-09-29 19:12"},{"_id":"8425","normalized_imdb_id":2119543,"title":"House with a Clock in Its Walls, The","year":2018,"rating":1,"dubious":false,"date":"2018-09-30 20:55"},{"_id":"8427","normalized_imdb_id":6182908,"title":"Smallfoot","year":2018,"rating":3,"dubious":false,"date":"2018-10-02 01:52"},{"_id":"8430","normalized_imdb_id":1517451,"title":"A Star Is Born","year":2018,"rating":3,"dubious":false,"date":"2018-10-05 11:26"},{"_id":"8431","normalized_imdb_id":1270797,"title":"Venom","year":2018,"rating":1,"dubious":false,"date":"2018-10-07 04:57"},{"_id":"9187","normalized_imdb_id":7615302,"title":"Red Joan","year":2018,"rating":3,"dubious":false,"date":"2020-06-30 02:43"},{"_id":"8433","normalized_imdb_id":2531344,"title":"Blockers","year":2018,"rating":3,"dubious":false,"date":"2018-10-09 03:15"},{"_id":"8434","normalized_imdb_id":3120280,"title":"Sierra Burgess Is a Loser","year":2018,"rating":3,"dubious":false,"date":"2018-10-09 15:06"},{"_id":"8443","normalized_imdb_id":8020896,"title":"An Elephant Sitting Still (Da xiang xi di er zuo)","year":2018,"rating":0,"dubious":false,"date":"2018-10-15 02:00"},{"_id":"8444","normalized_imdb_id":6217306,"title":"Apostle","year":2018,"rating":3,"dubious":false,"date":"2018-10-15 07:26"},{"_id":"8445","normalized_imdb_id":1213641,"title":"First Man","year":2018,"rating":3,"dubious":true,"date":"2018-10-15 13:38"},{"_id":"8452","normalized_imdb_id":1502407,"title":"Halloween","year":2018,"rating":3,"dubious":false,"date":"2018-10-22 16:39"},{"_id":"8457","normalized_imdb_id":5177088,"title":"Girl in the Spider's Web, The","year":2018,"rating":3,"dubious":false,"date":"2018-10-27 14:37"},{"_id":"8459","normalized_imdb_id":1620680,"title":"A Wrinkle in Time","year":2018,"rating":3,"dubious":false,"date":"2018-10-28 23:35"},{"_id":"8461","normalized_imdb_id":6998518,"title":"Mandy","year":2018,"rating":2,"dubious":false,"date":"2018-10-29 21:51"},{"_id":"8462","normalized_imdb_id":1727824,"title":"Bohemian Rhapsody","year":2018,"rating":2,"dubious":false,"date":"2018-10-30 19:52"},{"_id":"8465","normalized_imdb_id":1034415,"title":"Suspiria","year":2018,"rating":3,"dubious":false,"date":"2018-11-02 05:34"},{"_id":"8472","normalized_imdb_id":7668870,"title":"Searching","year":2018,"rating":1,"dubious":false,"date":"2018-11-05 05:54"},{"_id":"8474","normalized_imdb_id":7534068,"title":"En liberte!","year":2018,"rating":2,"dubious":false,"date":"2018-11-05 13:26"},{"_id":"8475","normalized_imdb_id":6857166,"title":"Book Club","year":2018,"rating":3,"dubious":false,"date":"2018-11-06 13:29"},{"_id":"8481","normalized_imdb_id":7527538,"title":"Jefe","year":2018,"rating":2,"dubious":false,"date":"2018-11-11 20:02"},{"_id":"8523","normalized_imdb_id":4633694,"title":"Spider-Man : Into the Spider-Verse","year":2018,"rating":1,"dubious":false,"date":"2018-12-14 21:07"},{"_id":"8484","normalized_imdb_id":4123430,"title":"Fantastic Beasts: The Crimes of Grindelwald","year":2018,"rating":2,"dubious":false,"date":"2018-11-14 19:22"},{"_id":"8485","normalized_imdb_id":4595882,"title":"Can You Ever Forgive Me?","year":2018,"rating":3,"dubious":false,"date":"2018-11-18 17:11"},{"_id":"8489","normalized_imdb_id":4652650,"title":"Please Stand By","year":2018,"rating":3,"dubious":false,"date":"2018-11-22 06:24"},{"_id":"8490","normalized_imdb_id":5083738,"title":"Favourite, The","year":2018,"rating":3,"dubious":false,"date":"2018-11-23 03:15"},{"_id":"8491","normalized_imdb_id":4218572,"title":"Widows","year":2018,"rating":3,"dubious":false,"date":"2018-11-23 04:48"},{"_id":"8492","normalized_imdb_id":5848272,"title":"Ralph Breaks the Internet","year":2018,"rating":3,"dubious":false,"date":"2018-11-23 04:50"},{"_id":"8495","normalized_imdb_id":5057140,"title":"Hold the Dark","year":2018,"rating":1,"dubious":false,"date":"2018-11-25 21:10"},{"_id":"8522","normalized_imdb_id":1477834,"title":"Aquaman","year":2018,"rating":3,"dubious":false,"date":"2018-12-14 07:43"},{"_id":"8497","normalized_imdb_id":6412452,"title":"Ballad of Buster Scruggs, The","year":2018,"rating":1,"dubious":false,"date":"2018-11-26 17:46"},{"_id":"8498","normalized_imdb_id":5580266,"title":"Hate U Give, The","year":2018,"rating":3,"dubious":false,"date":"2018-11-26 17:56"},{"_id":"8499","normalized_imdb_id":5613484,"title":"Mid90s","year":2018,"rating":1,"dubious":false,"date":"2018-11-26 17:58"},{"_id":"8521","normalized_imdb_id":7365604,"title":"Dog Days","year":2018,"rating":3,"dubious":false,"date":"2018-12-14 00:08"},{"_id":"8512","normalized_imdb_id":6966692,"title":"Green Book","year":2018,"rating":1,"dubious":false,"date":"2018-12-05 16:44"},{"_id":"8514","normalized_imdb_id":4878482,"title":"Dumplin'","year":2018,"rating":3,"dubious":false,"date":"2018-12-09 01:51"},{"_id":"8517","normalized_imdb_id":5861756,"title":"Bella Ciao!","year":2018,"rating":3,"dubious":false,"date":"2018-12-10 15:22"},{"_id":"8518","normalized_imdb_id":6343314,"title":"Creed II","year":2018,"rating":3,"dubious":false,"date":"2018-12-12 03:12"},{"_id":"8520","normalized_imdb_id":5085924,"title":"Wildling","year":2018,"rating":3,"dubious":false,"date":"2018-12-12 16:00"},{"_id":"8567","normalized_imdb_id":5437928,"title":"Colette","year":2018,"rating":3,"dubious":false,"date":"2018-12-18 04:30"},{"_id":"8571","normalized_imdb_id":6155172,"title":"Roma","year":2018,"rating":3,"dubious":false,"date":"2018-12-21 16:16"},{"_id":"8572","normalized_imdb_id":1571234,"title":"Mortal Engines","year":2018,"rating":3,"dubious":false,"date":"2018-12-24 02:51"},{"_id":"8573","normalized_imdb_id":2328900,"title":"Mary Queen of Scots","year":2018,"rating":3,"dubious":false,"date":"2018-12-24 05:40"},{"_id":"8574","normalized_imdb_id":2737304,"title":"Bird Box","year":2018,"rating":3,"dubious":false,"date":"2018-12-25 04:43"},{"_id":"8575","normalized_imdb_id":5028340,"title":"Mary Poppins Returns","year":2018,"rating":3,"dubious":false,"date":"2018-12-26 04:07"},{"_id":"8577","normalized_imdb_id":6266538,"title":"Vice","year":2018,"rating":2,"dubious":false,"date":"2018-12-30 07:55"},{"_id":"8578","normalized_imdb_id":2837574,"title":"Old Man & the Gun, The","year":2018,"rating":1,"dubious":false,"date":"2018-12-30 08:16"},{"_id":"8579","normalized_imdb_id":7545566,"title":"Skate Kitchen","year":2018,"rating":3,"dubious":false,"date":"2019-01-02 03:30"},{"_id":"8580","normalized_imdb_id":7775622,"title":"Free Solo","year":2018,"rating":1,"dubious":false,"date":"2019-01-02 03:48"},{"_id":"8582","normalized_imdb_id":1563742,"title":"Overboard","year":2018,"rating":3,"dubious":false,"date":"2019-01-03 14:49"},{"_id":"8585","normalized_imdb_id":4701182,"title":"Bumblebee","year":2018,"rating":3,"dubious":true,"date":"2019-01-05 06:23"},{"_id":"8587","normalized_imdb_id":4669788,"title":"On the Basis of Sex","year":2018,"rating":3,"dubious":false,"date":"2019-01-11 05:44"},{"_id":"8588","normalized_imdb_id":7125860,"title":"If Beale Street Could Talk","year":2018,"rating":3,"dubious":false,"date":"2019-01-11 16:06"},{"_id":"8590","normalized_imdb_id":6543652,"title":"Cold War","year":2018,"rating":3,"dubious":true,"date":"2019-01-11 19:38"},{"_id":"8591","normalized_imdb_id":7545524,"title":"Ben Is Back","year":2018,"rating":3,"dubious":false,"date":"2019-01-13 20:32"},{"_id":"8596","normalized_imdb_id":8286894,"title":"Rafiki","year":2018,"rating":3,"dubious":false,"date":"2019-01-14 17:54"},{"_id":"8597","normalized_imdb_id":6169920,"title":"L'animale","year":2018,"rating":3,"dubious":false,"date":"2019-01-14 17:55"},{"_id":"8598","normalized_imdb_id":6257174,"title":"Miseducation of Cameron Post, The","year":2018,"rating":3,"dubious":false,"date":"2019-01-14 17:56"},{"_id":"8608","normalized_imdb_id":3458510,"title":"Dude","year":2018,"rating":3,"dubious":false,"date":"2019-01-19 11:34"},{"_id":"8611","normalized_imdb_id":8075192,"title":"Shoplifters","year":2018,"rating":3,"dubious":false,"date":"2019-01-22 14:22"},{"_id":"8612","normalized_imdb_id":6776106,"title":"Andid edlilega (And Breathe Normally)","year":2018,"rating":3,"dubious":false,"date":"2019-01-23 21:20"},{"_id":"8613","normalized_imdb_id":4971344,"title":"Sisters Brothers, The","year":2018,"rating":1,"dubious":false,"date":"2019-01-25 06:13"},{"_id":"8618","normalized_imdb_id":3385524,"title":"Stan & Ollie","year":2018,"rating":3,"dubious":false,"date":"2019-01-28 23:07"},{"_id":"8626","normalized_imdb_id":7959026,"title":"Mule, The","year":2018,"rating":2,"dubious":false,"date":"2019-02-01 15:30"},{"_id":"8630","normalized_imdb_id":6061074,"title":"First Match","year":2018,"rating":3,"dubious":false,"date":"2019-02-03 19:28"},{"_id":"8631","normalized_imdb_id":8361028,"title":"Cam","year":2018,"rating":3,"dubious":false,"date":"2019-02-03 21:24"},{"_id":"8635","normalized_imdb_id":3525168,"title":"Dead in a Week: Or Your Money Back","year":2018,"rating":1,"dubious":false,"date":"2019-02-07 16:29"},{"_id":"8637","normalized_imdb_id":5523010,"title":"Nutcracker and the Four Realms, The","year":2018,"rating":3,"dubious":false,"date":"2019-02-07 16:41"},{"_id":"8651","normalized_imdb_id":2368254,"title":"A private war","year":2018,"rating":1,"dubious":false,"date":"2019-02-25 18:31"},{"_id":"8654","normalized_imdb_id":5427194,"title":"Miracle Season, The","year":2018,"rating":3,"dubious":false,"date":"2019-02-26 14:41"},{"_id":"8656","normalized_imdb_id":6205872,"title":"Assassination Nation","year":2018,"rating":3,"dubious":false,"date":"2019-02-28 04:57"},{"_id":"8658","normalized_imdb_id":2639336,"title":"Greta","year":2018,"rating":3,"dubious":false,"date":"2019-03-01 05:45"},{"_id":"8660","normalized_imdb_id":7231342,"title":"La chute de l'empire americain","year":2018,"rating":1,"dubious":false,"date":"2019-03-02 09:38"},{"_id":"8661","normalized_imdb_id":7401588,"title":"Instant Family","year":2018,"rating":3,"dubious":false,"date":"2019-03-03 07:26"},{"_id":"8662","normalized_imdb_id":5960374,"title":"Vox Lux","year":2018,"rating":3,"dubious":false,"date":"2019-03-03 18:41"},{"_id":"8667","normalized_imdb_id":6485304,"title":"Quien te cantara","year":2018,"rating":3,"dubious":false,"date":"2019-03-06 20:22"},{"_id":"8671","normalized_imdb_id":4532826,"title":"Robin Hood","year":2018,"rating":1,"dubious":false,"date":"2019-03-10 21:48"},{"_id":"8674","normalized_imdb_id":6842126,"title":"Don't Leave Home","year":2018,"rating":3,"dubious":false,"date":"2019-03-13 16:07"},{"_id":"8678","normalized_imdb_id":6140148,"title":"Bullitt County","year":2018,"rating":3,"dubious":false,"date":"2019-03-18 19:34"},{"_id":"8683","normalized_imdb_id":6987770,"title":"Destination Wedding","year":2018,"rating":0,"dubious":false,"date":"2019-03-23 08:00"},{"_id":"8688","normalized_imdb_id":4042818,"title":"Death and Life of John F. Donovan, The","year":2018,"rating":2,"dubious":false,"date":"2019-03-28 16:30"},{"_id":"8690","normalized_imdb_id":7137380,"title":"Destroyer","year":2018,"rating":3,"dubious":true,"date":"2019-03-28 18:13"},{"_id":"8708","normalized_imdb_id":8327492,"title":"Tito e os Passaros","year":2018,"rating":1,"dubious":false,"date":"2019-04-18 03:02"},{"_id":"8711","normalized_imdb_id":8717590,"title":"My Little Pony Equestria Girls: Rollercoaster of Friendship","year":2018,"rating":3,"dubious":false,"date":"2019-04-18 03:14"},{"_id":"8713","normalized_imdb_id":7074886,"title":"Front Runner, The","year":2018,"rating":2,"dubious":false,"date":"2019-04-23 01:17"},{"_id":"8714","normalized_imdb_id":5117428,"title":"Wild Rose","year":2018,"rating":3,"dubious":false,"date":"2019-04-23 10:17"},{"_id":"8715","normalized_imdb_id":7905466,"title":"They Shall Not Grow Old","year":2018,"rating":0,"dubious":false,"date":"2019-04-23 16:39"},{"_id":"8718","normalized_imdb_id":7250378,"title":"Say My Name","year":2018,"rating":3,"dubious":true,"date":"2019-04-24 07:37"},{"_id":"8724","normalized_imdb_id":5639446,"title":"Jonathan","year":2018,"rating":1,"dubious":false,"date":"2019-04-28 21:49"},{"_id":"8730","normalized_imdb_id":8108198,"title":"Andhadhun","year":2018,"rating":2,"dubious":true,"date":"2019-05-01 12:48"},{"_id":"8733","normalized_imdb_id":1259528,"title":"Den of thieves","year":2018,"rating":2,"dubious":false,"date":"2019-05-04 13:50"},{"_id":"8734","normalized_imdb_id":7689958,"title":"Jane Fonda in Five Acts","year":2018,"rating":3,"dubious":false,"date":"2019-05-04 18:54"},{"_id":"8743","normalized_imdb_id":7335184,"title":"You","year":2018,"rating":3,"dubious":false,"date":"2019-05-14 08:01"},{"_id":"8754","normalized_imdb_id":7098658,"title":"Raazi","year":2018,"rating":3,"dubious":false,"date":"2019-05-28 08:52"},{"_id":"8757","normalized_imdb_id":8900098,"title":"Deslembro","year":2018,"rating":3,"dubious":false,"date":"2019-05-31 19:04"},{"_id":"8762","normalized_imdb_id":8457260,"title":"It's a Beautiful Day","year":2018,"rating":0,"dubious":false,"date":"2019-06-10 20:23"},{"_id":"8780","normalized_imdb_id":7237666,"title":"Honor List, The","year":2018,"rating":3,"dubious":false,"date":"2019-07-09 23:48"},{"_id":"8785","normalized_imdb_id":8287690,"title":"Genese","year":2018,"rating":0,"dubious":false,"date":"2019-07-17 11:17"},{"_id":"8788","normalized_imdb_id":6975598,"title":"Deep Murder","year":2018,"rating":3,"dubious":true,"date":"2019-07-18 17:51"},{"_id":"8792","normalized_imdb_id":7134690,"title":"I Like Me","year":2018,"rating":3,"dubious":false,"date":"2019-07-21 22:44"},{"_id":"8797","normalized_imdb_id":4867110,"title":"Swiped","year":2018,"rating":2,"dubious":false,"date":"2019-07-26 02:01"},{"_id":"8802","normalized_imdb_id":7636672,"title":"Float Like A Butterfly","year":2018,"rating":3,"dubious":true,"date":"2019-07-30 17:26"},{"_id":"8803","normalized_imdb_id":3208026,"title":"Black 47","year":2018,"rating":1,"dubious":false,"date":"2019-07-30 17:33"},{"_id":"8809","normalized_imdb_id":6859352,"title":"Support the Girls","year":2018,"rating":3,"dubious":false,"date":"2019-08-07 14:19"},{"_id":"8822","normalized_imdb_id":5314190,"title":"Sgt. Stubby: An American Hero","year":2018,"rating":0,"dubious":false,"date":"2019-08-19 01:52"},{"_id":"8832","normalized_imdb_id":7008872,"title":"Boy Erased","year":2018,"rating":1,"dubious":false,"date":"2019-08-25 18:06"},{"_id":"8833","normalized_imdb_id":6510332,"title":"McQueen","year":2018,"rating":0,"dubious":false,"date":"2019-08-25 19:24"},{"_id":"8839","normalized_imdb_id":6628394,"title":"Bad Times at the El Royale","year":2018,"rating":2,"dubious":true,"date":"2019-09-05 17:49"},{"_id":"8851","normalized_imdb_id":2126357,"title":"Second Act","year":2018,"rating":1,"dubious":false,"date":"2019-09-13 20:49"},{"_id":"8858","normalized_imdb_id":4477536,"title":"fifty shade freed","year":2018,"rating":1,"dubious":false,"date":"2019-09-24 17:47"},{"_id":"8878","normalized_imdb_id":4669296,"title":"Lords of Chaos","year":2018,"rating":0,"dubious":false,"date":"2019-10-28 05:58"},{"_id":"8885","normalized_imdb_id":3289724,"title":"Welcome to Marwen","year":2018,"rating":2,"dubious":false,"date":"2019-11-09 16:29"},{"_id":"8890","normalized_imdb_id":6781982,"title":"NIght School","year":2018,"rating":3,"dubious":false,"date":"2019-11-11 03:37"},{"_id":"8921","normalized_imdb_id":2690226,"title":"Chaperone, The","year":2018,"rating":3,"dubious":false,"date":"2019-12-06 08:51"},{"_id":"8931","normalized_imdb_id":7464188,"title":"In Fabric","year":2018,"rating":3,"dubious":false,"date":"2019-12-15 15:53"},{"_id":"8938","normalized_imdb_id":8633950,"title":"Les invisibles","year":2018,"rating":3,"dubious":false,"date":"2019-12-27 20:55"},{"_id":"8961","normalized_imdb_id":7212726,"title":"Simmba","year":2018,"rating":1,"dubious":false,"date":"2020-01-13 14:38"},{"_id":"8977","normalized_imdb_id":1308728,"title":"Happytime Murders, The","year":2018,"rating":3,"dubious":false,"date":"2020-01-21 04:32"},{"_id":"9011","normalized_imdb_id":6678876,"title":"Meio Irmao","year":2018,"rating":3,"dubious":false,"date":"2020-02-14 03:10"},{"_id":"9012","normalized_imdb_id":7317324,"title":"Egg","year":2018,"rating":3,"dubious":false,"date":"2020-02-16 05:40"},{"_id":"9019","normalized_imdb_id":8331988,"title":"La camarista","year":2018,"rating":3,"dubious":false,"date":"2020-02-23 02:08"},{"_id":"9020","normalized_imdb_id":6404896,"title":"Constantine: City of Demons","year":2018,"rating":2,"dubious":false,"date":"2020-02-24 10:27"},{"_id":"9032","normalized_imdb_id":3294746,"title":"Public, The","year":2018,"rating":3,"dubious":true,"date":"2020-03-10 04:40"},{"_id":"9061","normalized_imdb_id":8479120,"title":"Agapornis","year":2018,"rating":3,"dubious":false,"date":"2020-04-03 02:33"},{"_id":"9066","normalized_imdb_id":5936578,"title":"Saints Rest","year":2018,"rating":3,"dubious":false,"date":"2020-04-05 16:30"},{"_id":"9074","normalized_imdb_id":6063050,"title":"Tyler Perry's Acrimony","year":2018,"rating":1,"dubious":false,"date":"2020-04-10 18:24"},{"_id":"9077","normalized_imdb_id":10174382,"title":"Senses 1&2","year":2018,"rating":3,"dubious":false,"date":"2020-04-12 18:13"},{"_id":"9111","normalized_imdb_id":5001754,"title":"Braven","year":2018,"rating":3,"dubious":true,"date":"2020-05-03 22:29"},{"_id":"9116","normalized_imdb_id":5952138,"title":"We Have Always Lived in the Castle","year":2018,"rating":3,"dubious":false,"date":"2020-05-04 18:43"},{"_id":"9117","normalized_imdb_id":5322168,"title":"Snapshots","year":2018,"rating":3,"dubious":false,"date":"2020-05-05 15:55"},{"_id":"9125","normalized_imdb_id":6204018,"title":"Ted - For karlekens skull","year":2018,"rating":0,"dubious":false,"date":"2020-05-08 09:42"},{"_id":"9127","normalized_imdb_id":4357394,"title":"Tau","year":2018,"rating":3,"dubious":false,"date":"2020-05-11 00:31"},{"_id":"9129","normalized_imdb_id":6164698,"title":"Hjartat","year":2018,"rating":3,"dubious":false,"date":"2020-05-11 09:41"},{"_id":"9131","normalized_imdb_id":7791048,"title":"Innan vintern kommer","year":2018,"rating":0,"dubious":false,"date":"2020-05-12 10:04"},{"_id":"9132","normalized_imdb_id":6889032,"title":"Cake General, The","year":2018,"rating":3,"dubious":false,"date":"2020-05-12 10:05"},{"_id":"9133","normalized_imdb_id":7893992,"title":"Amatorer","year":2018,"rating":3,"dubious":false,"date":"2020-05-12 10:06"},{"_id":"9134","normalized_imdb_id":6258766,"title":"Toppen av ingenting","year":2018,"rating":0,"dubious":false,"date":"2020-05-13 08:14"},{"_id":"9137","normalized_imdb_id":6708044,"title":"La tribu","year":2018,"rating":3,"dubious":false,"date":"2020-05-16 22:44"},{"_id":"9140","normalized_imdb_id":5690810,"title":"Ophelia","year":2018,"rating":3,"dubious":false,"date":"2020-05-20 14:18"},{"_id":"9150","normalized_imdb_id":2709692,"title":"Grinch, The","year":2018,"rating":3,"dubious":true,"date":"2020-06-01 14:12"},{"_id":"9153","normalized_imdb_id":6857988,"title":"I am Not an Easy Man / Je ne suis pas un homme facile","year":2018,"rating":3,"dubious":false,"date":"2020-06-05 15:05"},{"_id":"9163","normalized_imdb_id":6927152,"title":"Rampant","year":2018,"rating":1,"dubious":false,"date":"2020-06-08 04:18"},{"_id":"9167","normalized_imdb_id":8359848,"title":"Climax","year":2018,"rating":3,"dubious":false,"date":"2020-06-13 00:29"},{"_id":"9235","normalized_imdb_id":5980638,"title":"Transcendents, The","year":2018,"rating":3,"dubious":true,"date":"2020-08-13 18:50"},{"_id":"9245","normalized_imdb_id":7755856,"title":"Banana Split","year":2018,"rating":3,"dubious":false,"date":"2020-08-18 22:15"},{"_id":"9260","normalized_imdb_id":6522668,"title":"Diamantino","year":2018,"rating":3,"dubious":false,"date":"2020-09-03 11:59"},{"_id":"9287","normalized_imdb_id":8267604,"title":"Capernaum","year":2018,"rating":3,"dubious":false,"date":"2020-09-28 09:38"},{"_id":"9303","normalized_imdb_id":7785128,"title":"Gekijo-ban Non Non Biyori: Vacation","year":2018,"rating":3,"dubious":false,"date":"2020-10-10 02:30"},{"_id":"9307","normalized_imdb_id":6081670,"title":"Possum","year":2018,"rating":0,"dubious":false,"date":"2020-10-14 01:06"},{"_id":"9308","normalized_imdb_id":4003440,"title":"House That Jack Built, The","year":2018,"rating":1,"dubious":false,"date":"2020-10-14 01:10"},{"_id":"9357","normalized_imdb_id":8954732,"title":"Princess Switch, The","year":2018,"rating":3,"dubious":false,"date":"2020-12-05 20:28"},{"_id":"9412","normalized_imdb_id":4006302,"title":"Level 16","year":2018,"rating":3,"dubious":false,"date":"2020-12-27 22:18"},{"_id":"9420","normalized_imdb_id":8031422,"title":"Last Sharknado: It's About Time, The","year":2018,"rating":3,"dubious":false,"date":"2020-12-30 11:08"},{"_id":"9450","normalized_imdb_id":7543930,"title":"In Safe Hands","year":2018,"rating":1,"dubious":false,"date":"2021-01-22 11:47"},{"_id":"9447","normalized_imdb_id":7241926,"title":"Tell It to the Bees","year":2018,"rating":3,"dubious":false,"date":"2021-01-21 07:06"},{"_id":"9445","normalized_imdb_id":5291792,"title":"Furlough","year":2018,"rating":3,"dubious":false,"date":"2021-01-21 04:16"},{"_id":"9478","normalized_imdb_id":2069797,"title":"Delirium","year":2018,"rating":1,"dubious":false,"date":"2021-02-16 03:37"},{"_id":"9961","normalized_imdb_id":7838252,"title":"K.G.F: Chapter 1","year":2018,"rating":1,"dubious":true,"date":"2021-07-11 11:15"},{"_id":"9503","normalized_imdb_id":6466058,"title":"Ask for Jane","year":2018,"rating":3,"dubious":false,"date":"2021-03-04 00:12"},{"_id":"9520","normalized_imdb_id":6499752,"title":"Upgrade","year":2018,"rating":2,"dubious":true,"date":"2021-03-13 23:58"},{"_id":"9542","normalized_imdb_id":7086706,"title":"Deep Blue Sea 2","year":2018,"rating":1,"dubious":false,"date":"2021-03-14 17:46"},{"_id":"9568","normalized_imdb_id":7262882,"title":"Master Z: The Ip Man Legacy","year":2018,"rating":3,"dubious":false,"date":"2021-03-17 17:01"},{"_id":"9630","normalized_imdb_id":5397194,"title":"Anon","year":2018,"rating":0,"dubious":false,"date":"2021-04-07 16:46"},{"_id":"9798","normalized_imdb_id":6728096,"title":"Breaker Upperers, The","year":2018,"rating":3,"dubious":false,"date":"2021-05-08 09:04"},{"_id":"9807","normalized_imdb_id":7745956,"title":"She-Ra and the Princesses of Power","year":2018,"rating":3,"dubious":false,"date":"2021-05-12 10:07"},{"_id":"9858","normalized_imdb_id":11791228,"title":"Fortnite: Battle, Build, Survive!","year":2018,"rating":3,"dubious":false,"date":"2021-05-30 18:12"},{"_id":"10049","normalized_imdb_id":6435258,"title":"Bethany Hamilton: Unstoppable","year":2018,"rating":1,"dubious":false,"date":"2021-09-15 18:04"},{"_id":"9968","normalized_imdb_id":7225144,"title":"Bearkittens","year":2018,"rating":3,"dubious":false,"date":"2021-07-15 15:03"},{"_id":"9969","normalized_imdb_id":6342316,"title":"Undertow","year":2018,"rating":3,"dubious":true,"date":"2021-07-15 15:14"},{"_id":"9976","normalized_imdb_id":7468616,"title":"Boat, The","year":2018,"rating":0,"dubious":false,"date":"2021-07-24 06:09"},{"_id":"10032","normalized_imdb_id":7073710,"title":"What Keeps You Alive","year":2018,"rating":3,"dubious":false,"date":"2021-09-04 00:21"},{"_id":"10089","normalized_imdb_id":6010628,"title":"Zoe","year":2018,"rating":3,"dubious":false,"date":"2021-10-20 15:52"},{"_id":"10125","normalized_imdb_id":6908274,"title":"Mirage","year":2018,"rating":3,"dubious":true,"date":"2021-11-12 04:13"},{"_id":"10134","normalized_imdb_id":7689052,"title":"Daphne & Velma","year":2018,"rating":3,"dubious":false,"date":"2021-11-20 00:25"},{"_id":"10146","normalized_imdb_id":1285009,"title":"Strangers: Prey At Night, The","year":2018,"rating":3,"dubious":false,"date":"2021-11-30 16:12"},{"_id":"8749","normalized_imdb_id":8179388,"title":"Rim of the World","year":2019,"rating":0,"dubious":false,"date":"2019-05-25 10:09"},{"_id":"8607","normalized_imdb_id":2386490,"title":"How to Train Your Dragon: The Hidden World","year":2019,"rating":2,"dubious":false,"date":"2019-01-18 08:56"},{"_id":"8609","normalized_imdb_id":9358120,"title":"We Are Little Zombies","year":2019,"rating":2,"dubious":false,"date":"2019-01-21 19:14"},{"_id":"8615","normalized_imdb_id":6811018,"title":"Kid Who Would Be King, The","year":2019,"rating":1,"dubious":false,"date":"2019-01-27 03:27"},{"_id":"8616","normalized_imdb_id":4139588,"title":"Polar","year":2019,"rating":2,"dubious":false,"date":"2019-01-27 07:03"},{"_id":"8617","normalized_imdb_id":5316540,"title":"Close","year":2019,"rating":3,"dubious":false,"date":"2019-01-27 17:35"},{"_id":"8620","normalized_imdb_id":6476140,"title":"Serenity","year":2019,"rating":1,"dubious":false,"date":"2019-01-29 03:22"},{"_id":"8623","normalized_imdb_id":6078866,"title":"Soni","year":2019,"rating":3,"dubious":false,"date":"2019-01-31 15:53"},{"_id":"8681","normalized_imdb_id":6857112,"title":"Us","year":2019,"rating":3,"dubious":false,"date":"2019-03-22 18:24"},{"_id":"8639","normalized_imdb_id":5719748,"title":"Cold Pursuit","year":2019,"rating":1,"dubious":false,"date":"2019-02-09 21:54"},{"_id":"8640","normalized_imdb_id":7605074,"title":"Wandering Earth (Liu Lang Di Qiu), The","year":2019,"rating":3,"dubious":true,"date":"2019-02-11 16:31"},{"_id":"8642","normalized_imdb_id":437086,"title":"Alita: Battle Angel","year":2019,"rating":3,"dubious":false,"date":"2019-02-14 19:31"},{"_id":"8645","normalized_imdb_id":3513498,"title":"Lego Movie 2: The Second Part, The","year":2019,"rating":3,"dubious":false,"date":"2019-02-22 02:06"},{"_id":"8647","normalized_imdb_id":9109492,"title":"American Woman","year":2019,"rating":3,"dubious":false,"date":"2019-02-22 08:15"},{"_id":"8655","normalized_imdb_id":7458762,"title":"Le chant du loup","year":2019,"rating":0,"dubious":false,"date":"2019-02-27 15:40"},{"_id":"8659","normalized_imdb_id":2452244,"title":"Isn't It Romantic","year":2019,"rating":3,"dubious":false,"date":"2019-03-01 14:37"},{"_id":"8668","normalized_imdb_id":4154664,"title":"Captain Marvel","year":2019,"rating":3,"dubious":false,"date":"2019-03-07 23:09"},{"_id":"8679","normalized_imdb_id":6513120,"title":"Fighting with My Family","year":2019,"rating":3,"dubious":false,"date":"2019-03-19 17:12"},{"_id":"8684","normalized_imdb_id":8155288,"title":"Happy Death Day 2U","year":2019,"rating":3,"dubious":false,"date":"2019-03-25 01:26"},{"_id":"8687","normalized_imdb_id":1488606,"title":"Triple Frontier","year":2019,"rating":1,"dubious":false,"date":"2019-03-27 02:05"},{"_id":"8693","normalized_imdb_id":448115,"title":"Shazam!","year":2019,"rating":3,"dubious":false,"date":"2019-04-03 12:02"},{"_id":"8699","normalized_imdb_id":2395469,"title":"Gully Boy","year":2019,"rating":1,"dubious":true,"date":"2019-04-09 13:07"},{"_id":"8709","normalized_imdb_id":8734872,"title":"My Little Pony: Equestria Girls: Spring Breakdown","year":2019,"rating":3,"dubious":false,"date":"2019-04-18 03:06"},{"_id":"8717","normalized_imdb_id":8075260,"title":"Someone Great","year":2019,"rating":3,"dubious":false,"date":"2019-04-24 00:03"},{"_id":"8796","normalized_imdb_id":9670282,"title":"Zoombies 2","year":2019,"rating":3,"dubious":false,"date":"2019-07-24 21:48"},{"_id":"8720","normalized_imdb_id":4154796,"title":"Avengers: Endgame","year":2019,"rating":3,"dubious":false,"date":"2019-04-25 11:11"},{"_id":"8722","normalized_imdb_id":4913966,"title":"Curse of La Llorona, The","year":2019,"rating":3,"dubious":false,"date":"2019-04-27 03:57"},{"_id":"8725","normalized_imdb_id":8858104,"title":"Guava Island","year":2019,"rating":2,"dubious":false,"date":"2019-04-29 23:51"},{"_id":"8727","normalized_imdb_id":7315484,"title":"Silence, The","year":2019,"rating":3,"dubious":false,"date":"2019-04-29 23:57"},{"_id":"8728","normalized_imdb_id":5941692,"title":"Miss Bala","year":2019,"rating":3,"dubious":false,"date":"2019-04-30 00:01"},{"_id":"8740","normalized_imdb_id":5884052,"title":"Pokemon Detective Pikachu","year":2019,"rating":3,"dubious":false,"date":"2019-05-11 04:54"},{"_id":"8741","normalized_imdb_id":1298644,"title":"Hustle, The","year":2019,"rating":3,"dubious":true,"date":"2019-05-11 17:50"},{"_id":"8742","normalized_imdb_id":9024106,"title":"Unplanned","year":2019,"rating":3,"dubious":false,"date":"2019-05-11 23:55"},{"_id":"8744","normalized_imdb_id":8169446,"title":"Wine Country","year":2019,"rating":3,"dubious":false,"date":"2019-05-14 23:53"},{"_id":"8747","normalized_imdb_id":1489887,"title":"Booksmart","year":2019,"rating":3,"dubious":false,"date":"2019-05-20 20:07"},{"_id":"8750","normalized_imdb_id":6139732,"title":"Aladdin","year":2019,"rating":3,"dubious":false,"date":"2019-05-25 11:41"},{"_id":"8753","normalized_imdb_id":8323104,"title":"Nancy Drew and the Hidden Staircase","year":2019,"rating":3,"dubious":false,"date":"2019-05-28 00:22"},{"_id":"8755","normalized_imdb_id":6146586,"title":"John Wick: Chapter 3 - Parabellum","year":2019,"rating":1,"dubious":false,"date":"2019-05-29 07:30"},{"_id":"8758","normalized_imdb_id":7958736,"title":"Ma","year":2019,"rating":3,"dubious":false,"date":"2019-06-01 19:02"},{"_id":"8760","normalized_imdb_id":7374948,"title":"Always Be My Maybe","year":2019,"rating":3,"dubious":false,"date":"2019-06-05 06:40"},{"_id":"8761","normalized_imdb_id":6565702,"title":"Dark Phoenix","year":2019,"rating":3,"dubious":false,"date":"2019-06-08 14:33"},{"_id":"8763","normalized_imdb_id":8201170,"title":"Perfect Date, The","year":2019,"rating":2,"dubious":false,"date":"2019-06-13 02:03"},{"_id":"8764","normalized_imdb_id":6107548,"title":"Late Night","year":2019,"rating":3,"dubious":false,"date":"2019-06-13 14:18"},{"_id":"8765","normalized_imdb_id":7752126,"title":"Brightburn","year":2019,"rating":2,"dubious":false,"date":"2019-06-16 01:17"},{"_id":"8766","normalized_imdb_id":3741700,"title":"Godzilla: King of the Monsters","year":2019,"rating":3,"dubious":false,"date":"2019-06-17 00:54"},{"_id":"8767","normalized_imdb_id":6292852,"title":"I Am Mother","year":2019,"rating":3,"dubious":false,"date":"2019-06-18 07:48"},{"_id":"8768","normalized_imdb_id":6751668,"title":"Gisaengchung","year":2019,"rating":3,"dubious":true,"date":"2019-06-21 10:33"},{"_id":"8772","normalized_imdb_id":1979376,"title":"Toy Story 4","year":2019,"rating":3,"dubious":false,"date":"2019-06-25 14:34"},{"_id":"8775","normalized_imdb_id":8350360,"title":"Annabelle Comes Home","year":2019,"rating":3,"dubious":false,"date":"2019-06-30 22:11"},{"_id":"8778","normalized_imdb_id":10324144,"title":"Article 15","year":2019,"rating":1,"dubious":false,"date":"2019-07-03 04:39"},{"_id":"9186","normalized_imdb_id":6590856,"title":"Pause","year":2019,"rating":2,"dubious":false,"date":"2020-06-30 02:32"},{"_id":"8781","normalized_imdb_id":6320628,"title":"Spider-Man: Far from Home","year":2019,"rating":1,"dubious":false,"date":"2019-07-10 03:01"},{"_id":"8784","normalized_imdb_id":8772262,"title":"Midsommar","year":2019,"rating":3,"dubious":false,"date":"2019-07-16 20:51"},{"_id":"8786","normalized_imdb_id":7456310,"title":"Anna","year":2019,"rating":3,"dubious":false,"date":"2019-07-18 06:30"},{"_id":"8790","normalized_imdb_id":6105098,"title":"Lion King, The","year":2019,"rating":3,"dubious":false,"date":"2019-07-21 16:46"},{"_id":"8791","normalized_imdb_id":8364368,"title":"Crawl","year":2019,"rating":3,"dubious":true,"date":"2019-07-21 22:07"},{"_id":"8804","normalized_imdb_id":7131622,"title":"Once Upon a Time ... In Hollywood","year":2019,"rating":3,"dubious":false,"date":"2019-07-30 17:50"},{"_id":"8805","normalized_imdb_id":8484012,"title":"Sword of Trust","year":2019,"rating":3,"dubious":false,"date":"2019-08-01 18:38"},{"_id":"8807","normalized_imdb_id":8637428,"title":"Farewell, The","year":2019,"rating":3,"dubious":false,"date":"2019-08-03 06:37"},{"_id":"8808","normalized_imdb_id":6806448,"title":"Fast & Furious Presents: Hobbs & Shaw","year":2019,"rating":2,"dubious":true,"date":"2019-08-04 01:01"},{"_id":"8810","normalized_imdb_id":4426738,"title":"Animals","year":2019,"rating":3,"dubious":false,"date":"2019-08-10 14:00"},{"_id":"8813","normalized_imdb_id":6472976,"title":"Five Feet Apart","year":2019,"rating":3,"dubious":false,"date":"2019-08-12 08:25"},{"_id":"8814","normalized_imdb_id":7979492,"title":"Kim Possible","year":2019,"rating":3,"dubious":false,"date":"2019-08-12 10:43"},{"_id":"8815","normalized_imdb_id":1478839,"title":"Art of Racing in the Rain, The","year":2019,"rating":2,"dubious":false,"date":"2019-08-12 18:35"},{"_id":"8816","normalized_imdb_id":8022928,"title":"Descendants 3","year":2019,"rating":3,"dubious":false,"date":"2019-08-12 18:52"},{"_id":"8824","normalized_imdb_id":837563,"title":"Pet Sematary","year":2019,"rating":3,"dubious":true,"date":"2019-08-21 10:57"},{"_id":"8825","normalized_imdb_id":3361792,"title":"Tolkien","year":2019,"rating":2,"dubious":false,"date":"2019-08-21 11:00"},{"_id":"8834","normalized_imdb_id":8743064,"title":"See You Yesterday","year":2019,"rating":3,"dubious":false,"date":"2019-08-25 21:40"},{"_id":"8835","normalized_imdb_id":8169552,"title":"Turma da Monica: Lacos","year":2019,"rating":2,"dubious":false,"date":"2019-08-27 14:38"},{"_id":"8836","normalized_imdb_id":2365580,"title":"Where'd You Go, Bernadette","year":2019,"rating":3,"dubious":false,"date":"2019-09-02 07:19"},{"_id":"8838","normalized_imdb_id":6450804,"title":"Terminator: Dark Fate","year":2019,"rating":3,"dubious":false,"date":"2019-09-03 17:24"},{"_id":"8840","normalized_imdb_id":7671064,"title":"Brittany Runs A Marathon","year":2019,"rating":3,"dubious":false,"date":"2019-09-09 06:53"},{"_id":"8841","normalized_imdb_id":7547410,"title":"Dora and the Lost City of Gold","year":2019,"rating":3,"dubious":false,"date":"2019-09-10 17:29"},{"_id":"8845","normalized_imdb_id":8499102,"title":"Jawline","year":2019,"rating":0,"dubious":false,"date":"2019-09-11 02:19"},{"_id":"8850","normalized_imdb_id":10515852,"title":"Steven Universe: The Movie","year":2019,"rating":3,"dubious":false,"date":"2019-09-13 02:11"},{"_id":"8852","normalized_imdb_id":7711764,"title":"Pentagram","year":2019,"rating":1,"dubious":false,"date":"2019-09-14 16:44"},{"_id":"8853","normalized_imdb_id":9252508,"title":"Tall Girl","year":2019,"rating":3,"dubious":false,"date":"2019-09-15 13:15"},{"_id":"8855","normalized_imdb_id":2935510,"title":"Ad Astra","year":2019,"rating":1,"dubious":false,"date":"2019-09-19 14:49"},{"_id":"8857","normalized_imdb_id":2762506,"title":"Bacurau","year":2019,"rating":1,"dubious":true,"date":"2019-09-24 14:51"},{"_id":"8861","normalized_imdb_id":7798634,"title":"Ready or Not","year":2019,"rating":3,"dubious":false,"date":"2019-09-28 00:58"},{"_id":"8862","normalized_imdb_id":4682804,"title":"Lucy in the Sky","year":2019,"rating":3,"dubious":false,"date":"2019-10-05 02:22"},{"_id":"8863","normalized_imdb_id":7286456,"title":"Joker","year":2019,"rating":3,"dubious":true,"date":"2019-10-08 00:22"},{"_id":"8864","normalized_imdb_id":9239816,"title":"Canceled","year":2019,"rating":3,"dubious":false,"date":"2019-10-08 14:08"},{"_id":"8866","normalized_imdb_id":6398184,"title":"Downton Abbey","year":2019,"rating":3,"dubious":false,"date":"2019-10-09 07:14"},{"_id":"8867","normalized_imdb_id":3387520,"title":"Scary Stories to Tell in the Dark","year":2019,"rating":3,"dubious":false,"date":"2019-10-09 07:46"},{"_id":"8868","normalized_imdb_id":1025100,"title":"Gemini Man","year":2019,"rating":1,"dubious":false,"date":"2019-10-12 10:46"},{"_id":"8869","normalized_imdb_id":1950186,"title":"Ford v Ferrari","year":2019,"rating":0,"dubious":false,"date":"2019-10-12 10:48"},{"_id":"8870","normalized_imdb_id":5503686,"title":"Hustlers","year":2019,"rating":3,"dubious":false,"date":"2019-10-14 13:49"},{"_id":"8876","normalized_imdb_id":4777008,"title":"Maleficent: Mistress of Evil","year":2019,"rating":3,"dubious":false,"date":"2019-10-26 22:39"},{"_id":"8877","normalized_imdb_id":5865326,"title":"Laundromat, The","year":2019,"rating":3,"dubious":false,"date":"2019-10-27 07:11"},{"_id":"8881","normalized_imdb_id":7984766,"title":"King, The","year":2019,"rating":1,"dubious":false,"date":"2019-11-04 20:46"},{"_id":"8882","normalized_imdb_id":8613070,"title":"Portrait of a Lady on Fire","year":2019,"rating":3,"dubious":false,"date":"2019-11-05 13:05"},{"_id":"8982","normalized_imdb_id":8367814,"title":"Gentlemen, The","year":2019,"rating":3,"dubious":false,"date":"2020-01-26 00:33"},{"_id":"8884","normalized_imdb_id":7634968,"title":"What Men Want","year":2019,"rating":1,"dubious":false,"date":"2019-11-08 20:10"},{"_id":"8886","normalized_imdb_id":4126476,"title":"After","year":2019,"rating":3,"dubious":false,"date":"2019-11-10 00:05"},{"_id":"8889","normalized_imdb_id":6324278,"title":"Abominable","year":2019,"rating":3,"dubious":false,"date":"2019-11-10 23:49"},{"_id":"8892","normalized_imdb_id":4648786,"title":"Harriet","year":2019,"rating":3,"dubious":false,"date":"2019-11-11 08:52"},{"_id":"8893","normalized_imdb_id":7653254,"title":"Marriage Story","year":2019,"rating":2,"dubious":false,"date":"2019-11-11 16:17"},{"_id":"8894","normalized_imdb_id":7984734,"title":"Lighthouse, The","year":2019,"rating":0,"dubious":false,"date":"2019-11-12 19:41"},{"_id":"8895","normalized_imdb_id":7349950,"title":"It Chapter 2","year":2019,"rating":3,"dubious":false,"date":"2019-11-12 20:29"},{"_id":"8899","normalized_imdb_id":8623904,"title":"Last Christmas","year":2019,"rating":3,"dubious":false,"date":"2019-11-17 00:51"},{"_id":"8900","normalized_imdb_id":7616148,"title":"Luce","year":2019,"rating":3,"dubious":false,"date":"2019-11-19 15:52"},{"_id":"8901","normalized_imdb_id":4729430,"title":"Klaus","year":2019,"rating":1,"dubious":false,"date":"2019-11-22 22:00"},{"_id":"8902","normalized_imdb_id":10060094,"title":"Knight Before Christmas, The","year":2019,"rating":3,"dubious":false,"date":"2019-11-22 22:01"},{"_id":"8903","normalized_imdb_id":2584384,"title":"Jojo Rabbit","year":2019,"rating":3,"dubious":false,"date":"2019-11-23 04:06"},{"_id":"8904","normalized_imdb_id":6924650,"title":"Midway","year":2019,"rating":1,"dubious":false,"date":"2019-11-23 04:22"},{"_id":"8905","normalized_imdb_id":5033998,"title":"Charlie's Angels","year":2019,"rating":3,"dubious":false,"date":"2019-11-23 04:40"},{"_id":"8907","normalized_imdb_id":8946378,"title":"Knives Out","year":2019,"rating":3,"dubious":false,"date":"2019-11-24 04:44"},{"_id":"8910","normalized_imdb_id":385887,"title":"Motherless Brooklyn","year":2019,"rating":3,"dubious":false,"date":"2019-11-27 19:16"},{"_id":"8911","normalized_imdb_id":3224458,"title":"A Beautiful Day in the Neighborhood","year":2019,"rating":2,"dubious":false,"date":"2019-11-27 19:22"},{"_id":"8912","normalized_imdb_id":7311036,"title":"Clementine","year":2019,"rating":3,"dubious":false,"date":"2019-11-29 10:34"},{"_id":"8913","normalized_imdb_id":8722346,"title":"Queen & Slim","year":2019,"rating":2,"dubious":true,"date":"2019-12-01 22:42"},{"_id":"8914","normalized_imdb_id":5606664,"title":"Doctor Sleep","year":2019,"rating":3,"dubious":false,"date":"2019-12-02 19:31"},{"_id":"8915","normalized_imdb_id":1302006,"title":"Irishman, The","year":2019,"rating":1,"dubious":false,"date":"2019-12-02 20:57"},{"_id":"8916","normalized_imdb_id":4520988,"title":"Frozen 2","year":2019,"rating":3,"dubious":false,"date":"2019-12-03 05:40"},{"_id":"8917","normalized_imdb_id":7909970,"title":"Unbelievable","year":2019,"rating":3,"dubious":false,"date":"2019-12-03 20:38"},{"_id":"8918","normalized_imdb_id":10199590,"title":"Les Miserables","year":2019,"rating":0,"dubious":false,"date":"2019-12-03 23:15"},{"_id":"8927","normalized_imdb_id":1560220,"title":"Zombieland: Double Tap","year":2019,"rating":3,"dubious":false,"date":"2019-12-09 19:08"},{"_id":"8932","normalized_imdb_id":10767426,"title":"Tekst","year":2019,"rating":1,"dubious":true,"date":"2019-12-16 10:25"},{"_id":"8934","normalized_imdb_id":8510350,"title":"Satanic Panic","year":2019,"rating":3,"dubious":false,"date":"2019-12-19 21:53"},{"_id":"8936","normalized_imdb_id":2527338,"title":"Star Wars: Episode IX - The Rise of Skywalker","year":2019,"rating":3,"dubious":false,"date":"2019-12-22 14:49"},{"_id":"8937","normalized_imdb_id":8079248,"title":"Yesterday","year":2019,"rating":1,"dubious":false,"date":"2019-12-25 23:38"},{"_id":"8940","normalized_imdb_id":7942742,"title":"Her Smell","year":2019,"rating":3,"dubious":false,"date":"2019-12-28 13:50"},{"_id":"8941","normalized_imdb_id":5697572,"title":"Cats","year":2019,"rating":3,"dubious":false,"date":"2019-12-30 00:43"},{"_id":"8942","normalized_imdb_id":1206885,"title":"Rambo: Last Blood","year":2019,"rating":2,"dubious":true,"date":"2019-12-30 19:46"},{"_id":"8943","normalized_imdb_id":7343762,"title":"Good Boys","year":2019,"rating":3,"dubious":false,"date":"2019-12-31 06:34"},{"_id":"8946","normalized_imdb_id":8385474,"title":"A Dog's Journey","year":2019,"rating":3,"dubious":false,"date":"2020-01-01 23:07"},{"_id":"8948","normalized_imdb_id":6062774,"title":"Monos","year":2019,"rating":3,"dubious":false,"date":"2020-01-05 07:44"},{"_id":"8949","normalized_imdb_id":3281548,"title":"Little Women","year":2019,"rating":3,"dubious":false,"date":"2020-01-05 13:59"},{"_id":"8950","normalized_imdb_id":6141246,"title":"Aeronauts, The","year":2019,"rating":3,"dubious":false,"date":"2020-01-05 14:01"},{"_id":"8951","normalized_imdb_id":5727208,"title":"Uncut Gems","year":2019,"rating":2,"dubious":true,"date":"2020-01-06 21:31"},{"_id":"8980","normalized_imdb_id":8359816,"title":"Sorry We Missed You","year":2019,"rating":3,"dubious":false,"date":"2020-01-25 12:10"},{"_id":"8953","normalized_imdb_id":3864056,"title":"Goldfinch, The","year":2019,"rating":1,"dubious":false,"date":"2020-01-08 15:31"},{"_id":"8956","normalized_imdb_id":8404614,"title":"Two Popes, The","year":2019,"rating":1,"dubious":false,"date":"2020-01-09 19:06"},{"_id":"8962","normalized_imdb_id":8579674,"title":"1917","year":2019,"rating":0,"dubious":false,"date":"2020-01-13 19:28"},{"_id":"8979","normalized_imdb_id":4916630,"title":"Just Mercy","year":2019,"rating":2,"dubious":false,"date":"2020-01-24 14:44"},{"_id":"8967","normalized_imdb_id":9204204,"title":"Little Joe","year":2019,"rating":3,"dubious":false,"date":"2020-01-18 00:28"},{"_id":"8968","normalized_imdb_id":7488288,"title":"Anya","year":2019,"rating":3,"dubious":false,"date":"2020-01-18 05:13"},{"_id":"8969","normalized_imdb_id":9617456,"title":"For Sama","year":2019,"rating":3,"dubious":false,"date":"2020-01-18 22:13"},{"_id":"8970","normalized_imdb_id":2404465,"title":"Troop Zero","year":2019,"rating":3,"dubious":false,"date":"2020-01-19 02:46"},{"_id":"8972","normalized_imdb_id":4477292,"title":"Cosmos","year":2019,"rating":0,"dubious":false,"date":"2020-01-19 19:55"},{"_id":"8974","normalized_imdb_id":8669356,"title":"Jeanne","year":2019,"rating":3,"dubious":false,"date":"2020-01-20 09:47"},{"_id":"8975","normalized_imdb_id":6918220,"title":"Shiny Shrimps, The","year":2019,"rating":0,"dubious":false,"date":"2020-01-20 10:15"},{"_id":"8976","normalized_imdb_id":9632590,"title":"Une fille facile","year":2019,"rating":3,"dubious":false,"date":"2020-01-20 10:23"},{"_id":"8978","normalized_imdb_id":4687108,"title":"In the Tall Grass","year":2019,"rating":1,"dubious":false,"date":"2020-01-23 11:10"},{"_id":"8984","normalized_imdb_id":9243946,"title":"El Camino: A Breaking Bad Movie","year":2019,"rating":1,"dubious":false,"date":"2020-01-26 20:21"},{"_id":"8988","normalized_imdb_id":9426210,"title":"Weathering with You","year":2019,"rating":3,"dubious":false,"date":"2020-01-27 23:18"},{"_id":"8993","normalized_imdb_id":7975244,"title":"Jumanji: The Next Level","year":2019,"rating":1,"dubious":false,"date":"2020-01-28 10:17"},{"_id":"8995","normalized_imdb_id":10244726,"title":"O Filme do Bruno Aleixo","year":2019,"rating":0,"dubious":false,"date":"2020-01-30 02:36"},{"_id":"9015","normalized_imdb_id":8041276,"title":"Paddleton","year":2019,"rating":0,"dubious":false,"date":"2020-02-18 03:29"},{"_id":"9018","normalized_imdb_id":1780967,"title":"Seberg","year":2019,"rating":3,"dubious":false,"date":"2020-02-22 20:15"},{"_id":"9023","normalized_imdb_id":8855960,"title":"Straight Up","year":2019,"rating":3,"dubious":false,"date":"2020-03-01 04:58"},{"_id":"9027","normalized_imdb_id":8707922,"title":"Can You Keep A Secret?","year":2019,"rating":3,"dubious":false,"date":"2020-03-03 04:50"},{"_id":"9035","normalized_imdb_id":9806192,"title":"i lost my body","year":2019,"rating":0,"dubious":false,"date":"2020-03-11 08:27"},{"_id":"9047","normalized_imdb_id":8228288,"title":"Platform, The","year":2019,"rating":1,"dubious":false,"date":"2020-03-22 14:39"},{"_id":"9067","normalized_imdb_id":3038708,"title":"Iron Sky: The Coming Race","year":2019,"rating":3,"dubious":false,"date":"2020-04-05 17:03"},{"_id":"9068","normalized_imdb_id":8655470,"title":"Specials, The","year":2019,"rating":1,"dubious":false,"date":"2020-04-06 17:01"},{"_id":"9069","normalized_imdb_id":5073642,"title":"Color Out of Space","year":2019,"rating":2,"dubious":false,"date":"2020-04-06 22:10"},{"_id":"9080","normalized_imdb_id":4180560,"title":"Otherhood","year":2019,"rating":3,"dubious":false,"date":"2020-04-14 00:01"},{"_id":"9175","normalized_imdb_id":6436726,"title":"7500","year":2019,"rating":1,"dubious":false,"date":"2020-06-19 20:03"},{"_id":"9086","normalized_imdb_id":9419834,"title":"Secret Obsession","year":2019,"rating":1,"dubious":false,"date":"2020-04-19 21:07"},{"_id":"9089","normalized_imdb_id":10308528,"title":"HELEN","year":2019,"rating":1,"dubious":false,"date":"2020-04-22 22:02"},{"_id":"9090","normalized_imdb_id":5814534,"title":"Spies in Disguise","year":2019,"rating":3,"dubious":false,"date":"2020-04-23 10:34"},{"_id":"9097","normalized_imdb_id":8108206,"title":"Saand Ki Aankh","year":2019,"rating":3,"dubious":false,"date":"2020-04-28 04:37"},{"_id":"9099","normalized_imdb_id":6348138,"title":"Missing Link","year":2019,"rating":1,"dubious":false,"date":"2020-04-28 21:52"},{"_id":"9103","normalized_imdb_id":1618434,"title":"Murder Mystery","year":2019,"rating":1,"dubious":true,"date":"2020-04-30 02:55"},{"_id":"9109","normalized_imdb_id":8425034,"title":"Bit","year":2019,"rating":3,"dubious":false,"date":"2020-05-03 16:18"},{"_id":"9112","normalized_imdb_id":8659948,"title":"Love Live! Sunshine!! The School Idol Movie: Over The Rainbow","year":2019,"rating":3,"dubious":false,"date":"2020-05-04 08:18"},{"_id":"9115","normalized_imdb_id":6065988,"title":"Bombshells and Dollies","year":2019,"rating":3,"dubious":false,"date":"2020-05-04 17:28"},{"_id":"9122","normalized_imdb_id":8695030,"title":"Dead Don't Die, The","year":2019,"rating":3,"dubious":false,"date":"2020-05-06 07:06"},{"_id":"9143","normalized_imdb_id":8236336,"title":"Report, The","year":2019,"rating":0,"dubious":false,"date":"2020-05-25 12:04"},{"_id":"9371","normalized_imdb_id":9412268,"title":"Furie","year":2019,"rating":3,"dubious":false,"date":"2020-12-14 10:47"},{"_id":"9146","normalized_imdb_id":2066051,"title":"Rocketman","year":2019,"rating":3,"dubious":true,"date":"2020-05-26 05:38"},{"_id":"9149","normalized_imdb_id":5691670,"title":"Under The Silver Lake","year":2019,"rating":0,"dubious":false,"date":"2020-06-01 06:24"},{"_id":"9159","normalized_imdb_id":6803046,"title":"Vast of Night, The","year":2019,"rating":3,"dubious":false,"date":"2020-06-07 01:22"},{"_id":"9168","normalized_imdb_id":2139881,"title":"Long Shot","year":2019,"rating":3,"dubious":false,"date":"2020-06-13 10:28"},{"_id":"9189","normalized_imdb_id":6902676,"title":"Guns Akimbo","year":2019,"rating":1,"dubious":false,"date":"2020-07-01 18:32"},{"_id":"9198","normalized_imdb_id":783640,"title":"Last Full Measure, The","year":2019,"rating":1,"dubious":false,"date":"2020-07-10 17:59"},{"_id":"9204","normalized_imdb_id":8206668,"title":"Bad Education","year":2019,"rating":3,"dubious":false,"date":"2020-07-15 16:42"},{"_id":"9212","normalized_imdb_id":8368406,"title":"Vivarium","year":2019,"rating":3,"dubious":false,"date":"2020-07-25 14:55"},{"_id":"9214","normalized_imdb_id":8856090,"title":"Before You Know It","year":2019,"rating":3,"dubious":false,"date":"2020-07-26 15:04"},{"_id":"9218","normalized_imdb_id":7902124,"title":"Ground Beneath My Feet, The","year":2019,"rating":3,"dubious":false,"date":"2020-08-01 16:24"},{"_id":"9219","normalized_imdb_id":6511932,"title":"Beach Bum, The","year":2019,"rating":1,"dubious":false,"date":"2020-08-02 23:41"},{"_id":"9222","normalized_imdb_id":9217514,"title":"Une Paire de Jumelles","year":2019,"rating":3,"dubious":false,"date":"2020-08-04 10:07"},{"_id":"9232","normalized_imdb_id":8230872,"title":"Body Remembers When The World Broke Open, The","year":2019,"rating":3,"dubious":false,"date":"2020-08-10 07:38"},{"_id":"9244","normalized_imdb_id":9016016,"title":"Saint Frances","year":2019,"rating":3,"dubious":false,"date":"2020-08-17 00:23"},{"_id":"9249","normalized_imdb_id":8019694,"title":"Frankie","year":2019,"rating":3,"dubious":false,"date":"2020-08-20 23:48"},{"_id":"9250","normalized_imdb_id":8932338,"title":"La Peor de Mis Bodas 2","year":2019,"rating":3,"dubious":false,"date":"2020-08-25 22:57"},{"_id":"9258","normalized_imdb_id":7555072,"title":"Top End Wedding","year":2019,"rating":3,"dubious":false,"date":"2020-09-03 07:54"},{"_id":"9263","normalized_imdb_id":9486226,"title":"hockey girls, The","year":2019,"rating":3,"dubious":false,"date":"2020-09-04 18:27"},{"_id":"9264","normalized_imdb_id":2076298,"title":"Ip Man 4: The Finale","year":2019,"rating":3,"dubious":false,"date":"2020-09-04 21:35"},{"_id":"9273","normalized_imdb_id":8399664,"title":"Babyteeth","year":2019,"rating":3,"dubious":false,"date":"2020-09-15 01:41"},{"_id":"9278","normalized_imdb_id":8758086,"title":"Mercy Black","year":2019,"rating":3,"dubious":false,"date":"2020-09-22 03:53"},{"_id":"9279","normalized_imdb_id":1620981,"title":"Addams Family, The","year":2019,"rating":3,"dubious":false,"date":"2020-09-22 23:37"},{"_id":"9302","normalized_imdb_id":10867768,"title":"A Dark, Dark Man","year":2019,"rating":1,"dubious":false,"date":"2020-10-09 15:30"},{"_id":"9306","normalized_imdb_id":10521814,"title":"K-12","year":2019,"rating":3,"dubious":false,"date":"2020-10-12 20:58"},{"_id":"9309","normalized_imdb_id":8816194,"title":"Come to Daddy","year":2019,"rating":1,"dubious":false,"date":"2020-10-14 01:26"},{"_id":"9316","normalized_imdb_id":10734928,"title":"Legend of Hei (Luo Xiao Hei zhan ji), The","year":2019,"rating":0,"dubious":false,"date":"2020-10-28 01:20"},{"_id":"9325","normalized_imdb_id":8949056,"title":"Yes, God, Yes","year":2019,"rating":3,"dubious":false,"date":"2020-11-11 14:53"},{"_id":"9337","normalized_imdb_id":5822564,"title":"Kitchen, The","year":2019,"rating":3,"dubious":false,"date":"2020-11-21 22:20"},{"_id":"9344","normalized_imdb_id":6428676,"title":"Wonder Park","year":2019,"rating":3,"dubious":false,"date":"2020-11-28 14:04"},{"_id":"9348","normalized_imdb_id":8712750,"title":"A.M.I.","year":2019,"rating":3,"dubious":false,"date":"2020-12-03 02:50"},{"_id":"9361","normalized_imdb_id":9201720,"title":"A New Christmas","year":2019,"rating":1,"dubious":false,"date":"2020-12-09 04:25"},{"_id":"9399","normalized_imdb_id":3513548,"title":"Richard Jewell","year":2019,"rating":3,"dubious":false,"date":"2020-12-20 23:36"},{"_id":"9409","normalized_imdb_id":11107074,"title":"My Hero Academia: Heroes Rising","year":2019,"rating":3,"dubious":false,"date":"2020-12-27 21:00"},{"_id":"9414","normalized_imdb_id":7594584,"title":"Maria","year":2019,"rating":3,"dubious":false,"date":"2020-12-27 23:44"},{"_id":"9427","normalized_imdb_id":7329656,"title":"47 Meters Down: Uncaged","year":2019,"rating":3,"dubious":false,"date":"2021-01-17 12:13"},{"_id":"9448","normalized_imdb_id":5363618,"title":"Sound of Metal","year":2019,"rating":1,"dubious":false,"date":"2021-01-21 09:10"},{"_id":"9460","normalized_imdb_id":9000224,"title":"Assistant, The","year":2019,"rating":3,"dubious":false,"date":"2021-01-31 09:22"},{"_id":"9464","normalized_imdb_id":4364194,"title":"Peanut Butter Falcon, The","year":2019,"rating":1,"dubious":false,"date":"2021-02-02 22:36"},{"_id":"9477","normalized_imdb_id":6439020,"title":"Personal History of David Copperfield, The","year":2019,"rating":3,"dubious":false,"date":"2021-02-14 19:11"},{"_id":"9479","normalized_imdb_id":9602378,"title":"Good Kisser","year":2019,"rating":3,"dubious":false,"date":"2021-02-16 18:33"},{"_id":"9494","normalized_imdb_id":4693588,"title":"Fahim","year":2019,"rating":1,"dubious":false,"date":"2021-02-25 07:11"},{"_id":"9507","normalized_imdb_id":11334312,"title":"Final Level: Escaping Rancala, The","year":2019,"rating":3,"dubious":false,"date":"2021-03-07 17:27"},{"_id":"9497","normalized_imdb_id":8110640,"title":"In the Shadow of the Moon","year":2019,"rating":1,"dubious":false,"date":"2021-02-27 22:50"},{"_id":"9502","normalized_imdb_id":7985692,"title":"After the Wedding","year":2019,"rating":3,"dubious":false,"date":"2021-03-03 18:22"},{"_id":"9512","normalized_imdb_id":11621206,"title":"Quebramar","year":2019,"rating":3,"dubious":false,"date":"2021-03-10 19:58"},{"_id":"9573","normalized_imdb_id":9507276,"title":"Saga of Tanya the Evil - The Movie","year":2019,"rating":3,"dubious":true,"date":"2021-03-18 17:02"},{"_id":"9592","normalized_imdb_id":2283336,"title":"Men in Black: International","year":2019,"rating":3,"dubious":false,"date":"2021-03-29 00:43"},{"_id":"9624","normalized_imdb_id":2386490,"title":"How to Train Your Dragon: The Hidden World","year":2019,"rating":3,"dubious":false,"date":"2021-04-04 22:38"},{"_id":"9637","normalized_imdb_id":6259380,"title":"Code 8","year":2019,"rating":1,"dubious":false,"date":"2021-04-10 01:09"},{"_id":"9660","normalized_imdb_id":9522080,"title":"Papicha","year":2019,"rating":3,"dubious":false,"date":"2021-04-19 18:16"},{"_id":"9677","normalized_imdb_id":10011336,"title":"Lucky Grandma","year":2019,"rating":3,"dubious":false,"date":"2021-04-24 17:41"},{"_id":"9711","normalized_imdb_id":8856470,"title":"Pokemon: Mewtwo Strikes Back - Evolution","year":2019,"rating":3,"dubious":false,"date":"2021-04-27 21:17"},{"_id":"9765","normalized_imdb_id":7698468,"title":"A Call to Spy","year":2019,"rating":3,"dubious":false,"date":"2021-04-30 23:14"},{"_id":"9788","normalized_imdb_id":6294226,"title":"Stray","year":2019,"rating":3,"dubious":false,"date":"2021-05-05 08:43"},{"_id":"9862","normalized_imdb_id":1860242,"title":"Highwaymen, The","year":2019,"rating":1,"dubious":false,"date":"2021-06-01 07:09"},{"_id":"9875","normalized_imdb_id":6920356,"title":"Souvenir, The","year":2019,"rating":3,"dubious":false,"date":"2021-06-06 22:28"},{"_id":"9970","normalized_imdb_id":8892756,"title":"Performaniax","year":2019,"rating":3,"dubious":false,"date":"2021-07-15 15:18"},{"_id":"9988","normalized_imdb_id":7715070,"title":"Horrible Histories: The Movie - Rotten Romans","year":2019,"rating":3,"dubious":false,"date":"2021-07-29 10:28"},{"_id":"10000","normalized_imdb_id":6189022,"title":"Angel Has Fallen","year":2019,"rating":1,"dubious":false,"date":"2021-08-06 20:37"},{"_id":"10003","normalized_imdb_id":11748354,"title":"Les Parfums","year":2019,"rating":3,"dubious":false,"date":"2021-08-08 12:05"},{"_id":"10007","normalized_imdb_id":7280218,"title":"Carmilla","year":2019,"rating":3,"dubious":false,"date":"2021-08-09 12:11"},{"_id":"10016","normalized_imdb_id":6197070,"title":"Blood Machines","year":2019,"rating":3,"dubious":true,"date":"2021-08-23 08:09"},{"_id":"10025","normalized_imdb_id":15324860,"title":"Katharine Hepburn","year":2019,"rating":3,"dubious":false,"date":"2021-08-29 19:36"},{"_id":"10061","normalized_imdb_id":11028798,"title":"The Good Place The Funeral to End All Funerals","year":2019,"rating":3,"dubious":false,"date":"2021-09-18 06:29"},{"_id":"10073","normalized_imdb_id":11052808,"title":"Kim Ji-young: Born 198","year":2019,"rating":3,"dubious":false,"date":"2021-10-02 18:39"},{"_id":"10080","normalized_imdb_id":9288776,"title":"White Snake","year":2019,"rating":3,"dubious":false,"date":"2021-10-10 22:43"},{"_id":"10096","normalized_imdb_id":5360232,"title":"Cat and the Moon, The","year":2019,"rating":1,"dubious":false,"date":"2021-10-22 04:36"},{"_id":"10143","normalized_imdb_id":7825208,"title":"Marighella","year":2019,"rating":3,"dubious":false,"date":"2021-11-27 16:11"},{"_id":"10154","normalized_imdb_id":6394270,"title":"Bombshell","year":2019,"rating":3,"dubious":false,"date":"2021-12-07 18:54"},{"_id":"9508","normalized_imdb_id":2948372,"title":"Soul","year":2020,"rating":3,"dubious":false,"date":"2021-03-07 20:59"},{"_id":"8859","normalized_imdb_id":8461042,"title":"Marijuana Conspiracy , The","year":2020,"rating":3,"dubious":false,"date":"2019-09-24 19:53"},{"_id":"8964","normalized_imdb_id":7545266,"title":"Like a Boss","year":2020,"rating":3,"dubious":false,"date":"2020-01-15 06:50"},{"_id":"8965","normalized_imdb_id":8151874,"title":"Honey Boy","year":2020,"rating":0,"dubious":false,"date":"2020-01-17 15:08"},{"_id":"8994","normalized_imdb_id":7134096,"title":"Rhythm Section, The","year":2020,"rating":2,"dubious":false,"date":"2020-01-29 19:51"},{"_id":"9003","normalized_imdb_id":7510346,"title":"Turning, The","year":2020,"rating":3,"dubious":false,"date":"2020-02-06 16:50"},{"_id":"9008","normalized_imdb_id":7713068,"title":"Birds of Prey","year":2020,"rating":3,"dubious":false,"date":"2020-02-09 09:17"},{"_id":"9009","normalized_imdb_id":9737798,"title":"Platzspitzbaby","year":2020,"rating":3,"dubious":false,"date":"2020-02-09 12:42"},{"_id":"9013","normalized_imdb_id":11388406,"title":"Horse Girl","year":2020,"rating":3,"dubious":false,"date":"2020-02-16 05:41"},{"_id":"9014","normalized_imdb_id":3794354,"title":"Sonic the Hedgehog","year":2020,"rating":3,"dubious":false,"date":"2020-02-17 15:08"},{"_id":"9017","normalized_imdb_id":10633456,"title":"Minari","year":2020,"rating":3,"dubious":false,"date":"2020-02-21 04:32"},{"_id":"9021","normalized_imdb_id":10752062,"title":"Living Aims","year":2020,"rating":2,"dubious":false,"date":"2020-02-28 05:41"},{"_id":"9031","normalized_imdb_id":11895476,"title":"Veil, The","year":2020,"rating":3,"dubious":false,"date":"2020-03-09 05:52"},{"_id":"9034","normalized_imdb_id":7146812,"title":"Onward","year":2020,"rating":3,"dubious":false,"date":"2020-03-10 14:18"},{"_id":"9036","normalized_imdb_id":3907584,"title":"All the Bright Places","year":2020,"rating":3,"dubious":false,"date":"2020-03-11 19:41"},{"_id":"9037","normalized_imdb_id":3111426,"title":"Lost Girls","year":2020,"rating":3,"dubious":false,"date":"2020-03-15 20:03"},{"_id":"9039","normalized_imdb_id":9766166,"title":"Zombies 2","year":2020,"rating":3,"dubious":false,"date":"2020-03-16 21:00"},{"_id":"9045","normalized_imdb_id":1051906,"title":"Invisible Man, The","year":2020,"rating":3,"dubious":false,"date":"2020-03-22 00:32"},{"_id":"9058","normalized_imdb_id":9214832,"title":"Emma.","year":2020,"rating":3,"dubious":false,"date":"2020-03-29 18:01"},{"_id":"9071","normalized_imdb_id":1502397,"title":"Bad Boys For Life","year":2020,"rating":2,"dubious":false,"date":"2020-04-08 16:58"},{"_id":"9079","normalized_imdb_id":8299768,"title":"Blow the Man Down","year":2020,"rating":3,"dubious":false,"date":"2020-04-13 23:42"},{"_id":"9085","normalized_imdb_id":4858674,"title":"Stargirl","year":2020,"rating":3,"dubious":false,"date":"2020-04-19 05:17"},{"_id":"9087","normalized_imdb_id":6587640,"title":"Trolls World Tour","year":2020,"rating":3,"dubious":false,"date":"2020-04-21 23:45"},{"_id":"9096","normalized_imdb_id":8242084,"title":"My Spy","year":2020,"rating":3,"dubious":false,"date":"2020-04-28 04:37"},{"_id":"9118","normalized_imdb_id":8936646,"title":"Extraction","year":2020,"rating":3,"dubious":false,"date":"2020-05-05 23:49"},{"_id":"9126","normalized_imdb_id":9683478,"title":"Half of It, The","year":2020,"rating":3,"dubious":false,"date":"2020-05-10 17:57"},{"_id":"9135","normalized_imdb_id":12261880,"title":"Methodists, The","year":2020,"rating":3,"dubious":false,"date":"2020-05-13 12:17"},{"_id":"9136","normalized_imdb_id":10816484,"title":"18 Presents","year":2020,"rating":3,"dubious":false,"date":"2020-05-14 08:33"},{"_id":"9138","normalized_imdb_id":3152592,"title":"Scoob","year":2020,"rating":3,"dubious":false,"date":"2020-05-18 05:00"},{"_id":"9164","normalized_imdb_id":8430598,"title":"Shirley","year":2020,"rating":3,"dubious":false,"date":"2020-06-08 20:51"},{"_id":"9165","normalized_imdb_id":1552211,"title":"last days of american crime, The","year":2020,"rating":0,"dubious":false,"date":"2020-06-10 12:17"},{"_id":"9172","normalized_imdb_id":9308382,"title":"High Note, The","year":2020,"rating":3,"dubious":false,"date":"2020-06-17 06:30"},{"_id":"9179","normalized_imdb_id":8244784,"title":"Hunt, The","year":2020,"rating":3,"dubious":false,"date":"2020-06-22 10:42"},{"_id":"9195","normalized_imdb_id":7772582,"title":"Never Rarely Sometimes Always","year":2020,"rating":3,"dubious":false,"date":"2020-07-08 19:59"},{"_id":"9197","normalized_imdb_id":9484998,"title":"Palm Springs","year":2020,"rating":3,"dubious":false,"date":"2020-07-10 16:22"},{"_id":"9199","normalized_imdb_id":7556122,"title":"Old Guard, The","year":2020,"rating":3,"dubious":false,"date":"2020-07-10 18:01"},{"_id":"9200","normalized_imdb_id":6048922,"title":"Greyhound","year":2020,"rating":0,"dubious":false,"date":"2020-07-12 04:00"},{"_id":"9201","normalized_imdb_id":10426916,"title":"Tout simplement noir","year":2020,"rating":1,"dubious":false,"date":"2020-07-13 08:31"},{"_id":"9208","normalized_imdb_id":3089630,"title":"Artemis Fowl","year":2020,"rating":3,"dubious":false,"date":"2020-07-20 00:33"},{"_id":"9224","normalized_imdb_id":6834916,"title":"Legacy of Lies","year":2020,"rating":3,"dubious":false,"date":"2020-08-05 16:25"},{"_id":"9225","normalized_imdb_id":8503618,"title":"Hamilton","year":2020,"rating":3,"dubious":false,"date":"2020-08-06 00:09"},{"_id":"9233","normalized_imdb_id":5774060,"title":"Underwater","year":2020,"rating":3,"dubious":false,"date":"2020-08-12 05:39"},{"_id":"9234","normalized_imdb_id":10276470,"title":"Work It","year":2020,"rating":3,"dubious":false,"date":"2020-08-13 10:38"},{"_id":"9252","normalized_imdb_id":6723592,"title":"Tenet","year":2020,"rating":1,"dubious":false,"date":"2020-08-30 14:29"},{"_id":"9255","normalized_imdb_id":1086064,"title":"Bill & Ted Face the Music","year":2020,"rating":3,"dubious":false,"date":"2020-09-01 04:26"},{"_id":"9265","normalized_imdb_id":4566758,"title":"Mulan","year":2020,"rating":3,"dubious":false,"date":"2020-09-05 06:23"},{"_id":"9367","normalized_imdb_id":5198068,"title":"Wolfwalkers","year":2020,"rating":3,"dubious":true,"date":"2020-12-12 01:31"},{"_id":"9271","normalized_imdb_id":1817232,"title":"Phineas and Ferb the Movie: Candace Against the Universe","year":2020,"rating":3,"dubious":false,"date":"2020-09-14 00:07"},{"_id":"9281","normalized_imdb_id":11905962,"title":"Sputnik","year":2020,"rating":0,"dubious":false,"date":"2020-09-24 06:10"},{"_id":"9283","normalized_imdb_id":7846844,"title":"Enola Holmes","year":2020,"rating":3,"dubious":false,"date":"2020-09-26 06:46"},{"_id":"9284","normalized_imdb_id":4682266,"title":"New Mutants, The","year":2020,"rating":3,"dubious":false,"date":"2020-09-26 14:35"},{"_id":"9285","normalized_imdb_id":9686708,"title":"King of Staten Island, The","year":2020,"rating":3,"dubious":false,"date":"2020-09-27 14:58"},{"_id":"9921","normalized_imdb_id":10059518,"title":"Unhinged","year":2020,"rating":3,"dubious":false,"date":"2021-07-01 11:15"},{"_id":"9295","normalized_imdb_id":8580274,"title":"Eurovision Song Contest: The Story of Fire Saga","year":2020,"rating":3,"dubious":true,"date":"2020-10-07 21:36"},{"_id":"9305","normalized_imdb_id":10288566,"title":"Druk","year":2020,"rating":1,"dubious":false,"date":"2020-10-12 16:19"},{"_id":"9310","normalized_imdb_id":6841122,"title":"Summerland","year":2020,"rating":1,"dubious":false,"date":"2020-10-16 19:26"},{"_id":"9313","normalized_imdb_id":1070874,"title":"Trial of the Chicago 7, The","year":2020,"rating":1,"dubious":false,"date":"2020-10-22 20:58"},{"_id":"9317","normalized_imdb_id":4798836,"title":"Bad Hair","year":2020,"rating":3,"dubious":false,"date":"2020-10-28 16:34"},{"_id":"9318","normalized_imdb_id":10126434,"title":"Scare Me","year":2020,"rating":1,"dubious":false,"date":"2020-11-02 00:49"},{"_id":"9320","normalized_imdb_id":7488208,"title":"Over the Moon","year":2020,"rating":3,"dubious":false,"date":"2020-11-04 15:51"},{"_id":"9335","normalized_imdb_id":12841698,"title":"Stunt Double, The","year":2020,"rating":1,"dubious":false,"date":"2020-11-20 10:25"},{"_id":"9362","normalized_imdb_id":10530176,"title":"Call, The","year":2020,"rating":3,"dubious":false,"date":"2020-12-10 10:59"},{"_id":"9341","normalized_imdb_id":10919380,"title":"Freaky","year":2020,"rating":3,"dubious":false,"date":"2020-11-28 01:54"},{"_id":"9342","normalized_imdb_id":9624766,"title":"Jiu Jitsu","year":2020,"rating":1,"dubious":false,"date":"2020-11-28 04:13"},{"_id":"9345","normalized_imdb_id":7212754,"title":"Ludo","year":2020,"rating":3,"dubious":true,"date":"2020-11-29 00:26"},{"_id":"9347","normalized_imdb_id":805647,"title":"Witches, The","year":2020,"rating":2,"dubious":true,"date":"2020-11-30 16:34"},{"_id":"9353","normalized_imdb_id":11769162,"title":"Santana","year":2020,"rating":1,"dubious":false,"date":"2020-12-04 23:10"},{"_id":"9354","normalized_imdb_id":11681250,"title":"Godmothered","year":2020,"rating":3,"dubious":false,"date":"2020-12-05 01:59"},{"_id":"9355","normalized_imdb_id":13017992,"title":"Mariah Carey's Magical Christmas Special","year":2020,"rating":3,"dubious":false,"date":"2020-12-05 11:08"},{"_id":"9358","normalized_imdb_id":983946,"title":"Fantasy Island","year":2020,"rating":3,"dubious":false,"date":"2020-12-06 01:03"},{"_id":"9360","normalized_imdb_id":12749596,"title":"Host","year":2020,"rating":3,"dubious":false,"date":"2020-12-08 01:03"},{"_id":"9391","normalized_imdb_id":9072352,"title":"Relic","year":2020,"rating":3,"dubious":false,"date":"2020-12-15 18:09"},{"_id":"9393","normalized_imdb_id":10161886,"title":"Prom, The","year":2020,"rating":3,"dubious":false,"date":"2020-12-16 18:37"},{"_id":"9395","normalized_imdb_id":8522006,"title":"Happiest Season","year":2020,"rating":3,"dubious":false,"date":"2020-12-17 20:27"},{"_id":"9397","normalized_imdb_id":9086228,"title":"Gretel & Hansel","year":2020,"rating":3,"dubious":false,"date":"2020-12-19 07:30"},{"_id":"9402","normalized_imdb_id":2850386,"title":"Croods: A New Age, The","year":2020,"rating":3,"dubious":false,"date":"2020-12-22 20:45"},{"_id":"9403","normalized_imdb_id":10539608,"title":"Midnight Sky, The","year":2020,"rating":3,"dubious":false,"date":"2020-12-23 22:35"},{"_id":"9405","normalized_imdb_id":7126948,"title":"Wonder Woman 1984","year":2020,"rating":3,"dubious":false,"date":"2020-12-26 02:04"},{"_id":"9413","normalized_imdb_id":13143964,"title":"Borat Subsequent Moviefilm","year":2020,"rating":3,"dubious":true,"date":"2020-12-27 23:16"},{"_id":"9421","normalized_imdb_id":7178640,"title":"Superintelligence","year":2020,"rating":3,"dubious":false,"date":"2020-12-30 23:55"},{"_id":"9452","normalized_imdb_id":9902160,"title":"Herself","year":2020,"rating":3,"dubious":false,"date":"2021-01-23 12:38"},{"_id":"9449","normalized_imdb_id":6878306,"title":"News of the World","year":2020,"rating":3,"dubious":false,"date":"2021-01-21 23:17"},{"_id":"9444","normalized_imdb_id":11456054,"title":"Run Hide Fight","year":2020,"rating":3,"dubious":false,"date":"2021-01-21 01:50"},{"_id":"9438","normalized_imdb_id":11161474,"title":"Pieces of a Woman","year":2020,"rating":3,"dubious":false,"date":"2021-01-18 19:55"},{"_id":"9437","normalized_imdb_id":10243992,"title":"I'm Your Woman","year":2020,"rating":3,"dubious":false,"date":"2021-01-18 19:52"},{"_id":"9456","normalized_imdb_id":10556022,"title":"Unpregnant","year":2020,"rating":3,"dubious":false,"date":"2021-01-28 18:32"},{"_id":"9458","normalized_imdb_id":11284280,"title":"Cadaver","year":2020,"rating":3,"dubious":false,"date":"2021-01-30 04:32"},{"_id":"9461","normalized_imdb_id":8850222,"title":"Train to Busan Presents: Peninsula","year":2020,"rating":3,"dubious":false,"date":"2021-02-01 19:53"},{"_id":"9467","normalized_imdb_id":10618286,"title":"Mank","year":2020,"rating":1,"dubious":false,"date":"2021-02-04 05:39"},{"_id":"9470","normalized_imdb_id":9820556,"title":"Breach","year":2020,"rating":1,"dubious":false,"date":"2021-02-06 06:45"},{"_id":"9474","normalized_imdb_id":8633478,"title":"Run","year":2020,"rating":3,"dubious":true,"date":"2021-02-11 22:24"},{"_id":"9475","normalized_imdb_id":10514222,"title":"Ma Rainey's Black Bottom","year":2020,"rating":3,"dubious":false,"date":"2021-02-12 03:36"},{"_id":"9482","normalized_imdb_id":9770150,"title":"Nomadland","year":2020,"rating":3,"dubious":false,"date":"2021-02-18 13:00"},{"_id":"9483","normalized_imdb_id":9620292,"title":"Promising Young Woman","year":2020,"rating":3,"dubious":true,"date":"2021-02-18 21:04"},{"_id":"9490","normalized_imdb_id":7983894,"title":"Ammonite","year":2020,"rating":3,"dubious":false,"date":"2021-02-22 12:11"},{"_id":"9491","normalized_imdb_id":9893250,"title":"I Care a Lot","year":2020,"rating":3,"dubious":true,"date":"2021-02-23 18:45"},{"_id":"9492","normalized_imdb_id":4257940,"title":"Lost Husband, The","year":2020,"rating":3,"dubious":false,"date":"2021-02-24 01:18"},{"_id":"9493","normalized_imdb_id":7703924,"title":"Infamous","year":2020,"rating":3,"dubious":false,"date":"2021-02-25 02:37"},{"_id":"9496","normalized_imdb_id":6475714,"title":"Monster Hunter","year":2020,"rating":3,"dubious":false,"date":"2021-02-27 03:15"},{"_id":"9499","normalized_imdb_id":6317656,"title":"Penguin Bloom","year":2020,"rating":3,"dubious":false,"date":"2021-02-28 13:27"},{"_id":"9543","normalized_imdb_id":11946300,"title":"Deep Blue Sea 3","year":2020,"rating":1,"dubious":false,"date":"2021-03-14 17:48"},{"_id":"9606","normalized_imdb_id":8368512,"title":"Courier, The","year":2020,"rating":3,"dubious":true,"date":"2021-04-03 02:56"},{"_id":"9608","normalized_imdb_id":10213380,"title":"Malmkrog","year":2020,"rating":3,"dubious":false,"date":"2021-04-03 09:02"},{"_id":"9640","normalized_imdb_id":9741310,"title":"Slaxx","year":2020,"rating":3,"dubious":false,"date":"2021-04-10 20:09"},{"_id":"9658","normalized_imdb_id":10441958,"title":"How to Be a Good Wife","year":2020,"rating":3,"dubious":false,"date":"2021-04-19 06:30"},{"_id":"9661","normalized_imdb_id":2222042,"title":"Love and Monsters","year":2020,"rating":2,"dubious":false,"date":"2021-04-19 23:51"},{"_id":"9669","normalized_imdb_id":13079086,"title":"From Stress to Happiness","year":2020,"rating":1,"dubious":false,"date":"2021-04-22 00:08"},{"_id":"9716","normalized_imdb_id":9148706,"title":"Misbehaviour","year":2020,"rating":3,"dubious":true,"date":"2021-04-29 05:46"},{"_id":"9717","normalized_imdb_id":10457128,"title":"Summer of 85","year":2020,"rating":1,"dubious":false,"date":"2021-04-29 06:26"},{"_id":"9786","normalized_imdb_id":12198524,"title":"Retreat, The","year":2020,"rating":0,"dubious":false,"date":"2021-05-02 23:43"},{"_id":"9789","normalized_imdb_id":11771622,"title":"Breath","year":2020,"rating":0,"dubious":false,"date":"2021-05-05 12:38"},{"_id":"9835","normalized_imdb_id":9691136,"title":"Shadow in the Cloud","year":2020,"rating":0,"dubious":false,"date":"2021-05-16 13:40"},{"_id":"9839","normalized_imdb_id":9866072,"title":"Holidate","year":2020,"rating":3,"dubious":false,"date":"2021-05-18 12:41"},{"_id":"9893","normalized_imdb_id":2222052,"title":"My Salinger Year","year":2020,"rating":3,"dubious":false,"date":"2021-06-15 00:04"},{"_id":"10040","normalized_imdb_id":6074542,"title":"Friend of the World","year":2020,"rating":3,"dubious":false,"date":"2021-09-07 19:19"},{"_id":"10038","normalized_imdb_id":9765226,"title":"one night in san diego","year":2020,"rating":2,"dubious":false,"date":"2021-09-06 20:11"},{"_id":"9925","normalized_imdb_id":10612922,"title":"One Night in Miami...","year":2020,"rating":2,"dubious":false,"date":"2021-07-04 12:38"},{"_id":"9915","normalized_imdb_id":9059760,"title":"Normal People","year":2020,"rating":3,"dubious":true,"date":"2021-06-23 00:32"},{"_id":"9918","normalized_imdb_id":8332922,"title":"A Quiet Place Part II","year":2020,"rating":3,"dubious":true,"date":"2021-06-27 19:46"},{"_id":"9972","normalized_imdb_id":9354842,"title":"To All the Boys: P.S. I Still Love You","year":2020,"rating":3,"dubious":false,"date":"2021-07-16 01:05"},{"_id":"9987","normalized_imdb_id":9224288,"title":"Mainstream","year":2020,"rating":3,"dubious":false,"date":"2021-07-29 04:42"},{"_id":"10005","normalized_imdb_id":11320192,"title":"Evil Next Door, The","year":2020,"rating":3,"dubious":true,"date":"2021-08-09 12:00"},{"_id":"10010","normalized_imdb_id":9900092,"title":"Motherland: Fort Salem","year":2020,"rating":3,"dubious":false,"date":"2021-08-14 21:52"},{"_id":"10028","normalized_imdb_id":9059704,"title":"An American Pickle","year":2020,"rating":1,"dubious":false,"date":"2021-08-30 03:01"},{"_id":"10063","normalized_imdb_id":13266132,"title":"You Will Never Be Back","year":2020,"rating":3,"dubious":false,"date":"2021-09-19 21:36"},{"_id":"10064","normalized_imdb_id":13152234,"title":"Iskioma","year":2020,"rating":0,"dubious":false,"date":"2021-09-20 02:23"},{"_id":"10066","normalized_imdb_id":11177804,"title":"Jiang Ziya: Legend of Deification","year":2020,"rating":2,"dubious":false,"date":"2021-09-22 02:29"},{"_id":"10070","normalized_imdb_id":7737786,"title":"Geenland","year":2020,"rating":3,"dubious":false,"date":"2021-09-30 19:14"},{"_id":"10072","normalized_imdb_id":4685762,"title":"Craft: Legacy, The","year":2020,"rating":3,"dubious":false,"date":"2021-10-02 18:33"},{"_id":"10127","normalized_imdb_id":9738716,"title":"world to come, The","year":2020,"rating":3,"dubious":false,"date":"2021-11-14 20:18"},{"_id":"10140","normalized_imdb_id":7939766,"title":"I'm Thinking of Ending Things","year":2020,"rating":0,"dubious":true,"date":"2021-11-24 13:54"},{"_id":"9962","normalized_imdb_id":9777666,"title":"Tomorrow War, The","year":2021,"rating":2,"dubious":false,"date":"2021-07-11 11:57"},{"_id":"9473","normalized_imdb_id":10332588,"title":"Finding 'Ohana","year":2021,"rating":3,"dubious":false,"date":"2021-02-09 16:26"},{"_id":"9498","normalized_imdb_id":5144174,"title":"Dry, The","year":2021,"rating":3,"dubious":true,"date":"2021-02-28 13:24"},{"_id":"9500","normalized_imdb_id":9286908,"title":"High Ground","year":2021,"rating":2,"dubious":true,"date":"2021-02-28 13:33"},{"_id":"9504","normalized_imdb_id":5109280,"title":"Raya and the Last Dragon","year":2021,"rating":3,"dubious":false,"date":"2021-03-06 11:57"},{"_id":"9505","normalized_imdb_id":10919362,"title":"Sweetheart","year":2021,"rating":3,"dubious":false,"date":"2021-03-06 16:10"},{"_id":"9513","normalized_imdb_id":9784798,"title":"Judas and The Black Messiah","year":2021,"rating":2,"dubious":false,"date":"2021-03-11 03:52"},{"_id":"9519","normalized_imdb_id":6802400,"title":"Coming 2 America","year":2021,"rating":3,"dubious":false,"date":"2021-03-13 16:59"},{"_id":"9526","normalized_imdb_id":6432466,"title":"Moxie","year":2021,"rating":3,"dubious":false,"date":"2021-03-14 13:47"},{"_id":"9571","normalized_imdb_id":9130508,"title":"Cherry","year":2021,"rating":0,"dubious":false,"date":"2021-03-18 05:52"},{"_id":"9574","normalized_imdb_id":11734264,"title":"Sentinelle","year":2021,"rating":3,"dubious":false,"date":"2021-03-19 14:26"},{"_id":"9575","normalized_imdb_id":12361974,"title":"Zack Snyder's Justice League","year":2021,"rating":3,"dubious":false,"date":"2021-03-19 18:19"},{"_id":"9599","normalized_imdb_id":8521718,"title":"United States vs. Billie Holiday, The","year":2021,"rating":3,"dubious":false,"date":"2021-03-29 08:31"},{"_id":"9604","normalized_imdb_id":8114980,"title":"Willy's Wonderland","year":2021,"rating":3,"dubious":false,"date":"2021-04-03 02:50"},{"_id":"9612","normalized_imdb_id":4761112,"title":"Mauritanian, The","year":2021,"rating":3,"dubious":true,"date":"2021-04-03 17:52"},{"_id":"9633","normalized_imdb_id":7888964,"title":"Nobody","year":2021,"rating":1,"dubious":false,"date":"2021-04-09 10:26"},{"_id":"9635","normalized_imdb_id":10121392,"title":"Thunder Force","year":2021,"rating":3,"dubious":false,"date":"2021-04-09 19:05"},{"_id":"9647","normalized_imdb_id":10483044,"title":"Cousins","year":2021,"rating":3,"dubious":false,"date":"2021-04-11 23:06"},{"_id":"9667","normalized_imdb_id":14091818,"title":"Ajeeb Daastaans","year":2021,"rating":3,"dubious":false,"date":"2021-04-21 22:26"},{"_id":"9670","normalized_imdb_id":9203694,"title":"Stowaway","year":2021,"rating":3,"dubious":false,"date":"2021-04-22 21:12"},{"_id":"9682","normalized_imdb_id":293429,"title":"Mortal Kombat","year":2021,"rating":2,"dubious":false,"date":"2021-04-26 20:46"},{"_id":"9713","normalized_imdb_id":3797512,"title":"Barb and Star Go to Vista Del Mar","year":2021,"rating":3,"dubious":false,"date":"2021-04-28 18:40"},{"_id":"9799","normalized_imdb_id":7979580,"title":"Mitchells vs the Machines, The","year":2021,"rating":3,"dubious":false,"date":"2021-05-08 23:08"},{"_id":"9801","normalized_imdb_id":14062858,"title":"Us Again","year":2021,"rating":0,"dubious":false,"date":"2021-05-09 23:44"},{"_id":"9817","normalized_imdb_id":10888594,"title":"Radhe","year":2021,"rating":0,"dubious":false,"date":"2021-05-13 09:37"},{"_id":"9827","normalized_imdb_id":6341832,"title":"Oxygen","year":2021,"rating":3,"dubious":false,"date":"2021-05-14 08:26"},{"_id":"9830","normalized_imdb_id":499097,"title":"Without Remorse","year":2021,"rating":1,"dubious":false,"date":"2021-05-15 22:33"},{"_id":"9953","normalized_imdb_id":3480822,"title":"Black Widow","year":2021,"rating":3,"dubious":false,"date":"2021-07-09 20:56"},{"_id":"9954","normalized_imdb_id":14544192,"title":"Inside","year":2021,"rating":0,"dubious":false,"date":"2021-07-10 20:05"},{"_id":"9861","normalized_imdb_id":3228774,"title":"Cruella","year":2021,"rating":3,"dubious":false,"date":"2021-06-01 03:16"},{"_id":"10050","normalized_imdb_id":12783454,"title":"Kissing Booth 3, The","year":2021,"rating":3,"dubious":false,"date":"2021-09-15 19:27"},{"_id":"10048","normalized_imdb_id":3811906,"title":"Malignant","year":2021,"rating":3,"dubious":false,"date":"2021-09-13 15:22"},{"_id":"10047","normalized_imdb_id":9115530,"title":"Eyes of Tammy Faye, The","year":2021,"rating":3,"dubious":false,"date":"2021-09-13 14:42"},{"_id":"9882","normalized_imdb_id":10342730,"title":"Spiral: From the Book of Saw","year":2021,"rating":3,"dubious":false,"date":"2021-06-09 03:13"},{"_id":"10046","normalized_imdb_id":11742798,"title":"Afterlife of the Party","year":2021,"rating":3,"dubious":false,"date":"2021-09-13 02:56"},{"_id":"10043","normalized_imdb_id":9844522,"title":"Escape Room: Tournament of Champions","year":2021,"rating":3,"dubious":false,"date":"2021-09-10 20:18"},{"_id":"9889","normalized_imdb_id":1321510,"title":"In the Heights","year":2021,"rating":3,"dubious":false,"date":"2021-06-12 07:06"},{"_id":"10037","normalized_imdb_id":9376612,"title":"Shang-Chi and the legend of the ten rings","year":2021,"rating":3,"dubious":true,"date":"2021-09-06 00:55"},{"_id":"10036","normalized_imdb_id":10155932,"title":"Cinderella","year":2021,"rating":3,"dubious":true,"date":"2021-09-05 18:51"},{"_id":"9924","normalized_imdb_id":6733874,"title":"America: The Motion Picture","year":2021,"rating":3,"dubious":true,"date":"2021-07-02 21:22"},{"_id":"9913","normalized_imdb_id":4733624,"title":"Fatherhood","year":2021,"rating":3,"dubious":false,"date":"2021-06-21 02:48"},{"_id":"9914","normalized_imdb_id":7069210,"title":"Conjuring: The Devil Made Me Do It, The","year":2021,"rating":1,"dubious":false,"date":"2021-06-22 16:27"},{"_id":"9917","normalized_imdb_id":5433138,"title":"F9 - The Fast Saga","year":2021,"rating":3,"dubious":false,"date":"2021-06-27 02:30"},{"_id":"9963","normalized_imdb_id":6566576,"title":"Fear Street: Part One - 1994","year":2021,"rating":3,"dubious":false,"date":"2021-07-13 02:39"},{"_id":"9964","normalized_imdb_id":12801262,"title":"Luca","year":2021,"rating":1,"dubious":true,"date":"2021-07-13 18:04"},{"_id":"9965","normalized_imdb_id":9701940,"title":"Fear Street: Part Two - 1978","year":2021,"rating":3,"dubious":false,"date":"2021-07-13 22:29"},{"_id":"9967","normalized_imdb_id":13172796,"title":"Plan B","year":2021,"rating":3,"dubious":false,"date":"2021-07-15 14:53"},{"_id":"9971","normalized_imdb_id":10676012,"title":"To All the Boys: Always and Forever","year":2021,"rating":3,"dubious":false,"date":"2021-07-16 00:58"},{"_id":"9973","normalized_imdb_id":3554046,"title":"Space Jam: A New Legacy","year":2021,"rating":3,"dubious":false,"date":"2021-07-17 02:29"},{"_id":"10033","normalized_imdb_id":10731768,"title":"Sweet Girl","year":2021,"rating":3,"dubious":false,"date":"2021-09-04 07:20"},{"_id":"9983","normalized_imdb_id":10954652,"title":"Old","year":2021,"rating":3,"dubious":false,"date":"2021-07-26 07:55"},{"_id":"9984","normalized_imdb_id":8385148,"title":"Hitman's Wife's Bodyguard, The","year":2021,"rating":0,"dubious":false,"date":"2021-07-26 09:01"},{"_id":"9996","normalized_imdb_id":870154,"title":"Jungle Cruise","year":2021,"rating":3,"dubious":true,"date":"2021-08-04 08:47"},{"_id":"9997","normalized_imdb_id":8368408,"title":"Gunpowder Milkshake","year":2021,"rating":3,"dubious":false,"date":"2021-08-05 21:42"},{"_id":"9998","normalized_imdb_id":11003218,"title":"Pig","year":2021,"rating":0,"dubious":false,"date":"2021-08-06 00:00"},{"_id":"9999","normalized_imdb_id":10355058,"title":"Secret Agent Dingledorf and His Trusty Dog Splat","year":2021,"rating":1,"dubious":false,"date":"2021-08-06 00:03"},{"_id":"10002","normalized_imdb_id":3215824,"title":"Those Who Wish Me Dead","year":2021,"rating":1,"dubious":false,"date":"2021-08-08 02:27"},{"_id":"10004","normalized_imdb_id":6334354,"title":"Suicide Squad, The","year":2021,"rating":3,"dubious":false,"date":"2021-08-08 22:16"},{"_id":"10006","normalized_imdb_id":9701942,"title":"Fear Street: Part Three - 1666","year":2021,"rating":3,"dubious":false,"date":"2021-08-09 12:06"},{"_id":"10008","normalized_imdb_id":10944760,"title":"Titane","year":2021,"rating":2,"dubious":false,"date":"2021-08-10 14:04"},{"_id":"10009","normalized_imdb_id":6902332,"title":"Marksman, The","year":2021,"rating":2,"dubious":false,"date":"2021-08-13 16:26"},{"_id":"10012","normalized_imdb_id":6264654,"title":"Free Guy","year":2021,"rating":1,"dubious":false,"date":"2021-08-16 08:23"},{"_id":"10014","normalized_imdb_id":14039582,"title":"Drive My Car","year":2021,"rating":3,"dubious":false,"date":"2021-08-22 21:33"},{"_id":"10015","normalized_imdb_id":9243804,"title":"Green Knight, The","year":2021,"rating":1,"dubious":false,"date":"2021-08-23 06:11"},{"_id":"10017","normalized_imdb_id":8231668,"title":"Good on Paper","year":2021,"rating":3,"dubious":false,"date":"2021-08-23 16:29"},{"_id":"10018","normalized_imdb_id":3272066,"title":"Reminiscence","year":2021,"rating":2,"dubious":false,"date":"2021-08-24 08:57"},{"_id":"10019","normalized_imdb_id":10307724,"title":"Madame Claude","year":2021,"rating":3,"dubious":false,"date":"2021-08-24 14:33"},{"_id":"10113","normalized_imdb_id":993840,"title":"Army of the Dead","year":2021,"rating":3,"dubious":false,"date":"2021-10-31 02:14"},{"_id":"10023","normalized_imdb_id":10868922,"title":"Influencer, The","year":2021,"rating":3,"dubious":false,"date":"2021-08-27 05:25"},{"_id":"10026","normalized_imdb_id":11525644,"title":"No Sudden Move","year":2021,"rating":3,"dubious":false,"date":"2021-08-29 21:38"},{"_id":"10027","normalized_imdb_id":10016180,"title":"Little Things, The","year":2021,"rating":3,"dubious":false,"date":"2021-08-30 01:29"},{"_id":"10051","normalized_imdb_id":14156262,"title":"La Luna, Tomasico y mi abuela","year":2021,"rating":0,"dubious":false,"date":"2021-09-16 00:11"},{"_id":"10052","normalized_imdb_id":1160419,"title":"Dune","year":2021,"rating":3,"dubious":false,"date":"2021-09-16 08:04"},{"_id":"10065","normalized_imdb_id":14843560,"title":"#Nofilter","year":2021,"rating":0,"dubious":false,"date":"2021-09-20 02:39"},{"_id":"10076","normalized_imdb_id":10366460,"title":"CODA","year":2021,"rating":3,"dubious":false,"date":"2021-10-04 21:49"},{"_id":"10075","normalized_imdb_id":2382320,"title":"No Time To Die","year":2021,"rating":2,"dubious":true,"date":"2021-10-04 08:29"},{"_id":"10074","normalized_imdb_id":8110232,"title":"Many Saints of Newark, The","year":2021,"rating":2,"dubious":false,"date":"2021-10-03 22:25"},{"_id":"10079","normalized_imdb_id":9421570,"title":"Guilty, The","year":2021,"rating":1,"dubious":false,"date":"2021-10-10 20:16"},{"_id":"10083","normalized_imdb_id":11804152,"title":"Till Death","year":2021,"rating":0,"dubious":false,"date":"2021-10-18 19:58"},{"_id":"10085","normalized_imdb_id":4244994,"title":"Last Duel, The","year":2021,"rating":3,"dubious":true,"date":"2021-10-20 02:30"},{"_id":"10123","normalized_imdb_id":10696784,"title":"Harder They Fall, The","year":2021,"rating":3,"dubious":false,"date":"2021-11-09 21:46"},{"_id":"10121","normalized_imdb_id":8893974,"title":"Passing","year":2021,"rating":3,"dubious":false,"date":"2021-11-08 09:11"},{"_id":"10092","normalized_imdb_id":7097896,"title":"Venom Let there be Carnage","year":2021,"rating":2,"dubious":false,"date":"2021-10-21 10:11"},{"_id":"10114","normalized_imdb_id":10763820,"title":"Night Teeth","year":2021,"rating":2,"dubious":false,"date":"2021-10-31 20:47"},{"_id":"10120","normalized_imdb_id":5492808,"title":"Borga","year":2021,"rating":3,"dubious":false,"date":"2021-11-06 01:00"},{"_id":"10118","normalized_imdb_id":9032400,"title":"Eternals","year":2021,"rating":3,"dubious":false,"date":"2021-11-05 11:18"},{"_id":"10106","normalized_imdb_id":2452150,"title":"Respect","year":2021,"rating":3,"dubious":false,"date":"2021-10-24 21:14"},{"_id":"10116","normalized_imdb_id":9639470,"title":"Last Night in Soho","year":2021,"rating":3,"dubious":false,"date":"2021-11-03 01:22"},{"_id":"10115","normalized_imdb_id":8847712,"title":"French Dispatch, The","year":2021,"rating":3,"dubious":false,"date":"2021-11-03 01:15"},{"_id":"10129","normalized_imdb_id":9100054,"title":"Lost Daughter, The","year":2021,"rating":3,"dubious":false,"date":"2021-11-16 08:41"},{"_id":"10132","normalized_imdb_id":15526040,"title":"Eye of the Beholder","year":2021,"rating":3,"dubious":false,"date":"2021-11-19 22:41"},{"_id":"10144","normalized_imdb_id":13204490,"title":"Petite Maman","year":2021,"rating":3,"dubious":false,"date":"2021-11-29 14:38"},{"_id":"10145","normalized_imdb_id":9735318,"title":"Beatles: Get Back, The","year":2021,"rating":3,"dubious":true,"date":"2021-11-30 15:06"},{"_id":"10147","normalized_imdb_id":8150814,"title":"There's Someone Inside Your House","year":2021,"rating":3,"dubious":false,"date":"2021-11-30 16:18"},{"_id":"10149","normalized_imdb_id":11392272,"title":"Retreat, The","year":2021,"rating":3,"dubious":false,"date":"2021-11-30 16:28"},{"_id":"10151","normalized_imdb_id":2953050,"title":"Encanto","year":2021,"rating":3,"dubious":false,"date":"2021-12-02 00:36"},{"_id":"10152","normalized_imdb_id":10752004,"title":"Love Hard","year":2021,"rating":2,"dubious":false,"date":"2021-12-05 19:22"},{"_id":"10157","normalized_imdb_id":3581652,"title":"West Side Story","year":2021,"rating":3,"dubious":false,"date":"2021-12-10 03:10"},{"_id":"10158","normalized_imdb_id":15943414,"title":"Every Time a Bell Rings","year":2021,"rating":3,"dubious":false,"date":"2021-12-10 08:03"},{"_id":"10161","normalized_imdb_id":14315756,"title":"Single All The Way","year":2021,"rating":3,"dubious":false,"date":"2021-12-15 10:10"},{"_id":"10785","normalized_imdb_id":25971180,"title":"Les choses simples","year":2023,"rating":1,"dubious":false,"date":"2023-02-28 10:43"},{"_id":"10779","normalized_imdb_id":14209916,"title":"Cocaine Bear","year":2023,"rating":3,"dubious":false,"date":"2023-02-24 23:06"},{"_id":"10762","normalized_imdb_id":53825,"title":"Flaming Star","year":1960,"rating":1,"dubious":false,"date":"2023-02-21 02:53"},{"_id":"10761","normalized_imdb_id":53848,"title":"G.I. Blues","year":1960,"rating":2,"dubious":false,"date":"2023-02-20 23:54"},{"_id":"10760","normalized_imdb_id":49452,"title":"Love Me Tender","year":1956,"rating":2,"dubious":false,"date":"2023-02-20 07:28"},{"_id":"10759","normalized_imdb_id":12610794,"title":"Blade of the 47 Ronin","year":2022,"rating":3,"dubious":true,"date":"2023-02-20 07:00"},{"_id":"10758","normalized_imdb_id":10344522,"title":"Four Good Days","year":2020,"rating":3,"dubious":false,"date":"2023-02-19 21:27"},{"_id":"10757","normalized_imdb_id":9021234,"title":"Legend of 5 Mile Cave, The","year":2019,"rating":1,"dubious":false,"date":"2023-02-18 09:10"},{"_id":"10756","normalized_imdb_id":10954600,"title":"Ant-Man and the Wasp: Quantumania","year":2023,"rating":3,"dubious":false,"date":"2023-02-18 08:07"},{"_id":"10754","normalized_imdb_id":10855768,"title":"Missing","year":2023,"rating":3,"dubious":false,"date":"2023-02-17 03:08"},{"_id":"10751","normalized_imdb_id":14966324,"title":"Reflect","year":2023,"rating":3,"dubious":false,"date":"2023-02-16 21:35"},{"_id":"10750","normalized_imdb_id":10298840,"title":"Strange World","year":2022,"rating":3,"dubious":false,"date":"2023-02-16 18:35"},{"_id":"10748","normalized_imdb_id":86542,"title":"Life Is a Bed of Roses","year":1983,"rating":3,"dubious":false,"date":"2023-02-14 22:56"},{"_id":"10747","normalized_imdb_id":94868,"title":"Chocolat","year":1988,"rating":3,"dubious":false,"date":"2023-02-14 22:47"},{"_id":"10746","normalized_imdb_id":86551,"title":"Confidentially Yours","year":1983,"rating":2,"dubious":false,"date":"2023-02-14 01:49"},{"_id":"10744","normalized_imdb_id":423849,"title":"Balto III: Wings of Change","year":2004,"rating":3,"dubious":false,"date":"2023-02-11 07:30"},{"_id":"10743","normalized_imdb_id":281634,"title":"Balto: Wolf Quest","year":2001,"rating":3,"dubious":false,"date":"2023-02-11 07:29"},{"_id":"10742","normalized_imdb_id":59563,"title":"Paradise, Hawaiian Style","year":1966,"rating":3,"dubious":false,"date":"2023-02-10 23:50"},{"_id":"10741","normalized_imdb_id":14300504,"title":"EL Agua","year":2022,"rating":3,"dubious":false,"date":"2023-02-09 13:28"},{"_id":"10740","normalized_imdb_id":9138170,"title":"Limbo","year":2020,"rating":0,"dubious":false,"date":"2023-02-09 06:29"},{"_id":"10739","normalized_imdb_id":93493,"title":"Mannequin","year":1987,"rating":1,"dubious":false,"date":"2023-02-08 20:16"},{"_id":"10738","normalized_imdb_id":69890,"title":"Cleopatra Jones","year":1973,"rating":3,"dubious":true,"date":"2023-02-08 20:08"},{"_id":"10737","normalized_imdb_id":10365998,"title":"Infinity Pool","year":2023,"rating":2,"dubious":false,"date":"2023-02-08 04:22"},{"_id":"10736","normalized_imdb_id":356634,"title":"Garfield","year":2004,"rating":0,"dubious":true,"date":"2023-02-08 03:44"},{"_id":"10735","normalized_imdb_id":5834262,"title":"Hotel Artemis","year":2018,"rating":3,"dubious":false,"date":"2023-02-06 23:15"},{"_id":"10734","normalized_imdb_id":13430858,"title":"What's Love Got to Do with It","year":2022,"rating":1,"dubious":false,"date":"2023-02-06 15:48"},{"_id":"10733","normalized_imdb_id":102526,"title":"New Jack City","year":1991,"rating":0,"dubious":true,"date":"2023-02-06 15:41"},{"_id":"10731","normalized_imdb_id":120089,"title":"Killing Secret, The","year":1997,"rating":3,"dubious":false,"date":"2023-02-05 09:05"},{"_id":"10730","normalized_imdb_id":10640346,"title":"Babylon","year":2022,"rating":3,"dubious":false,"date":"2023-02-04 00:26"},{"_id":"10729","normalized_imdb_id":1,"title":"Mr.","year":1967,"rating":0,"dubious":true,"date":"2023-02-02 02:43"},{"_id":"10728","normalized_imdb_id":12844910,"title":"Pathaan","year":2023,"rating":3,"dubious":false,"date":"2023-02-01 19:23"},{"_id":"10727","normalized_imdb_id":126774,"title":"Advocate's Devil, The","year":1997,"rating":2,"dubious":false,"date":"2023-01-31 15:15"},{"_id":"10726","normalized_imdb_id":8745676,"title":"the swimmers","year":2022,"rating":3,"dubious":false,"date":"2023-01-29 12:42"},{"_id":"10725","normalized_imdb_id":11212276,"title":"Sex Lives of College Girls, The","year":2021,"rating":3,"dubious":false,"date":"2023-01-29 12:01"},{"_id":"10724","normalized_imdb_id":69848,"title":"Carry on Girls","year":1973,"rating":3,"dubious":true,"date":"2023-01-28 10:05"},{"_id":"10720","normalized_imdb_id":15426294,"title":"Gone in the Night","year":2022,"rating":2,"dubious":false,"date":"2023-01-27 00:44"},{"_id":"10719","normalized_imdb_id":247840,"title":"El zoo d'en Pitus","year":2000,"rating":3,"dubious":true,"date":"2023-01-26 00:03"},{"_id":"10718","normalized_imdb_id":1572781,"title":"Disappearance of Haruhi Suzumiya, The","year":2010,"rating":3,"dubious":false,"date":"2023-01-24 05:52"},{"_id":"10717","normalized_imdb_id":3556230,"title":"Offline","year":2016,"rating":3,"dubious":false,"date":"2023-01-21 05:38"},{"_id":"10716","normalized_imdb_id":14428598,"title":"Qala","year":2022,"rating":3,"dubious":false,"date":"2023-01-19 02:50"},{"_id":"10715","normalized_imdb_id":112760,"title":"Cutthroat Island","year":1995,"rating":1,"dubious":false,"date":"2023-01-18 17:48"},{"_id":"10714","normalized_imdb_id":24601,"title":"Sons of the Desert","year":1933,"rating":3,"dubious":false,"date":"2023-01-16 22:02"},{"_id":"10711","normalized_imdb_id":22227936,"title":"Cici","year":2022,"rating":3,"dubious":false,"date":"2023-01-16 04:32"},{"_id":"10709","normalized_imdb_id":98067,"title":"Parenthood","year":1989,"rating":3,"dubious":false,"date":"2023-01-16 02:52"},{"_id":"10708","normalized_imdb_id":8108164,"title":"Ek Ladki Ko Dekha Toh Aisa Laga","year":2019,"rating":3,"dubious":false,"date":"2023-01-15 16:00"},{"_id":"10707","normalized_imdb_id":8178634,"title":"RRR","year":2022,"rating":2,"dubious":true,"date":"2023-01-15 08:52"},{"_id":"10706","normalized_imdb_id":2049430,"title":"Digimon Adventure","year":1999,"rating":0,"dubious":false,"date":"2023-01-15 04:52"},{"_id":"10705","normalized_imdb_id":23814,"title":"Bitter Tea of General Yen, The","year":1932,"rating":3,"dubious":false,"date":"2023-01-14 16:16"},{"_id":"10704","normalized_imdb_id":92493,"title":"Crocodile Dundee II","year":1988,"rating":2,"dubious":false,"date":"2023-01-13 18:53"},{"_id":"10702","normalized_imdb_id":24548,"title":"She Done Him Wrong","year":1933,"rating":2,"dubious":false,"date":"2023-01-12 21:32"},{"_id":"10701","normalized_imdb_id":11306932,"title":"Ruido (Noise)","year":2022,"rating":3,"dubious":false,"date":"2023-01-12 16:11"},{"_id":"10700","normalized_imdb_id":110955,"title":"Ref, The","year":1994,"rating":3,"dubious":false,"date":"2023-01-12 05:00"},{"_id":"10699","normalized_imdb_id":13056052,"title":"Broker","year":2022,"rating":3,"dubious":false,"date":"2023-01-11 22:16"},{"_id":"10698","normalized_imdb_id":6160448,"title":"White Noise","year":2022,"rating":3,"dubious":false,"date":"2023-01-11 01:26"},{"_id":"10697","normalized_imdb_id":113228,"title":"Grumpier Old Men","year":1995,"rating":3,"dubious":true,"date":"2023-01-11 01:18"},{"_id":"10696","normalized_imdb_id":107050,"title":"Grumpy Old Men","year":1993,"rating":1,"dubious":false,"date":"2023-01-11 01:12"},{"_id":"10695","normalized_imdb_id":9288822,"title":"the wonder","year":2022,"rating":3,"dubious":false,"date":"2023-01-09 15:35"},{"_id":"10694","normalized_imdb_id":1498878,"title":"Whisperer in Darkness, The","year":2011,"rating":0,"dubious":false,"date":"2023-01-08 15:22"},{"_id":"10693","normalized_imdb_id":8332772,"title":"Hanalei Bay","year":2018,"rating":0,"dubious":false,"date":"2023-01-08 04:19"},{"_id":"10692","normalized_imdb_id":3915174,"title":"Puss in Boots: The Last Wish","year":2022,"rating":3,"dubious":false,"date":"2023-01-08 02:48"},{"_id":"10691","normalized_imdb_id":1488589,"title":"Guillermo del Toro's Pinocchio","year":2022,"rating":1,"dubious":true,"date":"2023-01-08 02:45"},{"_id":"10690","normalized_imdb_id":3447590,"title":"Matilda the Musical","year":2022,"rating":1,"dubious":false,"date":"2023-01-07 03:13"},{"_id":"10689","normalized_imdb_id":7405458,"title":"A Man Called  Otto","year":2022,"rating":2,"dubious":false,"date":"2023-01-06 23:31"},{"_id":"10688","normalized_imdb_id":15206378,"title":"7 Women and a Murder","year":2021,"rating":3,"dubious":false,"date":"2023-01-04 22:09"},{"_id":"10687","normalized_imdb_id":10168670,"title":"Bones and All","year":2022,"rating":3,"dubious":false,"date":"2023-01-02 11:55"},{"_id":"10686","normalized_imdb_id":118755,"title":"Borrowers, The","year":1997,"rating":3,"dubious":false,"date":"2023-01-01 21:49"},{"_id":"10685","normalized_imdb_id":95253,"title":"Great Outdoors, The","year":1988,"rating":3,"dubious":false,"date":"2023-01-01 04:42"},{"_id":"10684","normalized_imdb_id":10278918,"title":"Willow","year":2022,"rating":3,"dubious":false,"date":"2022-12-30 21:54"},{"_id":"10683","normalized_imdb_id":11291274,"title":"Unbearable Weight of Massive Talent, The","year":2022,"rating":3,"dubious":true,"date":"2022-12-30 19:38"},{"_id":"10682","normalized_imdb_id":12889404,"title":"Cyrano","year":2021,"rating":2,"dubious":false,"date":"2022-12-30 03:37"},{"_id":"10681","normalized_imdb_id":10931784,"title":"Nanny, The","year":2022,"rating":3,"dubious":false,"date":"2022-12-28 20:46"},{"_id":"10680","normalized_imdb_id":11564570,"title":"Glass Onion: A Knives Out Mystery","year":2022,"rating":3,"dubious":false,"date":"2022-12-27 20:57"},{"_id":"10679","normalized_imdb_id":6277462,"title":"Brahmastra Part One Shiva","year":2022,"rating":1,"dubious":false,"date":"2022-12-27 13:43"},{"_id":"10678","normalized_imdb_id":9411972,"title":"Where the Crawdads Sing","year":2022,"rating":3,"dubious":false,"date":"2022-12-26 05:27"},{"_id":"10677","normalized_imdb_id":5097410,"title":"Noelle","year":2019,"rating":3,"dubious":false,"date":"2022-12-25 15:52"},{"_id":"10676","normalized_imdb_id":1630029,"title":"Avatar: The Way Of Water","year":2022,"rating":2,"dubious":true,"date":"2022-12-25 04:23"},{"_id":"10675","normalized_imdb_id":75988,"title":"Emmett Otter's Jug-Band Christmas","year":1977,"rating":3,"dubious":false,"date":"2022-12-24 16:15"},{"_id":"10674","normalized_imdb_id":24803056,"title":"Rodrigo Ortiz Vinholo Film, The","year":2022,"rating":0,"dubious":false,"date":"2022-12-22 14:16"},{"_id":"10672","normalized_imdb_id":111341,"title":"Satantango","year":1994,"rating":2,"dubious":false,"date":"2022-12-22 02:19"},{"_id":"10671","normalized_imdb_id":60891,"title":"Nun, The","year":1966,"rating":3,"dubious":false,"date":"2022-12-21 08:21"},{"_id":"10670","normalized_imdb_id":55621,"title":"Why Bother to Knock","year":1961,"rating":2,"dubious":false,"date":"2022-12-20 00:15"},{"_id":"10669","normalized_imdb_id":1226837,"title":"Beautiful Boy","year":2018,"rating":1,"dubious":true,"date":"2022-12-17 10:51"},{"_id":"10668","normalized_imdb_id":479952,"title":"Madagascar escape 2 africa","year":2008,"rating":0,"dubious":false,"date":"2022-12-17 00:58"},{"_id":"10666","normalized_imdb_id":37536,"title":"Bells of St Mary's, The","year":1945,"rating":3,"dubious":false,"date":"2022-12-15 15:48"},{"_id":"10664","normalized_imdb_id":64370,"title":"Girl Who Knew Too Much, The","year":1969,"rating":1,"dubious":false,"date":"2022-12-14 06:12"},{"_id":"10663","normalized_imdb_id":42530,"title":"Gun Crazy","year":1950,"rating":3,"dubious":false,"date":"2022-12-14 04:00"},{"_id":"10662","normalized_imdb_id":49674,"title":"Richard III","year":1955,"rating":3,"dubious":true,"date":"2022-12-13 21:40"},{"_id":"10658","normalized_imdb_id":101775,"title":"Drop Dead Fred","year":1991,"rating":3,"dubious":false,"date":"2022-12-12 09:38"},{"_id":"10657","normalized_imdb_id":21994906,"title":"Your Christmas or Mine?","year":2022,"rating":3,"dubious":false,"date":"2022-12-11 08:32"},{"_id":"10656","normalized_imdb_id":13623880,"title":"Night at the Museum: Kahmunrah Rises Again","year":2022,"rating":3,"dubious":false,"date":"2022-12-10 02:10"},{"_id":"10655","normalized_imdb_id":11160650,"title":"On the Count of Three","year":2021,"rating":1,"dubious":false,"date":"2022-12-09 06:42"},{"_id":"10654","normalized_imdb_id":46031,"title":"Man Between, The","year":1953,"rating":3,"dubious":false,"date":"2022-12-08 22:13"},{"_id":"10653","normalized_imdb_id":14164234,"title":"Ride or Die","year":2021,"rating":1,"dubious":false,"date":"2022-12-08 09:30"},{"_id":"10652","normalized_imdb_id":91065,"title":"Flying","year":1986,"rating":3,"dubious":false,"date":"2022-12-06 03:01"},{"_id":"10651","normalized_imdb_id":4614584,"title":"Purple Heart","year":2022,"rating":3,"dubious":false,"date":"2022-12-05 23:33"},{"_id":"10650","normalized_imdb_id":6418778,"title":"Fast Color","year":2018,"rating":3,"dubious":false,"date":"2022-12-05 15:30"},{"_id":"10649","normalized_imdb_id":8106534,"title":"6 Underground","year":2019,"rating":3,"dubious":false,"date":"2022-12-05 01:23"},{"_id":"10648","normalized_imdb_id":68768,"title":"Joe Kidd","year":1972,"rating":1,"dubious":false,"date":"2022-12-04 21:38"},{"_id":"10647","normalized_imdb_id":72435,"title":"Zandy's Bride","year":1974,"rating":2,"dubious":false,"date":"2022-12-04 06:14"},{"_id":"10646","normalized_imdb_id":10999120,"title":"Spirited","year":2022,"rating":3,"dubious":false,"date":"2022-12-03 20:22"},{"_id":"10645","normalized_imdb_id":58091,"title":"Fate Is the Hunter","year":1964,"rating":3,"dubious":false,"date":"2022-11-30 02:07"},{"_id":"10644","normalized_imdb_id":60640,"title":"Lt. Robin Crusoe, U.S.N.","year":1966,"rating":1,"dubious":false,"date":"2022-11-29 23:57"},{"_id":"10643","normalized_imdb_id":9731598,"title":"Bros","year":2022,"rating":3,"dubious":false,"date":"2022-11-29 19:24"},{"_id":"10642","normalized_imdb_id":6285944,"title":"Banker, The","year":2020,"rating":1,"dubious":false,"date":"2022-11-29 19:21"},{"_id":"10641","normalized_imdb_id":5181830,"title":"Wendell & Wild","year":2022,"rating":3,"dubious":false,"date":"2022-11-28 23:34"},{"_id":"10639","normalized_imdb_id":5847768,"title":"Tower, The","year":2018,"rating":3,"dubious":false,"date":"2022-11-28 00:17"},{"_id":"10638","normalized_imdb_id":6096194,"title":"Different Flowers","year":2017,"rating":3,"dubious":false,"date":"2022-11-27 15:51"},{"_id":"10637","normalized_imdb_id":98325,"title":"Sidewalk Stories","year":1989,"rating":2,"dubious":true,"date":"2022-11-27 06:37"},{"_id":"10636","normalized_imdb_id":435434,"title":"Swing Girls","year":2004,"rating":3,"dubious":false,"date":"2022-11-27 06:33"},{"_id":"10635","normalized_imdb_id":39631,"title":"Monsieur Verdoux","year":1947,"rating":3,"dubious":false,"date":"2022-11-27 04:29"},{"_id":"10633","normalized_imdb_id":4180032,"title":"Christmas Under Wraps","year":2014,"rating":3,"dubious":false,"date":"2022-11-26 12:17"},{"_id":"10631","normalized_imdb_id":93371,"title":"Kung-Fu Master!","year":1988,"rating":3,"dubious":false,"date":"2022-11-25 08:35"},{"_id":"10630","normalized_imdb_id":5868326,"title":"Homestuck","year":2009,"rating":3,"dubious":true,"date":"2022-11-24 23:40"},{"_id":"10629","normalized_imdb_id":58249,"title":"Diary of a Chambermaid","year":1964,"rating":3,"dubious":false,"date":"2022-11-23 23:37"},{"_id":"10627","normalized_imdb_id":16183464,"title":"One Piece: Film Red","year":2022,"rating":3,"dubious":true,"date":"2022-11-23 03:46"},{"_id":"10626","normalized_imdb_id":21848598,"title":"Movie Star, The","year":2022,"rating":1,"dubious":false,"date":"2022-11-21 21:21"},{"_id":"10625","normalized_imdb_id":102411,"title":"Warrior","year":2011,"rating":0,"dubious":true,"date":"2022-11-21 17:47"},{"_id":"10624","normalized_imdb_id":4028464,"title":"innocents , The","year":2021,"rating":1,"dubious":false,"date":"2022-11-21 03:55"},{"_id":"10623","normalized_imdb_id":49019,"title":"Yield to the Night","year":1956,"rating":3,"dubious":false,"date":"2022-11-20 21:01"},{"_id":"10622","normalized_imdb_id":4273800,"title":"Good Nurse, The","year":2022,"rating":3,"dubious":false,"date":"2022-11-20 09:13"},{"_id":"10621","normalized_imdb_id":1596342,"title":"Disenchanted","year":2022,"rating":3,"dubious":false,"date":"2022-11-19 15:23"},{"_id":"10620","normalized_imdb_id":11813216,"title":"Banshees of Inisherin, The","year":2022,"rating":3,"dubious":false,"date":"2022-11-18 22:33"},{"_id":"10619","normalized_imdb_id":10101702,"title":"My Little Pony: A New Generation","year":2021,"rating":3,"dubious":true,"date":"2022-11-17 21:53"},{"_id":"10618","normalized_imdb_id":14331144,"title":"Jujutsu Kaisen 0","year":2021,"rating":1,"dubious":false,"date":"2022-11-16 22:36"},{"_id":"10617","normalized_imdb_id":17076046,"title":"Weird: The Al Yankovic Story","year":2022,"rating":1,"dubious":false,"date":"2022-11-15 22:17"},{"_id":"10616","normalized_imdb_id":13482828,"title":"One Fine Morning","year":2022,"rating":3,"dubious":false,"date":"2022-11-14 20:00"},{"_id":"10615","normalized_imdb_id":11488024,"title":"My Grandfather's Demons","year":2022,"rating":3,"dubious":false,"date":"2022-11-14 19:59"},{"_id":"10614","normalized_imdb_id":3726682,"title":"Nayola","year":2022,"rating":3,"dubious":false,"date":"2022-11-14 19:55"},{"_id":"10613","normalized_imdb_id":15438542,"title":"Code Name Banshee","year":2022,"rating":3,"dubious":false,"date":"2022-11-14 02:00"},{"_id":"10612","normalized_imdb_id":68569,"title":"Family Life","year":1971,"rating":3,"dubious":false,"date":"2022-11-13 23:43"},{"_id":"10611","normalized_imdb_id":77838,"title":"Last Waltz, The","year":1978,"rating":1,"dubious":false,"date":"2022-11-13 22:05"},{"_id":"10610","normalized_imdb_id":13932410,"title":"El cuarto pasajero","year":2022,"rating":0,"dubious":false,"date":"2022-11-13 11:18"},{"_id":"10609","normalized_imdb_id":9114286,"title":"Black Panther: Wakanda Forever","year":2022,"rating":3,"dubious":false,"date":"2022-11-13 01:35"},{"_id":"10608","normalized_imdb_id":63592,"title":"Shalako","year":1968,"rating":3,"dubious":false,"date":"2022-11-12 19:58"},{"_id":"10607","normalized_imdb_id":77687,"title":"Hobbit, The","year":1977,"rating":0,"dubious":false,"date":"2022-11-12 19:33"},{"_id":"10606","normalized_imdb_id":4139928,"title":"Legend of Maula Jatt, The","year":2022,"rating":3,"dubious":false,"date":"2022-11-11 07:29"},{"_id":"10605","normalized_imdb_id":11671006,"title":"Man From Toronto, The","year":2022,"rating":2,"dubious":false,"date":"2022-11-10 04:02"},{"_id":"10604","normalized_imdb_id":14371818,"title":"Hear Me Out","year":2021,"rating":3,"dubious":false,"date":"2022-11-10 03:54"},{"_id":"10602","normalized_imdb_id":439533,"title":"Dead Leaves","year":2004,"rating":3,"dubious":false,"date":"2022-11-08 13:59"},{"_id":"10601","normalized_imdb_id":15218000,"title":"Fire Island","year":2022,"rating":3,"dubious":false,"date":"2022-11-08 13:23"},{"_id":"10600","normalized_imdb_id":14641788,"title":"Enola Holmes 2","year":2022,"rating":3,"dubious":false,"date":"2022-11-08 06:02"},{"_id":"10599","normalized_imdb_id":39220,"title":"Brighton Rock","year":1948,"rating":3,"dubious":true,"date":"2022-11-06 08:32"},{"_id":"10598","normalized_imdb_id":13139228,"title":"My Policeman","year":2022,"rating":2,"dubious":false,"date":"2022-11-06 07:42"},{"_id":"10597","normalized_imdb_id":38934,"title":"She-Wolf of London","year":1946,"rating":3,"dubious":false,"date":"2022-11-05 14:41"},{"_id":"10596","normalized_imdb_id":14309446,"title":"Me Time","year":2022,"rating":1,"dubious":false,"date":"2022-11-04 19:59"},{"_id":"10595","normalized_imdb_id":11897478,"title":"Stranger, The","year":2022,"rating":3,"dubious":true,"date":"2022-11-04 05:59"},{"_id":"10594","normalized_imdb_id":50470,"title":"Guns of Fort Petticoat, The","year":1957,"rating":2,"dubious":false,"date":"2022-11-02 22:09"},{"_id":"10593","normalized_imdb_id":64155,"title":"Charro!","year":1969,"rating":1,"dubious":false,"date":"2022-10-29 07:05"},{"_id":"10592","normalized_imdb_id":89606,"title":"My Life as a Dog","year":1985,"rating":1,"dubious":false,"date":"2022-10-29 02:02"},{"_id":"10591","normalized_imdb_id":3625970,"title":"Dark Dungeons","year":2014,"rating":3,"dubious":false,"date":"2022-10-29 01:21"},{"_id":"10590","normalized_imdb_id":13086274,"title":"Everything Will Change","year":2021,"rating":0,"dubious":false,"date":"2022-10-28 20:48"},{"_id":"10589","normalized_imdb_id":68281,"title":"Black Gunn","year":1972,"rating":1,"dubious":false,"date":"2022-10-28 20:37"},{"_id":"10588","normalized_imdb_id":69897,"title":"Coffy","year":1973,"rating":2,"dubious":false,"date":"2022-10-28 05:29"},{"_id":"10587","normalized_imdb_id":73697,"title":"Sheba, Baby","year":1975,"rating":0,"dubious":false,"date":"2022-10-27 22:24"},{"_id":"10586","normalized_imdb_id":14444726,"title":"Tar","year":2022,"rating":3,"dubious":false,"date":"2022-10-27 19:33"},{"_id":"10585","normalized_imdb_id":60647,"title":"Made in USA","year":1966,"rating":1,"dubious":false,"date":"2022-10-27 04:58"},{"_id":"10583","normalized_imdb_id":15096128,"title":"Crush","year":2022,"rating":1,"dubious":true,"date":"2022-10-25 15:13"},{"_id":"10581","normalized_imdb_id":14362474,"title":"L'autre rive","year":2022,"rating":3,"dubious":false,"date":"2022-10-25 14:47"},{"_id":"10580","normalized_imdb_id":10403420,"title":"Terrifier 2","year":2022,"rating":3,"dubious":false,"date":"2022-10-25 11:12"},{"_id":"10579","normalized_imdb_id":8521876,"title":"Yes Day","year":2021,"rating":3,"dubious":false,"date":"2022-10-24 16:36"},{"_id":"10578","normalized_imdb_id":419946,"title":"Marine, The","year":2006,"rating":3,"dubious":false,"date":"2022-10-24 10:20"},{"_id":"10577","normalized_imdb_id":11727866,"title":"Catherine Called Birdy","year":2022,"rating":3,"dubious":false,"date":"2022-10-24 08:55"},{"_id":"10576","normalized_imdb_id":56308,"title":"Only Two Can Play","year":1962,"rating":3,"dubious":false,"date":"2022-10-24 00:54"},{"_id":"10575","normalized_imdb_id":78087,"title":"Piranha","year":1978,"rating":3,"dubious":false,"date":"2022-10-24 00:09"},{"_id":"10574","normalized_imdb_id":4126568,"title":"Open Water 3: Cage Dive","year":2017,"rating":0,"dubious":false,"date":"2022-10-22 00:58"},{"_id":"10573","normalized_imdb_id":470055,"title":"Open Water 2: Adrift","year":2006,"rating":3,"dubious":false,"date":"2022-10-21 23:44"},{"_id":"10572","normalized_imdb_id":71396,"title":"Messiah of Evil","year":1973,"rating":3,"dubious":false,"date":"2022-10-21 12:50"},{"_id":"10571","normalized_imdb_id":71129,"title":"Amarcord","year":1973,"rating":2,"dubious":false,"date":"2022-10-21 06:33"},{"_id":"10570","normalized_imdb_id":51818,"title":"King Creole","year":1958,"rating":1,"dubious":false,"date":"2022-10-21 00:03"},{"_id":"10569","normalized_imdb_id":58204,"title":"Honeymoon Hotel","year":1964,"rating":3,"dubious":false,"date":"2022-10-20 21:09"},{"_id":"10568","normalized_imdb_id":10541410,"title":"A Fada do Lar","year":2022,"rating":3,"dubious":false,"date":"2022-10-20 19:25"},{"_id":"10567","normalized_imdb_id":14145004,"title":"Remains of the Wind","year":2022,"rating":2,"dubious":false,"date":"2022-10-20 19:14"},{"_id":"10566","normalized_imdb_id":11621960,"title":"Bem Bom","year":2021,"rating":3,"dubious":false,"date":"2022-10-20 19:12"},{"_id":"10565","normalized_imdb_id":108174,"title":"So I Married an Axe Murderer","year":1993,"rating":3,"dubious":true,"date":"2022-10-20 11:23"},{"_id":"10564","normalized_imdb_id":10665338,"title":"Halloween Kills","year":2022,"rating":3,"dubious":true,"date":"2022-10-19 20:31"},{"_id":"10563","normalized_imdb_id":14317880,"title":"Final Cut","year":2022,"rating":3,"dubious":false,"date":"2022-10-19 18:28"},{"_id":"10562","normalized_imdb_id":51608,"title":"Female, The","year":1958,"rating":2,"dubious":false,"date":"2022-10-19 05:43"},{"_id":"10561","normalized_imdb_id":8093700,"title":"Woman King, The","year":2022,"rating":3,"dubious":false,"date":"2022-10-18 19:14"},{"_id":"10560","normalized_imdb_id":8962124,"title":"Emily in Paris","year":2020,"rating":2,"dubious":true,"date":"2022-10-18 02:29"},{"_id":"10558","normalized_imdb_id":65125,"title":"Trouble with Girls, The","year":1969,"rating":3,"dubious":false,"date":"2022-10-17 20:53"},{"_id":"10555","normalized_imdb_id":491603,"title":"H2O: Just Add Water","year":2006,"rating":3,"dubious":false,"date":"2022-10-17 15:10"},{"_id":"10554","normalized_imdb_id":10373934,"title":"Deep Woods","year":2022,"rating":1,"dubious":true,"date":"2022-10-17 02:13"},{"_id":"10551","normalized_imdb_id":15791034,"title":"Barbarian","year":2022,"rating":3,"dubious":false,"date":"2022-10-15 13:09"},{"_id":"10550","normalized_imdb_id":57227,"title":"Kissin' Cousins","year":1964,"rating":2,"dubious":false,"date":"2022-10-15 06:04"},{"_id":"10549","normalized_imdb_id":11128440,"title":"Clerks III","year":2022,"rating":1,"dubious":false,"date":"2022-10-15 03:34"},{"_id":"10537","normalized_imdb_id":9714030,"title":"France","year":2021,"rating":3,"dubious":false,"date":"2022-10-14 22:52"},{"_id":"10536","normalized_imdb_id":14913250,"title":"Tout le monde aime Jeanne","year":2022,"rating":3,"dubious":false,"date":"2022-10-14 19:43"},{"_id":"10535","normalized_imdb_id":15445056,"title":"Athena","year":2022,"rating":2,"dubious":false,"date":"2022-10-14 14:13"},{"_id":"10534","normalized_imdb_id":15006566,"title":"As bestas","year":2022,"rating":3,"dubious":false,"date":"2022-10-14 13:21"},{"_id":"10533","normalized_imdb_id":56404,"title":"Love on a Pillow","year":1962,"rating":3,"dubious":false,"date":"2022-10-14 06:19"},{"_id":"10532","normalized_imdb_id":15474916,"title":"Smile","year":2022,"rating":3,"dubious":false,"date":"2022-10-13 20:28"},{"_id":"10531","normalized_imdb_id":63231,"title":"Live a Little, Love a Little","year":1968,"rating":1,"dubious":false,"date":"2022-10-13 05:36"},{"_id":"10530","normalized_imdb_id":4382872,"title":"Extraction","year":2015,"rating":2,"dubious":false,"date":"2022-10-12 19:44"},{"_id":"10529","normalized_imdb_id":8010544,"title":"Persona 5 The Animation","year":2018,"rating":1,"dubious":false,"date":"2022-10-11 23:20"},{"_id":"10528","normalized_imdb_id":57191,"title":"It Happened at the World's Fair","year":1963,"rating":3,"dubious":false,"date":"2022-10-11 05:39"},{"_id":"10527","normalized_imdb_id":47849,"title":"Bad Day at Black Rock","year":1955,"rating":0,"dubious":false,"date":"2022-10-10 16:29"},{"_id":"10526","normalized_imdb_id":44760,"title":"Ivanhoe","year":1952,"rating":2,"dubious":false,"date":"2022-10-10 16:26"},{"_id":"10525","normalized_imdb_id":5500218,"title":"Samartian","year":2022,"rating":1,"dubious":false,"date":"2022-10-09 08:40"},{"_id":"10524","normalized_imdb_id":40506,"title":"Key Largo","year":1948,"rating":3,"dubious":false,"date":"2022-10-09 07:08"},{"_id":"10523","normalized_imdb_id":39302,"title":"Dark Passage","year":1947,"rating":2,"dubious":false,"date":"2022-10-09 07:00"},{"_id":"10522","normalized_imdb_id":56732,"title":"Exterminating Angel, The","year":1962,"rating":3,"dubious":false,"date":"2022-10-08 22:51"},{"_id":"10521","normalized_imdb_id":52218,"title":"Some Came Running","year":1958,"rating":2,"dubious":false,"date":"2022-10-08 19:52"},{"_id":"10520","normalized_imdb_id":8718158,"title":"Hating Game, The","year":2021,"rating":3,"dubious":true,"date":"2022-10-08 05:10"},{"_id":"10519","normalized_imdb_id":78295,"title":"Someone's Watching Me","year":1978,"rating":3,"dubious":false,"date":"2022-10-08 03:01"},{"_id":"10518","normalized_imdb_id":12873562,"title":"Invitation, The","year":2022,"rating":3,"dubious":false,"date":"2022-10-08 01:46"},{"_id":"10517","normalized_imdb_id":1655389,"title":"Blonde","year":2022,"rating":2,"dubious":false,"date":"2022-10-07 19:10"},{"_id":"10516","normalized_imdb_id":18925334,"title":"Pearl","year":2022,"rating":3,"dubious":false,"date":"2022-10-05 14:19"},{"_id":"10515","normalized_imdb_id":9764362,"title":"Menu, The","year":2022,"rating":3,"dubious":false,"date":"2022-10-05 13:28"},{"_id":"10514","normalized_imdb_id":13462472,"title":"Young Lovers, The","year":2021,"rating":3,"dubious":false,"date":"2022-10-04 20:39"},{"_id":"10513","normalized_imdb_id":15010292,"title":"Flux Gourmet","year":2022,"rating":3,"dubious":false,"date":"2022-10-03 15:04"},{"_id":"10512","normalized_imdb_id":17146978,"title":"Novelist's Film (So-seol-ga-ui Yeong-hwa), The","year":2022,"rating":3,"dubious":false,"date":"2022-10-03 15:01"},{"_id":"10511","normalized_imdb_id":12708658,"title":"Paris, 13th District (Les Olympiades, Paris 13e)","year":2021,"rating":3,"dubious":false,"date":"2022-10-03 14:58"},{"_id":"10509","normalized_imdb_id":6992978,"title":"Souvenir: Part II, The","year":2021,"rating":3,"dubious":false,"date":"2022-10-03 14:41"},{"_id":"10508","normalized_imdb_id":7322224,"title":"Triangle of Sadness","year":2022,"rating":3,"dubious":false,"date":"2022-10-03 14:36"},{"_id":"10507","normalized_imdb_id":118849,"title":"Children of Heaven","year":1997,"rating":3,"dubious":false,"date":"2022-10-03 03:25"},{"_id":"10506","normalized_imdb_id":84690,"title":"Six Pack","year":1982,"rating":2,"dubious":false,"date":"2022-10-03 02:16"},{"_id":"10505","normalized_imdb_id":72905,"title":"Dr. Minx","year":1975,"rating":2,"dubious":false,"date":"2022-10-03 01:34"},{"_id":"10504","normalized_imdb_id":2933474,"title":"Superfast!","year":2015,"rating":3,"dubious":false,"date":"2022-10-02 22:52"},{"_id":"10503","normalized_imdb_id":70926,"title":"Wonder Women","year":1973,"rating":3,"dubious":false,"date":"2022-10-02 05:10"},{"_id":"10502","normalized_imdb_id":11909878,"title":"Hocus Pocus 2","year":2022,"rating":3,"dubious":false,"date":"2022-10-01 02:40"},{"_id":"10501","normalized_imdb_id":4593060,"title":"Pinocchio","year":2022,"rating":1,"dubious":false,"date":"2022-09-30 21:23"},{"_id":"10500","normalized_imdb_id":14152140,"title":"Darlings","year":2022,"rating":3,"dubious":false,"date":"2022-09-29 01:59"},{"_id":"10499","normalized_imdb_id":58636,"title":"Tamahine","year":1963,"rating":3,"dubious":false,"date":"2022-09-28 01:03"},{"_id":"10498","normalized_imdb_id":204700,"title":"Trouble Every Day","year":2001,"rating":1,"dubious":false,"date":"2022-09-27 21:36"},{"_id":"10497","normalized_imdb_id":63268,"title":"Mandabi","year":1968,"rating":2,"dubious":false,"date":"2022-09-27 20:04"},{"_id":"10496","normalized_imdb_id":277122,"title":"Maeve","year":1981,"rating":3,"dubious":false,"date":"2022-09-27 20:01"},{"_id":"10495","normalized_imdb_id":10731256,"title":"Don't Worry Darling","year":2022,"rating":3,"dubious":false,"date":"2022-09-27 19:44"},{"_id":"10494","normalized_imdb_id":57685,"title":"Wild Affair, The","year":1965,"rating":3,"dubious":false,"date":"2022-09-27 00:00"},{"_id":"10493","normalized_imdb_id":54885,"title":"Flower Drum Song","year":1961,"rating":2,"dubious":false,"date":"2022-09-25 01:49"},{"_id":"10492","normalized_imdb_id":24210,"title":"Kennel Murder Case, The","year":1933,"rating":1,"dubious":false,"date":"2022-09-24 21:18"},{"_id":"10491","normalized_imdb_id":1759744,"title":"Charlie Says","year":2018,"rating":3,"dubious":false,"date":"2022-09-24 06:09"},{"_id":"10490","normalized_imdb_id":67866,"title":"El Topo","year":1970,"rating":2,"dubious":false,"date":"2022-09-24 06:04"},{"_id":"10489","normalized_imdb_id":58969,"title":"Big Job, The","year":1965,"rating":3,"dubious":false,"date":"2022-09-23 06:46"},{"_id":"10488","normalized_imdb_id":5121816,"title":"Bar, The","year":2017,"rating":3,"dubious":false,"date":"2022-09-22 21:10"},{"_id":"10487","normalized_imdb_id":13327038,"title":"Do Revenge","year":2022,"rating":3,"dubious":true,"date":"2022-09-22 04:46"},{"_id":"10486","normalized_imdb_id":129924,"title":"FernGully 2: The Magical Rescue","year":1998,"rating":3,"dubious":true,"date":"2022-09-22 02:51"},{"_id":"10485","normalized_imdb_id":61590,"title":"Don't Make Waves","year":1967,"rating":3,"dubious":false,"date":"2022-09-22 00:55"},{"_id":"10484","normalized_imdb_id":10935560,"title":"Dark Glasses","year":2022,"rating":3,"dubious":false,"date":"2022-09-21 19:42"},{"_id":"10483","normalized_imdb_id":9843470,"title":"Island of Lies, The","year":2020,"rating":3,"dubious":false,"date":"2022-09-19 20:30"},{"_id":"10482","normalized_imdb_id":61634,"title":"Eye of the Devil","year":1966,"rating":3,"dubious":false,"date":"2022-09-17 05:48"},{"_id":"10481","normalized_imdb_id":62657,"title":"Ambushers, The","year":1967,"rating":2,"dubious":false,"date":"2022-09-15 04:31"},{"_id":"10480","normalized_imdb_id":60728,"title":"Murderers' Row","year":1966,"rating":1,"dubious":false,"date":"2022-09-15 02:13"},{"_id":"10479","normalized_imdb_id":2262532,"title":"Fosters, The","year":2013,"rating":1,"dubious":false,"date":"2022-09-15 01:19"},{"_id":"10478","normalized_imdb_id":65889,"title":"Investigation of a Citizen Above Suspicion","year":1970,"rating":0,"dubious":false,"date":"2022-09-14 20:05"},{"_id":"10477","normalized_imdb_id":60980,"title":"Silencers, The","year":1966,"rating":1,"dubious":false,"date":"2022-09-14 01:17"},{"_id":"10476","normalized_imdb_id":54700,"title":"Please, Not Now!","year":1961,"rating":3,"dubious":false,"date":"2022-09-11 01:38"},{"_id":"10475","normalized_imdb_id":51133,"title":"La Parisienne","year":1957,"rating":2,"dubious":false,"date":"2022-09-10 23:43"},{"_id":"10474","normalized_imdb_id":101844,"title":"Eyes of an Angel","year":1991,"rating":0,"dubious":false,"date":"2022-09-10 22:31"},{"_id":"10473","normalized_imdb_id":13651628,"title":"Belle","year":2021,"rating":3,"dubious":false,"date":"2022-09-10 21:24"},{"_id":"10472","normalized_imdb_id":10244760,"title":"Ghost Tropic","year":2019,"rating":3,"dubious":false,"date":"2022-09-10 21:06"},{"_id":"10471","normalized_imdb_id":9174578,"title":"Around the World in 80 Days","year":2021,"rating":3,"dubious":false,"date":"2022-09-09 16:56"},{"_id":"10470","normalized_imdb_id":78846,"title":"Beneath the Valley of the Ultra-Vixens","year":1979,"rating":2,"dubious":false,"date":"2022-09-09 01:55"},{"_id":"10469","normalized_imdb_id":75376,"title":"Up!","year":1976,"rating":3,"dubious":false,"date":"2022-09-09 01:31"},{"_id":"10468","normalized_imdb_id":67736,"title":"Seven Minutes, The","year":1971,"rating":3,"dubious":false,"date":"2022-09-09 01:03"},{"_id":"10467","normalized_imdb_id":63787,"title":"Vixen!","year":1968,"rating":3,"dubious":false,"date":"2022-09-09 00:47"},{"_id":"10466","normalized_imdb_id":73768,"title":"Supervixens","year":1975,"rating":2,"dubious":false,"date":"2022-09-09 00:31"},{"_id":"10465","normalized_imdb_id":11700260,"title":"Official Competition","year":2021,"rating":1,"dubious":false,"date":"2022-09-08 06:09"},{"_id":"10464","normalized_imdb_id":14298328,"title":"Look Both Ways","year":2022,"rating":3,"dubious":false,"date":"2022-09-05 19:11"},{"_id":"10463","normalized_imdb_id":9389998,"title":"Pushpa: The Rise - Part 1","year":2021,"rating":2,"dubious":false,"date":"2022-09-04 06:19"},{"_id":"10462","normalized_imdb_id":5284414,"title":"Girls und Panzer: Der Film","year":2015,"rating":3,"dubious":false,"date":"2022-09-03 23:01"},{"_id":"10461","normalized_imdb_id":8246646,"title":"Blackbird","year":2022,"rating":1,"dubious":false,"date":"2022-09-02 21:00"},{"_id":"10460","normalized_imdb_id":6739094,"title":"Invader Zim: Enter the Florpus","year":2019,"rating":0,"dubious":false,"date":"2022-09-01 14:38"},{"_id":"10459","normalized_imdb_id":11214590,"title":"House of Gucci","year":2021,"rating":2,"dubious":false,"date":"2022-09-01 12:41"},{"_id":"10458","normalized_imdb_id":9620288,"title":"King Richard","year":2021,"rating":3,"dubious":false,"date":"2022-08-30 22:44"},{"_id":"10457","normalized_imdb_id":2395337,"title":"Monster High: Escape from Skull SHores","year":2012,"rating":1,"dubious":false,"date":"2022-08-30 15:58"},{"_id":"10456","normalized_imdb_id":3159812,"title":"Monster High: Thirteen Wishes","year":2013,"rating":1,"dubious":true,"date":"2022-08-30 15:38"},{"_id":"10455","normalized_imdb_id":10692788,"title":"After Love","year":2020,"rating":3,"dubious":false,"date":"2022-08-29 08:25"},{"_id":"10454","normalized_imdb_id":13266998,"title":"Bull","year":2021,"rating":1,"dubious":false,"date":"2022-08-28 07:02"},{"_id":"10453","normalized_imdb_id":101399,"title":"Bad Girls from Mars","year":1990,"rating":3,"dubious":false,"date":"2022-08-27 03:45"},{"_id":"10452","normalized_imdb_id":7976208,"title":"Haunting of Sharon Tate, The","year":2019,"rating":3,"dubious":false,"date":"2022-08-27 03:15"},{"_id":"10451","normalized_imdb_id":14814040,"title":"Not Okay","year":2022,"rating":3,"dubious":false,"date":"2022-08-26 09:39"},{"_id":"10450","normalized_imdb_id":72791,"title":"Cleopatra Jones and the Casino of Gold","year":1975,"rating":3,"dubious":false,"date":"2022-08-26 03:31"},{"_id":"10449","normalized_imdb_id":54483,"title":"World of Suzie Wong, The","year":1960,"rating":2,"dubious":false,"date":"2022-08-26 02:20"},{"_id":"10448","normalized_imdb_id":10083340,"title":"Gangubai Kathiawadi","year":2022,"rating":3,"dubious":false,"date":"2022-08-25 05:37"},{"_id":"10447","normalized_imdb_id":15255876,"title":"Emily the Criminal","year":2022,"rating":3,"dubious":false,"date":"2022-08-23 00:07"},{"_id":"10445","normalized_imdb_id":8110652,"title":"Bodies Bodies Bodies","year":2022,"rating":3,"dubious":false,"date":"2022-08-21 18:04"},{"_id":"10444","normalized_imdb_id":15090124,"title":"Mad God","year":2022,"rating":0,"dubious":false,"date":"2022-08-20 18:55"},{"_id":"10443","normalized_imdb_id":14614892,"title":"Dragon Ball Super: Super Hero","year":2022,"rating":3,"dubious":false,"date":"2022-08-19 20:52"},{"_id":"10442","normalized_imdb_id":4926026,"title":"Cafard","year":2015,"rating":2,"dubious":false,"date":"2022-08-16 01:08"},{"_id":"10441","normalized_imdb_id":12262116,"title":"Thirteen Lives","year":2022,"rating":0,"dubious":false,"date":"2022-08-14 08:24"},{"_id":"10440","normalized_imdb_id":13024674,"title":"Army of Thieves","year":2021,"rating":3,"dubious":false,"date":"2022-08-11 21:07"},{"_id":"10439","normalized_imdb_id":10954984,"title":"Nope","year":2022,"rating":1,"dubious":false,"date":"2022-08-11 19:01"},{"_id":"10438","normalized_imdb_id":1116560,"title":"Rain Shadow","year":2007,"rating":2,"dubious":false,"date":"2022-08-09 23:00"},{"_id":"10437","normalized_imdb_id":8143990,"title":"Kajillionaire","year":2020,"rating":3,"dubious":false,"date":"2022-08-08 21:33"},{"_id":"10436","normalized_imdb_id":3706352,"title":"All the old knives","year":2022,"rating":3,"dubious":true,"date":"2022-08-08 13:58"},{"_id":"10435","normalized_imdb_id":9288046,"title":"Sea Beast, The","year":2022,"rating":3,"dubious":false,"date":"2022-08-08 08:13"},{"_id":"10434","normalized_imdb_id":5034474,"title":"Assignment, The","year":2017,"rating":1,"dubious":false,"date":"2022-08-07 14:32"},{"_id":"10433","normalized_imdb_id":11866324,"title":"Prey","year":2022,"rating":3,"dubious":false,"date":"2022-08-07 06:50"},{"_id":"10432","normalized_imdb_id":16953666,"title":"La nuit du 12","year":2022,"rating":3,"dubious":true,"date":"2022-08-06 15:17"},{"_id":"10431","normalized_imdb_id":10341034,"title":"Black Box","year":2021,"rating":1,"dubious":false,"date":"2022-08-06 14:58"},{"_id":"10430","normalized_imdb_id":79256,"title":"Health","year":1980,"rating":3,"dubious":false,"date":"2022-08-05 13:30"},{"_id":"10429","normalized_imdb_id":12593682,"title":"Bullet Train","year":2022,"rating":1,"dubious":false,"date":"2022-08-05 12:29"},{"_id":"10428","normalized_imdb_id":14866710,"title":"Blasted","year":2022,"rating":3,"dubious":false,"date":"2022-08-03 20:21"},{"_id":"10427","normalized_imdb_id":10623646,"title":"Paper Girls","year":2022,"rating":3,"dubious":false,"date":"2022-08-02 02:29"},{"_id":"10426","normalized_imdb_id":12048234,"title":"Save the Cinema","year":2022,"rating":3,"dubious":false,"date":"2022-07-31 11:19"},{"_id":"10425","normalized_imdb_id":11394332,"title":"Spree","year":2020,"rating":3,"dubious":false,"date":"2022-07-28 03:35"},{"_id":"10424","normalized_imdb_id":5563334,"title":"Good Liar, The","year":2019,"rating":3,"dubious":false,"date":"2022-07-27 13:09"},{"_id":"10423","normalized_imdb_id":1891974,"title":"Ace Attorney","year":2012,"rating":3,"dubious":false,"date":"2022-07-27 09:29"},{"_id":"10422","normalized_imdb_id":356680,"title":"Family Stone, The","year":2005,"rating":3,"dubious":false,"date":"2022-07-26 04:33"},{"_id":"10421","normalized_imdb_id":13650600,"title":"Emergency","year":2022,"rating":3,"dubious":false,"date":"2022-07-25 21:13"},{"_id":"10420","normalized_imdb_id":41257,"title":"Come to the Stable","year":1949,"rating":3,"dubious":false,"date":"2022-07-25 17:25"},{"_id":"10419","normalized_imdb_id":1235187,"title":"Where Hands Touch","year":2018,"rating":3,"dubious":false,"date":"2022-07-23 23:23"},{"_id":"10418","normalized_imdb_id":10782876,"title":"Swimming for Gold","year":2020,"rating":1,"dubious":false,"date":"2022-07-23 12:39"},{"_id":"10417","normalized_imdb_id":1865368,"title":"Frenemies","year":2012,"rating":1,"dubious":false,"date":"2022-07-23 10:03"},{"_id":"10416","normalized_imdb_id":1950235,"title":"Let It Snow","year":2019,"rating":1,"dubious":true,"date":"2022-07-23 09:40"},{"_id":"10415","normalized_imdb_id":99160,"title":"Blue Steel","year":1990,"rating":2,"dubious":false,"date":"2022-07-23 00:03"},{"_id":"10414","normalized_imdb_id":1649418,"title":"Gray Man, The","year":2022,"rating":2,"dubious":false,"date":"2022-07-22 21:45"},{"_id":"10413","normalized_imdb_id":7466442,"title":"Bob's Burgers Movie, The","year":2022,"rating":3,"dubious":false,"date":"2022-07-22 02:12"},{"_id":"10412","normalized_imdb_id":2145829,"title":"Robot Overlords","year":2014,"rating":1,"dubious":false,"date":"2022-07-21 16:29"},{"_id":"10411","normalized_imdb_id":7201830,"title":"Deliciosa Fruta Seca","year":2019,"rating":3,"dubious":false,"date":"2022-07-20 14:54"},{"_id":"10410","normalized_imdb_id":5151570,"title":"Mrs Harris Goes to Paris","year":2022,"rating":3,"dubious":false,"date":"2022-07-19 13:55"},{"_id":"10408","normalized_imdb_id":5113044,"title":"Minions: the rise of gru","year":2022,"rating":1,"dubious":false,"date":"2022-07-16 20:49"},{"_id":"10407","normalized_imdb_id":7638348,"title":"Boss Level","year":2020,"rating":2,"dubious":false,"date":"2022-07-16 17:43"},{"_id":"10405","normalized_imdb_id":8760724,"title":"Death Toilet","year":2018,"rating":0,"dubious":false,"date":"2022-07-13 21:17"},{"_id":"10404","normalized_imdb_id":4870838,"title":"Batman: Bad Blood","year":2016,"rating":3,"dubious":false,"date":"2022-07-13 13:30"},{"_id":"10403","normalized_imdb_id":82405,"title":"Four Seasons, The","year":1981,"rating":3,"dubious":false,"date":"2022-07-13 12:52"},{"_id":"10402","normalized_imdb_id":44446,"title":"Sound Barrier, The","year":1952,"rating":3,"dubious":false,"date":"2022-07-13 12:38"},{"_id":"10401","normalized_imdb_id":3468260,"title":"JLA Adventures: Trapped in Time","year":2014,"rating":3,"dubious":false,"date":"2022-07-12 13:37"},{"_id":"10400","normalized_imdb_id":11934846,"title":"Badhaai Do","year":2022,"rating":3,"dubious":false,"date":"2022-07-11 00:46"},{"_id":"10399","normalized_imdb_id":10228134,"title":"Jolt","year":2021,"rating":3,"dubious":true,"date":"2022-07-11 00:31"},{"_id":"10397","normalized_imdb_id":11703050,"title":"House, The","year":2022,"rating":3,"dubious":false,"date":"2022-07-09 08:22"},{"_id":"10396","normalized_imdb_id":8338076,"title":"Queen Bees","year":2021,"rating":3,"dubious":false,"date":"2022-07-09 01:55"},{"_id":"10395","normalized_imdb_id":10648342,"title":"Thor: Love and Thunder","year":2022,"rating":3,"dubious":false,"date":"2022-07-08 10:42"},{"_id":"10394","normalized_imdb_id":101258,"title":"Days of Being Wild","year":1990,"rating":2,"dubious":false,"date":"2022-07-08 03:08"},{"_id":"10393","normalized_imdb_id":7167686,"title":"Reign of the Supermen","year":2019,"rating":1,"dubious":false,"date":"2022-07-07 18:12"},{"_id":"10392","normalized_imdb_id":5208252,"title":"Operation Finale","year":2018,"rating":1,"dubious":false,"date":"2022-07-07 17:10"},{"_id":"10391","normalized_imdb_id":349345,"title":"Despiser","year":2003,"rating":2,"dubious":false,"date":"2022-07-07 00:04"},{"_id":"10390","normalized_imdb_id":7167658,"title":"Death of Superman, The","year":2018,"rating":3,"dubious":false,"date":"2022-07-06 20:00"},{"_id":"10389","normalized_imdb_id":7260048,"title":"Outside In","year":2017,"rating":3,"dubious":false,"date":"2022-07-06 12:51"},{"_id":"10388","normalized_imdb_id":8508734,"title":"His House","year":2020,"rating":3,"dubious":false,"date":"2022-07-06 12:45"},{"_id":"10387","normalized_imdb_id":18250460,"title":"Teen Titans Go! & DC Super Hero Girls: Mayhem in the Multiverse","year":2022,"rating":3,"dubious":false,"date":"2022-07-06 11:40"},{"_id":"10386","normalized_imdb_id":3704428,"title":"Elvis","year":2022,"rating":1,"dubious":false,"date":"2022-07-04 23:04"},{"_id":"10385","normalized_imdb_id":13575806,"title":"Back to the Outback","year":2021,"rating":3,"dubious":false,"date":"2022-07-04 18:52"},{"_id":"10384","normalized_imdb_id":14145426,"title":"Beavis and Butt-Head do the Universe","year":2022,"rating":0,"dubious":false,"date":"2022-07-02 01:38"},{"_id":"10383","normalized_imdb_id":167456,"title":"Thunderbirds","year":2004,"rating":3,"dubious":true,"date":"2022-06-30 12:33"},{"_id":"10382","normalized_imdb_id":15521050,"title":"Love and Gelato","year":2022,"rating":3,"dubious":false,"date":"2022-06-29 18:36"},{"_id":"10380","normalized_imdb_id":5012504,"title":"Injustice","year":2021,"rating":1,"dubious":false,"date":"2022-06-27 08:05"},{"_id":"10379","normalized_imdb_id":1097636,"title":"Chill Out Scooby Doo","year":2007,"rating":3,"dubious":false,"date":"2022-06-24 13:56"},{"_id":"10378","normalized_imdb_id":436071,"title":"Animusic","year":2001,"rating":0,"dubious":false,"date":"2022-06-23 20:14"},{"_id":"10377","normalized_imdb_id":14402926,"title":"Batman: The Long Halloween, Part Two","year":2021,"rating":1,"dubious":false,"date":"2022-06-23 13:27"},{"_id":"10373","normalized_imdb_id":14324650,"title":"Batman: The Long Halloween, Part One","year":2021,"rating":3,"dubious":true,"date":"2022-06-22 12:59"},{"_id":"10372","normalized_imdb_id":3513500,"title":"Chip 'n Dale: Rescue Rangers","year":2022,"rating":3,"dubious":false,"date":"2022-06-22 00:21"},{"_id":"10371","normalized_imdb_id":10298810,"title":"Lightyear","year":2022,"rating":2,"dubious":false,"date":"2022-06-21 20:40"},{"_id":"10370","normalized_imdb_id":13145534,"title":"Incroyable mais vrai","year":2022,"rating":1,"dubious":false,"date":"2022-06-21 08:27"},{"_id":"10369","normalized_imdb_id":13560574,"title":"X","year":2022,"rating":3,"dubious":false,"date":"2022-06-20 12:32"},{"_id":"10368","normalized_imdb_id":12141112,"title":"Metal Lords","year":2022,"rating":1,"dubious":false,"date":"2022-06-20 12:31"},{"_id":"10367","normalized_imdb_id":6823148,"title":"Benedetta","year":2021,"rating":3,"dubious":false,"date":"2022-06-20 12:29"},{"_id":"10366","normalized_imdb_id":13352968,"title":"Good luck to you, Leo Grande","year":2022,"rating":3,"dubious":false,"date":"2022-06-20 12:27"},{"_id":"10365","normalized_imdb_id":9783600,"title":"Spiderhead","year":2022,"rating":1,"dubious":false,"date":"2022-06-19 01:16"},{"_id":"10364","normalized_imdb_id":9812474,"title":"Lamb","year":2021,"rating":1,"dubious":false,"date":"2022-06-18 10:08"},{"_id":"10363","normalized_imdb_id":5989218,"title":"Life Itself","year":2018,"rating":3,"dubious":true,"date":"2022-06-15 21:18"},{"_id":"10362","normalized_imdb_id":334541,"title":"Tremors 4: The Legend Begins","year":2004,"rating":3,"dubious":false,"date":"2022-06-15 01:45"},{"_id":"10361","normalized_imdb_id":4513678,"title":"Ghostbusters: Afterlife","year":2021,"rating":3,"dubious":false,"date":"2022-06-15 01:22"},{"_id":"10360","normalized_imdb_id":11196036,"title":"Card Counter, The","year":2021,"rating":1,"dubious":false,"date":"2022-06-14 03:15"},{"_id":"10359","normalized_imdb_id":40636,"title":"Naked City, The","year":1948,"rating":1,"dubious":false,"date":"2022-06-13 17:41"},{"_id":"10358","normalized_imdb_id":205271,"title":"Dr. T & the Women","year":2000,"rating":3,"dubious":false,"date":"2022-06-13 13:43"},{"_id":"10357","normalized_imdb_id":8041270,"title":"Jurassic World Dominion","year":2022,"rating":3,"dubious":false,"date":"2022-06-12 00:22"},{"_id":"10356","normalized_imdb_id":100449,"title":"Quick Change","year":1990,"rating":0,"dubious":false,"date":"2022-06-09 12:42"},{"_id":"10354","normalized_imdb_id":48308,"title":"Lola Montès","year":1955,"rating":3,"dubious":false,"date":"2022-06-08 16:20"},{"_id":"10353","normalized_imdb_id":70898,"title":"A Warm December","year":1973,"rating":3,"dubious":false,"date":"2022-06-08 12:18"},{"_id":"10352","normalized_imdb_id":29751,"title":"Wee Willie Winkie","year":1937,"rating":3,"dubious":false,"date":"2022-06-08 12:10"},{"_id":"10351","normalized_imdb_id":53619,"title":"L'avventura","year":1960,"rating":3,"dubious":false,"date":"2022-06-08 11:55"},{"_id":"10350","normalized_imdb_id":39969,"title":"Voice of the Turtle, The","year":1947,"rating":3,"dubious":false,"date":"2022-06-08 11:30"},{"_id":"10349","normalized_imdb_id":56736,"title":"L'eclisse","year":1962,"rating":3,"dubious":false,"date":"2022-06-08 11:07"},{"_id":"10348","normalized_imdb_id":48973,"title":"Baby Doll","year":1956,"rating":3,"dubious":true,"date":"2022-06-08 10:38"},{"_id":"10347","normalized_imdb_id":33373,"title":"Ball of Fire","year":1941,"rating":2,"dubious":false,"date":"2022-06-08 10:24"},{"_id":"10346","normalized_imdb_id":48967,"title":"Autumn Leaves","year":1956,"rating":3,"dubious":false,"date":"2022-06-08 10:18"},{"_id":"10345","normalized_imdb_id":37614,"title":"Corn Is Green, The","year":1945,"rating":3,"dubious":false,"date":"2022-06-08 10:05"},{"_id":"10344","normalized_imdb_id":73114,"title":"L'histoire d'Adèle H.","year":1975,"rating":3,"dubious":false,"date":"2022-06-08 01:13"},{"_id":"10343","normalized_imdb_id":34770,"title":"Gay Sisters, The","year":1942,"rating":3,"dubious":false,"date":"2022-06-08 00:58"},{"_id":"10342","normalized_imdb_id":47811,"title":"All That Heaven Allows","year":1955,"rating":3,"dubious":false,"date":"2022-06-08 00:46"},{"_id":"10341","normalized_imdb_id":51911,"title":"Marjorie Morningstar","year":1958,"rating":3,"dubious":false,"date":"2022-06-08 00:28"},{"_id":"10340","normalized_imdb_id":47821,"title":"Le amiche","year":1955,"rating":3,"dubious":false,"date":"2022-06-07 23:54"},{"_id":"10339","normalized_imdb_id":14128670,"title":"Kimi","year":2022,"rating":2,"dubious":false,"date":"2022-06-07 23:03"},{"_id":"10338","normalized_imdb_id":280486,"title":"Bad Company","year":2002,"rating":1,"dubious":false,"date":"2022-06-07 22:54"},{"_id":"10337","normalized_imdb_id":8399288,"title":"Memoria","year":2021,"rating":3,"dubious":false,"date":"2022-06-07 22:53"},{"_id":"10336","normalized_imdb_id":422093,"title":"Tyler Perry's Diary of a mad black woman","year":2005,"rating":3,"dubious":false,"date":"2022-06-03 20:54"},{"_id":"10333","normalized_imdb_id":1745960,"title":"Top Gun: Maverick","year":2022,"rating":3,"dubious":false,"date":"2022-05-29 16:35"},{"_id":"10332","normalized_imdb_id":284837,"title":"Ali G Indahouse","year":2002,"rating":1,"dubious":false,"date":"2022-05-27 16:59"},{"_id":"10331","normalized_imdb_id":196931,"title":"Scooby-Doo! and The Witch's Ghost","year":1999,"rating":3,"dubious":false,"date":"2022-05-27 12:38"},{"_id":"10330","normalized_imdb_id":12838958,"title":"Happy Halloween, Scooby-Doo!","year":2020,"rating":3,"dubious":false,"date":"2022-05-27 12:15"},{"_id":"10329","normalized_imdb_id":3298820,"title":"Metalocalypse The Doomstar Requiem","year":2013,"rating":1,"dubious":false,"date":"2022-05-27 12:03"},{"_id":"10328","normalized_imdb_id":95031,"title":"Dirty Rotten Scoundrels","year":1988,"rating":1,"dubious":true,"date":"2022-05-26 07:56"},{"_id":"10327","normalized_imdb_id":4123432,"title":"Fantastic Beasts: The Secrets of Dumbledore","year":2022,"rating":1,"dubious":false,"date":"2022-05-24 23:20"},{"_id":"10326","normalized_imdb_id":322802,"title":"Jackass: The Movie","year":2002,"rating":0,"dubious":false,"date":"2022-05-24 07:33"},{"_id":"10325","normalized_imdb_id":13841850,"title":"Men","year":2022,"rating":3,"dubious":true,"date":"2022-05-23 02:56"},{"_id":"10324","normalized_imdb_id":11007444,"title":"Tove","year":2020,"rating":3,"dubious":true,"date":"2022-05-18 17:09"},{"_id":"10323","normalized_imdb_id":5315212,"title":"Senior Year","year":2022,"rating":3,"dubious":false,"date":"2022-05-17 14:57"},{"_id":"10322","normalized_imdb_id":10189300,"title":"Lunana: A Yak in the Classroom","year":2019,"rating":1,"dubious":false,"date":"2022-05-15 12:36"},{"_id":"10321","normalized_imdb_id":9146058,"title":"Aspromonte: Land of the Forgotten","year":2019,"rating":1,"dubious":false,"date":"2022-05-15 12:31"},{"_id":"10320","normalized_imdb_id":9116358,"title":"Promare","year":2019,"rating":3,"dubious":false,"date":"2022-05-11 03:46"},{"_id":"10319","normalized_imdb_id":8456190,"title":"Seal Team","year":2021,"rating":3,"dubious":false,"date":"2022-05-10 04:37"},{"_id":"10318","normalized_imdb_id":3579698,"title":"12 Dog Days Till Christmas","year":2014,"rating":3,"dubious":false,"date":"2022-05-09 18:32"},{"_id":"10317","normalized_imdb_id":11138512,"title":"Northman, The","year":2022,"rating":1,"dubious":false,"date":"2022-05-09 10:04"},{"_id":"10316","normalized_imdb_id":969647,"title":"The Little Mermaid: Ariel's Beginning","year":2008,"rating":3,"dubious":false,"date":"2022-05-09 00:30"},{"_id":"10315","normalized_imdb_id":1825918,"title":"Phineas and Ferb the Movie: Across the 2nd Dimension","year":2011,"rating":3,"dubious":false,"date":"2022-05-08 23:22"},{"_id":"10314","normalized_imdb_id":9419884,"title":"Doctor Strange in the Multiverse of Madness","year":2022,"rating":3,"dubious":false,"date":"2022-05-07 21:32"},{"_id":"10312","normalized_imdb_id":393685,"title":"Santa's Slay","year":2005,"rating":3,"dubious":true,"date":"2022-05-05 03:35"},{"_id":"10311","normalized_imdb_id":960144,"title":"You Don't Mess with the Zohan","year":2008,"rating":1,"dubious":true,"date":"2022-05-04 14:30"},{"_id":"10309","normalized_imdb_id":8110246,"title":"Dark Web: Cicada 3301","year":2021,"rating":3,"dubious":true,"date":"2022-05-03 20:46"},{"_id":"10307","normalized_imdb_id":14775784,"title":"Great Freedom","year":2021,"rating":0,"dubious":false,"date":"2022-05-02 03:06"},{"_id":"10306","normalized_imdb_id":762148,"title":"Christmas Is Here Again","year":2007,"rating":3,"dubious":false,"date":"2022-04-26 23:48"},{"_id":"10305","normalized_imdb_id":1114677,"title":"Hannah Montana: The Movie","year":2009,"rating":2,"dubious":true,"date":"2022-04-26 14:46"},{"_id":"10304","normalized_imdb_id":6710474,"title":"Everything Everywhere All at Once","year":2022,"rating":3,"dubious":false,"date":"2022-04-25 05:10"},{"_id":"10303","normalized_imdb_id":4998632,"title":"Ambulance","year":2022,"rating":2,"dubious":true,"date":"2022-04-24 22:37"},{"_id":"10299","normalized_imdb_id":13320622,"title":"Lost City, The","year":2022,"rating":3,"dubious":false,"date":"2022-04-21 15:18"},{"_id":"10298","normalized_imdb_id":1114740,"title":"Paul Blart: Mall Cop","year":2009,"rating":1,"dubious":false,"date":"2022-04-18 20:36"},{"_id":"10297","normalized_imdb_id":7657566,"title":"Death on the Nile","year":2022,"rating":3,"dubious":false,"date":"2022-04-17 07:31"},{"_id":"10296","normalized_imdb_id":8752440,"title":"Batman: Hush","year":2019,"rating":3,"dubious":false,"date":"2022-04-15 18:16"},{"_id":"10295","normalized_imdb_id":94027,"title":"Stand and Deliver","year":1988,"rating":1,"dubious":false,"date":"2022-04-14 22:59"},{"_id":"10294","normalized_imdb_id":11079148,"title":"Justice League Dark: Apokolips War","year":2020,"rating":3,"dubious":false,"date":"2022-04-14 09:23"},{"_id":"10293","normalized_imdb_id":10600398,"title":"We Can Be Heroes","year":2020,"rating":3,"dubious":false,"date":"2022-04-13 15:19"},{"_id":"10292","normalized_imdb_id":5108870,"title":"Morbius","year":2022,"rating":1,"dubious":false,"date":"2022-04-12 05:28"},{"_id":"10291","normalized_imdb_id":5573580,"title":"Cuddler","year":2015,"rating":3,"dubious":false,"date":"2022-04-11 20:23"},{"_id":"10290","normalized_imdb_id":8851148,"title":"In Between , The","year":2022,"rating":1,"dubious":false,"date":"2022-04-10 12:03"},{"_id":"10289","normalized_imdb_id":6129999014,"title":"Fate/Stay Night: Heaven's Feel - I. Presage Flower","year":2017,"rating":2,"dubious":false,"date":"2022-04-08 17:50"},{"_id":"10288","normalized_imdb_id":93342,"title":"Where is the friend's house","year":1987,"rating":0,"dubious":false,"date":"2022-04-08 06:06"},{"_id":"10287","normalized_imdb_id":73972,"title":"Charlies Angels","year":1976,"rating":1,"dubious":false,"date":"2022-04-08 01:41"},{"_id":"10286","normalized_imdb_id":47469,"title":"Senso","year":1954,"rating":1,"dubious":false,"date":"2022-04-06 18:59"},{"_id":"10285","normalized_imdb_id":4552196,"title":"Hiraeth","year":2021,"rating":3,"dubious":false,"date":"2022-04-06 10:41"},{"_id":"10284","normalized_imdb_id":465624,"title":"My Super Ex-Girlfriend","year":2006,"rating":3,"dubious":false,"date":"2022-04-06 02:02"},{"_id":"10283","normalized_imdb_id":36160,"title":"Millions Like Us","year":1943,"rating":3,"dubious":false,"date":"2022-04-06 01:06"},{"_id":"10282","normalized_imdb_id":246464,"title":"Big Trouble","year":2002,"rating":3,"dubious":false,"date":"2022-04-05 19:32"},{"_id":"10281","normalized_imdb_id":112442,"title":"Bad Boys","year":1995,"rating":1,"dubious":false,"date":"2022-04-04 17:37"},{"_id":"10280","normalized_imdb_id":8115900,"title":"Bad Guys, The","year":2022,"rating":3,"dubious":false,"date":"2022-04-02 23:46"},{"_id":"10279","normalized_imdb_id":12412888,"title":"Sonic the Hedgehog 2","year":2022,"rating":3,"dubious":false,"date":"2022-04-02 23:42"},{"_id":"10278","normalized_imdb_id":13610562,"title":"Bubble, The","year":2022,"rating":3,"dubious":false,"date":"2022-04-02 07:35"},{"_id":"10277","normalized_imdb_id":300949,"title":"Apartment #5C","year":2002,"rating":3,"dubious":false,"date":"2022-04-01 23:07"},{"_id":"10276","normalized_imdb_id":9729768,"title":"June Again","year":2020,"rating":1,"dubious":false,"date":"2022-04-01 22:11"},{"_id":"10275","normalized_imdb_id":93991,"title":"Slave Girls from Beyond Infinity","year":1987,"rating":3,"dubious":false,"date":"2022-04-01 20:30"},{"_id":"10273","normalized_imdb_id":13403046,"title":"Fresh","year":2022,"rating":3,"dubious":false,"date":"2022-03-30 18:55"},{"_id":"10271","normalized_imdb_id":12536294,"title":"Spencer","year":2021,"rating":3,"dubious":false,"date":"2022-03-28 16:46"},{"_id":"10270","normalized_imdb_id":5160938,"title":"Lizzie","year":2018,"rating":1,"dubious":false,"date":"2022-03-28 04:56"},{"_id":"10269","normalized_imdb_id":8784956,"title":"Ava","year":2020,"rating":2,"dubious":false,"date":"2022-03-27 05:08"},{"_id":"10268","normalized_imdb_id":397313,"title":"Eight Below","year":2006,"rating":0,"dubious":false,"date":"2022-03-27 01:31"},{"_id":"10267","normalized_imdb_id":9572534,"title":"Golden Arm","year":2020,"rating":3,"dubious":false,"date":"2022-03-25 18:27"},{"_id":"10266","normalized_imdb_id":2061702,"title":"Hotarubi no Mori e (To the Forest of Firefly Lights)","year":2011,"rating":3,"dubious":true,"date":"2022-03-25 14:18"},{"_id":"10265","normalized_imdb_id":101605,"title":"Commitments, The","year":1991,"rating":3,"dubious":false,"date":"2022-03-21 19:57"},{"_id":"10264","normalized_imdb_id":120696,"title":"Hard Rain","year":1998,"rating":2,"dubious":false,"date":"2022-03-21 02:45"},{"_id":"10263","normalized_imdb_id":2463208,"title":"Adam Project, The","year":2022,"rating":1,"dubious":false,"date":"2022-03-19 22:25"},{"_id":"10262","normalized_imdb_id":14817272,"title":"Weekend Away, The","year":2022,"rating":3,"dubious":false,"date":"2022-03-19 10:59"},{"_id":"10261","normalized_imdb_id":14371426,"title":"Flashback","year":2021,"rating":3,"dubious":false,"date":"2022-03-18 22:36"},{"_id":"10260","normalized_imdb_id":7557108,"title":"Saint Maud","year":2019,"rating":3,"dubious":false,"date":"2022-03-18 19:09"},{"_id":"10259","normalized_imdb_id":5034838,"title":"Godzilla Vs Kong","year":2021,"rating":3,"dubious":true,"date":"2022-03-15 11:16"},{"_id":"10258","normalized_imdb_id":7236034,"title":"I Want to Eat Your Pancreas","year":2018,"rating":3,"dubious":true,"date":"2022-03-14 10:33"},{"_id":"10257","normalized_imdb_id":11755740,"title":"Texas Chainsaw Massacre","year":2022,"rating":3,"dubious":true,"date":"2022-03-13 19:53"},{"_id":"10256","normalized_imdb_id":7504818,"title":"Ron's Gone Wrong","year":2021,"rating":3,"dubious":true,"date":"2022-03-13 18:43"},{"_id":"10255","normalized_imdb_id":1821658,"title":"Nut Job, The","year":2014,"rating":3,"dubious":true,"date":"2022-03-13 18:18"},{"_id":"10252","normalized_imdb_id":7133686,"title":"Next Gen","year":2018,"rating":3,"dubious":false,"date":"2022-03-13 08:39"},{"_id":"10251","normalized_imdb_id":8097030,"title":"Turning Red","year":2022,"rating":3,"dubious":false,"date":"2022-03-12 07:27"},{"_id":"10250","normalized_imdb_id":2296777,"title":"Sherlock Gnomes","year":2018,"rating":3,"dubious":true,"date":"2022-03-11 10:29"},{"_id":"10249","normalized_imdb_id":1402488,"title":"Happy Feet Two","year":2011,"rating":3,"dubious":false,"date":"2022-03-10 17:48"},{"_id":"10248","normalized_imdb_id":12618926,"title":"Parallel Mothers","year":2021,"rating":3,"dubious":false,"date":"2022-03-10 14:08"},{"_id":"10244","normalized_imdb_id":10334456,"title":"Once Were Brothers: Robbie Robertson and the Band","year":2019,"rating":0,"dubious":false,"date":"2022-03-07 15:21"},{"_id":"10243","normalized_imdb_id":13235822,"title":"Umma","year":2022,"rating":3,"dubious":false,"date":"2022-03-04 06:05"},{"_id":"10242","normalized_imdb_id":7550014,"title":"No Exit","year":2022,"rating":3,"dubious":false,"date":"2022-03-03 15:44"},{"_id":"10241","normalized_imdb_id":1877830,"title":"Batman , The","year":2022,"rating":3,"dubious":false,"date":"2022-03-02 18:04"},{"_id":"10240","normalized_imdb_id":4807408,"title":"Best of Enemies, The","year":2019,"rating":3,"dubious":false,"date":"2022-02-26 23:44"},{"_id":"10238","normalized_imdb_id":120207,"title":"Steel","year":1997,"rating":2,"dubious":false,"date":"2022-02-22 07:52"},{"_id":"10237","normalized_imdb_id":15248702,"title":"Catwoman: Hunted","year":2022,"rating":3,"dubious":false,"date":"2022-02-22 07:41"},{"_id":"10236","normalized_imdb_id":8375936,"title":"Robowoman","year":2019,"rating":3,"dubious":false,"date":"2022-02-22 06:21"},{"_id":"10235","normalized_imdb_id":37865,"title":"Leave Her to Heaven","year":1945,"rating":3,"dubious":false,"date":"2022-02-20 23:59"},{"_id":"10234","normalized_imdb_id":2070649,"title":"Silenced","year":2011,"rating":1,"dubious":false,"date":"2022-02-19 00:32"},{"_id":"10233","normalized_imdb_id":13069986,"title":"After We Fell","year":2021,"rating":1,"dubious":false,"date":"2022-02-18 22:17"},{"_id":"10232","normalized_imdb_id":10279362,"title":"French Exit","year":2020,"rating":3,"dubious":false,"date":"2022-02-18 21:01"},{"_id":"10230","normalized_imdb_id":6467266,"title":"Sing 2","year":2021,"rating":1,"dubious":false,"date":"2022-02-17 06:33"},{"_id":"10229","normalized_imdb_id":3322314,"title":"Luke Cage","year":2018,"rating":1,"dubious":false,"date":"2022-02-17 04:40"},{"_id":"10227","normalized_imdb_id":937375,"title":"This Christmas","year":2007,"rating":3,"dubious":false,"date":"2022-02-15 04:55"},{"_id":"10226","normalized_imdb_id":1464335,"title":"Uncharted","year":2022,"rating":2,"dubious":true,"date":"2022-02-14 13:05"},{"_id":"10225","normalized_imdb_id":2762970,"title":"Cloud 9","year":2014,"rating":3,"dubious":true,"date":"2022-02-13 23:14"},{"_id":"10224","normalized_imdb_id":9357050,"title":"Dear Evan Hansen","year":2021,"rating":1,"dubious":false,"date":"2022-02-07 01:58"},{"_id":"10223","normalized_imdb_id":1707391,"title":"4:44 Last Day on Earth","year":2011,"rating":0,"dubious":false,"date":"2022-02-07 01:00"},{"_id":"10222","normalized_imdb_id":354772,"title":"Playboy: No Boys Allowed, 100% Girls","year":2000,"rating":3,"dubious":false,"date":"2022-02-04 06:13"},{"_id":"10221","normalized_imdb_id":11245972,"title":"Scream","year":2022,"rating":3,"dubious":false,"date":"2022-02-03 22:15"},{"_id":"10220","normalized_imdb_id":11847410,"title":"the fallout","year":2021,"rating":3,"dubious":false,"date":"2022-02-03 22:09"},{"_id":"10219","normalized_imdb_id":59017,"title":"Cat Ballou","year":1965,"rating":3,"dubious":false,"date":"2022-02-02 11:08"},{"_id":"10218","normalized_imdb_id":8456696,"title":"Sister Aimee","year":2019,"rating":3,"dubious":false,"date":"2022-02-02 06:42"},{"_id":"10217","normalized_imdb_id":5176580,"title":"Wild Nights with Emily","year":2018,"rating":3,"dubious":false,"date":"2022-02-01 11:12"},{"_id":"10216","normalized_imdb_id":6856242,"title":"King's Man, The","year":2021,"rating":1,"dubious":false,"date":"2022-02-01 01:34"},{"_id":"10215","normalized_imdb_id":10065694,"title":"Antebellum","year":2020,"rating":3,"dubious":false,"date":"2022-01-31 00:02"},{"_id":"10214","normalized_imdb_id":13989030,"title":"Royal Treatment, The","year":2022,"rating":3,"dubious":false,"date":"2022-01-29 12:35"},{"_id":"10213","normalized_imdb_id":12789558,"title":"Belfast","year":2021,"rating":1,"dubious":false,"date":"2022-01-27 15:05"},{"_id":"10212","normalized_imdb_id":11697690,"title":"Woman Who Ran, The","year":2020,"rating":3,"dubious":false,"date":"2022-01-27 07:42"},{"_id":"10211","normalized_imdb_id":10525672,"title":"Silver Skates","year":2020,"rating":2,"dubious":false,"date":"2022-01-26 16:50"},{"_id":"10210","normalized_imdb_id":1879012,"title":"Night of the Living Dead 3D: Re-Animation","year":2012,"rating":3,"dubious":false,"date":"2022-01-26 01:59"},{"_id":"10209","normalized_imdb_id":489244,"title":"Night of the Living Dead 3D","year":2006,"rating":3,"dubious":false,"date":"2022-01-25 23:22"},{"_id":"10208","normalized_imdb_id":90563,"title":"Betty Blue","year":1986,"rating":2,"dubious":false,"date":"2022-01-25 19:28"},{"_id":"10207","normalized_imdb_id":7549996,"title":"Judy","year":2019,"rating":3,"dubious":false,"date":"2022-01-25 14:38"},{"_id":"10206","normalized_imdb_id":11389748,"title":"Mass","year":2021,"rating":3,"dubious":false,"date":"2022-01-23 09:17"},{"_id":"10205","normalized_imdb_id":107057,"title":"Guilty as sin","year":1993,"rating":2,"dubious":false,"date":"2022-01-23 02:02"},{"_id":"10204","normalized_imdb_id":976238,"title":"Old Dogs","year":2009,"rating":3,"dubious":false,"date":"2022-01-22 20:40"},{"_id":"10203","normalized_imdb_id":423294,"title":"Surfs Up","year":2007,"rating":1,"dubious":false,"date":"2022-01-20 21:42"},{"_id":"10202","normalized_imdb_id":10293406,"title":"Power of the Dog, The","year":2021,"rating":0,"dubious":false,"date":"2022-01-18 16:26"},{"_id":"10201","normalized_imdb_id":76054,"title":"Freaky Friday","year":1976,"rating":3,"dubious":false,"date":"2022-01-18 01:57"},{"_id":"10200","normalized_imdb_id":11127680,"title":"Boiling Point","year":2021,"rating":3,"dubious":false,"date":"2022-01-17 11:34"},{"_id":"10199","normalized_imdb_id":4995540,"title":"Being The Ricardos","year":2021,"rating":3,"dubious":false,"date":"2022-01-16 09:14"},{"_id":"10198","normalized_imdb_id":113862,"title":"Mr. Holland's Opus","year":1995,"rating":3,"dubious":true,"date":"2022-01-16 02:40"},{"_id":"10197","normalized_imdb_id":119360,"title":"In & Out","year":1997,"rating":2,"dubious":false,"date":"2022-01-15 05:12"},{"_id":"10196","normalized_imdb_id":9274670,"title":"13 Minutes","year":2021,"rating":3,"dubious":false,"date":"2022-01-14 19:45"},{"_id":"10195","normalized_imdb_id":8356942,"title":"355, The","year":2022,"rating":3,"dubious":false,"date":"2022-01-13 14:47"},{"_id":"10194","normalized_imdb_id":11032374,"title":"Demon Slayer: Mugen Train","year":2020,"rating":0,"dubious":true,"date":"2022-01-12 04:30"},{"_id":"10193","normalized_imdb_id":10370710,"title":"The Worst Person in the World","year":2021,"rating":3,"dubious":true,"date":"2022-01-11 12:11"},{"_id":"10190","normalized_imdb_id":8721424,"title":"tick...tick..BOOM!","year":2021,"rating":3,"dubious":true,"date":"2022-01-10 22:18"},{"_id":"10189","normalized_imdb_id":8001346,"title":"Astérix: Le secret de la potion magique (Asterix: The Secret of the Magic Potion)","year":2018,"rating":2,"dubious":false,"date":"2022-01-08 22:11"},{"_id":"10186","normalized_imdb_id":7740496,"title":"Nightmare Alley","year":2021,"rating":1,"dubious":false,"date":"2022-01-08 09:37"},{"_id":"10185","normalized_imdb_id":11271038,"title":"Licorice Pizza","year":2021,"rating":3,"dubious":false,"date":"2022-01-08 09:30"},{"_id":"10184","normalized_imdb_id":3108894,"title":"Tender Bar, The","year":2021,"rating":1,"dubious":false,"date":"2022-01-08 01:36"},{"_id":"10183","normalized_imdb_id":84917,"title":"World According to Garp, The","year":1982,"rating":3,"dubious":false,"date":"2022-01-06 12:47"},{"_id":"10182","normalized_imdb_id":7873348,"title":"Save Yourselves!","year":2020,"rating":3,"dubious":true,"date":"2022-01-06 08:03"},{"_id":"10181","normalized_imdb_id":42832,"title":"Panic in the Streets","year":1950,"rating":0,"dubious":false,"date":"2022-01-05 09:16"},{"_id":"10180","normalized_imdb_id":3254796,"title":"Big Stone Gap","year":2014,"rating":3,"dubious":false,"date":"2022-01-04 10:19"},{"_id":"10179","normalized_imdb_id":112757,"title":"Cure, The","year":1995,"rating":1,"dubious":false,"date":"2022-01-04 09:12"},{"_id":"10178","normalized_imdb_id":111693,"title":"When a Man Loves a Woman","year":1994,"rating":3,"dubious":false,"date":"2022-01-04 08:19"},{"_id":"10177","normalized_imdb_id":12877640,"title":"A Classic Horror Story","year":2021,"rating":3,"dubious":true,"date":"2022-01-03 22:38"},{"_id":"10176","normalized_imdb_id":6673612,"title":"Dolittle","year":2020,"rating":3,"dubious":false,"date":"2022-01-01 03:21"},{"_id":"10175","normalized_imdb_id":3564794,"title":"Welcome To Happiness","year":2015,"rating":1,"dubious":false,"date":"2021-12-31 21:47"},{"_id":"10174","normalized_imdb_id":41373,"title":"Flamingo Road","year":1949,"rating":3,"dubious":false,"date":"2021-12-31 21:12"},{"_id":"10173","normalized_imdb_id":124595,"title":"Return to Paradise","year":1998,"rating":2,"dubious":false,"date":"2021-12-31 04:23"},{"_id":"10172","normalized_imdb_id":7737528,"title":"Kate","year":2021,"rating":2,"dubious":true,"date":"2021-12-30 16:43"},{"_id":"10171","normalized_imdb_id":45609,"title":"Cat Women of the Moon","year":1953,"rating":3,"dubious":false,"date":"2021-12-30 01:24"},{"_id":"10170","normalized_imdb_id":54017,"title":"Last Woman on Earth","year":1960,"rating":0,"dubious":false,"date":"2021-12-29 19:27"},{"_id":"10169","normalized_imdb_id":210044,"title":"Flowers for Algernon","year":2000,"rating":2,"dubious":true,"date":"2021-12-29 15:16"},{"_id":"10168","normalized_imdb_id":11286314,"title":"Don't Look Up","year":2021,"rating":3,"dubious":false,"date":"2021-12-28 04:33"},{"_id":"10167","normalized_imdb_id":10838180,"title":"Matrix Resurrections, The","year":2021,"rating":3,"dubious":false,"date":"2021-12-25 05:10"},{"_id":"10166","normalized_imdb_id":10872600,"title":"Spider-Man: No Way Home","year":2021,"rating":3,"dubious":true,"date":"2021-12-21 02:14"},{"_id":"10165","normalized_imdb_id":5511582,"title":"Timeless","year":2018,"rating":3,"dubious":false,"date":"2021-12-21 00:49"},{"_id":"10164","normalized_imdb_id":7991608,"title":"Red Notice","year":2021,"rating":1,"dubious":false,"date":"2021-12-20 14:10"},{"_id":"10163","normalized_imdb_id":40068,"title":"Abbott and Costello Meet Frankenstein","year":1948,"rating":3,"dubious":false,"date":"2021-12-19 18:11"},{"_id":"10162","normalized_imdb_id":2371399,"title":"Moomins on the Riviera","year":2014,"rating":3,"dubious":false,"date":"2021-12-17 19:56"}]}
\ No newline at end of file
diff --git a/server/data/imdb.json b/server/data/imdb.json
new file mode 100644
index 0000000000000000000000000000000000000000..1444eea87f4860a15ace6c2f0db5bb626d0929eb
Binary files /dev/null and b/server/data/imdb.json differ
diff --git a/server/data-import/mongodb-import.js b/server/mongodb-import.js
similarity index 100%
rename from server/data-import/mongodb-import.js
rename to server/mongodb-import.js
diff --git a/server/data-import/package-lock.json b/server/package-lock.json
similarity index 99%
rename from server/data-import/package-lock.json
rename to server/package-lock.json
index c919903d22bacf9487d932a55fe3a386e0a27cbe..a9fd1a3afcf5642be4ddf98359fa7bd38c91cc53 100644
--- a/server/data-import/package-lock.json
+++ b/server/package-lock.json
@@ -8,7 +8,7 @@
       "name": "tnm115-project-material",
       "version": "1.0.0",
       "dependencies": {
-        "mongodb": "6.3.0"
+        "mongodb": "^6.3.0"
       }
     },
     "node_modules/@mongodb-js/saslprep": {
diff --git a/server/package.json b/server/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..dbb67e7381d55e119e20c53f3650cfe932b22efe
--- /dev/null
+++ b/server/package.json
@@ -0,0 +1,9 @@
+{
+  "name": "tnm115-project-material",
+  "version": "1.0.0",
+  "description": "Course project datasets, i.e., IMDb and Bechdel Test, for JSON Data Import to MongoDB data storage system",
+  "author": "Nico Reski, Katerina Vrotsou",
+  "dependencies": {
+    "mongodb": "^6.3.0"
+  }
+}